@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
@@ -7,114 +7,291 @@
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 { type UnaryClient } from "@synnaxlabs/freighter";
11
- import { array } from "@synnaxlabs/x";
10
+ import {
11
+ type FileTransport,
12
+ type UnaryClient,
13
+ type UploadBody,
14
+ } from "@synnaxlabs/freighter";
15
+ import { array, primitive } from "@synnaxlabs/x";
12
16
  import { z } from "zod";
13
17
 
14
18
  import { group } from "@/group";
19
+ import { imex } from "@/imex";
15
20
  import { ontology } from "@/ontology";
21
+ import { query } from "@/query";
16
22
  import {
17
23
  type Key,
18
24
  keyZ,
19
25
  type New,
20
- newZ,
26
+ ontologyID,
21
27
  type Symbol,
22
28
  symbolZ,
23
29
  } from "@/schematic/symbol/types.gen";
24
- import { checkForMultipleOrNoResults } from "@/util/retrieve";
25
30
 
26
- const createReqZ = z.object({ symbols: newZ.array(), parent: ontology.idZ });
31
+ export const SET_CHANNEL_NAME = "sy_schematic_symbol_set";
32
+ export const DELETE_CHANNEL_NAME = "sy_schematic_symbol_delete";
33
+
34
+ const createReqZ = z.object({ symbols: symbolZ.array(), parent: ontology.idZ });
27
35
  const renameReqZ = z.object({ key: keyZ, name: z.string() });
28
36
  const deleteReqZ = z.object({ keys: keyZ.array() });
29
37
 
