@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
package/src/transport.ts CHANGED
@@ -8,28 +8,39 @@
8
8
  // included in the file licenses/APL.txt.
9
9
 
10
10
  import {
11
+ type FileTransport,
11
12
  HTTPClient,
12
13
  type Middleware,
13
14
  type UnaryClient,
14
15
  unaryWithBreaker,
15
16
  WebSocketClient,
16
17
  } from "@synnaxlabs/freighter";
17
- import { binary, type breaker, type URL } from "@synnaxlabs/x";
18
+ import { binary, type breaker, type url } from "@synnaxlabs/x";
18
19
 
19
20
  export class Transport {
20
- readonly url: URL;
21
+ readonly url: url.URL;
21
22
  readonly unary: UnaryClient;
23
+ /**
24
+ * The unary client without the breaker's retry wrapper, for callers that own their
25
+ * retry policy (the connection checker). Shares middleware with {@link unary}.
26
+ */
27
+ readonly unaryNoRetry: UnaryClient;
28
+ readonly file: FileTransport;
22
29
  readonly stream: WebSocketClient;
23
30
  readonly secure: boolean;
24
31
 
25
- constructor(url: URL, breakerCfg: breaker.Config = {}, secure: boolean = false) {
32
+ constructor(url: url.URL, breakerCfg: breaker.Config = {}, secure: boolean = false) {
26
33
  this.secure = secure;
27
34
  this.url = url.child("/api/v1/");
28
35
  const codec = new binary.JSONCodec();
29
- this.unary = unaryWithBreaker(
30
- new HTTPClient(this.url, codec, this.secure),
31
- breakerCfg,
32
- );
36
+ // The streaming file client and the unary client share one HTTPClient, so
37
+ // middleware (e.g. auth) registered through unary applies to file too. The file
38
+ // client deliberately skips the breaker's retry wrapper: an upload body may be a
39
+ // one-shot ReadableStream that cannot be re-sent on a retry.
40
+ const http = new HTTPClient(this.url, codec, this.secure);
41
+ this.unary = unaryWithBreaker(http, breakerCfg);
42
+ this.unaryNoRetry = http;
43
+ this.file = http;
33
44
  this.stream = new WebSocketClient(this.url, codec, this.secure);
34
45
  }
35
46
 
@@ -8,17 +8,19 @@
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, primitive, record } from "@synnaxlabs/x";
12
12
  import { z } from "zod";
13
13
 
14
14
  import { MultipleFoundError, NotFoundError } from "@/errors";
15
15
  import { ontology } from "@/ontology";
16
+ import { query } from "@/query";
16
17
  import { type Key, keyZ, type New, newZ, type User, userZ } from "@/user/types.gen";
17
18
 
18
19
  const retrieveRequestZ = z.object({
19
20
  keys: keyZ.array().optional(),
20
21
  usernames: z.string().array().optional(),
21
22
  });
23
+ const retrieveMultiParamsZ = retrieveRequestZ.or(query.keyListZ(keyZ));
22
24
 
23
25
  const keyRetrieveRequestZ = z
24
26
  .object({
@@ -32,28 +34,21 @@ const usernameRetrieveRequestZ = z
32
34
  })
33
35
  .transform(({ username }) => ({ usernames: [username] }));
34
36
 
35
- const usernamesRetrieveRequestZ = z
36
- .object({
37
- usernames: z.string().array(),
38
- })
39
- .transform(({ usernames }) => ({ usernames }));
40
-
41
37
  export type KeyRetrieveRequest = z.input<typeof keyRetrieveRequestZ>;
42
38
  export type UsernameRetrieveRequest = z.input<typeof usernameRetrieveRequestZ>;
43
- export type UsernamesRetrieveRequest = z.input<typeof usernamesRetrieveRequestZ>;
39
+ export type UsernamesRetrieveRequest = { usernames: string[] };
44
40
 
45
- const retrieveArgsZ = z.union([
41
+ const retrieveParamsZ = z.union([
46
42
  keyRetrieveRequestZ,
47
43
  usernameRetrieveRequestZ,
48
- usernamesRetrieveRequestZ,
49
44
  retrieveRequestZ,
50
45
  ]);
51
46
 
52
- export type RetrieveArgs = z.input<typeof retrieveArgsZ>;
47
+ export type RetrieveParams = z.input<typeof retrieveParamsZ>;
53
48
 
54
49
  export interface RetrieveRequest extends z.infer<typeof retrieveRequestZ> {}
55
50
 
56
- const retrieveResZ = z.object({ users: array.nullishToEmpty(userZ) });
51
+ const retrieveResZ = z.object({ users: userZ.array().default(() => []) });
57
52
 
58
53
  const createReqZ = z.object({ users: newZ.array() });
59
54
  const createResZ = z.object({ users: userZ.array() });
@@ -71,82 +66,188 @@ const deleteResZ = z.object({});
71
66
  export const SET_CHANNEL_NAME = "sy_user_set";
72
67
  export const DELETE_CHANNEL_NAME = "sy_user_delete";
73
68
 
74
- export class Client {
75
- private readonly client: UnaryClient;
69
+ type SingleParams = KeyRetrieveRequest | UsernameRetrieveRequest;
70
+
71
+ const singleParamsZ = z.union([
72
+ z.strictObject({ key: keyZ }),
73
+ z.strictObject({ username: z.string() }),
74
+ keyZ.transform((key) => ({ key })),
75
+ ]);
76
76
 
77
- constructor(client: UnaryClient) {
78
- this.client = client;
77
+ const singleIdentifier = (params: SingleParams): string =>
78
+ "key" in params ? `key ${params.key}` : `username ${params.username}`;
79
+
80
+ const requestFilter = (req: RetrieveRequest): ((u: User) => boolean) => {
81
+ const keySet = primitive.isNonZero(req.keys) ? new Set(req.keys) : undefined;
82
+ const usernameSet = primitive.isNonZero(req.usernames)
83
+ ? new Set(req.usernames)
84
+ : undefined;
85
+ return (u) => {
86
+ if (keySet != null && !keySet.has(u.key)) return false;
87
+ if (usernameSet != null && !usernameSet.has(u.username)) return false;
88
+ return true;
89
+ };
90
+ };
91
+
92
+ export interface ClientConfig {
93
+ unary: UnaryClient;
94
+ cache: query.Cache;
95
+ ontology: ontology.Client;
96
+ }
97
+
98
+ export class Client extends query.Retriever<
99
+ typeof retrieveMultiParamsZ,
100
+ Key,
101
+ User,
102
+ User,
103
+ SingleParams,
104
+ SingleParams
105
+ > {
106
+ private readonly cfg: ClientConfig;
107
+ private readonly store: query.Table<Key, User>;
108
+
109
+ constructor(cfg: ClientConfig) {
110
+ const { cache } = cfg;
111
+ const store = cache.createTable<Key, User>({
112
+ name: "users",
113
+ fetch: async (keys) => await this.execRetrieve({ keys }),
114
+ });
115
+ const single = cache.queries<SingleParams, User, Key, User>({
116
+ name: "user",
117
+ table: store,
118
+ fetch: async (params) => {
119
+ if (!("key" in params)) {
120
+ const [cached] = store.get((u) => u.username === params.username);
121
+ if (cached != null) return [cached.key];
122
+ }
123
+ const users = await this.execRetrieve(params);
124
+ checkSingle(params, users);
125
+ store.ingest(users);
126
+ return users.map((u) => u.key);
127
+ },
128
+ compose: (records) => records[0],
129
+ keyOf: (params) => ("key" in params ? params.key : null),
130
+ matches: (u, params) =>
131
+ "key" in params ? u.key === params.key : u.username === params.username,
132
+ single: true,
133
+ });
134
+ super(cache, {
135
+ name: "user",
136
+ table: store,
137
+ request: {
138
+ schema: retrieveMultiParamsZ,
139
+ fetch: async (req) => await this.execRetrieve(req),
140
+ matches: (u, req) => requestFilter(req)(u),
141
+ },
142
+ single: { schema: singleParamsZ, space: single },
143
+ });
144
+ this.cfg = cfg;
145
+ this.store = store;
79
146
  }
80
147
 
81
148
  async create(user: New): Promise<User>;
82
149
  async create(users: New[]): Promise<User[]>;
83
150
  async create(users: New | New[]): Promise<User | User[]> {
84
151
  const isMany = Array.isArray(users);
85
- const res = await this.client.send(
152
+ const res = await this.cfg.unary.send(
86
153
  "/user/create",
87
154
  { users: array.toArray(users) },
88
155
  createReqZ,
89
156
  createResZ,
90
157
  );
158
+ this.store.set(res.users);
91
159
  return isMany ? res.users : res.users[0];
92
160
  }
93
161
 
94
- async changeUsername(key: Key, newUsername: string): Promise<void> {
95
- await this.client.send(
96
- "/user/change-username",
97
- { key, username: newUsername },
98
- changeUsernameReqZ,
99
- changeUsernameResZ,
100
- );
162
+ async changeUsername(
163
+ key: Key,
164
+ newUsername: string,
165
+ opts: query.WriteOptions = {},
166
+ ): Promise<void> {
167
+ const update = () => [
168
+ query.partialUpdate(this.store, key, { username: newUsername }),
169
+ this.cfg.ontology.cache.renameResource(ontologyID(key), newUsername),
170
+ ];
171
+ await query.optimistic({
172
+ rollbacks: update(),
173
+ onOptimistic: opts.onOptimistic,
174
+ commit: async () =>
175
+ await this.cfg.unary.send(
176
+ "/user/change-username",
177
+ { key, username: newUsername },
178
+ changeUsernameReqZ,
179
+ changeUsernameResZ,
180
+ ),
181
+ });
182
+ update();
101
183
  }
102
184
 
103
- async retrieve(args: KeyRetrieveRequest): Promise<User>;
104
- async retrieve(args: UsernameRetrieveRequest): Promise<User>;
105
- async retrieve(args: RetrieveArgs): Promise<User[]>;
106
- async retrieve(args: RetrieveArgs): Promise<User | User[]> {
107
- const isSingle = "key" in args || "username" in args;
108
- const res = await this.client.send(
109
- "/user/retrieve",
110
- args,
111
- retrieveArgsZ,
112
- retrieveResZ,
113
- );
114
-
115
- if (!isSingle) return res.users;
116
-
117
- if (res.users.length === 0) {
118
- const identifier =
119
- "key" in args ? `key ${args.key}` : `username ${args.username}`;
120
- throw new NotFoundError(`No user with ${identifier} found`);
121
- }
122
- if (res.users.length > 1) {
123
- const identifier =
124
- "key" in args ? `key ${args.key}` : `username ${args.username}`;
125
- throw new MultipleFoundError(`Multiple users found with ${identifier}`);
126
- }
127
- return res.users[0];
185
+ async rename(
186
+ key: Key,
187
+ firstName?: string,
188
+ lastName?: string,
189
+ opts: query.WriteOptions = {},
190
+ ): Promise<void> {
191
+ await query.optimistic({
192
+ rollbacks: [
193
+ query.partialUpdate(
194
+ this.store,
195
+ key,
196
+ record.purgeUndefined({ firstName, lastName }),
197
+ ),
198
+ ],
199
+ onOptimistic: opts.onOptimistic,
200
+ commit: async () =>
201
+ await this.cfg.unary.send(
202
+ "/user/rename",
203
+ { key, firstName, lastName },
204
+ renameReqZ,
205
+ renameResZ,
206
+ ),
207
+ });
128
208
  }
129
209
 
130
- async rename(key: Key, firstName?: string, lastName?: string): Promise<void> {
131
- await this.client.send(
132
- "/user/rename",
133
- { key, firstName, lastName },
134
- renameReqZ,
135
- renameResZ,
136
- );
210
+ async delete(key: Key, opts?: query.WriteOptions): Promise<void>;
211
+ async delete(keys: Key[], opts?: query.WriteOptions): Promise<void>;
212
+ async delete(keys: Key | Key[], opts: query.WriteOptions = {}): Promise<void> {
213
+ const keysArr = array.toArray(keys);
214
+ const drop = () => [
215
+ this.cfg.ontology.cache.deleteResources(ontologyID(keysArr)),
216
+ this.store.delete(keysArr),
217
+ ];
218
+ await query.optimistic({
219
+ rollbacks: drop(),
220
+ onOptimistic: opts.onOptimistic,
221
+ commit: async () =>
222
+ await this.cfg.unary.send(
223
+ "/user/delete",
224
+ { keys: keysArr },
225
+ deleteReqZ,
226
+ deleteResZ,
227
+ ),
228
+ });
229
+ drop();
137
230
  }
138
231
 
139
- async delete(key: Key): Promise<void>;
140
- async delete(keys: Key[]): Promise<void>;
141
- async delete(keys: Key | Key[]): Promise<void> {
142
- await this.client.send(
143
- "/user/delete",
144
- { keys: array.toArray(keys) },
145
- deleteReqZ,
146
- deleteResZ,
232
+ private async execRetrieve(params: RetrieveParams): Promise<User[]> {
233
+ const res = await this.cfg.unary.send(
234
+ "/user/retrieve",
235
+ params,
236
+ retrieveParamsZ,
237
+ retrieveResZ,
147
238
  );
239
+ return res.users;
148
240
  }
149
241
  }
150
242
 
243
+ const checkSingle = (params: SingleParams, users: User[]): void => {
244
+ if (users.length === 0)
245
+ throw new NotFoundError(`No user with ${singleIdentifier(params)} found`);
246
+ if (users.length > 1)
247
+ throw new MultipleFoundError(
248
+ `Multiple users found with ${singleIdentifier(params)}`,
249
+ );
250
+ };
251
+
151
252
  export const ontologyID = ontology.createIDFactory<Key>("user");
152
253
  export const TYPE_ONTOLOGY_ID = ontologyID("");
@@ -12,7 +12,7 @@ export {
12
12
  DELETE_CHANNEL_NAME,
13
13
  type KeyRetrieveRequest,
14
14
  ontologyID,
15
- type RetrieveArgs,
15
+ type RetrieveParams,
16
16
  type RetrieveRequest,
17
17
  SET_CHANNEL_NAME,
18
18
  TYPE_ONTOLOGY_ID,
@@ -17,21 +17,21 @@ export const keyZ = z.uuid();
17
17
  export type Key = z.infer<typeof keyZ>;
18
18
 
19
19
  /**
20
- * User is an account entity representing a person accessing the Synnax system.
21
- * Users can have roles assigned for permission management.
20
+ * User is an account entity representing a person accessing the Synnax system. Users
21
+ * can have roles assigned for permission management.
22
22
  */
23
23
  export const userZ = z.object({
24
24
  /** key is the unique identifier for this user. */
25
25
  key: keyZ,
26
26
  /** username is the unique login name for the user. */
27
- username: z.string().min(1, "Username is required"),
27
+ username: z.string().min(1, "username is required"),
28
28
  /** firstName is the user's first name. */
29
29
  firstName: z.string(),
30
30
  /** lastName is the user's last name. */
31
31
  lastName: z.string(),
32
32
  /**
33
- * rootUser is true if this is a root/admin user with full system access. Root
34
- * users cannot be deleted.
33
+ * rootUser is true if this is a root/admin user with full system access. Root users
34
+ * cannot be deleted.
35
35
  */
36
36
  rootUser: z.boolean().default(false),
37
37
  });
@@ -15,14 +15,14 @@ export type SingleParamAnalysisResult<
15
15
  T extends primitive.Value,
16
16
  K extends PartialTypeNameRecord<T>,
17
17
  > = T extends unknown
18
- ? { single: true; variant: K[keyof K]; normalized: T[]; actual: T }
18
+ ? { single: true; variant: K[TypeName<T>]; normalized: T[]; actual: T }
19
19
  : never;
20
20
 
21
21
  export type MultiParamAnalysisResult<
22
22
  T extends primitive.Value,
23
23
  K extends PartialTypeNameRecord<T>,
24
24
  > = T extends unknown
25
- ? { single: false; variant: K[keyof K]; normalized: T[]; actual: T[] }
25
+ ? { single: false; variant: K[TypeName<T>]; normalized: T[]; actual: T[] }
26
26
  : never;
27
27
 
28
28
  type TypeName<T> = T extends string
@@ -62,10 +62,10 @@ export const analyzeParams = <
62
62
  let normal = array.toArray(args);
63
63
  const first = normal[0];
64
64
  const t = typeof first;
65
- let variant: K[keyof K];
65
+ let variant: K[TypeName<T>];
66
66
  if (t === "string" && convertNumericStrings)
67
67
  if (!isNaN(parseInt(first as string, 10)) && "number" in variantMap) {
68
- variant = variantMap.number as K[keyof K];
68
+ variant = variantMap.number as K[TypeName<T>];
69
69
  normal = normal.map((n) => parseInt(n as string, 10));
70
70
  } else variant = variantMap[t as TypeName<T>];
71
71
  else variant = variantMap[t as TypeName<T>];
package/src/util/telem.ts CHANGED
@@ -10,7 +10,6 @@
10
10
  import { type DataType, type TypedArray } from "@synnaxlabs/x";
11
11
 
12
12
  export const randomSeries = (length: number, dataType: DataType): TypedArray => {
13
- // create random bytes of the correct length
14
13
  const bytes = new Uint8Array(length * dataType.density.valueOf());
15
14
  for (let i = 0; i < bytes.byteLength; i++) bytes[i] = Math.floor(Math.random() * 256);
16
15
  return new dataType.Array(bytes.buffer);
@@ -8,16 +8,24 @@
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, primitive } from "@synnaxlabs/x";
12
12
  import { z } from "zod";
13
13
 
14
- import { checkForMultipleOrNoResults } from "@/util/retrieve";
15
- import { type Key, keyZ, type New, newZ, type View, viewZ } from "@/view/types.gen";
14
+ import { ontology } from "@/ontology";
15
+ import { query } from "@/query";
16
+ import {
17
+ type Key,
18
+ keyZ,
19
+ type New,
20
+ ontologyID,
21
+ type View,
22
+ viewZ,
23
+ } from "@/view/types.gen";
16
24
 
17
25
  export const SET_CHANNEL_NAME = "sy_view_set";
18
26
  export const DELETE_CHANNEL_NAME = "sy_view_delete";
19
27
 
20
- const createReqZ = z.object({ views: newZ.array() });
28
+ const createReqZ = z.object({ views: viewZ.array() });
21
29
  const createResZ = z.object({ views: viewZ.array() });
22
30
  const deleteReqZ = z.object({ keys: keyZ.array() });
23
31
  const emptyResZ = z.object({});
@@ -29,60 +37,135 @@ const retrieveRequestZ = z.object({
29
37
  offset: z.number().optional(),
30
38
  limit: z.number().optional(),
31
39
  });
40
+ const retrieveMultiParamsZ = retrieveRequestZ.or(query.keyListZ(keyZ));
32
41
 
33
- const singleRetrieveArgsZ = z
34
- .object({ key: keyZ })
35
- .transform(({ key }) => ({ keys: [key] }));
42
+ export type RetrieveSingleParams = { key: Key };
43
+ export interface RetrieveMultipleParams extends z.input<typeof retrieveRequestZ> {}
36
44
 
37
- const retrieveArgsZ = z.union([singleRetrieveArgsZ, retrieveRequestZ]);
45
+ interface RetrieveRequest extends z.infer<typeof retrieveRequestZ> {}
38
46
 
39
- export interface RetrieveSingleParams extends z.input<typeof singleRetrieveArgsZ> {}
40
- export interface RetrieveMultipleParams extends z.input<typeof retrieveRequestZ> {}
47
+ const retrieveResponseZ = z.object({ views: viewZ.array().default(() => []) });
41
48
 
42
- const retrieveResponseZ = z.object({ views: array.nullishToEmpty(viewZ) });
49
+ /**
50
+ * Client-side matching for a request: key and type sets. Server-computed
51
+ * shapes (search, limit/offset) never reach this filter; they refetch instead.
52
+ */
53
+ const requestFilter = (req: RetrieveRequest): ((v: View) => boolean) => {
54
+ const keySet = primitive.isNonZero(req.keys) ? new Set(req.keys) : undefined;
55
+ const typeSet = primitive.isNonZero(req.types) ? new Set(req.types) : undefined;
56
+ return (v) => {
57
+ if (keySet != null && !keySet.has(v.key)) return false;
58
+ if (typeSet != null && !typeSet.has(v.type)) return false;
59
+ return true;
60
+ };
61
+ };
43
62
 
44
- export class Client {
45
- private readonly client: UnaryClient;
63
+ export interface ClientConfig {
64
+ unary: UnaryClient;
65
+ cache: query.Cache;
66
+ ontology: ontology.Client;
67
+ }
46
68
 
47
- constructor(client: UnaryClient) {
48
- this.client = client;
49
- }
69
+ export class Client extends query.Retriever<typeof retrieveMultiParamsZ, Key, View> {
70
+ private readonly cfg: ClientConfig;
71
+ private readonly store: query.Table<Key, View>;
50
72
 
51
- async retrieve(args: RetrieveSingleParams): Promise<View>;
52
- async retrieve(args: RetrieveMultipleParams): Promise<View[]>;
53
- async retrieve(
54
- args: RetrieveSingleParams | RetrieveMultipleParams,
55
- ): Promise<View | View[]> {
56
- const isSingle = "key" in args;
57
- const res = await this.client.send(
58
- "/view/retrieve",
59
- args,
60
- retrieveArgsZ,
61
- retrieveResponseZ,
62
- );
63
- checkForMultipleOrNoResults("View", args, res.views, isSingle);
64
- return isSingle ? res.views[0] : res.views;
73
+ constructor(cfg: ClientConfig) {
74
+ const { cache } = cfg;
75
+ const store = cache.createTable<Key, View>({
76
+ name: "views",
77
+ fetch: async (keys) => await this.execRetrieve({ keys }),
78
+ listen: [
79
+ query.createSetListener(SET_CHANNEL_NAME, viewZ),
80
+ query.createDeleteListener(DELETE_CHANNEL_NAME, keyZ),
81
+ ],
82
+ });
83
+ super(cache, {
84
+ name: "view",
85
+ table: store,
86
+ request: {
87
+ schema: retrieveMultiParamsZ,
88
+ fetch: async (req) => await this.execRetrieve(req),
89
+ matches: (view, req) => requestFilter(req)(view),
90
+ },
91
+ });
92
+ this.cfg = cfg;
93
+ this.store = store;
65
94
  }
66
95
 
67
96
  async create(view: New): Promise<View>;
68
97
  async create(views: New[]): Promise<View[]>;
69
98
  async create(views: New | New[]): Promise<View | View[]> {
70
99
  const isMany = Array.isArray(views);
71
- const res = await this.client.send(
100
+ const res = await this.cfg.unary.send(
72
101
  "/view/create",
73
102
  { views: array.toArray(views) },
74
103
  createReqZ,
75
104
  createResZ,
76
105
  );
106
+ this.store.set(res.views);
77
107
  return isMany ? res.views : res.views[0];
78
108
  }
79
109
 
80
- async delete(keys: Key | Key[]): Promise<void> {
81
- await this.client.send(
82
- "/view/delete",
83
- { keys: array.toArray(keys) },
84
- deleteReqZ,
85
- emptyResZ,
110
+ async rename(key: Key, name: string, opts: query.WriteOptions = {}): Promise<void> {
111
+ const v = await this.retrieve(key);
112
+ const rename = () => [
113
+ query.partialUpdate(this.store, key, { name }),
114
+ this.cfg.ontology.cache.renameResource(ontologyID(key), name),
115
+ ];
116
+ await query.optimistic({
117
+ rollbacks: rename(),
118
+ onOptimistic: opts.onOptimistic,
119
+ commit: async () => {
120
+ await this.create({ ...v, name });
121
+ },
122
+ });
123
+ rename();
124
+ }
125
+
126
+ async delete(keys: Key | Key[], opts: query.WriteOptions = {}): Promise<void> {
127
+ const keysArr = array.toArray(keys);
128
+ const ids = ontologyID(keysArr);
129
+ const drop = () => [
130
+ this.cfg.ontology.cache.deleteRelationships(ids),
131
+ this.store.delete(keysArr),
132
+ this.cfg.ontology.cache.resources.delete(ontology.idToString(ids)),
133
+ ];
134
+ await query.optimistic({
135
+ rollbacks: drop(),
136
+ onOptimistic: opts.onOptimistic,
137
+ commit: async () =>
138
+ await this.cfg.unary.send(
139
+ "/view/delete",
140
+ { keys: keysArr },
141
+ deleteReqZ,
142
+ emptyResZ,
143
+ ),
144
+ });
145
+ drop();
146
+ }
147
+
148
+ /** Subscribes to every view set delivered to the cache. */
149
+ onSet(handler: (view: View) => void): destructor.Destructor {
150
+ return this.store.subscribe((event) => {
151
+ if (event.variant === "set") handler(event.value);
152
+ });
153
+ }
154
+
155
+ /** Subscribes to every view delete delivered to the cache. */
156
+ onDelete(handler: (key: Key) => void): destructor.Destructor {
157
+ return this.store.subscribe((event) => {
158
+ if (event.variant === "delete") handler(event.key);
159
+ });
160
+ }
161
+
162
+ private async execRetrieve(params: RetrieveMultipleParams): Promise<View[]> {
163
+ const res = await this.cfg.unary.send(
164
+ "/view/retrieve",
165
+ params,
166
+ retrieveRequestZ,
167
+ retrieveResponseZ,
86
168
  );
169
+ return res.views;
87
170
  }
88
171
  }
@@ -9,7 +9,7 @@
9
9
 
10
10
  // Code generated by Oracle. DO NOT EDIT.
11
11
 
12
- import { record } from "@synnaxlabs/x";
12
+ import { record, uuid } from "@synnaxlabs/x";
13
13
  import { z } from "zod";
14
14
 
15
15
  import { ontology } from "@/ontology";
@@ -18,27 +18,24 @@ export const keyZ = z.uuid();
18
18
  export type Key = z.infer<typeof keyZ>;
19
19
 
20
20
  /**
21
- * View is a persisted view configuration storing visualization settings and
22
- * query parameters for line plots, tables, schematics, and other view
23
- * types.
21
+ * View is a persisted view configuration storing visualization settings and query
22
+ * parameters for line plots, tables, schematics, and other view types.
24
23
  */
25
24
  export const viewZ = z.object({
26
25
  /** key is the unique identifier for this view. */
27
- key: keyZ,
26
+ key: keyZ.default(uuid.create),
28
27
  /** name is a human-readable name for the view. */
29
28
  name: z.string(),
30
29
  /** type is the view type identifier (e.g., 'lineplot', 'table', 'schematic'). */
31
30
  type: z.string(),
32
31
  /**
33
- * query is a type-agnostic JSON object containing view-specific configuration
34
- * and query parameters.
32
+ * query is a type-agnostic JSON object containing view-specific configuration and
33
+ * query parameters.
35
34
  */
36
- query: record.nullishToEmpty(),
35
+ query: record.unknownZ().default(() => ({})),
37
36
  });
38
37
  export interface View extends z.infer<typeof viewZ> {}
39
-
40
- export const newZ = viewZ.partial({ key: true });
41
- export interface New extends z.input<typeof newZ> {}
38
+ export interface New extends z.input<typeof viewZ> {}
42
39
 
43
40
  export const ontologyID = ontology.createIDFactory<Key>("view");
44
41
  export const TYPE_ONTOLOGY_ID = ontologyID("");