@synnaxlabs/client 0.56.2 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (741) hide show
  1. package/dist/client-B08VDLSA.js +14463 -0
  2. package/dist/client-B08VDLSA.js.map +1 -0
  3. package/dist/client.js +1128 -14876
  4. package/dist/client.js.map +1 -0
  5. package/dist/src/access/client.d.ts +10 -1
  6. package/dist/src/access/client.d.ts.map +1 -1
  7. package/dist/src/access/enforce.d.ts.map +1 -1
  8. package/dist/src/access/external.d.ts +1 -0
  9. package/dist/src/access/external.d.ts.map +1 -1
  10. package/dist/src/access/granted.d.ts +39 -0
  11. package/dist/src/access/granted.d.ts.map +1 -0
  12. package/dist/src/access/policy/client.d.ts +136 -147
  13. package/dist/src/access/policy/client.d.ts.map +1 -1
  14. package/dist/src/access/policy/types.gen.d.ts +15 -68
  15. package/dist/src/access/policy/types.gen.d.ts.map +1 -1
  16. package/dist/src/access/role/client.d.ts +77 -58
  17. package/dist/src/access/role/client.d.ts.map +1 -1
  18. package/dist/src/access/role/types.gen.d.ts +8 -14
  19. package/dist/src/access/role/types.gen.d.ts.map +1 -1
  20. package/dist/src/actions/actions.d.ts +5 -6
  21. package/dist/src/actions/actions.d.ts.map +1 -1
  22. package/dist/src/actions/controller.d.ts +194 -0
  23. package/dist/src/actions/controller.d.ts.map +1 -0
  24. package/dist/src/actions/external.d.ts +1 -0
  25. package/dist/src/actions/external.d.ts.map +1 -1
  26. package/dist/src/arc/actions.d.ts +575 -0
  27. package/dist/src/arc/actions.d.ts.map +1 -0
  28. package/dist/src/arc/actions.gen.d.ts +1439 -0
  29. package/dist/src/arc/actions.gen.d.ts.map +1 -0
  30. package/dist/src/arc/client.d.ts +97 -13
  31. package/dist/src/arc/client.d.ts.map +1 -1
  32. package/dist/src/arc/compiler/types.gen.d.ts +3 -3
  33. package/dist/src/arc/compiler/types.gen.d.ts.map +1 -1
  34. package/dist/src/arc/external.d.ts +2 -0
  35. package/dist/src/arc/external.d.ts.map +1 -1
  36. package/dist/src/arc/graph/types.gen.d.ts +45 -597
  37. package/dist/src/arc/graph/types.gen.d.ts.map +1 -1
  38. package/dist/src/arc/ir/index.d.ts +1 -1
  39. package/dist/src/arc/ir/index.d.ts.map +1 -1
  40. package/dist/src/arc/ir/ir.d.ts +2 -0
  41. package/dist/src/arc/ir/ir.d.ts.map +1 -0
  42. package/dist/src/arc/ir/types.gen.d.ts +58 -2807
  43. package/dist/src/arc/ir/types.gen.d.ts.map +1 -1
  44. package/dist/src/arc/module/types.gen.d.ts +18 -1090
  45. package/dist/src/arc/module/types.gen.d.ts.map +1 -1
  46. package/dist/src/arc/program/types.gen.d.ts +18 -1090
  47. package/dist/src/arc/program/types.gen.d.ts.map +1 -1
  48. package/dist/src/arc/text/types.gen.d.ts +54 -1
  49. package/dist/src/arc/text/types.gen.d.ts.map +1 -1
  50. package/dist/src/arc/types/types.gen.d.ts +35 -153
  51. package/dist/src/arc/types/types.gen.d.ts.map +1 -1
  52. package/dist/src/arc/types.gen.d.ts +98 -2278
  53. package/dist/src/arc/types.gen.d.ts.map +1 -1
  54. package/dist/src/auth/auth.d.ts +14 -2
  55. package/dist/src/auth/auth.d.ts.map +1 -1
  56. package/dist/src/channel/client.d.ts +113 -75
  57. package/dist/src/channel/client.d.ts.map +1 -1
  58. package/dist/src/channel/external.d.ts +0 -1
  59. package/dist/src/channel/external.d.ts.map +1 -1
  60. package/dist/src/channel/payload.d.ts +65 -56
  61. package/dist/src/channel/payload.d.ts.map +1 -1
  62. package/dist/src/channel/types.gen.d.ts +26 -73
  63. package/dist/src/channel/types.gen.d.ts.map +1 -1
  64. package/dist/src/channel/writer.d.ts +1 -3
  65. package/dist/src/channel/writer.d.ts.map +1 -1
  66. package/dist/src/client.d.ts +55 -27
  67. package/dist/src/client.d.ts.map +1 -1
  68. package/dist/src/connection/client.d.ts +146 -0
  69. package/dist/src/connection/client.d.ts.map +1 -0
  70. package/dist/src/connection/external.d.ts +3 -0
  71. package/dist/src/connection/external.d.ts.map +1 -0
  72. package/dist/src/connection/index.d.ts +1 -1
  73. package/dist/src/connection/index.d.ts.map +1 -1
  74. package/dist/src/connection/status.d.ts +252 -0
  75. package/dist/src/connection/status.d.ts.map +1 -0
  76. package/dist/src/control/client.d.ts +31 -7
  77. package/dist/src/control/client.d.ts.map +1 -1
  78. package/dist/src/control/state.d.ts +47 -16
  79. package/dist/src/control/state.d.ts.map +1 -1
  80. package/dist/src/device/client.d.ts +59 -17
  81. package/dist/src/device/client.d.ts.map +1 -1
  82. package/dist/src/device/types.gen.d.ts +17 -67
  83. package/dist/src/device/types.gen.d.ts.map +1 -1
  84. package/dist/src/errors.d.ts +17 -20
  85. package/dist/src/errors.d.ts.map +1 -1
  86. package/dist/src/ethercat/external.d.ts +2 -0
  87. package/dist/src/ethercat/external.d.ts.map +1 -0
  88. package/dist/src/ethercat/index.d.ts +2 -0
  89. package/dist/src/ethercat/index.d.ts.map +1 -0
  90. package/dist/src/ethercat/types.gen.d.ts +243 -0
  91. package/dist/src/ethercat/types.gen.d.ts.map +1 -0
  92. package/dist/src/framer/adapter.d.ts +8 -5
  93. package/dist/src/framer/adapter.d.ts.map +1 -1
  94. package/dist/src/framer/benchutil.d.ts +19 -0
  95. package/dist/src/framer/benchutil.d.ts.map +1 -0
  96. package/dist/src/framer/cache/cache.d.ts +38 -0
  97. package/dist/src/framer/cache/cache.d.ts.map +1 -0
  98. package/dist/src/framer/cache/dynamic.d.ts +71 -0
  99. package/dist/src/framer/cache/dynamic.d.ts.map +1 -0
  100. package/dist/src/framer/cache/reader.d.ts +43 -0
  101. package/dist/src/framer/cache/reader.d.ts.map +1 -0
  102. package/dist/src/framer/cache/static.d.ts +66 -0
  103. package/dist/src/framer/cache/static.d.ts.map +1 -0
  104. package/dist/src/framer/cache/streamer.d.ts +86 -0
  105. package/dist/src/framer/cache/streamer.d.ts.map +1 -0
  106. package/dist/src/framer/cache/transform.d.ts +18 -0
  107. package/dist/src/framer/cache/transform.d.ts.map +1 -0
  108. package/dist/src/framer/cache/unary.d.ts +37 -0
  109. package/dist/src/framer/cache/unary.d.ts.map +1 -0
  110. package/dist/src/framer/client.d.ts +35 -14
  111. package/dist/src/framer/client.d.ts.map +1 -1
  112. package/dist/src/framer/codec.d.ts.map +1 -1
  113. package/dist/src/framer/deleter.d.ts +3 -2
  114. package/dist/src/framer/deleter.d.ts.map +1 -1
  115. package/dist/src/framer/external.d.ts +6 -0
  116. package/dist/src/framer/external.d.ts.map +1 -1
  117. package/dist/src/framer/feed.d.ts +40 -0
  118. package/dist/src/framer/feed.d.ts.map +1 -0
  119. package/dist/src/framer/frame.d.ts +16 -20
  120. package/dist/src/framer/frame.d.ts.map +1 -1
  121. package/dist/src/framer/hardened.d.ts +70 -0
  122. package/dist/src/framer/hardened.d.ts.map +1 -0
  123. package/dist/src/framer/iterator.d.ts +36 -43
  124. package/dist/src/framer/iterator.d.ts.map +1 -1
  125. package/dist/src/framer/reader.d.ts +3 -2
  126. package/dist/src/framer/reader.d.ts.map +1 -1
  127. package/dist/src/framer/streamer.d.ts +132 -205
  128. package/dist/src/framer/streamer.d.ts.map +1 -1
  129. package/dist/src/framer/writer.d.ts +130 -161
  130. package/dist/src/framer/writer.d.ts.map +1 -1
  131. package/dist/src/group/client.d.ts +66 -9
  132. package/dist/src/group/client.d.ts.map +1 -1
  133. package/dist/src/group/types.gen.d.ts +2 -2
  134. package/dist/src/http/external.d.ts +2 -0
  135. package/dist/src/http/external.d.ts.map +1 -0
  136. package/dist/src/http/index.d.ts +2 -0
  137. package/dist/src/http/index.d.ts.map +1 -0
  138. package/dist/src/http/types.gen.d.ts +451 -0
  139. package/dist/src/http/types.gen.d.ts.map +1 -0
  140. package/dist/src/imex/client.d.ts +88 -0
  141. package/dist/src/imex/client.d.ts.map +1 -0
  142. package/dist/src/imex/index.d.ts +2 -0
  143. package/dist/src/imex/index.d.ts.map +1 -0
  144. package/dist/src/index.d.ts +18 -5
  145. package/dist/src/index.d.ts.map +1 -1
  146. package/dist/src/label/client.d.ts +55 -36
  147. package/dist/src/label/client.d.ts.map +1 -1
  148. package/dist/src/label/external.d.ts +2 -0
  149. package/dist/src/label/external.d.ts.map +1 -1
  150. package/dist/src/label/payload.d.ts +4 -46
  151. package/dist/src/label/payload.d.ts.map +1 -1
  152. package/dist/src/label/store.d.ts +8 -0
  153. package/dist/src/label/store.d.ts.map +1 -0
  154. package/dist/src/label/types.gen.d.ts +45 -0
  155. package/dist/src/label/types.gen.d.ts.map +1 -0
  156. package/dist/src/labjack/external.d.ts +2 -0
  157. package/dist/src/labjack/external.d.ts.map +1 -0
  158. package/dist/src/labjack/index.d.ts +2 -0
  159. package/dist/src/labjack/index.d.ts.map +1 -0
  160. package/dist/src/labjack/types.gen.d.ts +442 -0
  161. package/dist/src/labjack/types.gen.d.ts.map +1 -0
  162. package/dist/src/lineplot/actions.d.ts +914 -0
  163. package/dist/src/lineplot/actions.d.ts.map +1 -0
  164. package/dist/src/lineplot/actions.gen.d.ts +4208 -0
  165. package/dist/src/lineplot/actions.gen.d.ts.map +1 -0
  166. package/dist/src/lineplot/client.d.ts +66 -16
  167. package/dist/src/lineplot/client.d.ts.map +1 -1
  168. package/dist/src/lineplot/external.d.ts +3 -0
  169. package/dist/src/lineplot/external.d.ts.map +1 -1
  170. package/dist/src/lineplot/line.d.ts +16 -0
  171. package/dist/src/lineplot/line.d.ts.map +1 -0
  172. package/dist/src/lineplot/types.gen.d.ts +837 -14
  173. package/dist/src/lineplot/types.gen.d.ts.map +1 -1
  174. package/dist/src/log/actions.d.ts +271 -0
  175. package/dist/src/log/actions.d.ts.map +1 -0
  176. package/dist/src/log/actions.gen.d.ts +1529 -0
  177. package/dist/src/log/actions.gen.d.ts.map +1 -0
  178. package/dist/src/log/client.d.ts +66 -16
  179. package/dist/src/log/client.d.ts.map +1 -1
  180. package/dist/src/log/external.d.ts +2 -0
  181. package/dist/src/log/external.d.ts.map +1 -1
  182. package/dist/src/log/types.gen.d.ts +139 -14
  183. package/dist/src/log/types.gen.d.ts.map +1 -1
  184. package/dist/src/modbus/external.d.ts +2 -0
  185. package/dist/src/modbus/external.d.ts.map +1 -0
  186. package/dist/src/modbus/index.d.ts +2 -0
  187. package/dist/src/modbus/index.d.ts.map +1 -0
  188. package/dist/src/modbus/types.gen.d.ts +280 -0
  189. package/dist/src/modbus/types.gen.d.ts.map +1 -0
  190. package/dist/src/ni/external.d.ts +2 -0
  191. package/dist/src/ni/external.d.ts.map +1 -0
  192. package/dist/src/ni/index.d.ts +2 -0
  193. package/dist/src/ni/index.d.ts.map +1 -0
  194. package/dist/src/ni/types.gen.d.ts +21029 -0
  195. package/dist/src/ni/types.gen.d.ts.map +1 -0
  196. package/dist/src/node/index.d.ts +2 -0
  197. package/dist/src/node/index.d.ts.map +1 -0
  198. package/dist/src/node/types.gen.d.ts +4 -0
  199. package/dist/src/node/types.gen.d.ts.map +1 -0
  200. package/dist/src/ontology/client.d.ts +314 -67
  201. package/dist/src/ontology/client.d.ts.map +1 -1
  202. package/dist/src/ontology/external.d.ts +1 -0
  203. package/dist/src/ontology/external.d.ts.map +1 -1
  204. package/dist/src/ontology/payload.d.ts +60 -18
  205. package/dist/src/ontology/payload.d.ts.map +1 -1
  206. package/dist/src/ontology/store.d.ts +32 -0
  207. package/dist/src/ontology/store.d.ts.map +1 -0
  208. package/dist/src/ontology/types.gen.d.ts +3 -2
  209. package/dist/src/ontology/types.gen.d.ts.map +1 -1
  210. package/dist/src/ontology/writer.d.ts +16 -10
  211. package/dist/src/ontology/writer.d.ts.map +1 -1
  212. package/dist/src/opcua/external.d.ts +2 -0
  213. package/dist/src/opcua/external.d.ts.map +1 -0
  214. package/dist/src/opcua/index.d.ts +2 -0
  215. package/dist/src/opcua/index.d.ts.map +1 -0
  216. package/dist/src/opcua/types.gen.d.ts +82 -0
  217. package/dist/src/opcua/types.gen.d.ts.map +1 -0
  218. package/dist/src/pagerduty/external.d.ts +2 -0
  219. package/dist/src/pagerduty/external.d.ts.map +1 -0
  220. package/dist/src/pagerduty/index.d.ts +2 -0
  221. package/dist/src/pagerduty/index.d.ts.map +1 -0
  222. package/dist/src/pagerduty/types.gen.d.ts +30 -0
  223. package/dist/src/pagerduty/types.gen.d.ts.map +1 -0
  224. package/dist/src/panel/actions.d.ts +273 -0
  225. package/dist/src/panel/actions.d.ts.map +1 -0
  226. package/dist/src/panel/actions.gen.d.ts +1255 -0
  227. package/dist/src/panel/actions.gen.d.ts.map +1 -0
  228. package/dist/src/panel/client.d.ts +148 -0
  229. package/dist/src/panel/client.d.ts.map +1 -0
  230. package/dist/src/panel/external.d.ts +6 -0
  231. package/dist/src/panel/external.d.ts.map +1 -0
  232. package/dist/src/panel/index.d.ts +2 -0
  233. package/dist/src/panel/index.d.ts.map +1 -0
  234. package/dist/src/panel/tree.d.ts +50 -0
  235. package/dist/src/panel/tree.d.ts.map +1 -0
  236. package/dist/src/panel/types.gen.d.ts +370 -0
  237. package/dist/src/panel/types.gen.d.ts.map +1 -0
  238. package/dist/src/project/client.d.ts +89 -0
  239. package/dist/src/project/client.d.ts.map +1 -0
  240. package/dist/src/project/external.d.ts.map +1 -0
  241. package/dist/src/project/index.d.ts +2 -0
  242. package/dist/src/project/index.d.ts.map +1 -0
  243. package/dist/src/project/types.gen.d.ts +27 -0
  244. package/dist/src/project/types.gen.d.ts.map +1 -0
  245. package/dist/src/query/cache.d.ts +132 -0
  246. package/dist/src/query/cache.d.ts.map +1 -0
  247. package/dist/src/query/deleted.d.ts +20 -0
  248. package/dist/src/query/deleted.d.ts.map +1 -0
  249. package/dist/src/query/derived.d.ts +33 -0
  250. package/dist/src/query/derived.d.ts.map +1 -0
  251. package/dist/src/query/external.d.ts +10 -0
  252. package/dist/src/query/external.d.ts.map +1 -0
  253. package/dist/src/query/index.d.ts +2 -0
  254. package/dist/src/query/index.d.ts.map +1 -0
  255. package/dist/src/query/query.d.ts +235 -0
  256. package/dist/src/query/query.d.ts.map +1 -0
  257. package/dist/src/query/retriever.d.ts +135 -0
  258. package/dist/src/query/retriever.d.ts.map +1 -0
  259. package/dist/src/query/streamer.d.ts +67 -0
  260. package/dist/src/query/streamer.d.ts.map +1 -0
  261. package/dist/src/query/table.d.ts +219 -0
  262. package/dist/src/query/table.d.ts.map +1 -0
  263. package/dist/src/query/types.d.ts +35 -0
  264. package/dist/src/query/types.d.ts.map +1 -0
  265. package/dist/src/query/write.d.ts +21 -0
  266. package/dist/src/query/write.d.ts.map +1 -0
  267. package/dist/src/rack/client.d.ts +58 -20
  268. package/dist/src/rack/client.d.ts.map +1 -1
  269. package/dist/src/rack/types.gen.d.ts +11 -12
  270. package/dist/src/rack/types.gen.d.ts.map +1 -1
  271. package/dist/src/range/alias/types.gen.d.ts +2 -3
  272. package/dist/src/range/alias/types.gen.d.ts.map +1 -1
  273. package/dist/src/ranger/client.d.ts +138 -27
  274. package/dist/src/ranger/client.d.ts.map +1 -1
  275. package/dist/src/ranger/kv/client.d.ts +7 -4
  276. package/dist/src/ranger/kv/client.d.ts.map +1 -1
  277. package/dist/src/ranger/payload.d.ts +3 -0
  278. package/dist/src/ranger/payload.d.ts.map +1 -1
  279. package/dist/src/ranger/types.gen.d.ts +45 -101
  280. package/dist/src/ranger/types.gen.d.ts.map +1 -1
  281. package/dist/src/ranger/writer.d.ts +2 -74
  282. package/dist/src/ranger/writer.d.ts.map +1 -1
  283. package/dist/src/schematic/actions.d.ts +90 -33
  284. package/dist/src/schematic/actions.d.ts.map +1 -1
  285. package/dist/src/schematic/actions.gen.d.ts +207 -114
  286. package/dist/src/schematic/actions.gen.d.ts.map +1 -1
  287. package/dist/src/schematic/client.d.ts +70 -68
  288. package/dist/src/schematic/client.d.ts.map +1 -1
  289. package/dist/src/schematic/symbol/client.d.ts +133 -27
  290. package/dist/src/schematic/symbol/client.d.ts.map +1 -1
  291. package/dist/src/schematic/symbol/types.gen.d.ts +258 -153
  292. package/dist/src/schematic/symbol/types.gen.d.ts.map +1 -1
  293. package/dist/src/schematic/types.gen.d.ts +17 -96
  294. package/dist/src/schematic/types.gen.d.ts.map +1 -1
  295. package/dist/src/status/client.d.ts +69 -14
  296. package/dist/src/status/client.d.ts.map +1 -1
  297. package/dist/src/status/external.d.ts +2 -0
  298. package/dist/src/status/external.d.ts.map +1 -1
  299. package/dist/src/status/payload.d.ts +2 -36
  300. package/dist/src/status/payload.d.ts.map +1 -1
  301. package/dist/src/status/status.d.ts +65 -0
  302. package/dist/src/status/status.d.ts.map +1 -0
  303. package/dist/src/status/types.gen.d.ts +58 -0
  304. package/dist/src/status/types.gen.d.ts.map +1 -0
  305. package/dist/src/table/actions.d.ts +72 -13
  306. package/dist/src/table/actions.d.ts.map +1 -1
  307. package/dist/src/table/actions.gen.d.ts +221 -137
  308. package/dist/src/table/actions.gen.d.ts.map +1 -1
  309. package/dist/src/table/client.d.ts +64 -40
  310. package/dist/src/table/client.d.ts.map +1 -1
  311. package/dist/src/table/types.gen.d.ts +20 -55
  312. package/dist/src/table/types.gen.d.ts.map +1 -1
  313. package/dist/src/task/client.d.ts +149 -28
  314. package/dist/src/task/client.d.ts.map +1 -1
  315. package/dist/src/task/types.gen.d.ts +71 -89
  316. package/dist/src/task/types.gen.d.ts.map +1 -1
  317. package/dist/src/testutil/access.d.ts +27 -1
  318. package/dist/src/testutil/access.d.ts.map +1 -1
  319. package/dist/src/testutil/channels.d.ts +2 -0
  320. package/dist/src/testutil/channels.d.ts.map +1 -1
  321. package/dist/src/testutil/client.d.ts +5 -0
  322. package/dist/src/testutil/client.d.ts.map +1 -1
  323. package/dist/src/testutil/connection.d.ts +10 -0
  324. package/dist/src/testutil/connection.d.ts.map +1 -0
  325. package/dist/src/testutil/index.d.ts +9 -0
  326. package/dist/src/testutil/index.d.ts.map +1 -0
  327. package/dist/src/testutil/panels.d.ts +8 -0
  328. package/dist/src/testutil/panels.d.ts.map +1 -0
  329. package/dist/src/testutil/proxy.d.ts +29 -0
  330. package/dist/src/testutil/proxy.d.ts.map +1 -0
  331. package/dist/src/testutil/query.d.ts +7 -0
  332. package/dist/src/testutil/query.d.ts.map +1 -0
  333. package/dist/src/testutil/telem.d.ts +4 -0
  334. package/dist/src/testutil/telem.d.ts.map +1 -1
  335. package/dist/src/transport.d.ts +10 -4
  336. package/dist/src/transport.d.ts.map +1 -1
  337. package/dist/src/user/client.d.ts +29 -28
  338. package/dist/src/user/client.d.ts.map +1 -1
  339. package/dist/src/user/external.d.ts +1 -1
  340. package/dist/src/user/external.d.ts.map +1 -1
  341. package/dist/src/user/types.gen.d.ts +4 -4
  342. package/dist/src/util/retrieve.d.ts +2 -2
  343. package/dist/src/util/retrieve.d.ts.map +1 -1
  344. package/dist/src/util/telem.d.ts.map +1 -1
  345. package/dist/src/view/client.d.ts +30 -14
  346. package/dist/src/view/client.d.ts.map +1 -1
  347. package/dist/src/view/types.gen.d.ts +7 -15
  348. package/dist/src/view/types.gen.d.ts.map +1 -1
  349. package/dist/testutil.js +189 -0
  350. package/dist/testutil.js.map +1 -0
  351. package/package.json +40 -17
  352. package/src/access/client.ts +14 -3
  353. package/src/access/enforce.ts +0 -3
  354. package/src/access/external.ts +1 -0
  355. package/src/access/granted.ts +114 -0
  356. package/src/access/policy/client.ts +135 -43
  357. package/src/access/policy/types.gen.ts +9 -11
  358. package/src/access/role/client.ts +160 -38
  359. package/src/access/role/types.gen.ts +8 -12
  360. package/src/actions/actions.ts +5 -6
  361. package/src/actions/controller.ts +626 -0
  362. package/src/actions/external.ts +11 -0
  363. package/src/arc/actions.gen.ts +313 -0
  364. package/src/arc/actions.ts +192 -0
  365. package/src/arc/client.ts +424 -41
  366. package/src/arc/compiler/types.gen.ts +5 -6
  367. package/src/arc/external.ts +2 -0
  368. package/src/arc/graph/types.gen.ts +24 -22
  369. package/src/arc/ir/index.ts +1 -1
  370. package/{eslint.config.ts → src/arc/ir/ir.ts} +1 -4
  371. package/src/arc/ir/types.gen.ts +42 -41
  372. package/src/arc/text/types.gen.ts +21 -2
  373. package/src/arc/types/types.gen.ts +40 -32
  374. package/src/arc/types.gen.ts +31 -29
  375. package/src/auth/auth.ts +40 -8
  376. package/src/channel/client.ts +529 -132
  377. package/src/channel/external.ts +0 -1
  378. package/src/channel/payload.ts +30 -3
  379. package/src/channel/types.gen.ts +37 -48
  380. package/src/channel/writer.ts +2 -11
  381. package/src/client.ts +215 -91
  382. package/src/connection/client.ts +495 -0
  383. package/src/connection/external.ts +34 -0
  384. package/src/connection/index.ts +1 -1
  385. package/src/connection/status.ts +442 -0
  386. package/src/control/client.ts +84 -12
  387. package/src/control/state.ts +17 -36
  388. package/src/device/client.ts +293 -41
  389. package/src/device/types.gen.ts +15 -26
  390. package/src/errors.ts +45 -22
  391. package/src/{workspace → ethercat}/external.ts +1 -2
  392. package/src/{workspace → ethercat}/index.ts +1 -1
  393. package/src/ethercat/types.gen.ts +151 -0
  394. package/src/framer/adapter.ts +60 -37
  395. package/src/framer/benchutil.ts +67 -0
  396. package/src/framer/cache/cache.ts +115 -0
  397. package/src/framer/cache/dynamic.ts +279 -0
  398. package/src/framer/cache/reader.ts +160 -0
  399. package/src/framer/cache/static.ts +215 -0
  400. package/src/framer/cache/streamer.ts +391 -0
  401. package/src/framer/cache/transform.ts +31 -0
  402. package/src/framer/cache/unary.ts +104 -0
  403. package/src/framer/client.ts +71 -43
  404. package/src/framer/codec.ts +55 -18
  405. package/src/framer/deleter.ts +4 -6
  406. package/src/framer/external.ts +10 -0
  407. package/src/framer/feed.ts +108 -0
  408. package/src/framer/frame.ts +13 -23
  409. package/src/framer/hardened.ts +283 -0
  410. package/src/framer/iterator.ts +31 -42
  411. package/src/framer/reader.ts +11 -11
  412. package/src/framer/streamer.ts +18 -178
  413. package/src/framer/writer.ts +39 -59
  414. package/src/group/client.ts +158 -23
  415. package/src/http/external.ts +10 -0
  416. package/src/{cluster → http}/index.ts +1 -1
  417. package/src/http/types.gen.ts +245 -0
  418. package/src/imex/client.ts +125 -0
  419. package/src/imex/index.ts +10 -0
  420. package/src/index.ts +18 -6
  421. package/src/label/client.ts +193 -54
  422. package/src/label/external.ts +2 -0
  423. package/src/label/payload.ts +4 -9
  424. package/src/label/store.ts +28 -0
  425. package/src/label/types.gen.ts +31 -0
  426. package/src/labjack/external.ts +10 -0
  427. package/src/labjack/index.ts +10 -0
  428. package/src/labjack/types.gen.ts +251 -0
  429. package/src/lineplot/actions.gen.ts +880 -0
  430. package/src/lineplot/actions.ts +535 -0
  431. package/src/lineplot/client.ts +224 -52
  432. package/src/lineplot/external.ts +3 -0
  433. package/src/lineplot/line.ts +80 -0
  434. package/src/lineplot/types.gen.ts +225 -12
  435. package/src/log/actions.gen.ts +474 -0
  436. package/src/log/actions.ts +242 -0
  437. package/src/log/client.ts +223 -52
  438. package/src/log/external.ts +2 -0
  439. package/src/log/types.gen.ts +45 -14
  440. package/src/modbus/external.ts +10 -0
  441. package/src/modbus/index.ts +10 -0
  442. package/src/modbus/types.gen.ts +185 -0
  443. package/src/ni/external.ts +10 -0
  444. package/src/ni/index.ts +10 -0
  445. package/src/ni/types.gen.ts +1632 -0
  446. package/src/node/index.ts +10 -0
  447. package/src/{cluster → node}/types.gen.ts +2 -2
  448. package/src/ontology/client.ts +408 -99
  449. package/src/ontology/external.ts +7 -0
  450. package/src/ontology/payload.ts +48 -7
  451. package/src/ontology/store.ts +83 -0
  452. package/src/ontology/types.gen.ts +2 -1
  453. package/src/ontology/writer.ts +1 -0
  454. package/src/opcua/external.ts +10 -0
  455. package/src/opcua/index.ts +10 -0
  456. package/src/opcua/types.gen.ts +65 -0
  457. package/src/pagerduty/external.ts +10 -0
  458. package/src/pagerduty/index.ts +10 -0
  459. package/src/pagerduty/types.gen.ts +41 -0
  460. package/src/panel/actions.gen.ts +267 -0
  461. package/src/panel/actions.ts +357 -0
  462. package/src/panel/client.ts +327 -0
  463. package/src/panel/external.ts +14 -0
  464. package/src/panel/index.ts +10 -0
  465. package/src/panel/tree.ts +163 -0
  466. package/src/panel/types.gen.ts +164 -0
  467. package/src/project/client.ts +273 -0
  468. package/src/project/external.ts +11 -0
  469. package/src/project/index.ts +10 -0
  470. package/src/project/types.gen.ts +40 -0
  471. package/src/query/cache.ts +326 -0
  472. package/src/query/deleted.ts +38 -0
  473. package/src/query/derived.ts +101 -0
  474. package/src/query/external.ts +51 -0
  475. package/src/query/index.ts +10 -0
  476. package/src/query/query.ts +865 -0
  477. package/src/query/retriever.ts +308 -0
  478. package/src/query/streamer.ts +207 -0
  479. package/src/query/table.ts +625 -0
  480. package/src/query/types.ts +54 -0
  481. package/src/query/write.ts +42 -0
  482. package/src/rack/client.ts +233 -45
  483. package/src/rack/types.gen.ts +15 -16
  484. package/src/range/alias/types.gen.ts +2 -3
  485. package/src/ranger/client.ts +581 -70
  486. package/src/ranger/kv/client.ts +52 -21
  487. package/src/ranger/payload.ts +3 -0
  488. package/src/ranger/types.gen.ts +21 -23
  489. package/src/ranger/writer.ts +4 -8
  490. package/src/schematic/actions.gen.ts +62 -53
  491. package/src/schematic/actions.ts +44 -42
  492. package/src/schematic/client.ts +226 -70
  493. package/src/schematic/symbol/client.ts +277 -48
  494. package/src/schematic/symbol/types.gen.ts +22 -34
  495. package/src/schematic/types.gen.ts +22 -29
  496. package/src/status/client.ts +321 -44
  497. package/src/status/external.ts +2 -0
  498. package/src/status/payload.ts +1 -23
  499. package/src/status/status.ts +241 -0
  500. package/src/status/types.gen.ts +108 -0
  501. package/src/table/actions.gen.ts +96 -63
  502. package/src/table/actions.ts +44 -19
  503. package/src/table/client.ts +220 -56
  504. package/src/table/types.gen.ts +24 -31
  505. package/src/task/client.ts +580 -101
  506. package/src/task/types.gen.ts +68 -75
  507. package/src/testutil/access.ts +102 -6
  508. package/src/testutil/channels.ts +29 -0
  509. package/src/testutil/client.ts +27 -2
  510. package/src/testutil/connection.ts +47 -0
  511. package/src/testutil/index.ts +17 -0
  512. package/src/testutil/panels.ts +26 -0
  513. package/src/testutil/proxy.ts +106 -0
  514. package/src/testutil/query.ts +28 -0
  515. package/src/testutil/telem.ts +17 -1
  516. package/src/transport.ts +18 -7
  517. package/src/user/client.ts +165 -64
  518. package/src/user/external.ts +1 -1
  519. package/src/user/types.gen.ts +5 -5
  520. package/src/util/retrieve.ts +4 -4
  521. package/src/util/telem.ts +0 -1
  522. package/src/view/client.ts +120 -37
  523. package/src/view/types.gen.ts +8 -11
  524. package/.turbo/turbo-build.log +0 -20
  525. package/.vscode/settings.json +0 -3
  526. package/CONTRIBUTING.md +0 -47
  527. package/dist/client.cjs +0 -118
  528. package/dist/eslint.config.d.ts +0 -4
  529. package/dist/eslint.config.d.ts.map +0 -1
  530. package/dist/src/access/enforce.spec.d.ts +0 -2
  531. package/dist/src/access/enforce.spec.d.ts.map +0 -1
  532. package/dist/src/access/policy/access.spec.d.ts +0 -2
  533. package/dist/src/access/policy/access.spec.d.ts.map +0 -1
  534. package/dist/src/access/role/role.spec.d.ts +0 -2
  535. package/dist/src/access/role/role.spec.d.ts.map +0 -1
  536. package/dist/src/actions/actions.spec.d.ts +0 -2
  537. package/dist/src/actions/actions.spec.d.ts.map +0 -1
  538. package/dist/src/arc/access.spec.d.ts +0 -2
  539. package/dist/src/arc/access.spec.d.ts.map +0 -1
  540. package/dist/src/arc/arc.spec.d.ts +0 -2
  541. package/dist/src/arc/arc.spec.d.ts.map +0 -1
  542. package/dist/src/arc/lsp.spec.d.ts +0 -2
  543. package/dist/src/arc/lsp.spec.d.ts.map +0 -1
  544. package/dist/src/auth/auth.spec.d.ts +0 -2
  545. package/dist/src/auth/auth.spec.d.ts.map +0 -1
  546. package/dist/src/channel/access.spec.d.ts +0 -2
  547. package/dist/src/channel/access.spec.d.ts.map +0 -1
  548. package/dist/src/channel/batchRetriever.spec.d.ts +0 -2
  549. package/dist/src/channel/batchRetriever.spec.d.ts.map +0 -1
  550. package/dist/src/channel/channel.spec.d.ts +0 -2
  551. package/dist/src/channel/channel.spec.d.ts.map +0 -1
  552. package/dist/src/channel/payload.spec.d.ts +0 -2
  553. package/dist/src/channel/payload.spec.d.ts.map +0 -1
  554. package/dist/src/channel/retriever.d.ts +0 -64
  555. package/dist/src/channel/retriever.d.ts.map +0 -1
  556. package/dist/src/cluster/index.d.ts +0 -2
  557. package/dist/src/cluster/index.d.ts.map +0 -1
  558. package/dist/src/cluster/types.gen.d.ts +0 -4
  559. package/dist/src/cluster/types.gen.d.ts.map +0 -1
  560. package/dist/src/connection/checker.d.ts +0 -86
  561. package/dist/src/connection/checker.d.ts.map +0 -1
  562. package/dist/src/connection/connection.spec.d.ts +0 -2
  563. package/dist/src/connection/connection.spec.d.ts.map +0 -1
  564. package/dist/src/connection.spec.d.ts +0 -2
  565. package/dist/src/connection.spec.d.ts.map +0 -1
  566. package/dist/src/control/state.spec.d.ts +0 -2
  567. package/dist/src/control/state.spec.d.ts.map +0 -1
  568. package/dist/src/device/access.spec.d.ts +0 -2
  569. package/dist/src/device/access.spec.d.ts.map +0 -1
  570. package/dist/src/device/device.spec.d.ts +0 -2
  571. package/dist/src/device/device.spec.d.ts.map +0 -1
  572. package/dist/src/device/payload.spec.d.ts +0 -2
  573. package/dist/src/device/payload.spec.d.ts.map +0 -1
  574. package/dist/src/errors.spec.d.ts +0 -2
  575. package/dist/src/errors.spec.d.ts.map +0 -1
  576. package/dist/src/framer/adapter.spec.d.ts +0 -2
  577. package/dist/src/framer/adapter.spec.d.ts.map +0 -1
  578. package/dist/src/framer/client.spec.d.ts +0 -2
  579. package/dist/src/framer/client.spec.d.ts.map +0 -1
  580. package/dist/src/framer/codec.spec.d.ts +0 -2
  581. package/dist/src/framer/codec.spec.d.ts.map +0 -1
  582. package/dist/src/framer/deleter.spec.d.ts +0 -2
  583. package/dist/src/framer/deleter.spec.d.ts.map +0 -1
  584. package/dist/src/framer/frame.spec.d.ts +0 -2
  585. package/dist/src/framer/frame.spec.d.ts.map +0 -1
  586. package/dist/src/framer/iterator.spec.d.ts +0 -2
  587. package/dist/src/framer/iterator.spec.d.ts.map +0 -1
  588. package/dist/src/framer/reader.spec.d.ts +0 -2
  589. package/dist/src/framer/reader.spec.d.ts.map +0 -1
  590. package/dist/src/framer/streamer.spec.d.ts +0 -2
  591. package/dist/src/framer/streamer.spec.d.ts.map +0 -1
  592. package/dist/src/framer/writer.spec.d.ts +0 -2
  593. package/dist/src/framer/writer.spec.d.ts.map +0 -1
  594. package/dist/src/group/access.spec.d.ts +0 -2
  595. package/dist/src/group/access.spec.d.ts.map +0 -1
  596. package/dist/src/group/group.spec.d.ts +0 -2
  597. package/dist/src/group/group.spec.d.ts.map +0 -1
  598. package/dist/src/label/access.spec.d.ts +0 -2
  599. package/dist/src/label/access.spec.d.ts.map +0 -1
  600. package/dist/src/label/label.spec.d.ts +0 -2
  601. package/dist/src/label/label.spec.d.ts.map +0 -1
  602. package/dist/src/lineplot/access.spec.d.ts +0 -2
  603. package/dist/src/lineplot/access.spec.d.ts.map +0 -1
  604. package/dist/src/lineplot/lineplot.spec.d.ts +0 -2
  605. package/dist/src/lineplot/lineplot.spec.d.ts.map +0 -1
  606. package/dist/src/log/access.spec.d.ts +0 -2
  607. package/dist/src/log/access.spec.d.ts.map +0 -1
  608. package/dist/src/log/log.spec.d.ts +0 -2
  609. package/dist/src/log/log.spec.d.ts.map +0 -1
  610. package/dist/src/ontology/ontology.spec.d.ts +0 -2
  611. package/dist/src/ontology/ontology.spec.d.ts.map +0 -1
  612. package/dist/src/rack/access.spec.d.ts +0 -2
  613. package/dist/src/rack/access.spec.d.ts.map +0 -1
  614. package/dist/src/rack/rack.spec.d.ts +0 -2
  615. package/dist/src/rack/rack.spec.d.ts.map +0 -1
  616. package/dist/src/ranger/access.spec.d.ts +0 -2
  617. package/dist/src/ranger/access.spec.d.ts.map +0 -1
  618. package/dist/src/ranger/alias/payload.spec.d.ts +0 -2
  619. package/dist/src/ranger/alias/payload.spec.d.ts.map +0 -1
  620. package/dist/src/ranger/ranger.spec.d.ts +0 -2
  621. package/dist/src/ranger/ranger.spec.d.ts.map +0 -1
  622. package/dist/src/schematic/access.spec.d.ts +0 -2
  623. package/dist/src/schematic/access.spec.d.ts.map +0 -1
  624. package/dist/src/schematic/actions.spec.d.ts +0 -2
  625. package/dist/src/schematic/actions.spec.d.ts.map +0 -1
  626. package/dist/src/schematic/schematic.spec.d.ts +0 -2
  627. package/dist/src/schematic/schematic.spec.d.ts.map +0 -1
  628. package/dist/src/schematic/symbol/access.spec.d.ts +0 -2
  629. package/dist/src/schematic/symbol/access.spec.d.ts.map +0 -1
  630. package/dist/src/schematic/symbol/client.spec.d.ts +0 -2
  631. package/dist/src/schematic/symbol/client.spec.d.ts.map +0 -1
  632. package/dist/src/status/access.spec.d.ts +0 -2
  633. package/dist/src/status/access.spec.d.ts.map +0 -1
  634. package/dist/src/status/status.spec.d.ts +0 -2
  635. package/dist/src/status/status.spec.d.ts.map +0 -1
  636. package/dist/src/table/access.spec.d.ts +0 -2
  637. package/dist/src/table/access.spec.d.ts.map +0 -1
  638. package/dist/src/table/table.spec.d.ts +0 -2
  639. package/dist/src/table/table.spec.d.ts.map +0 -1
  640. package/dist/src/task/access.spec.d.ts +0 -2
  641. package/dist/src/task/access.spec.d.ts.map +0 -1
  642. package/dist/src/task/payload.spec.d.ts +0 -2
  643. package/dist/src/task/payload.spec.d.ts.map +0 -1
  644. package/dist/src/task/task.spec.d.ts +0 -2
  645. package/dist/src/task/task.spec.d.ts.map +0 -1
  646. package/dist/src/user/access.spec.d.ts +0 -2
  647. package/dist/src/user/access.spec.d.ts.map +0 -1
  648. package/dist/src/user/user.spec.d.ts +0 -2
  649. package/dist/src/user/user.spec.d.ts.map +0 -1
  650. package/dist/src/util/retrieve.spec.d.ts +0 -2
  651. package/dist/src/util/retrieve.spec.d.ts.map +0 -1
  652. package/dist/src/view/view.spec.d.ts +0 -2
  653. package/dist/src/view/view.spec.d.ts.map +0 -1
  654. package/dist/src/workspace/access.spec.d.ts +0 -2
  655. package/dist/src/workspace/access.spec.d.ts.map +0 -1
  656. package/dist/src/workspace/client.d.ts +0 -36
  657. package/dist/src/workspace/client.d.ts.map +0 -1
  658. package/dist/src/workspace/external.d.ts.map +0 -1
  659. package/dist/src/workspace/index.d.ts +0 -2
  660. package/dist/src/workspace/index.d.ts.map +0 -1
  661. package/dist/src/workspace/types.gen.d.ts +0 -34
  662. package/dist/src/workspace/types.gen.d.ts.map +0 -1
  663. package/dist/src/workspace/workspace.spec.d.ts +0 -2
  664. package/dist/src/workspace/workspace.spec.d.ts.map +0 -1
  665. package/examples/node/basicReadWrite.js +0 -86
  666. package/examples/node/createChannels.js +0 -50
  667. package/examples/node/createRange.js +0 -67
  668. package/examples/node/package-lock.json +0 -133
  669. package/examples/node/package.json +0 -17
  670. package/examples/node/readLatest.js +0 -76
  671. package/examples/node/seriesAndFrames.js +0 -173
  672. package/examples/node/streamRead.js +0 -50
  673. package/examples/node/streamWrite.js +0 -87
  674. package/src/access/enforce.spec.ts +0 -188
  675. package/src/access/policy/access.spec.ts +0 -147
  676. package/src/access/role/role.spec.ts +0 -95
  677. package/src/actions/actions.spec.ts +0 -229
  678. package/src/arc/access.spec.ts +0 -149
  679. package/src/arc/arc.spec.ts +0 -44
  680. package/src/arc/lsp.spec.ts +0 -717
  681. package/src/auth/auth.spec.ts +0 -101
  682. package/src/channel/access.spec.ts +0 -116
  683. package/src/channel/batchRetriever.spec.ts +0 -115
  684. package/src/channel/channel.spec.ts +0 -352
  685. package/src/channel/payload.spec.ts +0 -117
  686. package/src/channel/retriever.ts +0 -252
  687. package/src/connection/checker.ts +0 -203
  688. package/src/connection/connection.spec.ts +0 -152
  689. package/src/connection.spec.ts +0 -145
  690. package/src/control/state.spec.ts +0 -22
  691. package/src/device/access.spec.ts +0 -159
  692. package/src/device/device.spec.ts +0 -461
  693. package/src/device/payload.spec.ts +0 -142
  694. package/src/errors.spec.ts +0 -71
  695. package/src/framer/adapter.spec.ts +0 -620
  696. package/src/framer/client.spec.ts +0 -180
  697. package/src/framer/codec.spec.ts +0 -383
  698. package/src/framer/deleter.spec.ts +0 -103
  699. package/src/framer/frame.spec.ts +0 -973
  700. package/src/framer/iterator.spec.ts +0 -169
  701. package/src/framer/reader.spec.ts +0 -865
  702. package/src/framer/streamer.spec.ts +0 -871
  703. package/src/framer/writer.spec.ts +0 -486
  704. package/src/group/access.spec.ts +0 -77
  705. package/src/group/group.spec.ts +0 -65
  706. package/src/label/access.spec.ts +0 -109
  707. package/src/label/label.spec.ts +0 -83
  708. package/src/lineplot/access.spec.ts +0 -134
  709. package/src/lineplot/lineplot.spec.ts +0 -120
  710. package/src/log/access.spec.ts +0 -132
  711. package/src/log/log.spec.ts +0 -106
  712. package/src/ontology/ontology.spec.ts +0 -521
  713. package/src/rack/access.spec.ts +0 -102
  714. package/src/rack/rack.spec.ts +0 -171
  715. package/src/ranger/access.spec.ts +0 -115
  716. package/src/ranger/alias/payload.spec.ts +0 -52
  717. package/src/ranger/ranger.spec.ts +0 -343
  718. package/src/schematic/access.spec.ts +0 -134
  719. package/src/schematic/actions.spec.ts +0 -699
  720. package/src/schematic/schematic.spec.ts +0 -340
  721. package/src/schematic/symbol/access.spec.ts +0 -172
  722. package/src/schematic/symbol/client.spec.ts +0 -160
  723. package/src/status/access.spec.ts +0 -129
  724. package/src/status/status.spec.ts +0 -448
  725. package/src/table/access.spec.ts +0 -128
  726. package/src/table/table.spec.ts +0 -651
  727. package/src/task/access.spec.ts +0 -131
  728. package/src/task/payload.spec.ts +0 -113
  729. package/src/task/task.spec.ts +0 -657
  730. package/src/user/access.spec.ts +0 -107
  731. package/src/user/user.spec.ts +0 -290
  732. package/src/util/retrieve.spec.ts +0 -49
  733. package/src/view/view.spec.ts +0 -165
  734. package/src/workspace/access.spec.ts +0 -108
  735. package/src/workspace/client.ts +0 -112
  736. package/src/workspace/types.gen.ts +0 -46
  737. package/src/workspace/workspace.spec.ts +0 -111
  738. package/tsconfig.json +0 -5
  739. package/tsconfig.vite.json +0 -4
  740. package/vite.config.ts +0 -29
  741. /package/dist/src/{workspace → project}/external.d.ts +0 -0