30
- const retrieveRequestZ = z.object({
38
+ // The server only understands keys and searchTerm; parent scoping is resolved
39
+ // client-side through the ontology, so it never reaches the wire.
40
+ const wireRetrieveRequestZ = z.object({
31
41
  keys: keyZ.array().optional(),
32
42
  searchTerm: z.string().optional(),
33
43
  });
34
44
 
35
- const singleRetrieveArgsZ = z
45
+ const retrieveRequestZ = wireRetrieveRequestZ.extend({
46
+ parent: ontology.idZ.optional(),
47
+ });
48
+ const retrieveMultiParamsZ = retrieveRequestZ.or(query.keyListZ(keyZ));
49
+
50
+ const singleRetrieveParamsZ = z
36
51
  .object({ key: keyZ })
37
52
  .transform(({ key }) => ({ keys: [key] }));
38
53
 
39
- const retrieveArgsZ = z.union([singleRetrieveArgsZ, retrieveRequestZ]);
54
+ const retrieveParamsZ = z.union([singleRetrieveParamsZ, wireRetrieveRequestZ]);
40
55
 
41
- export type RetrieveArgs = z.input<typeof retrieveArgsZ>;
42
- export type RetrieveSingleParams = z.input<typeof singleRetrieveArgsZ>;
56
+ export type RetrieveSingleParams = z.input<typeof singleRetrieveParamsZ>;
43
57
  export type RetrieveMultipleParams = z.input<typeof retrieveRequestZ>;
58
+ export type RetrieveParams = RetrieveSingleParams | RetrieveMultipleParams;
59
+
60
+ interface RetrieveRequest extends z.infer<typeof retrieveRequestZ> {}
44
61
 
45
- const retrieveResZ = z.object({ symbols: array.nullishToEmpty(symbolZ) });
62
+ const retrieveResZ = z.object({ symbols: symbolZ.array().default(() => []) });
46
63
  const createResZ = z.object({ symbols: symbolZ.array() });
47
64
  const emptyResZ = z.object({});
48
65
  const retrieveGroupReqZ = z.object({});
49
66
  const retrieveGroupResZ = z.object({ group: group.groupZ });
67
+ const exportGroupReqZ = z.object({ key: group.keyZ, encoding: imex.encodingZ });
68
+ const importGroupResZ = z.object({ group: group.groupZ });
69
+ const deleteGroupReqZ = z.object({ key: group.keyZ });
50
70
 
51
- export const SET_CHANNEL_NAME = "sy_schematic_symbol_set";
52
- export const DELETE_CHANNEL_NAME = "sy_schematic_symbol_delete";
53
-
54
- export interface CreateArgs extends New {
71
+ export interface CreateParams extends New {
55
72
  parent: ontology.ID;
56
73
  }
57
74
 
58
- export interface CreateMultipleArgs {
75
+ export interface CreateMultipleParams {
59
76
  symbols: New[];
60
77
  parent: ontology.ID;
61
78
  }
62
79
 
63
- export class Client {
64
- private readonly client: UnaryClient;
80
+ /** Query fields only the server can evaluate. */
81
+ const SERVER_FIELDS = ["searchTerm"] as const;
65
82
 
66
- constructor(client: UnaryClient) {
67
- this.client = client;
83
+ const childRel = (parent: ontology.ID, key: Key): ontology.Relationship => ({
84
+ from: parent,
85
+ type: ontology.PARENT_OF_RELATIONSHIP_TYPE,
86
+ to: ontologyID(key),
87
+ });
88
+
89
+ const matchChildRel = (rel: ontology.Relationship, parent: ontology.ID): boolean =>
90
+ ontology.matchRelationship(rel, {
91
+ from: parent,
92
+ type: ontology.PARENT_OF_RELATIONSHIP_TYPE,
93
+ to: { type: "schematic_symbol" },
94
+ });
95
+
96
+ export interface ClientConfig {
97
+ unary: UnaryClient;
98
+ file: FileTransport;
99
+ ontology: ontology.Client;
100
+ cache: query.Cache;
101
+ groupStore: query.Table<group.Key, group.Group>;
102
+ }
103
+
104
+ export class Client extends query.Retriever<typeof retrieveMultiParamsZ, Key, Symbol> {
105
+ private readonly cfg: ClientConfig;
106
+ private readonly store: query.Table<Key, Symbol>;
107
+
108
+ constructor(cfg: ClientConfig) {
109
+ const { cache, ontology: ontologyClient } = cfg;
110
+ const store = cache.createTable<Key, Symbol>({
111
+ name: "schematicSymbols",
112
+ fetch: async (keys) => await this.execRetrieve({ keys }),
113
+ listen: [
114
+ query.createSetListener(SET_CHANNEL_NAME, symbolZ),
115
+ query.createDeleteListener(DELETE_CHANNEL_NAME, keyZ),
116
+ ],
117
+ });
118
+ super(cache, {
119
+ name: "schematic symbol",
120
+ table: store,
121
+ request: {
122
+ schema: retrieveMultiParamsZ,
123
+ fetch: async (req) => await this.fetchRequest(req),
124
+ matches: (sym, req) => this.requestFilter(req)(sym),
125
+ serverFields: SERVER_FIELDS,
126
+ watch: [
127
+ query.watch(
128
+ ontologyClient.cache.relationships,
129
+ (event, req: RetrieveRequest) => {
130
+ if (req.parent == null) return null;
131
+ const rel =
132
+ event.variant === "set"
133
+ ? event.value
134
+ : ontology.relationshipZ.parse(event.key);
135
+ if (!matchChildRel(rel, req.parent)) return null;
136
+ return [rel.to.key];
137
+ },
138
+ ),
139
+ ],
140
+ },
141
+ });
142
+ this.cfg = cfg;
143
+ this.store = store;
68
144
  }
69
145
 
70
- async create(options: CreateArgs): Promise<Symbol>;
71
- async create(options: CreateMultipleArgs): Promise<Symbol[]>;
72
- async create(options: CreateArgs | CreateMultipleArgs): Promise<Symbol | Symbol[]> {
146
+ async create(options: CreateParams): Promise<Symbol>;
147
+ async create(options: CreateMultipleParams): Promise<Symbol[]>;
148
+ async create(
149
+ options: CreateParams | CreateMultipleParams,
150
+ ): Promise<Symbol | Symbol[]> {
73
151
  const isMany = "symbols" in options;
74
152
  const symbols = isMany ? options.symbols : [options];
75
- const res = await this.client.send(
153
+ const res = await this.cfg.unary.send(
76
154
  "/schematic/symbol/create",
77
155
  { symbols, parent: options.parent },
78
156
  createReqZ,
79
157
  createResZ,
80
158
  );
159
+ // Relationships first: parent-scoped answers check membership when the
160
+ // symbol write lands.
161
+ const rels = this.cfg.ontology.cache.relationships;
162
+ res.symbols.forEach((s) => {
163
+ const rel = childRel(options.parent, s.key);
164
+ rels.set(ontology.relationshipToString(rel), rel);
165
+ });
166
+ this.store.set(res.symbols);
81
167
  return isMany ? res.symbols : res.symbols[0];
82
168
  }
83
169
 
84
- async rename(key: Key, name: string): Promise<void> {
85
- await this.client.send(
86
- "/schematic/symbol/rename",
87
- { key, name },
88
- renameReqZ,
89
- emptyResZ,
170
+ async rename(key: Key, name: string, opts: query.WriteOptions = {}): Promise<void> {
171
+ const rename = () => query.partialUpdate(this.store, key, { name });
172
+ await query.optimistic({
173
+ rollbacks: [rename()],
174
+ onOptimistic: opts.onOptimistic,
175
+ commit: async () =>
176
+ await this.cfg.unary.send(
177
+ "/schematic/symbol/rename",
178
+ { key, name },
179
+ renameReqZ,
180
+ emptyResZ,
181
+ ),
182
+ });
183
+ rename();
184
+ }
185
+
186
+ async delete(keys: Key | Key[], opts: query.WriteOptions = {}): Promise<void> {
187
+ const keysArr = array.toArray(keys);
188
+ const drop = () => this.store.delete(keysArr);
189
+ await query.optimistic({
190
+ rollbacks: [drop()],
191
+ onOptimistic: opts.onOptimistic,
192
+ commit: async () =>
193
+ await this.cfg.unary.send(
194
+ "/schematic/symbol/delete",
195
+ { keys: keysArr },
196
+ deleteReqZ,
197
+ emptyResZ,
198
+ ),
199
+ });
200
+ drop();
201
+ this.cfg.ontology.cache.relationships.delete(
202
+ (r) =>
203
+ r.type === ontology.PARENT_OF_RELATIONSHIP_TYPE &&
204
+ r.to.type === "schematic_symbol" &&
205
+ keysArr.includes(r.to.key),
90
206
  );
91
207
  }
92
208
 
93
- async retrieve(args: RetrieveSingleParams): Promise<Symbol>;
94
- async retrieve(args: RetrieveMultipleParams): Promise<Symbol[]>;
95
- async retrieve(args: RetrieveArgs): Promise<Symbol | Symbol[]> {
96
- const isSingle = "key" in args;
97
- const res = await this.client.send(
98
- "/schematic/symbol/retrieve",
99
- args,
100
- retrieveArgsZ,
101
- retrieveResZ,
209
+ /**
210
+ * Exports every symbol in the group as a bundle: a zip archive holding one JSON file
211
+ * per symbol beside a manifest.json naming the group. Two symbols that take the same
212
+ * file name keep distinct names through a numeric suffix, and children that are not
213
+ * symbols are skipped. The caller pipes the stream wherever it likes without the
214
+ * client buffering the whole archive.
215
+ * @param options - the export options, including the serialization member files are
216
+ * written in.
217
+ * @returns the bundle as a stream of zip bytes.
218
+ */
219
+ async exportGroup(
220
+ key: group.Key,
221
+ options: imex.Options,
222
+ ): Promise<ReadableStream<Uint8Array>> {
223
+ return await this.cfg.file.download(
224
+ "/schematic/symbol/group/export",
225
+ { key, encoding: options.encoding },
226
+ exportGroupReqZ,
227
+ { encoding: "ZIP" },
102
228
  );
103
- checkForMultipleOrNoResults("Schematic Symbol", args, res.symbols, isSingle);
104
- return isSingle ? res.symbols[0] : res.symbols;
105
229
  }
106
230
 
107
- async delete(keys: Key | Key[]): Promise<void> {
108
- await this.client.send(
109
- "/schematic/symbol/delete",
110
- { keys: array.toArray(keys) },
111
- deleteReqZ,
112
- emptyResZ,
231
+ /**
232
+ * Imports a symbol group bundle: a zip archive holding one JSON envelope per symbol
233
+ * beside a manifest.json naming the group. The Core creates a fresh group under the
234
+ * permanent symbol group and imports every member in a single transaction, so a
235
+ * failure leaves nothing behind.
236
+ * @returns the created group.
237
+ * @throws {ValidationError} if the manifest is missing, malformed, or of another
238
+ * bundle kind, if two member names collide, or if a member is not a symbol.
239
+ */
240
+ async importGroup(data: UploadBody): Promise<group.Group> {
241
+ const res = await this.cfg.file.upload(
242
+ "/schematic/symbol/group/import",
243
+ data,
244
+ { encoding: "ZIP" },
245
+ importGroupResZ,
113
246
  );
247
+ const parent = await this.retrieveGroup();
248
+ this.cfg.groupStore.set(res.group);
249
+ const rel: ontology.Relationship = {
250
+ from: group.ontologyID(parent.key),
251
+ type: ontology.PARENT_OF_RELATIONSHIP_TYPE,
252
+ to: group.ontologyID(res.group.key),
253
+ };
254
+ this.cfg.ontology.cache.relationships.set(ontology.relationshipToString(rel), rel);
255
+ return res.group;
256
+ }
257
+
258
+ /**
259
+ * Deletes the group and every symbol in it. The Core removes both in a single
260
+ * transaction, so a failure leaves the group and its symbols untouched. A child that
261
+ * is not a symbol survives: the Core moves it to the permanent symbol group.
262
+ */
263
+ async deleteGroup(key: group.Key, opts: query.WriteOptions = {}): Promise<void> {
264
+ const groupID = group.ontologyID(key);
265
+ const rels = this.cfg.ontology.cache.relationships;
266
+ // Read the members before the delete drops the relationships naming them.
267
+ const memberKeys = rels.get((r) => matchChildRel(r, groupID)).map((r) => r.to.key);
268
+ const drop = () => [
269
+ this.store.delete(memberKeys),
270
+ this.cfg.groupStore.delete(key),
271
+ // Both the relationships to the group's children and the one naming the group as
272
+ // its parent's child: the group and every symbol in it are gone.
273
+ rels.delete(
274
+ (r) =>
275
+ r.type === ontology.PARENT_OF_RELATIONSHIP_TYPE &&
276
+ (ontology.idsEqual(r.from, groupID) || ontology.idsEqual(r.to, groupID)),
277
+ ),
278
+ ];
279
+ await query.optimistic({
280
+ rollbacks: drop(),
281
+ onOptimistic: opts.onOptimistic,
282
+ commit: async () =>
283
+ await this.cfg.unary.send(
284
+ "/schematic/symbol/group/delete",
285
+ { key },
286
+ deleteGroupReqZ,
287
+ emptyResZ,
288
+ ),
289
+ });
290
+ drop();
114
291
  }
115
292
 
116
293
  async retrieveGroup(): Promise<group.Group> {
117
- const res = await this.client.send(
294
+ const res = await this.cfg.unary.send(
118
295
  "/schematic/symbol/retrieve-group",
119
296
  {},
120
297
  retrieveGroupReqZ,
@@ -122,4 +299,56 @@ export class Client {
122
299
  );
123
300
  return res.group;
124
301
  }
302
+
303
+ private async execRetrieve(
304
+ params: RetrieveSingleParams | z.input<typeof wireRetrieveRequestZ>,
305
+ ): Promise<Symbol[]> {
306
+ const res = await this.cfg.unary.send(
307
+ "/schematic/symbol/retrieve",
308
+ params,
309
+ retrieveParamsZ,
310
+ retrieveResZ,
311
+ );
312
+ return res.symbols;
313
+ }
314
+
315
+ /** Resolves a parent scope to its symbol children's keys via the ontology. */
316
+ private async resolveChildKeys(parent: ontology.ID): Promise<Key[]> {
317
+ // The children space writes the parent relationships through, so
318
+ // membership checks in requestFilter see them.
319
+ const children = await this.cfg.ontology.children.retrieve({
320
+ ids: parent,
321
+ types: ["schematic_symbol"],
322
+ });
323
+ return children.map(({ id: { key } }) => key);
324
+ }
325
+
326
+ private async fetchRequest(req: RetrieveRequest): Promise<Symbol[]> {
327
+ const { parent, ...rest } = req;
328
+ if (parent == null) return await this.execRetrieve(rest);
329
+ const keys = await this.resolveChildKeys(parent);
330
+ if (keys.length === 0) return [];
331
+ if (primitive.isZero(rest.searchTerm)) return await this.store.retrieve(keys);
332
+ return await this.execRetrieve({ keys, searchTerm: rest.searchTerm });
333
+ }
334
+
335
+ /**
336
+ * Client-side matching for a request: exact for key sets and parent
337
+ * membership via the relationship table. Server-computed shapes (search)
338
+ * never reach this filter; they refetch instead.
339
+ */
340
+ private requestFilter(req: RetrieveRequest): (s: Symbol) => boolean {
341
+ const keySet = primitive.isNonZero(req.keys) ? new Set(req.keys) : undefined;
342
+ return (s) => {
343
+ if (keySet != null && !keySet.has(s.key)) return false;
344
+ if (req.parent != null && !this.isChildOf(req.parent, s.key)) return false;
345
+ return true;
346
+ };
347
+ }
348
+
349
+ private isChildOf(parent: ontology.ID, key: Key): boolean {
350
+ return this.cfg.ontology.cache.relationships.has(
351
+ ontology.relationshipToString(childRel(parent, key)),
352
+ );
353
+ }
125
354
  }
@@ -9,7 +9,7 @@
9
9
 
10
10
  // Code generated by Oracle. DO NOT EDIT.
11
11
 
12
- import { array, spatial } from "@synnaxlabs/x";
12
+ import { color, spatial, uuid } from "@synnaxlabs/x";
13
13
  import { z } from "zod";
14
14
 
15
15
  import { ontology } from "@/ontology";
@@ -24,11 +24,14 @@ export const regionZ = z.object({
24
24
  /** name is a human-readable name for the region. */
25
25
  name: z.string(),
26
26
  /** selectors contains CSS selectors targeting SVG elements within the symbol. */
27
- selectors: array.nullishToEmpty(z.string()),
28
- /** strokeColor is an optional stroke color in hex format (#RRGGBB). */
29
- strokeColor: z.string().optional(),
30
- /** fillColor is an optional fill color in hex format (#RRGGBB). */
31
- fillColor: z.string().optional(),
27
+ selectors: z
28
+ .string()
29
+ .array()
30
+ .default(() => []),
31
+ /** strokeColor is an optional stroke color override for the region. */
32
+ strokeColor: color.colorZ.optional(),
33
+ /** fillColor is an optional fill color override for the region. */
34
+ fillColor: color.colorZ.optional(),
32
35
  });
33
36
  export interface Region extends z.infer<typeof regionZ> {}
34
37
 
@@ -53,7 +56,7 @@ export const stateZ = z.object({
53
56
  /** name is a human-readable name for this state. */
54
57
  name: z.string(),
55
58
  /** regions contains style regions defining visual appearance for this state. */
56
- regions: array.nullishToEmpty(regionZ),
59
+ regions: regionZ.array().default(() => []),
57
60
  });
58
61
  export interface State extends z.infer<typeof stateZ> {}
59
62
 
@@ -65,51 +68,36 @@ export const specZ = z.object({
65
68
  /** svg is the SVG markup defining the symbol's visual geometry. */
66
69
  svg: z.string().min(1),
67
70
  /** states contains available visual states with regional styling configurations. */
68
- states: array.nullishToEmpty(stateZ),
69
- /** variant is the symbol variant or category identifier (e.g., 'sensor', 'valve'). */
71
+ states: stateZ.array().default(() => []),
72
+ /** variant is the symbol variant: 'static' or 'actuator'. */
70
73
  variant: z.string().min(1),
71
74
  /** handles contains connection points for linking to other diagram elements. */
72
- handles: array.nullishToEmpty(handleZ),
75
+ handles: handleZ.array().default(() => []),
73
76
  /** scale is the symbol scale factor. */
74
77
  scale: z.number().default(1),
75
- /** scaleStroke indicates whether stroke width scales with the symbol size. */
76
- scaleStroke: z.boolean().default(false),
77
- /** previewViewport is an optional viewport configuration for symbol preview rendering. */
78
+ /** strokeScaled is true when stroke width scales with the symbol size. */
79
+ strokeScaled: z.boolean().default(false),
80
+ /**
81
+ * previewViewport is an optional viewport configuration for symbol preview rendering.
82
+ */
78
83
  previewViewport: spatial.viewportZ.optional(),
79
84
  });
80
85
  export interface Spec extends z.infer<typeof specZ> {}
81
86
 
82
87
  /**
83
- * Symbol is a persisted schematic symbol with versioning, defining reusable visual
84
- * components for diagrams.
88
+ * Symbol is a persisted schematic symbol defining reusable visual components for
89
+ * diagrams.
85
90
  */
86
91
  export const symbolZ = z.object({
87
92
  /** key is the unique identifier for this symbol. */
88
- key: keyZ,
89
- /** version is the symbol schema version for migration support. */
90
- version: z.uint32().default(1),
93
+ key: keyZ.default(uuid.create),
91
94
  /** name is a human-readable name for the symbol. */
92
95
  name: z.string().min(1),
93
96
  /** data is the complete symbol specification. */
94
97
  data: specZ,
95
98
  });
96
99
  export interface Symbol extends z.infer<typeof symbolZ> {}
97
-
98
- /** New contains parameters for creating a new schematic symbol. */
99
- export const newZ = z.object({
100
- /**
101
- * key is an optional key for the symbol. If not provided, one will be
102
- * automatically assigned.
103
- */
104
- key: keyZ.optional(),
105
- /** version is the symbol schema version. */
106
- version: z.uint32().default(1),
107
- /** name is a human-readable name for the symbol. */
108
- name: z.string().min(1),
109
- /** data is the complete symbol specification. */
110
- data: specZ,
111
- });
112
- export interface New extends z.input<typeof newZ> {}
100
+ export interface New extends z.input<typeof symbolZ> {}
113
101
 
114
102
  export const ontologyID = ontology.createIDFactory<Key>("schematic_symbol");
115
103
  export const TYPE_ONTOLOGY_ID = ontologyID("");
@@ -9,7 +9,7 @@
9
9
 
10
10
  // Code generated by Oracle. DO NOT EDIT.
11
11
 
12
- import { array, caseconv, record, spatial, zod } from "@synnaxlabs/x";
12
+ import { caseconv, record, spatial, uuid, zod } from "@synnaxlabs/x";
13
13
  import { z } from "zod";
14
14
 
15
15
  import { ontology } from "@/ontology";
@@ -21,23 +21,16 @@ export const nodeZ = z.object({
21
21
  /** position is the top-left position of the node. */
22
22
  position: spatial.xyZ,
23
23
  /**
24
- * zIndex is the stacking order of the node within the schematic. Higher
25
- * values render above lower values. Set by the user via
26
- * send-to-back / bring-to-front actions.
24
+ * zIndex is the stacking order of the node within the schematic. Higher values render
25
+ * above lower values. Set by the user via send-to-back / bring-to-front actions.
27
26
  */
28
- zIndex: zod.int16.optional(),
29
- /**
30
- * measured is the rendered pixel size of the node. Populated by the
31
- * renderer after the node is mounted and used to keep diagram
32
- * measurements consistent across re-renders.
33
- */
34
- measured: spatial.dimensionsZ.optional(),
27
+ zIndex: zod.int16.default(0),
35
28
  });
36
29
  export interface Node extends z.infer<typeof nodeZ> {}
37
30
 
38
31
  /**
39
- * Handle is a reference to a specific connection point on a specific node.
40
- * For schematics, param is the symbol handle key (e.g. inlet, outlet).
32
+ * Handle is a reference to a specific connection point on a specific node. For
33
+ * schematics, param is the symbol handle key (e.g. inlet, outlet).
41
34
  */
42
35
  export const handleZ = z.object({
43
36
  /** node is the node identifier. */
@@ -62,32 +55,32 @@ export const edgeZ = z.object({
62
55
  export interface Edge extends z.infer<typeof edgeZ> {}
63
56
 
64
57
  /**
65
- * Schematic is a visual diagram editor component for drawing system schematics,
66
- * control flows, and process diagrams. Schematics support interactive
67
- * symbols, connection handles, and dynamic state visualization.
58
+ * Schematic is a visual diagram editor component for drawing system schematics, control
59
+ * flows, and process diagrams. Schematics support interactive symbols, connection
60
+ * handles, and dynamic state visualization.
68
61
  */
69
62
  export const schematicZ = z.object({
70
63
  /** key is the unique identifier for this schematic. */
71
- key: keyZ,
64
+ key: keyZ.default(uuid.create),
72
65
  /** name is a human-readable name for the schematic. */
73
- name: z.string(),
74
- /** snapshot indicates whether this schematic represents a saved snapshot state. */
75
- snapshot: z.boolean(),
66
+ name: z.string().min(1, "name is required"),
67
+ /** snapshot is true if this schematic is an immutable snapshot copy. */
68
+ snapshot: z.boolean().default(false),
76
69
  /** nodes contains all diagram nodes in the schematic. */
77
- nodes: array.nullishToEmpty(nodeZ),
70
+ nodes: nodeZ.array().default(() => []),
78
71
  /** edges contains all connections between nodes. */
79
- edges: array.nullishToEmpty(edgeZ),
72
+ edges: edgeZ.array().default(() => []),
80
73
  /**
81
- * configs contains per-element configuration keyed by node or edge key. The
82
- * shape of each value is determined by the element's variant; the
83
- * wire format intentionally stores it as an opaque record.
74
+ * configs contains per-element configuration keyed by node or edge key. The shape of
75
+ * each value is determined by the element's variant; the wire format intentionally
76
+ * stores it as an opaque record.
84
77
  */
85
- configs: caseconv.preserveCase(record.nullishToEmpty(z.string(), record.unknownZ())),
78
+ configs: caseconv.preserveCase(
79
+ z.record(z.string(), record.unknownZ()).default(() => ({})),
80
+ ),
86
81
  });
87
82
  export interface Schematic extends z.infer<typeof schematicZ> {}
88
-
89
- export const newZ = schematicZ.partial({ key: true, snapshot: true });
90
- export interface New extends z.input<typeof newZ> {}
83
+ export interface New extends z.input<typeof schematicZ> {}
91
84
 
92
85
  export const ontologyID = ontology.createIDFactory<Key>("schematic");
93
86
  export const TYPE_ONTOLOGY_ID = ontologyID("");