@synnaxlabs/client 0.2.0 → 0.13.5

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 (409) hide show
  1. package/.eslintrc.cjs +18 -0
  2. package/.pytest_cache/README.md +8 -0
  3. package/.turbo/turbo-build.log +16 -0
  4. package/LICENSE +4 -21
  5. package/{build/main/lib → dist/auth}/auth.d.ts +16 -19
  6. package/dist/auth/index.d.ts +1 -0
  7. package/dist/cdc/external.d.ts +1 -0
  8. package/dist/cdc/index.d.ts +1 -0
  9. package/dist/cdc/observable.d.ts +17 -0
  10. package/dist/channel/client.d.ts +58 -0
  11. package/dist/channel/creator.d.ts +8 -0
  12. package/dist/channel/external.d.ts +4 -0
  13. package/dist/channel/index.d.ts +1 -0
  14. package/dist/channel/payload.d.ts +63 -0
  15. package/dist/channel/retriever.d.ts +49 -0
  16. package/dist/client.cjs.js +23050 -0
  17. package/dist/client.cjs.js.map +1 -0
  18. package/dist/client.d.ts +73 -0
  19. package/dist/client.es.js +23050 -0
  20. package/dist/client.es.js.map +1 -0
  21. package/dist/connection/checker.d.ts +66 -0
  22. package/dist/connection/index.d.ts +1 -0
  23. package/dist/control/authority.d.ts +6 -0
  24. package/dist/control/external.d.ts +2 -0
  25. package/dist/control/index.d.ts +1 -0
  26. package/dist/control/state.d.ts +81 -0
  27. package/{build/main/lib → dist}/errors.d.ts +6 -3
  28. package/dist/framer/adapter.d.ts +21 -0
  29. package/dist/framer/client.d.ts +44 -0
  30. package/dist/framer/external.d.ts +5 -0
  31. package/dist/framer/frame.d.ts +251 -0
  32. package/dist/framer/index.d.ts +1 -0
  33. package/{build/module/lib/segment → dist/framer}/iterator.d.ts +32 -64
  34. package/dist/framer/streamProxy.d.ts +12 -0
  35. package/dist/framer/streamer.d.ts +17 -0
  36. package/dist/framer/writer.d.ts +257 -0
  37. package/dist/index.d.ts +16 -0
  38. package/dist/label/client.d.ts +25 -0
  39. package/dist/label/external.d.ts +4 -0
  40. package/dist/label/index.d.ts +1 -0
  41. package/dist/label/payload.d.ts +20 -0
  42. package/dist/label/retriever.d.ts +13 -0
  43. package/dist/label/writer.d.ts +26 -0
  44. package/dist/ontology/cdc.d.ts +25 -0
  45. package/dist/ontology/client.d.ts +25 -0
  46. package/dist/ontology/external.d.ts +3 -0
  47. package/dist/ontology/group/client.d.ts +11 -0
  48. package/dist/ontology/group/external.d.ts +2 -0
  49. package/dist/ontology/group/group.d.ts +7 -0
  50. package/dist/ontology/group/index.d.ts +1 -0
  51. package/dist/ontology/group/payload.d.ts +40 -0
  52. package/dist/ontology/group/writer.d.ts +13 -0
  53. package/dist/ontology/index.d.ts +1 -0
  54. package/dist/ontology/ontology.spec.d.ts +1 -0
  55. package/dist/ontology/payload.d.ts +235 -0
  56. package/dist/ontology/retriever.d.ts +12 -0
  57. package/dist/ontology/signals.d.ts +25 -0
  58. package/dist/ontology/writer.d.ts +9 -0
  59. package/dist/ranger/active.d.ts +9 -0
  60. package/dist/ranger/alias.d.ts +32 -0
  61. package/dist/ranger/client.d.ts +31 -0
  62. package/dist/ranger/external.d.ts +6 -0
  63. package/dist/ranger/index.d.ts +1 -0
  64. package/dist/ranger/kv.d.ts +50 -0
  65. package/dist/ranger/payload.d.ts +94 -0
  66. package/dist/ranger/range.d.ts +29 -0
  67. package/dist/ranger/ranger.spec.d.ts +1 -0
  68. package/dist/ranger/retriever.d.ts +10 -0
  69. package/dist/ranger/writer.d.ts +9 -0
  70. package/{build/main → dist}/setupspecs.d.ts +2 -2
  71. package/dist/signals/external.d.ts +1 -0
  72. package/dist/signals/index.d.ts +1 -0
  73. package/dist/signals/observable.d.ts +17 -0
  74. package/dist/transport.d.ts +10 -0
  75. package/dist/user/index.d.ts +1 -0
  76. package/{build/main/lib → dist}/user/payload.d.ts +3 -3
  77. package/dist/util/telem.d.ts +2 -0
  78. package/dist/workspace/client.d.ts +22 -0
  79. package/dist/workspace/external.d.ts +2 -0
  80. package/dist/workspace/index.d.ts +1 -0
  81. package/dist/workspace/lineplot/client.d.ts +15 -0
  82. package/dist/workspace/lineplot/external.d.ts +2 -0
  83. package/dist/workspace/lineplot/index.d.ts +1 -0
  84. package/dist/workspace/lineplot/linePlot.spec.d.ts +1 -0
  85. package/dist/workspace/lineplot/payload.d.ts +31 -0
  86. package/dist/workspace/lineplot/retriever.d.ts +9 -0
  87. package/dist/workspace/lineplot/writer.d.ts +39 -0
  88. package/dist/workspace/payload.d.ts +31 -0
  89. package/dist/workspace/pid/client.d.ts +16 -0
  90. package/dist/workspace/pid/external.d.ts +2 -0
  91. package/dist/workspace/pid/index.d.ts +1 -0
  92. package/dist/workspace/pid/payload.d.ts +37 -0
  93. package/dist/workspace/pid/pid.spec.d.ts +1 -0
  94. package/dist/workspace/pid/retriever.d.ts +9 -0
  95. package/dist/workspace/pid/writer.d.ts +46 -0
  96. package/dist/workspace/retriever.d.ts +12 -0
  97. package/dist/workspace/workspace.spec.d.ts +1 -0
  98. package/dist/workspace/writer.d.ts +55 -0
  99. package/package.json +27 -98
  100. package/src/auth/auth.spec.ts +46 -0
  101. package/src/auth/auth.ts +83 -0
  102. package/src/auth/index.ts +10 -0
  103. package/src/cdc/external.ts +10 -0
  104. package/src/cdc/index.ts +10 -0
  105. package/src/cdc/observable.ts +80 -0
  106. package/src/channel/channel.spec.ts +82 -0
  107. package/src/channel/client.ts +209 -0
  108. package/src/channel/creator.ts +43 -0
  109. package/src/channel/external.ts +13 -0
  110. package/src/channel/index.ts +10 -0
  111. package/src/channel/payload.ts +52 -0
  112. package/src/channel/retriever.ts +160 -0
  113. package/src/client.ts +112 -0
  114. package/src/connection/checker.ts +104 -0
  115. package/src/connection/connection.spec.ts +35 -0
  116. package/src/connection/index.ts +10 -0
  117. package/src/control/authority.ts +25 -0
  118. package/src/control/external.ts +11 -0
  119. package/src/control/index.ts +10 -0
  120. package/src/control/state.spec.ts +24 -0
  121. package/src/control/state.ts +117 -0
  122. package/src/errors.ts +153 -0
  123. package/src/framer/adapter.ts +116 -0
  124. package/src/framer/client.ts +116 -0
  125. package/src/framer/external.ts +14 -0
  126. package/src/framer/frame.spec.ts +317 -0
  127. package/src/framer/frame.ts +412 -0
  128. package/src/framer/index.ts +10 -0
  129. package/src/framer/iterator.spec.ts +62 -0
  130. package/src/framer/iterator.ts +240 -0
  131. package/src/framer/streamProxy.ts +59 -0
  132. package/src/framer/streamer.spec.ts +42 -0
  133. package/src/framer/streamer.ts +86 -0
  134. package/src/framer/writer.spec.ts +52 -0
  135. package/src/framer/writer.ts +236 -0
  136. package/src/index.ts +43 -4
  137. package/src/ontology/cdc.ts +135 -0
  138. package/src/ontology/client.ts +103 -0
  139. package/src/ontology/external.ts +12 -0
  140. package/src/ontology/group/client.ts +40 -0
  141. package/src/ontology/group/external.ts +11 -0
  142. package/src/ontology/group/group.spec.ts +46 -0
  143. package/src/ontology/group/group.ts +27 -0
  144. package/src/ontology/group/index.ts +10 -0
  145. package/src/ontology/group/payload.ts +65 -0
  146. package/src/ontology/group/writer.ts +48 -0
  147. package/src/ontology/index.ts +10 -0
  148. package/src/ontology/ontology.spec.ts +114 -0
  149. package/src/ontology/payload.ts +121 -0
  150. package/src/ontology/retriever.ts +91 -0
  151. package/src/ontology/writer.ts +49 -0
  152. package/src/ranger/active.ts +56 -0
  153. package/src/ranger/alias.ts +183 -0
  154. package/src/ranger/client.ts +124 -0
  155. package/src/ranger/external.ts +15 -0
  156. package/src/ranger/index.ts +10 -0
  157. package/src/ranger/kv.ts +91 -0
  158. package/src/ranger/payload.ts +70 -0
  159. package/src/ranger/range.ts +74 -0
  160. package/src/ranger/ranger.spec.ts +167 -0
  161. package/src/ranger/retriever.ts +50 -0
  162. package/src/ranger/writer.ts +80 -0
  163. package/src/setupspecs.ts +14 -5
  164. package/src/transport.ts +39 -0
  165. package/src/user/index.ts +10 -0
  166. package/src/user/payload.ts +17 -0
  167. package/src/util/telem.ts +19 -0
  168. package/src/vite-env.d.ts +11 -0
  169. package/src/workspace/client.ts +75 -0
  170. package/src/workspace/external.ts +11 -0
  171. package/src/workspace/index.ts +10 -0
  172. package/src/workspace/lineplot/client.ts +51 -0
  173. package/src/workspace/lineplot/external.ts +11 -0
  174. package/src/workspace/lineplot/index.ts +10 -0
  175. package/src/workspace/lineplot/linePlot.spec.ts +78 -0
  176. package/src/workspace/lineplot/payload.ts +29 -0
  177. package/src/workspace/lineplot/retriever.ts +49 -0
  178. package/src/workspace/lineplot/writer.ts +109 -0
  179. package/src/workspace/payload.ts +29 -0
  180. package/src/workspace/pid/client.ts +55 -0
  181. package/src/workspace/pid/external.ts +11 -0
  182. package/src/workspace/pid/index.ts +10 -0
  183. package/src/workspace/pid/payload.ts +31 -0
  184. package/src/workspace/pid/pid.spec.ts +111 -0
  185. package/src/workspace/pid/retriever.ts +45 -0
  186. package/src/workspace/pid/writer.ts +130 -0
  187. package/src/workspace/retriever.ts +67 -0
  188. package/src/workspace/workspace.spec.ts +62 -0
  189. package/src/workspace/writer.ts +103 -0
  190. package/tsconfig.json +3 -43
  191. package/tsconfig.vite.json +4 -0
  192. package/vite.config.ts +25 -0
  193. package/.DS_Store +0 -0
  194. package/.editorconfig +0 -15
  195. package/.eslintrc.json +0 -33
  196. package/.gitignore +0 -9
  197. package/.nyc_output/20720f2d-6abe-420f-a3c5-304d52d60827.json +0 -1
  198. package/.nyc_output/4725921c-6f1b-4ae9-9819-e455f702d31c.json +0 -1
  199. package/.nyc_output/47478588-5ffd-4332-873c-facaa4a2fc38.json +0 -1
  200. package/.nyc_output/48180641-e0b2-49ab-a6eb-e7910e9eac2f.json +0 -1
  201. package/.nyc_output/cb0abf31-740f-47db-b94a-8e3f8f117cb8.json +0 -1
  202. package/.nyc_output/fc77fce2-dad0-49a8-8d4b-0a9014ecf8c5.json +0 -1
  203. package/.nyc_output/processinfo/20720f2d-6abe-420f-a3c5-304d52d60827.json +0 -1
  204. package/.nyc_output/processinfo/4725921c-6f1b-4ae9-9819-e455f702d31c.json +0 -1
  205. package/.nyc_output/processinfo/47478588-5ffd-4332-873c-facaa4a2fc38.json +0 -1
  206. package/.nyc_output/processinfo/48180641-e0b2-49ab-a6eb-e7910e9eac2f.json +0 -1
  207. package/.nyc_output/processinfo/cb0abf31-740f-47db-b94a-8e3f8f117cb8.json +0 -1
  208. package/.nyc_output/processinfo/fc77fce2-dad0-49a8-8d4b-0a9014ecf8c5.json +0 -1
  209. package/.nyc_output/processinfo/index.json +0 -1
  210. package/.prettierignore +0 -2
  211. package/CHANGELOG.md +0 -5
  212. package/build/main/index.d.ts +0 -4
  213. package/build/main/index.js +0 -35
  214. package/build/main/lib/auth.js +0 -62
  215. package/build/main/lib/auth.spec.js +0 -39
  216. package/build/main/lib/channel/channel.spec.js +0 -49
  217. package/build/main/lib/channel/client.d.ts +0 -94
  218. package/build/main/lib/channel/client.js +0 -134
  219. package/build/main/lib/channel/creator.d.ts +0 -19
  220. package/build/main/lib/channel/creator.js +0 -44
  221. package/build/main/lib/channel/payload.d.ts +0 -25
  222. package/build/main/lib/channel/payload.js +0 -18
  223. package/build/main/lib/channel/registry.d.ts +0 -9
  224. package/build/main/lib/channel/registry.js +0 -37
  225. package/build/main/lib/channel/retriever.d.ts +0 -11
  226. package/build/main/lib/channel/retriever.js +0 -39
  227. package/build/main/lib/client.d.ts +0 -30
  228. package/build/main/lib/client.js +0 -46
  229. package/build/main/lib/errors.js +0 -122
  230. package/build/main/lib/segment/client.d.ts +0 -62
  231. package/build/main/lib/segment/client.js +0 -95
  232. package/build/main/lib/segment/iterator.d.ts +0 -134
  233. package/build/main/lib/segment/iterator.js +0 -253
  234. package/build/main/lib/segment/iterator.spec.js +0 -73
  235. package/build/main/lib/segment/payload.d.ts +0 -16
  236. package/build/main/lib/segment/payload.js +0 -13
  237. package/build/main/lib/segment/splitter.d.ts +0 -7
  238. package/build/main/lib/segment/splitter.js +0 -25
  239. package/build/main/lib/segment/typed.d.ts +0 -15
  240. package/build/main/lib/segment/typed.js +0 -49
  241. package/build/main/lib/segment/validator.d.ts +0 -22
  242. package/build/main/lib/segment/validator.js +0 -64
  243. package/build/main/lib/segment/writer.d.ts +0 -98
  244. package/build/main/lib/segment/writer.js +0 -183
  245. package/build/main/lib/segment/writer.spec.js +0 -90
  246. package/build/main/lib/telem.d.ts +0 -395
  247. package/build/main/lib/telem.js +0 -553
  248. package/build/main/lib/telem.spec.js +0 -152
  249. package/build/main/lib/transport.d.ts +0 -10
  250. package/build/main/lib/transport.js +0 -22
  251. package/build/main/lib/user/payload.js +0 -9
  252. package/build/main/lib/util/telem.d.ts +0 -2
  253. package/build/main/lib/util/telem.js +0 -13
  254. package/build/main/setupspecs.js +0 -17
  255. package/build/module/index.d.ts +0 -4
  256. package/build/module/index.js +0 -5
  257. package/build/module/lib/auth.d.ts +0 -54
  258. package/build/module/lib/auth.js +0 -63
  259. package/build/module/lib/auth.spec.js +0 -34
  260. package/build/module/lib/channel/channel.spec.js +0 -44
  261. package/build/module/lib/channel/client.d.ts +0 -94
  262. package/build/module/lib/channel/client.js +0 -134
  263. package/build/module/lib/channel/creator.d.ts +0 -19
  264. package/build/module/lib/channel/creator.js +0 -42
  265. package/build/module/lib/channel/payload.d.ts +0 -25
  266. package/build/module/lib/channel/payload.js +0 -15
  267. package/build/module/lib/channel/registry.d.ts +0 -9
  268. package/build/module/lib/channel/registry.js +0 -36
  269. package/build/module/lib/channel/retriever.d.ts +0 -11
  270. package/build/module/lib/channel/retriever.js +0 -37
  271. package/build/module/lib/client.d.ts +0 -30
  272. package/build/module/lib/client.js +0 -44
  273. package/build/module/lib/errors.d.ts +0 -53
  274. package/build/module/lib/errors.js +0 -113
  275. package/build/module/lib/segment/client.d.ts +0 -62
  276. package/build/module/lib/segment/client.js +0 -94
  277. package/build/module/lib/segment/iterator.js +0 -248
  278. package/build/module/lib/segment/iterator.spec.js +0 -68
  279. package/build/module/lib/segment/payload.d.ts +0 -16
  280. package/build/module/lib/segment/payload.js +0 -10
  281. package/build/module/lib/segment/splitter.d.ts +0 -7
  282. package/build/module/lib/segment/splitter.js +0 -26
  283. package/build/module/lib/segment/typed.d.ts +0 -15
  284. package/build/module/lib/segment/typed.js +0 -49
  285. package/build/module/lib/segment/validator.d.ts +0 -22
  286. package/build/module/lib/segment/validator.js +0 -60
  287. package/build/module/lib/segment/writer.d.ts +0 -98
  288. package/build/module/lib/segment/writer.js +0 -183
  289. package/build/module/lib/segment/writer.spec.js +0 -85
  290. package/build/module/lib/telem.d.ts +0 -395
  291. package/build/module/lib/telem.js +0 -545
  292. package/build/module/lib/telem.spec.js +0 -147
  293. package/build/module/lib/transport.d.ts +0 -10
  294. package/build/module/lib/transport.js +0 -22
  295. package/build/module/lib/user/payload.d.ts +0 -12
  296. package/build/module/lib/user/payload.js +0 -6
  297. package/build/module/lib/util/telem.d.ts +0 -2
  298. package/build/module/lib/util/telem.js +0 -9
  299. package/build/module/setupspecs.d.ts +0 -4
  300. package/build/module/setupspecs.js +0 -16
  301. package/build/tsconfig.module.tsbuildinfo +0 -1
  302. package/build/tsconfig.tsbuildinfo +0 -1
  303. package/coverage/base.css +0 -224
  304. package/coverage/block-navigation.js +0 -87
  305. package/coverage/favicon.png +0 -0
  306. package/coverage/index.html +0 -191
  307. package/coverage/lcov-report/base.css +0 -224
  308. package/coverage/lcov-report/block-navigation.js +0 -87
  309. package/coverage/lcov-report/favicon.png +0 -0
  310. package/coverage/lcov-report/index.html +0 -191
  311. package/coverage/lcov-report/prettify.css +0 -1
  312. package/coverage/lcov-report/prettify.js +0 -2
  313. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  314. package/coverage/lcov-report/sorter.js +0 -196
  315. package/coverage/lcov-report/src/index.html +0 -116
  316. package/coverage/lcov-report/src/lib/auth.ts.html +0 -340
  317. package/coverage/lcov-report/src/lib/channel/client.ts.html +0 -604
  318. package/coverage/lcov-report/src/lib/channel/creator.ts.html +0 -304
  319. package/coverage/lcov-report/src/lib/channel/index.html +0 -176
  320. package/coverage/lcov-report/src/lib/channel/payload.ts.html +0 -139
  321. package/coverage/lcov-report/src/lib/channel/registry.ts.html +0 -202
  322. package/coverage/lcov-report/src/lib/channel/retriever.ts.html +0 -244
  323. package/coverage/lcov-report/src/lib/client.ts.html +0 -244
  324. package/coverage/lcov-report/src/lib/errors.ts.html +0 -484
  325. package/coverage/lcov-report/src/lib/index.html +0 -176
  326. package/coverage/lcov-report/src/lib/segment/client.ts.html +0 -463
  327. package/coverage/lcov-report/src/lib/segment/index.html +0 -206
  328. package/coverage/lcov-report/src/lib/segment/iterator.ts.html +0 -928
  329. package/coverage/lcov-report/src/lib/segment/payload.ts.html +0 -139
  330. package/coverage/lcov-report/src/lib/segment/splitter.ts.html +0 -181
  331. package/coverage/lcov-report/src/lib/segment/typed.ts.html +0 -307
  332. package/coverage/lcov-report/src/lib/segment/validator.ts.html +0 -331
  333. package/coverage/lcov-report/src/lib/segment/writer.ts.html +0 -727
  334. package/coverage/lcov-report/src/lib/telem.ts.html +0 -2056
  335. package/coverage/lcov-report/src/lib/transport.ts.html +0 -196
  336. package/coverage/lcov-report/src/lib/user/index.html +0 -116
  337. package/coverage/lcov-report/src/lib/user/payload.ts.html +0 -109
  338. package/coverage/lcov-report/src/lib/util/index.html +0 -116
  339. package/coverage/lcov-report/src/lib/util/telem.ts.html +0 -124
  340. package/coverage/lcov-report/src/setupspecs.ts.html +0 -133
  341. package/coverage/lcov.info +0 -1230
  342. package/coverage/prettify.css +0 -1
  343. package/coverage/prettify.js +0 -2
  344. package/coverage/sort-arrow-sprite.png +0 -0
  345. package/coverage/sorter.js +0 -196
  346. package/coverage/src/index.html +0 -116
  347. package/coverage/src/lib/auth.ts.html +0 -340
  348. package/coverage/src/lib/channel/client.ts.html +0 -604
  349. package/coverage/src/lib/channel/creator.ts.html +0 -304
  350. package/coverage/src/lib/channel/index.html +0 -176
  351. package/coverage/src/lib/channel/payload.ts.html +0 -139
  352. package/coverage/src/lib/channel/registry.ts.html +0 -202
  353. package/coverage/src/lib/channel/retriever.ts.html +0 -244
  354. package/coverage/src/lib/client.ts.html +0 -244
  355. package/coverage/src/lib/errors.ts.html +0 -484
  356. package/coverage/src/lib/index.html +0 -176
  357. package/coverage/src/lib/segment/client.ts.html +0 -463
  358. package/coverage/src/lib/segment/index.html +0 -206
  359. package/coverage/src/lib/segment/iterator.ts.html +0 -928
  360. package/coverage/src/lib/segment/payload.ts.html +0 -139
  361. package/coverage/src/lib/segment/splitter.ts.html +0 -181
  362. package/coverage/src/lib/segment/typed.ts.html +0 -307
  363. package/coverage/src/lib/segment/validator.ts.html +0 -331
  364. package/coverage/src/lib/segment/writer.ts.html +0 -727
  365. package/coverage/src/lib/telem.ts.html +0 -2056
  366. package/coverage/src/lib/transport.ts.html +0 -196
  367. package/coverage/src/lib/user/index.html +0 -116
  368. package/coverage/src/lib/user/payload.ts.html +0 -109
  369. package/coverage/src/lib/util/index.html +0 -116
  370. package/coverage/src/lib/util/telem.ts.html +0 -124
  371. package/coverage/src/setupspecs.ts.html +0 -133
  372. package/src/lib/.DS_Store +0 -0
  373. package/src/lib/auth.spec.ts +0 -36
  374. package/src/lib/auth.ts +0 -85
  375. package/src/lib/channel/channel.spec.ts +0 -49
  376. package/src/lib/channel/client.ts +0 -173
  377. package/src/lib/channel/creator.ts +0 -73
  378. package/src/lib/channel/payload.ts +0 -18
  379. package/src/lib/channel/registry.ts +0 -39
  380. package/src/lib/channel/retriever.ts +0 -53
  381. package/src/lib/client.ts +0 -53
  382. package/src/lib/errors.ts +0 -133
  383. package/src/lib/segment/client.ts +0 -126
  384. package/src/lib/segment/iterator.spec.ts +0 -78
  385. package/src/lib/segment/iterator.ts +0 -281
  386. package/src/lib/segment/payload.ts +0 -18
  387. package/src/lib/segment/splitter.ts +0 -32
  388. package/src/lib/segment/typed.ts +0 -74
  389. package/src/lib/segment/validator.ts +0 -82
  390. package/src/lib/segment/writer.spec.ts +0 -85
  391. package/src/lib/segment/writer.ts +0 -214
  392. package/src/lib/telem.spec.ts +0 -200
  393. package/src/lib/telem.ts +0 -657
  394. package/src/lib/transport.ts +0 -37
  395. package/src/lib/user/payload.ts +0 -8
  396. package/src/lib/util/telem.ts +0 -13
  397. package/tsconfig.module.json +0 -9
  398. package/yarn-error.log +0 -5756
  399. package/yarn.lock +0 -5936
  400. /package/{build/main/lib → dist/auth}/auth.spec.d.ts +0 -0
  401. /package/{build/main/lib → dist}/channel/channel.spec.d.ts +0 -0
  402. /package/{build/main/lib/segment/iterator.spec.d.ts → dist/connection/connection.spec.d.ts} +0 -0
  403. /package/{build/main/lib/segment/writer.spec.d.ts → dist/control/state.spec.d.ts} +0 -0
  404. /package/{build/main/lib/telem.spec.d.ts → dist/framer/frame.spec.d.ts} +0 -0
  405. /package/{build/module/lib/segment → dist/framer}/iterator.spec.d.ts +0 -0
  406. /package/{build/module/lib/auth.spec.d.ts → dist/framer/streamer.spec.d.ts} +0 -0
  407. /package/{build/module/lib/segment → dist/framer}/writer.spec.d.ts +0 -0
  408. /package/{build/module/lib/channel/channel.spec.d.ts → dist/label/label.spec.d.ts} +0 -0
  409. /package/{build/module/lib/telem.spec.d.ts → dist/ontology/group/group.spec.d.ts} +0 -0