@@ -0,0 +1,241 @@
1
+ // Copyright 2026 Synnax Labs, Inc.
2
+ //
3
+ // Use of this software is governed by the Business Source License included in the file
4
+ // licenses/BSL.txt.
5
+ //
6
+ // As of the Change Date specified in that file, in accordance with the Business Source
7
+ // License, use of this software will be governed by the Apache License, Version 2.0,
8
+ // included in the file licenses/APL.txt.
9
+
10
+ import {
11
+ errors,
12
+ id,
13
+ narrow,
14
+ type optional,
15
+ primitive,
16
+ record,
17
+ TimeStamp,
18
+ } from "@synnaxlabs/x";
19
+ import { z } from "zod";
20
+
21
+ import { type Status, type Variant } from "@/status/types.gen";
22
+
23
+ // Input type for creating statuses - uses conditional typing for optional details
24
+ type Base<V extends Variant> = {
25
+ key: string;
26
+ name: string;
27
+ variant: V;
28
+ message: string;
29
+ description?: string;
30
+ time: TimeStamp;
31
+ };
32
+
33
+ /** A status before it is stamped with a key, a time, and a name. */
34
+ export type Crude<
35
+ DetailsSchema extends z.ZodType = z.ZodNever,
36
+ V extends Variant = Variant,
37
+ > = optional.Optional<Base<V>, "key" | "time" | "name"> &
38
+ ([DetailsSchema] extends [z.ZodNever] ? {} : { details: z.output<DetailsSchema> });
39
+
40
+ /**
41
+ * Interface that errors may optionally implement to provide richer rendering when
42
+ * passed to {@link fromException}. Implementers return a partial {@link Crude} spec
43
+ * whose fields override the defaults derived from the underlying `Error`. This is a
44
+ * duck-typed contract: `fromException` checks for the presence of a `toStatus` method
45
+ * via the `in` operator, so there is no need to import this interface to use it.
46
+ */
47
+ export interface Custom {
48
+ toStatus(): Partial<Crude<z.ZodRecord, "error">>;
49
+ }
50
+
51
+ const customReturnZ = z.object({
52
+ message: z.string().optional(),
53
+ description: z.string().optional(),
54
+ details: record.unknownZ().optional(),
55
+ });
56
+
57
+ const safeToStatus = (exc: unknown): z.infer<typeof customReturnZ> | undefined => {
58
+ if (
59
+ exc == null ||
60
+ typeof exc !== "object" ||
61
+ !("toStatus" in exc) ||
62
+ typeof exc.toStatus !== "function"
63
+ )
64
+ return undefined;
65
+ let raw: unknown;
66
+ try {
67
+ raw = exc.toStatus();
68
+ } catch {
69
+ return undefined;
70
+ }
71
+ const parsed = customReturnZ.safeParse(raw);
72
+ return parsed.success ? parsed.data : undefined;
73
+ };
74
+
75
+ /** Details a status built by {@link fromException} carries. */
76
+ export const exceptionDetailsSchema = z
77
+ .object({
78
+ stack: z.string(),
79
+ error: z.instanceof(Error),
80
+ })
81
+ .and(record.unknownZ());
82
+
83
+ /** Flattens an error's cause chain into one readable line. */
84
+ const causeChain = (err: Error): string | undefined => {
85
+ const parts: string[] = [];
86
+ let cause: unknown = err.cause;
87
+ for (let i = 0; i < 8 && cause instanceof Error; i++) {
88
+ if (cause.message.length > 0) parts.push(cause.message);
89
+ cause = cause.cause;
90
+ }
91
+ if (parts.length === 0) return undefined;
92
+ return parts.join(": ");
93
+ };
94
+
95
+ /**
96
+ * Turns any thrown value into an error status, flattening its cause chain into the
97
+ * description and keeping the error and its stack in the details.
98
+ */
99
+ export const fromException = (
100
+ exc: unknown,
101
+ message?: string,
102
+ ): Status<typeof exceptionDetailsSchema, z.ZodLiteral<"error">> => {
103
+ const err = errors.fromUnknown(exc);
104
+ const detail = causeChain(err);
105
+ const crude: Crude<typeof exceptionDetailsSchema, "error"> = {
106
+ variant: "error",
107
+ message: message ?? err.message,
108
+ description:
109
+ message != null
110
+ ? [err.message, detail].filter((part) => part != null).join(": ")
111
+ : detail,
112
+ details: { stack: err.stack ?? "", error: err },
113
+ };
114
+ // Probe the original (pre-coercion) value so a non-Error throwable with a custom
115
+ // `toStatus()` method still contributes its status fields.
116
+ const custom = safeToStatus(exc);
117
+ if (custom != null) {
118
+ if (message != null && custom.message != null)
119
+ crude.message = `${message}: ${custom.message}`;
120
+ else if (custom.message != null) crude.message = custom.message;
121
+ if (custom.description != null) crude.description = custom.description;
122
+ if (custom.details != null && crude.details != null)
123
+ crude.details = { ...crude.details, ...custom.details };
124
+ }
125
+ return create<typeof exceptionDetailsSchema, "error">(crude);
126
+ };
127
+
128
+ /**
129
+ * Converts an exception-shaped status (one built via {@link fromException}) back into a
130
+ * thrown-shaped {@link Error}. The returned error carries the status's wrapped message,
131
+ * copies `name` and `stack` from the inner error preserved on `details.error`, and
132
+ * stashes the full status on `cause` for callers that need the rich shape. Use this
133
+ * when bridging the status pipeline back into a context that expects a real Error —
134
+ * typically before `throw`-ing across an error boundary.
135
+ */
136
+ export const toError = (
137
+ s: Status<typeof exceptionDetailsSchema, z.ZodLiteral<"error">>,
138
+ ): Error => {
139
+ const inner = s.details.error;
140
+ const err = new Error(s.message, { cause: s });
141
+ err.name = inner.name;
142
+ err.stack = inner.stack;
143
+ return err;
144
+ };
145
+
146
+ /** Stamps a {@link Crude} status with a fresh key and the current time. */
147
+ export const create = <
148
+ DetailsSchema extends z.ZodType = z.ZodNever,
149
+ V extends Variant = Variant,
150
+ >(
151
+ spec: Crude<DetailsSchema, V>,
152
+ ): Status<DetailsSchema, z.ZodType<V>> =>
153
+ ({
154
+ key: id.create(),
155
+ time: TimeStamp.now(),
156
+ name: "",
157
+ ...spec,
158
+ description: spec.description ?? "",
159
+ }) as Status<DetailsSchema, z.ZodType<V>>;
160
+
161
+ /**
162
+ * Reads the details of a status whose schema is not statically known, as when
163
+ * scanning the generically-typed status table for rows belonging to a domain.
164
+ * @returns The details, or undefined when the status carries none.
165
+ */
166
+ export const detailsOf = (status: Status): record.Unknown | undefined =>
167
+ (status as { details?: record.Unknown }).details;
168
+
169
+ /** @returns the variant when it is one of the kept ones, else undefined. */
170
+ export const keepVariants = (
171
+ variant?: Variant,
172
+ keep: Variant | Variant[] = [],
173
+ ): Variant | undefined => {
174
+ if (variant == null) return undefined;
175
+ if (Array.isArray(keep)) {
176
+ if (keep.includes(variant)) return variant;
177
+ return undefined;
178
+ }
179
+ return keep === variant ? variant : undefined;
180
+ };
181
+
182
+ /** @returns the variant unless it is one of the removed ones. */
183
+ export const removeVariants = (
184
+ variant?: Variant,
185
+ remove: Variant | Variant[] = [],
186
+ ): Variant | undefined => {
187
+ if (variant == null) return undefined;
188
+ if (Array.isArray(remove)) {
189
+ if (remove.includes(variant)) return undefined;
190
+ return variant;
191
+ }
192
+ return remove === variant ? undefined : variant;
193
+ };
194
+
195
+ /** Options for {@link toString}. */
196
+ export interface ToStringOptions {
197
+ includeTimestamp?: boolean;
198
+ includeName?: boolean;
199
+ }
200
+
201
+ const DEFAULT_TO_STRING_OPTIONS: ToStringOptions = {
202
+ includeTimestamp: false,
203
+ includeName: true,
204
+ };
205
+
206
+ const renderDescription = (description: string): string => {
207
+ if (description.includes("\n")) return `Description:\n${description}`;
208
+ try {
209
+ const parsed = JSON.parse(description);
210
+ return `Description:\n${JSON.stringify(parsed, null, 2)}`;
211
+ } catch {
212
+ return `Description: ${description}`;
213
+ }
214
+ };
215
+
216
+ /** Renders a status as readable text, pretty-printing a JSON description. */
217
+ export const toString = <Details extends z.ZodType = z.ZodNever>(
218
+ stat: Status<Details>,
219
+ options: ToStringOptions = {},
220
+ ): string => {
221
+ const opts = { ...DEFAULT_TO_STRING_OPTIONS, ...options };
222
+ const parts: string[] = [];
223
+ let header = stat.variant.toUpperCase();
224
+ if (opts.includeName && primitive.isNonZero(stat.name)) header += ` [${stat.name}]`;
225
+ header += `: ${stat.message}`;
226
+ if (opts.includeTimestamp) header += ` (${stat.time.toString("dateTime", "local")})`;
227
+ parts.push(header);
228
+ if (primitive.isNonZero(stat.description))
229
+ parts.push(renderDescription(stat.description));
230
+ if ("details" in stat && narrow.isObject(stat.details)) {
231
+ const details = stat.details as Record<string, unknown>;
232
+ if ("stack" in details && typeof details.stack === "string" && details.stack !== "")
233
+ parts.push(`Stack Trace:\n${details.stack}`);
234
+ const extraDetails = Object.fromEntries(
235
+ Object.entries(details).filter(([k]) => k !== "stack" && k !== "error"),
236
+ );
237
+ if (Object.keys(extraDetails).length > 0)
238
+ parts.push(`Details:\n${JSON.stringify(extraDetails, null, 2)}`);
239
+ }
240
+ return parts.join("\n\n");
241
+ };
@@ -0,0 +1,108 @@
1
+ // Copyright 2026 Synnax Labs, Inc.
2
+ //
3
+ // Use of this software is governed by the Business Source License included in the file
4
+ // licenses/BSL.txt.
5
+ //
6
+ // As of the Change Date specified in that file, in accordance with the Business Source
7
+ // License, use of this software will be governed by the Apache License, Version 2.0,
8
+ // included in the file licenses/APL.txt.
9
+
10
+ // Code generated by Oracle. DO NOT EDIT.
11
+
12
+ import { id, type optional, telem, TimeStamp, zod } from "@synnaxlabs/x";
13
+ import { z } from "zod";
14
+
15
+ import { label } from "@/label";
16
+
17
+ export const VARIANTS = [
18
+ "success",
19
+ "info",
20
+ "warning",
21
+ "error",
22
+ "loading",
23
+ "disabled",
24
+ ] as const;
25
+ export const variantZ = z.enum(VARIANTS);
26
+ export const successVariantZ = z.literal("success");
27
+ export const infoVariantZ = z.literal("info");
28
+ export const warningVariantZ = z.literal("warning");
29
+ export const errorVariantZ = z.literal("error");
30
+ export const loadingVariantZ = z.literal("loading");
31
+ export const disabledVariantZ = z.literal("disabled");
32
+ export type Variant = z.infer<typeof variantZ>;
33
+
34
+ export const keyZ = z.string();
35
+ export type Key = z.infer<typeof keyZ>;
36
+
37
+ export interface StatusSchemas<
38
+ Details extends z.ZodType = z.ZodType,
39
+ V extends z.ZodType<Variant> = z.ZodType<Variant>,
40
+ > {
41
+ details: Details;
42
+ v: V;
43
+ }
44
+
45
+ export type StatusZodObject<
46
+ Details extends z.ZodType = z.ZodNever,
47
+ V extends z.ZodType<Variant> = typeof variantZ,
48
+ > = z.ZodObject<{
49
+ key: z.ZodDefault<typeof keyZ>;
50
+ name: z.ZodDefault<z.ZodString>;
51
+ variant: V;
52
+ message: z.ZodString;
53
+ description: z.ZodDefault<z.ZodString>;
54
+ time: z.ZodDefault<typeof telem.timeStampZ>;
55
+ labels: ReturnType<typeof zod.nullToUndefined<z.ZodArray<typeof label.labelZ>>>;
56
+ details: [Details] extends [z.ZodNever] ? z.ZodOptional<z.ZodUnknown> : Details;
57
+ }>;
58
+
59
+ export interface StatusZFunction {
60
+ <
61
+ Details extends z.ZodType = z.ZodNever,
62
+ V extends z.ZodType<Variant> = typeof variantZ,
63
+ >(args: {
64
+ details?: Details;
65
+ v?: V;
66
+ }): StatusZodObject<Details, V>;
67
+ <
68
+ Details extends z.ZodType = z.ZodNever,
69
+ V extends z.ZodType<Variant> = typeof variantZ,
70
+ >(
71
+ args?: Partial<StatusSchemas<Details, V>>,
72
+ ): StatusZodObject<Details, V>;
73
+ }
74
+
75
+ export const statusZ: StatusZFunction = <
76
+ Details extends z.ZodType,
77
+ V extends z.ZodType<Variant>,
78
+ >({ details, v }: Partial<StatusSchemas<Details, V>> = {}) =>
79
+ z.object({
80
+ key: keyZ.default(id.create),
81
+ name: z.string().default(""),
82
+ variant: v ?? variantZ,
83
+ message: z.string(),
84
+ description: z.string().default(""),
85
+ time: telem.timeStampZ.default(() => TimeStamp.now()),
86
+ details: details ?? z.unknown().optional(),
87
+ labels: zod.nullToUndefined(label.labelZ.array()),
88
+ });
89
+ export type Status<
90
+ Details extends z.ZodType = z.ZodNever,
91
+ V extends z.ZodType<Variant> = typeof variantZ,
92
+ > = {
93
+ key: Key;
94
+ name: string;
95
+ variant: z.infer<V>;
96
+ message: string;
97
+ description: string;
98
+ time: telem.TimeStamp;
99
+ labels?: label.Label[];
100
+ } & ([Details] extends [z.ZodNever] ? {} : { details: z.infer<Details> });
101
+ export type New<
102
+ Details extends z.ZodType = z.ZodNever,
103
+ V extends z.ZodType<Variant> = typeof variantZ,
104
+ > = Omit<
105
+ optional.Optional<Status<Details, V>, "key" | "name" | "description" | "time">,
106
+ "details"
107
+ > &
108
+ ([Details] extends [z.ZodNever] ? {} : { details: z.input<Details> });
@@ -8,12 +8,22 @@
8
8
  // included in the file licenses/APL.txt.