@@ -0,0 +1,78 @@
1
+ // Copyright 2023 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 { describe, test, expect } from "vitest";
11
+
12
+ import { newClient } from "@/setupspecs";
13
+
14
+ const client = newClient();
15
+
16
+ const ZERO_UUID = "00000000-0000-0000-0000-000000000000";
17
+
18
+ describe("LinePlot", () => {
19
+ describe("create", () => {
20
+ test("create one", async () => {
21
+ const ws = await client.workspaces.create({
22
+ name: "PID",
23
+ layout: { one: 1 },
24
+ });
25
+ const linePlot = await client.workspaces.linePlot.create(ws.key, {
26
+ name: "PID",
27
+ data: { one: 1 },
28
+ });
29
+ expect(linePlot.name).toEqual("PID");
30
+ expect(linePlot.key).not.toEqual(ZERO_UUID);
31
+ expect(linePlot.data.one).toEqual(1);
32
+ });
33
+ });
34
+ describe("rename", () => {
35
+ test("rename one", async () => {
36
+ const ws = await client.workspaces.create({
37
+ name: "PID",
38
+ layout: { one: 1 },
39
+ });
40
+ const linePlot = await client.workspaces.linePlot.create(ws.key, {
41
+ name: "PID",
42
+ data: { one: 1 },
43
+ });
44
+ await client.workspaces.linePlot.rename(linePlot.key, "PID2");
45
+ const res = await client.workspaces.linePlot.retrieve(linePlot.key);
46
+ expect(res.name).toEqual("PID2");
47
+ });
48
+ });
49
+ describe("setData", () => {
50
+ test("set data", async () => {
51
+ const ws = await client.workspaces.create({
52
+ name: "PID",
53
+ layout: { one: 1 },
54
+ });
55
+ const linePlot = await client.workspaces.linePlot.create(ws.key, {
56
+ name: "PID",
57
+ data: { one: 1 },
58
+ });
59
+ await client.workspaces.linePlot.setData(linePlot.key, { two: 2 });
60
+ const res = await client.workspaces.linePlot.retrieve(linePlot.key);
61
+ expect(res.data.two).toEqual(2);
62
+ });
63
+ });
64
+ describe("delete", () => {
65
+ test("delete one", async () => {
66
+ const ws = await client.workspaces.create({
67
+ name: "PID",
68
+ layout: { one: 1 },
69
+ });
70
+ const linePlot = await client.workspaces.linePlot.create(ws.key, {
71
+ name: "PID",
72
+ data: { one: 1 },
73
+ });
74
+ await client.workspaces.linePlot.delete(linePlot.key);
75
+ await expect(client.workspaces.linePlot.retrieve(linePlot.key)).rejects.toThrow();
76
+ });
77
+ });
78
+ });
@@ -0,0 +1,29 @@
1
+ // Copyright 2023 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 { type UnknownRecord, unknownRecordZ } from "@synnaxlabs/x";
11
+ import { z } from "zod";
12
+
13
+ export const keyZ = z.string().uuid();
14
+ export type Key = z.infer<typeof keyZ>;
15
+ export type Params = Key | Key[];
16
+
17
+ export const linePlotZ = z.object({
18
+ key: z.string(),
19
+ name: z.string(),
20
+ data: unknownRecordZ,
21
+ });
22
+
23
+ export const linePlotRemoteZ = z.object({
24
+ key: z.string(),
25
+ name: z.string(),
26
+ data: z.string().transform((s) => JSON.parse(s) as UnknownRecord),
27
+ });
28
+
29
+ export type LinePlot = z.infer<typeof linePlotZ>;
@@ -0,0 +1,49 @@
1
+ // Copyright 2023 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 { type UnaryClient } from "@synnaxlabs/freighter";
11
+ import { toArray } from "@synnaxlabs/x";
12
+ import { z } from "zod";
13
+
14
+ import {
15
+ type LinePlot,
16
+ type Params,
17
+ linePlotRemoteZ,
18
+ } from "@/workspace/lineplot/payload";
19
+
20
+ const reqZ = z.object({
21
+ keys: z.string().array(),
22
+ });
23
+
24
+ type Request = z.infer<typeof reqZ>;
25
+
26
+ const resZ = z.object({
27
+ linePlots: linePlotRemoteZ.array(),
28
+ });
29
+
30
+ export class Retriever {
31
+ private readonly ENDPOINT = "/workspace/lineplot/retrieve";
32
+ private readonly client: UnaryClient;
33
+
34
+ constructor(client: UnaryClient) {
35
+ this.client = client;
36
+ }
37
+
38
+ async retrieve(params: Params): Promise<LinePlot[]> {
39
+ const normalized = toArray(params);
40
+ const res = await this.execute({ keys: normalized });
41
+ return res;
42
+ }
43
+
44
+ private async execute(request: Request): Promise<LinePlot[]> {
45
+ const [res, err] = await this.client.send(this.ENDPOINT, request, resZ);
46
+ if (err != null) throw err;
47
+ return res.linePlots;
48
+ }
49
+ }
@@ -0,0 +1,109 @@
1
+ // Copyright 2023 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 { sendRequired, type UnaryClient } from "@synnaxlabs/freighter";
11
+ import { toArray, type UnknownRecord } from "@synnaxlabs/x";
12
+ import { z } from "zod";
13
+
14
+ import {
15
+ linePlotZ,
16
+ type LinePlot,
17
+ type Params,
18
+ keyZ,
19
+ type Key,
20
+ linePlotRemoteZ,
21
+ } from "@/workspace/lineplot/payload";
22
+ import { keyZ as workspaceKeyZ } from "@/workspace/payload";
23
+
24
+ export const crudeLinePlotZ = linePlotZ.partial({ key: true });
25
+ export const linePlotWriteZ = linePlotRemoteZ.partial({ key: true });
26
+
27
+ export type CrudeLinePlot = z.infer<typeof crudeLinePlotZ>;
28
+
29
+ const createReqZ = z.object({
30
+ workspace: workspaceKeyZ,
31
+ linePlots: linePlotWriteZ.array(),
32
+ });
33
+
34
+ const createResZ = z.object({
35
+ linePlots: linePlotRemoteZ.array(),
36
+ });
37
+
38
+ const deleteReqZ = z.object({
39
+ keys: keyZ.array(),
40
+ });
41
+
42
+ const deleteResZ = z.object({});
43
+
44
+ const renameReqZ = z.object({
45
+ key: keyZ,
46
+ name: z.string(),
47
+ });
48
+
49
+ const renameResZ = z.object({});
50
+
51
+ const setDataReqZ = z.object({
52
+ key: keyZ,
53
+ data: z.string(),
54
+ });
55
+
56
+ const setDataResZ = z.object({});
57
+
58
+ const CREATE_ENDPOINT = "/workspace/lineplot/create";
59
+ const DELETE_ENDPOINT = "/workspace/lineplot/delete";
60
+ const RENAME_ENDPOINT = "/workspace/lineplot/rename";
61
+ const SET_DATA_ENDPOINT = "/workspace/lineplot/set-data";
62
+
63
+ export class Writer {
64
+ private readonly client: UnaryClient;
65
+
66
+ constructor(client: UnaryClient) {
67
+ this.client = client;
68
+ }
69
+
70
+ async create(workspace: string, plot: CrudeLinePlot): Promise<LinePlot> {
71
+ const pid_ = { ...plot, data: JSON.stringify(plot.data) };
72
+ const res = await sendRequired<typeof createReqZ, typeof createResZ>(
73
+ this.client,
74
+ CREATE_ENDPOINT,
75
+ { workspace, linePlots: [pid_] },
76
+ createResZ,
77
+ );
78
+
79
+ return res.linePlots[0];
80
+ }
81
+
82
+ async delete(params: Params): Promise<void> {
83
+ const normalized = toArray(params);
84
+ await sendRequired<typeof deleteReqZ, typeof deleteResZ>(
85
+ this.client,
86
+ DELETE_ENDPOINT,
87
+ { keys: normalized },
88
+ deleteResZ,
89
+ );
90
+ }
91
+
92
+ async rename(pid: Key, name: string): Promise<void> {
93
+ await sendRequired<typeof renameReqZ, typeof renameResZ>(
94
+ this.client,
95
+ RENAME_ENDPOINT,
96
+ { key: pid, name },
97
+ renameResZ,
98
+ );
99
+ }
100
+
101
+ async setData(pid: Key, data: UnknownRecord): Promise<void> {
102
+ await sendRequired<typeof setDataReqZ, typeof setDataResZ>(
103
+ this.client,
104
+ SET_DATA_ENDPOINT,
105
+ { key: pid, data: JSON.stringify(data) },
106
+ renameResZ,
107
+ );
108
+ }
109
+ }
@@ -0,0 +1,29 @@
1
+ // Copyright 2023 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 { type UnknownRecord, unknownRecordZ } from "@synnaxlabs/x";
11
+ import { z } from "zod";
12
+
13
+ export const keyZ = z.string().uuid();
14
+
15
+ export type Key = z.infer<typeof keyZ>;
16
+
17
+ export type Params = Key | Key[];
18
+
19
+ export const workspaceZ = z.object({
20
+ name: z.string(),
21
+ key: keyZ,
22
+ layout: unknownRecordZ,
23
+ });
24
+
25
+ export const workspaceRemoteZ = workspaceZ.omit({ layout: true }).extend({
26
+ layout: z.string().transform((s) => JSON.parse(s) as UnknownRecord),
27
+ });
28
+
29
+ export type Workspace = z.infer<typeof workspaceZ>;
@@ -0,0 +1,55 @@
1
+ // Copyright 2023 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 { type UnaryClient } from "@synnaxlabs/freighter";
11
+ import { type UnknownRecord } from "@synnaxlabs/x";
12
+
13
+ import { type Key, type Params, type PID } from "@/workspace/pid/payload";
14
+ import { Retriever } from "@/workspace/pid/retriever";
15
+ import { Writer, type UncreatedPID } from "@/workspace/pid/writer";
16
+
17
+ export class Client {
18
+ private readonly writer: Writer;
19
+ private readonly retriever: Retriever;
20
+
21
+ constructor(client: UnaryClient) {
22
+ this.writer = new Writer(client);
23
+ this.retriever = new Retriever(client);
24
+ }
25
+
26
+ async create(workspace: string, pid: UncreatedPID): Promise<PID> {
27
+ return await this.writer.create(workspace, pid);
28
+ }
29
+
30
+ async rename(key: Key, name: string): Promise<void> {
31
+ await this.writer.rename(key, name);
32
+ }
33
+
34
+ async setData(key: Key, data: UnknownRecord): Promise<void> {
35
+ await this.writer.setData(key, data);
36
+ }
37
+
38
+ async retrieve(key: Key): Promise<PID>;
39
+
40
+ async retrieve(keys: Key[]): Promise<PID[]>;
41
+
42
+ async retrieve(keys: Params): Promise<PID | PID[]> {
43
+ const isMany = Array.isArray(keys);
44
+ const res = await this.retriever.retrieve(keys);
45
+ return isMany ? res : res[0];
46
+ }
47
+
48
+ async delete(keys: Params): Promise<void> {
49
+ await this.writer.delete(keys);
50
+ }
51
+
52
+ async copy(key: Key, name: string, snapshot: boolean): Promise<PID> {
53
+ return await this.writer.copy(key, name, snapshot);
54
+ }
55
+ }
@@ -0,0 +1,11 @@
1
+ // Copyright 2023 Synnax Labs, Inc.
2
+ //
3
+ // Use of this software is governed by the Business Source License included in the file
4
+ // licenses/BSL.txt.
5
+ //
6
+ // As of the Change Date specified in that file, in accordance with the Business Source
7
+ // License, use of this software will be governed by the Apache License, Version 2.0,
8
+ // included in the file licenses/APL.txt.
9
+
10
+ export * from "@/workspace/pid/payload";
11
+ export * from "@/workspace/pid/client";
@@ -0,0 +1,10 @@
1
+ // Copyright 2023 Synnax Labs, Inc.
2
+ //
3
+ // Use of this software is governed by the Business Source License included in the file
4
+ // licenses/BSL.txt.
5
+ //
6
+ // As of the Change Date specified in that file, in accordance with the Business Source
7
+ // License, use of this software will be governed by the Apache License, Version 2.0,
8
+ // included in the file licenses/APL.txt.
9
+
10
+ export * as pid from "@/workspace/pid/external";
@@ -0,0 +1,31 @@
1
+ // Copyright 2023 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 { type UnknownRecord, unknownRecordZ } from "@synnaxlabs/x";
11
+ import { z } from "zod";
12
+
13
+ export const keyZ = z.string().uuid();
14
+ export type Key = z.infer<typeof keyZ>;
15
+ export type Params = Key | Key[];
16
+
17
+ export const pidZ = z.object({
18
+ key: z.string(),
19
+ name: z.string(),
20
+ data: unknownRecordZ,
21
+ snapshot: z.boolean(),
22
+ });
23
+
24
+ export const pidRemoteZ = z.object({
25
+ key: z.string(),
26
+ name: z.string(),
27
+ snapshot: z.boolean(),
28
+ data: z.string().transform((s) => JSON.parse(s) as UnknownRecord),
29
+ });
30
+
31
+ export type PID = z.infer<typeof pidZ>;
@@ -0,0 +1,111 @@
1
+ // Copyright 2023 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 { describe, test, expect, it } from "vitest";
11
+
12
+ import { ValidationError } from "@/errors";
13
+ import { newClient } from "@/setupspecs";
14
+
15
+ const client = newClient();
16
+
17
+ const ZERO_UUID = "00000000-0000-0000-0000-000000000000";
18
+
19
+ describe("PID", () => {
20
+ describe("create", () => {
21
+ test("create one", async () => {
22
+ const ws = await client.workspaces.create({
23
+ name: "PID",
24
+ layout: { one: 1 },
25
+ });
26
+ const pid = await client.workspaces.pid.create(ws.key, {
27
+ name: "PID",
28
+ data: { one: 1 },
29
+ });
30
+ expect(pid.name).toEqual("PID");
31
+ expect(pid.key).not.toEqual(ZERO_UUID);
32
+ expect(pid.data.one).toEqual(1);
33
+ });
34
+ });
35
+ describe("rename", () => {
36
+ test("rename one", async () => {
37
+ const ws = await client.workspaces.create({
38
+ name: "PID",
39
+ layout: { one: 1 },
40
+ });
41
+ const pid = await client.workspaces.pid.create(ws.key, {
42
+ name: "PID",
43
+ data: { one: 1 },
44
+ });
45
+ await client.workspaces.pid.rename(pid.key, "PID2");
46
+ const res = await client.workspaces.pid.retrieve(pid.key);
47
+ expect(res.name).toEqual("PID2");
48
+ });
49
+ });
50
+ describe("setData", () => {
51
+ test("set data", async () => {
52
+ const ws = await client.workspaces.create({
53
+ name: "PID",
54
+ layout: { one: 1 },
55
+ });
56
+ const pid = await client.workspaces.pid.create(ws.key, {
57
+ name: "PID",
58
+ data: { one: 1 },
59
+ });
60
+ await client.workspaces.pid.setData(pid.key, { two: 2 });
61
+ const res = await client.workspaces.pid.retrieve(pid.key);
62
+ expect(res.data.two).toEqual(2);
63
+ });
64
+ });
65
+ describe("delete", () => {
66
+ test("delete one", async () => {
67
+ const ws = await client.workspaces.create({
68
+ name: "PID",
69
+ layout: { one: 1 },
70
+ });
71
+ const pid = await client.workspaces.pid.create(ws.key, {
72
+ name: "PID",
73
+ data: { one: 1 },
74
+ });
75
+ await client.workspaces.pid.delete(pid.key);
76
+ await expect(client.workspaces.pid.retrieve(pid.key)).rejects.toThrow();
77
+ });
78
+ });
79
+ describe("copy", () => {
80
+ test("copy one", async () => {
81
+ const ws = await client.workspaces.create({
82
+ name: "PID",
83
+ layout: { one: 1 },
84
+ });
85
+ const pid = await client.workspaces.pid.create(ws.key, {
86
+ name: "PID",
87
+ data: { one: 1 },
88
+ });
89
+ const pid2 = await client.workspaces.pid.copy(pid.key, "PID2", false);
90
+ expect(pid2.name).toEqual("PID2");
91
+ expect(pid2.key).not.toEqual(ZERO_UUID);
92
+ expect(pid2.data.one).toEqual(1);
93
+ });
94
+ describe("snapshot", () => {
95
+ it("should not allow the caller to edit the snapshot", async () => {
96
+ const ws = await client.workspaces.create({
97
+ name: "PID",
98
+ layout: { one: 1 },
99
+ });
100
+ const pid = await client.workspaces.pid.create(ws.key, {
101
+ name: "PID",
102
+ data: { one: 1 },
103
+ });
104
+ const pid2 = await client.workspaces.pid.copy(pid.key, "PID2", true);
105
+ await expect(
106
+ client.workspaces.pid.setData(pid2.key, { two: 2 }),
107
+ ).rejects.toThrow(ValidationError);
108
+ });
109
+ });
110
+ });
111
+ });
@@ -0,0 +1,45 @@
1
+ // Copyright 2023 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 { type UnaryClient } from "@synnaxlabs/freighter";
11
+ import { toArray } from "@synnaxlabs/x";
12
+ import { z } from "zod";
13
+
14
+ import { type PID, type Params, pidRemoteZ } from "./payload";
15
+
16
+ const reqZ = z.object({
17
+ keys: z.string().array(),
18
+ });
19
+
20
+ type Request = z.infer<typeof reqZ>;
21
+
22
+ const resZ = z.object({
23
+ pids: pidRemoteZ.array(),
24
+ });
25
+
26
+ export class Retriever {
27
+ private readonly ENDPOINT = "/workspace/pid/retrieve";
28
+ private readonly client: UnaryClient;
29
+
30
+ constructor(client: UnaryClient) {
31
+ this.client = client;
32
+ }
33
+
34
+ async retrieve(params: Params): Promise<PID[]> {
35
+ const normalized = toArray(params);
36
+ const res = await this.execute({ keys: normalized });
37
+ return res;
38
+ }
39
+
40
+ private async execute(request: Request): Promise<PID[]> {
41
+ const [res, err] = await this.client.send(this.ENDPOINT, request, resZ);
42
+ if (err != null) throw err;
43
+ return res.pids;
44
+ }
45
+ }
@@ -0,0 +1,130 @@
1
+ // Copyright 2023 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 { sendRequired, type UnaryClient } from "@synnaxlabs/freighter";
11
+ import { toArray, type UnknownRecord } from "@synnaxlabs/x";
12
+ import { z } from "zod";
13
+
14
+ import { keyZ as workspaceKeyZ } from "@/workspace/payload";
15
+ import {
16
+ pidZ,
17
+ type PID,
18
+ type Params,
19
+ keyZ,
20
+ type Key,
21
+ pidRemoteZ,
22
+ } from "@/workspace/pid/payload";
23
+
24
+ export const crudePIDz = pidZ.partial({ key: true });
25
+ export const pidWriteZ = pidRemoteZ.partial({ key: true, snapshot: true });
26
+
27
+ export type UncreatedPID = z.infer<typeof pidWriteZ>;
28
+
29
+ const createReqZ = z.object({
30
+ workspace: workspaceKeyZ,
31
+ pids: pidWriteZ.array(),
32
+ });
33
+
34
+ const createResZ = z.object({
35
+ pids: pidRemoteZ.array(),
36
+ });
37
+
38
+ const deleteReqZ = z.object({
39
+ keys: keyZ.array(),
40
+ });
41
+
42
+ const deleteResZ = z.object({});
43
+
44
+ const renameReqZ = z.object({
45
+ key: keyZ,
46
+ name: z.string(),
47
+ });
48
+
49
+ const renameResZ = z.object({});
50
+
51
+ const setDataReqZ = z.object({
52
+ key: keyZ,
53
+ data: z.string(),
54
+ });
55
+
56
+ const setDataResZ = z.object({});
57
+
58
+ const copyReqZ = z.object({
59
+ key: keyZ,
60
+ name: z.string(),
61
+ snapshot: z.boolean(),
62
+ });
63
+
64
+ const copyResZ = z.object({
65
+ pid: pidRemoteZ,
66
+ });
67
+
68
+ const CREATE_ENDPOINT = "/workspace/pid/create";
69
+ const DELETE_ENDPOINT = "/workspace/pid/delete";
70
+ const RENAME_ENDPOINT = "/workspace/pid/rename";
71
+ const SET_DATA_ENDPOINT = "/workspace/pid/set-data";
72
+ const COPY_ENDPOINT = "/workspace/pid/copy";
73
+
74
+ export class Writer {
75
+ private readonly client: UnaryClient;
76
+
77
+ constructor(client: UnaryClient) {
78
+ this.client = client;
79
+ }
80
+
81
+ async create(workspace: string, pid: UncreatedPID): Promise<PID> {
82
+ const pid_ = { ...pid, data: JSON.stringify(pid.data) };
83
+ const res = await sendRequired<typeof createReqZ, typeof createResZ>(
84
+ this.client,
85
+ CREATE_ENDPOINT,
86
+ { workspace, pids: [pid_] },
87
+ createResZ,
88
+ );
89
+
90
+ return res.pids[0];
91
+ }
92
+
93
+ async copy(key: Key, name: string, snapshot: boolean): Promise<PID> {
94
+ const res = await sendRequired<typeof copyReqZ, typeof copyResZ>(
95
+ this.client,
96
+ COPY_ENDPOINT,
97
+ { key, name, snapshot },
98
+ copyResZ,
99
+ );
100
+ return res.pid;
101
+ }
102
+
103
+ async delete(params: Params): Promise<void> {
104
+ const normalized = toArray(params);
105
+ await sendRequired<typeof deleteReqZ, typeof deleteResZ>(
106
+ this.client,
107
+ DELETE_ENDPOINT,
108
+ { keys: normalized },
109
+ deleteResZ,
110
+ );
111
+ }
112
+
113
+ async rename(pid: Key, name: string): Promise<void> {
114
+ await sendRequired<typeof renameReqZ, typeof renameResZ>(
115
+ this.client,
116
+ RENAME_ENDPOINT,
117
+ { key: pid, name },
118
+ renameResZ,
119
+ );
120
+ }
121
+
122
+ async setData(pid: Key, data: UnknownRecord): Promise<void> {
123
+ await sendRequired<typeof setDataReqZ, typeof setDataResZ>(
124
+ this.client,
125
+ SET_DATA_ENDPOINT,
126
+ { key: pid, data: JSON.stringify(data) },
127
+ renameResZ,
128
+ );
129
+ }
130
+ }