9
9
 
10
10
  // Code generated by Oracle. DO NOT EDIT.
11
- import { array } from "@synnaxlabs/x";
11
+ import { zod } from "@synnaxlabs/x";
12
12
  import { type Draft } from "immer";
13
13
  import { z } from "zod";
14
14
 
15
15
  import { actions } from "@/actions";
16
- import { cellTemplateZ, cellZ, keyZ, type Table } from "@/table/types.gen";
16
+ import { cellTemplateZ, cellZ, keyZ, type Table, tableZ } from "@/table/types.gen";
17
+
18
+ /**
19
+ * Create replaces the document with the given created state. Emitted by the Core on
20
+ * create so remote caches ingest new documents; clients never dispatch it.
21
+ */
22
+ export const createPayloadZ = z.object({
23
+ table: tableZ,
24
+ });
25
+
26
+ export type CreatePayload = z.infer<typeof createPayloadZ>;
17
27
 
18
28
  /** Rename renames the table. */
19
29
  export const renamePayloadZ = z.object({
@@ -25,33 +35,28 @@ export type RenamePayload = z.infer<typeof renamePayloadZ>;
25
35
  /**
26
36
  * AddRow inserts a row at the given index. Three flows:
27
37
  *
28
- * 1. User gesture with cell_template against a non-empty table:
29
- * replicate the template once per existing column.
30
- * 2. User gesture with cell_template against a fully-empty table:
31
- * seed a 1x1 grid (one template replica plus one default-sized
32
- * column).
33
- * 3. Undo replay of RemoveRow (cell_template is null, cells is
34
- * non-empty): use cells as-is. If the original RemoveRow had
35
- * stripped the table down to no columns, the explicit cells
36
- * trigger the same column-bootstrap as flow 2.
38
+ * 1. User gesture with cell_template against a non-empty table: replicate the template
39
+ * once per existing column. 2. User gesture with cell_template against a fully-empty
40
+ * table: seed a 1x1 grid (one template replica plus one default-sized column). 3. Undo
41
+ * replay of RemoveRow (cell_template is null, cells is non-empty): use cells as-is. If
42
+ * the original RemoveRow had stripped the table down to no columns, the explicit cells
43
+ * trigger the same column-bootstrap as flow 2.
37
44
  *
38
- * Derived replica keys come from the template's key with the last
39
- * four hex digits replaced by the column index. Out-of-range
40
- * indices clamp to the end.
45
+ * Derived replica keys come from the template's key with the last four hex digits
46
+ * replaced by the column index. Out-of-range indices clamp to the end.
41
47
  */
42
48
  export const addRowPayloadZ = z.object({
43
49
  index: z.uint32(),
44
50
  size: z.number(),
45
- cells: array.nullishToEmpty(cellZ),
51
+ cells: cellZ.array().default(() => []),
46
52
  cellTemplate: cellZ.optional(),
47
53
  });
48
54
 
49
55
  export type AddRowPayload = z.infer<typeof addRowPayloadZ>;
50
56
 
51
57
  /**
52
- * RemoveRow removes the row at the given index. All cells referenced by the
53
- * removed row are also dropped from the cells map. No-op if the
54
- * index is out of range.
58
+ * RemoveRow removes the row at the given index. All cells referenced by the removed row
59
+ * are also dropped from the cells map. No-op if the index is out of range.
55
60
  */
56
61
  export const removeRowPayloadZ = z.object({
57
62
  index: z.uint32(),
@@ -62,35 +67,30 @@ export type RemoveRowPayload = z.infer<typeof removeRowPayloadZ>;
62
67
  /**
63
68
  * AddCol inserts a column at the given index. Three flows:
64
69
  *
65
- * 1. User gesture with cell_template against a non-empty table:
66
- * replicate the template once per existing row.
67
- * 2. User gesture with cell_template against a fully-empty table:
68
- * seed a 1x1 grid (one template replica plus one default-sized
69
- * row).
70
- * 3. Undo replay of RemoveCol (cell_template is null, cells is
71
- * non-empty): use cells as-is. If the original RemoveCol had
72
- * stripped the table down to no rows, the explicit cells
73
- * trigger the same row-bootstrap as flow 2.
70
+ * 1. User gesture with cell_template against a non-empty table: replicate the template
71
+ * once per existing row. 2. User gesture with cell_template against a fully-empty
72
+ * table: seed a 1x1 grid (one template replica plus one default-sized row). 3. Undo
73
+ * replay of RemoveCol (cell_template is null, cells is non-empty): use cells as-is. If
74
+ * the original RemoveCol had stripped the table down to no rows, the explicit cells
75
+ * trigger the same row-bootstrap as flow 2.
74
76
  *
75
- * Derived replica keys come from the template's key with the last
76
- * four hex digits replaced by the row index. Cells whose row
77
- * index exceeds the row count are added to the cells map but not
78
- * referenced by any row. Out-of-range indices clamp to the end of
77
+ * Derived replica keys come from the template's key with the last four hex digits
78
+ * replaced by the row index. Cells whose row index exceeds the row count are added to
79
+ * the cells map but not referenced by any row. Out-of-range indices clamp to the end of
79
80
  * every row's cells list.
80
81
  */
81
82
  export const addColPayloadZ = z.object({
82
83
  index: z.uint32(),
83
84
  size: z.number(),
84
- cells: array.nullishToEmpty(cellZ),
85
+ cells: cellZ.array().default(() => []),
85
86
  cellTemplate: cellZ.optional(),
86
87
  });
87
88
 
88
89
  export type AddColPayload = z.infer<typeof addColPayloadZ>;
89
90
 
90
91
  /**
91
- * RemoveCol removes the column at the given index. All cells in that column
92
- * (across every row) are dropped from the cells map. No-op if the
93
- * index is out of range.
92
+ * RemoveCol removes the column at the given index. All cells in that column (across
93
+ * every row) are dropped from the cells map. No-op if the index is out of range.
94
94
  */
95
95
  export const removeColPayloadZ = z.object({
96
96
  index: z.uint32(),
@@ -106,7 +106,9 @@ export const resizeRowPayloadZ = z.object({
106
106
 
107
107
  export type ResizeRowPayload = z.infer<typeof resizeRowPayloadZ>;
108
108
 
109
- /** ResizeCol resizes the column at the given index. No-op if the index is out of range. */
109
+ /**
110
+ * ResizeCol resizes the column at the given index. No-op if the index is out of range.
111
+ */
110
112
  export const resizeColPayloadZ = z.object({
111
113
  index: z.uint32(),
112
114
  size: z.number(),
@@ -115,8 +117,8 @@ export const resizeColPayloadZ = z.object({
115
117
  export type ResizeColPayload = z.infer<typeof resizeColPayloadZ>;
116
118
 
117
119
  /**
118
- * SetCell replaces the cell at cell.key with the provided value. No-op if
119
- * no cell with that key exists in the table.
120
+ * SetCell replaces the cell at cell.key with the provided value. No-op if no cell with
121
+ * that key exists in the table.
120
122
  */
121
123
  export const setCellPayloadZ = z.object({
122
124
  cell: cellZ,
@@ -125,21 +127,24 @@ export const setCellPayloadZ = z.object({
125
127
  export type SetCellPayload = z.infer<typeof setCellPayloadZ>;
126
128
 
127
129
  /**
128
- * EraseCells erases the cells whose keys are in cells. Any row whose every
129
- * cell is in the selection is removed entirely; same for columns.
130
- * Cells that survive that row/column removal have their variant
131
- * and props replaced with the template's, keeping their original
132
- * keys. Cells in the selection whose keys are not in the table's
133
- * cells map are silently skipped.
130
+ * EraseCells erases the cells whose keys are in cells. Any row whose every cell is in
131
+ * the selection is removed entirely; same for columns. Cells that survive that
132
+ * row/column removal have their variant and props replaced with the template's, keeping
133
+ * their original keys. Cells in the selection whose keys are not in the table's cells
134
+ * map are silently skipped.
134
135
  */
135
136
  export const eraseCellsPayloadZ = z.object({
136
- cells: array.nullishToEmpty(z.string()),
137
+ cells: z
138
+ .string()
139
+ .array()
140
+ .default(() => []),
137
141
  template: cellTemplateZ,
138
142
  });
139
143
 
140
144
  export type EraseCellsPayload = z.infer<typeof eraseCellsPayloadZ>;
141
145
 
142
146
  export const actionZ = z.discriminatedUnion("type", [
147
+ z.object({ type: z.literal("create"), create: createPayloadZ }),
143
148
  z.object({ type: z.literal("rename"), rename: renamePayloadZ }),
144
149
  z.object({ type: z.literal("add_row"), addRow: addRowPayloadZ }),
145
150
  z.object({ type: z.literal("remove_row"), removeRow: removeRowPayloadZ }),
@@ -153,49 +158,74 @@ export const actionZ = z.discriminatedUnion("type", [
153
158
 
154
159
  export type Action = z.infer<typeof actionZ>;
155
160
 
156
- export const rename = (payload: RenamePayload): Action => ({
161
+ export const create = (payload: z.input<typeof createPayloadZ>): Action => ({
162
+ type: "create",
163
+ create: zod.parse(createPayloadZ, payload, {
164
+ label: "table create action payload",
165
+ }),
166
+ });
167
+
168
+ export const rename = (payload: z.input<typeof renamePayloadZ>): Action => ({
157
169
  type: "rename",
158
- rename: payload,
170
+ rename: zod.parse(renamePayloadZ, payload, {
171
+ label: "table rename action payload",
172
+ }),
159
173
  });
160
174
 
161
- export const addRow = (payload: AddRowPayload): Action => ({
175
+ export const addRow = (payload: z.input<typeof addRowPayloadZ>): Action => ({
162
176
  type: "add_row",
163
- addRow: payload,
177
+ addRow: zod.parse(addRowPayloadZ, payload, {
178
+ label: "table add_row action payload",
179
+ }),
164
180
  });
165
181
 
166
- export const removeRow = (payload: RemoveRowPayload): Action => ({
182
+ export const removeRow = (payload: z.input<typeof removeRowPayloadZ>): Action => ({
167
183
  type: "remove_row",
168
- removeRow: payload,
184
+ removeRow: zod.parse(removeRowPayloadZ, payload, {
185
+ label: "table remove_row action payload",
186
+ }),
169
187
  });
170
188
 
171
- export const addCol = (payload: AddColPayload): Action => ({
189
+ export const addCol = (payload: z.input<typeof addColPayloadZ>): Action => ({
172
190
  type: "add_col",
173
- addCol: payload,
191
+ addCol: zod.parse(addColPayloadZ, payload, {
192
+ label: "table add_col action payload",
193
+ }),
174
194
  });
175
195
 
176
- export const removeCol = (payload: RemoveColPayload): Action => ({
196
+ export const removeCol = (payload: z.input<typeof removeColPayloadZ>): Action => ({
177
197
  type: "remove_col",
178
- removeCol: payload,
198
+ removeCol: zod.parse(removeColPayloadZ, payload, {
199
+ label: "table remove_col action payload",
200
+ }),
179
201
  });
180
202
 
181
- export const resizeRow = (payload: ResizeRowPayload): Action => ({
203
+ export const resizeRow = (payload: z.input<typeof resizeRowPayloadZ>): Action => ({
182
204
  type: "resize_row",
183
- resizeRow: payload,
205
+ resizeRow: zod.parse(resizeRowPayloadZ, payload, {
206
+ label: "table resize_row action payload",
207
+ }),
184
208
  });
185
209
 
186
- export const resizeCol = (payload: ResizeColPayload): Action => ({
210
+ export const resizeCol = (payload: z.input<typeof resizeColPayloadZ>): Action => ({
187
211
  type: "resize_col",
188
- resizeCol: payload,
212
+ resizeCol: zod.parse(resizeColPayloadZ, payload, {
213
+ label: "table resize_col action payload",
214
+ }),
189
215
  });
190
216
 
191
- export const setCell = (payload: SetCellPayload): Action => ({
217
+ export const setCell = (payload: z.input<typeof setCellPayloadZ>): Action => ({
192
218
  type: "set_cell",
193
- setCell: payload,
219
+ setCell: zod.parse(setCellPayloadZ, payload, {
220
+ label: "table set_cell action payload",
221
+ }),
194
222
  });
195
223
 
196
- export const eraseCells = (payload: EraseCellsPayload): Action => ({
224
+ export const eraseCells = (payload: z.input<typeof eraseCellsPayloadZ>): Action => ({
197
225
  type: "erase_cells",
198
- eraseCells: payload,
226
+ eraseCells: zod.parse(eraseCellsPayloadZ, payload, {
227
+ label: "table erase_cells action payload",
228
+ }),
199
229
  });
200
230
 
201
231
  export type HandlerResult = actions.HandlerResult<Action>;
@@ -203,6 +233,7 @@ export type HandlerResult = actions.HandlerResult<Action>;
203
233
  export type ReduceAllResult = actions.ReduceAllResult<Table, Action>;
204
234
 
205
235
  export interface Handlers {
236
+ create: (state: Draft<Table>, payload: CreatePayload) => HandlerResult;
206
237
  rename: (state: Draft<Table>, payload: RenamePayload) => HandlerResult;
207
238
  addRow: (state: Draft<Table>, payload: AddRowPayload) => HandlerResult;
208
239
  removeRow: (state: Draft<Table>, payload: RemoveRowPayload) => HandlerResult;
@@ -217,6 +248,8 @@ export interface Handlers {
217
248
  export const createReduceAll = (handlers: Handlers) =>
218
249
  actions.createReduceAll<Table, Action>((state, action) => {
219
250
  switch (action.type) {
251
+ case "create":
252
+ return handlers.create(state, action.create);
220
253
  case "rename":
221
254
  return handlers.rename(state, action.rename);
222
255
  case "add_row":