@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.
- package/.eslintrc.cjs +18 -0
- package/.pytest_cache/README.md +8 -0
- package/.turbo/turbo-build.log +16 -0
- package/LICENSE +4 -21
- package/{build/main/lib → dist/auth}/auth.d.ts +16 -19
- package/dist/auth/index.d.ts +1 -0
- package/dist/cdc/external.d.ts +1 -0
- package/dist/cdc/index.d.ts +1 -0
- package/dist/cdc/observable.d.ts +17 -0
- package/dist/channel/client.d.ts +58 -0
- package/dist/channel/creator.d.ts +8 -0
- package/dist/channel/external.d.ts +4 -0
- package/dist/channel/index.d.ts +1 -0
- package/dist/channel/payload.d.ts +63 -0
- package/dist/channel/retriever.d.ts +49 -0
- package/dist/client.cjs.js +23050 -0
- package/dist/client.cjs.js.map +1 -0
- package/dist/client.d.ts +73 -0
- package/dist/client.es.js +23050 -0
- package/dist/client.es.js.map +1 -0
- package/dist/connection/checker.d.ts +66 -0
- package/dist/connection/index.d.ts +1 -0
- package/dist/control/authority.d.ts +6 -0
- package/dist/control/external.d.ts +2 -0
- package/dist/control/index.d.ts +1 -0
- package/dist/control/state.d.ts +81 -0
- package/{build/main/lib → dist}/errors.d.ts +6 -3
- package/dist/framer/adapter.d.ts +21 -0
- package/dist/framer/client.d.ts +44 -0
- package/dist/framer/external.d.ts +5 -0
- package/dist/framer/frame.d.ts +251 -0
- package/dist/framer/index.d.ts +1 -0
- package/{build/module/lib/segment → dist/framer}/iterator.d.ts +32 -64
- package/dist/framer/streamProxy.d.ts +12 -0
- package/dist/framer/streamer.d.ts +17 -0
- package/dist/framer/writer.d.ts +257 -0
- package/dist/index.d.ts +16 -0
- package/dist/label/client.d.ts +25 -0
- package/dist/label/external.d.ts +4 -0
- package/dist/label/index.d.ts +1 -0
- package/dist/label/payload.d.ts +20 -0
- package/dist/label/retriever.d.ts +13 -0
- package/dist/label/writer.d.ts +26 -0
- package/dist/ontology/cdc.d.ts +25 -0
- package/dist/ontology/client.d.ts +25 -0
- package/dist/ontology/external.d.ts +3 -0
- package/dist/ontology/group/client.d.ts +11 -0
- package/dist/ontology/group/external.d.ts +2 -0
- package/dist/ontology/group/group.d.ts +7 -0
- package/dist/ontology/group/index.d.ts +1 -0
- package/dist/ontology/group/payload.d.ts +40 -0
- package/dist/ontology/group/writer.d.ts +13 -0
- package/dist/ontology/index.d.ts +1 -0
- package/dist/ontology/ontology.spec.d.ts +1 -0
- package/dist/ontology/payload.d.ts +235 -0
- package/dist/ontology/retriever.d.ts +12 -0
- package/dist/ontology/signals.d.ts +25 -0
- package/dist/ontology/writer.d.ts +9 -0
- package/dist/ranger/active.d.ts +9 -0
- package/dist/ranger/alias.d.ts +32 -0
- package/dist/ranger/client.d.ts +31 -0
- package/dist/ranger/external.d.ts +6 -0
- package/dist/ranger/index.d.ts +1 -0
- package/dist/ranger/kv.d.ts +50 -0
- package/dist/ranger/payload.d.ts +94 -0
- package/dist/ranger/range.d.ts +29 -0
- package/dist/ranger/ranger.spec.d.ts +1 -0
- package/dist/ranger/retriever.d.ts +10 -0
- package/dist/ranger/writer.d.ts +9 -0
- package/{build/main → dist}/setupspecs.d.ts +2 -2
- package/dist/signals/external.d.ts +1 -0
- package/dist/signals/index.d.ts +1 -0
- package/dist/signals/observable.d.ts +17 -0
- package/dist/transport.d.ts +10 -0
- package/dist/user/index.d.ts +1 -0
- package/{build/main/lib → dist}/user/payload.d.ts +3 -3
- package/dist/util/telem.d.ts +2 -0
- package/dist/workspace/client.d.ts +22 -0
- package/dist/workspace/external.d.ts +2 -0
- package/dist/workspace/index.d.ts +1 -0
- package/dist/workspace/lineplot/client.d.ts +15 -0
- package/dist/workspace/lineplot/external.d.ts +2 -0
- package/dist/workspace/lineplot/index.d.ts +1 -0
- package/dist/workspace/lineplot/linePlot.spec.d.ts +1 -0
- package/dist/workspace/lineplot/payload.d.ts +31 -0
- package/dist/workspace/lineplot/retriever.d.ts +9 -0
- package/dist/workspace/lineplot/writer.d.ts +39 -0
- package/dist/workspace/payload.d.ts +31 -0
- package/dist/workspace/pid/client.d.ts +16 -0
- package/dist/workspace/pid/external.d.ts +2 -0
- package/dist/workspace/pid/index.d.ts +1 -0
- package/dist/workspace/pid/payload.d.ts +37 -0
- package/dist/workspace/pid/pid.spec.d.ts +1 -0
- package/dist/workspace/pid/retriever.d.ts +9 -0
- package/dist/workspace/pid/writer.d.ts +46 -0
- package/dist/workspace/retriever.d.ts +12 -0
- package/dist/workspace/workspace.spec.d.ts +1 -0
- package/dist/workspace/writer.d.ts +55 -0
- package/package.json +27 -98
- package/src/auth/auth.spec.ts +46 -0
- package/src/auth/auth.ts +83 -0
- package/src/auth/index.ts +10 -0
- package/src/cdc/external.ts +10 -0
- package/src/cdc/index.ts +10 -0
- package/src/cdc/observable.ts +80 -0
- package/src/channel/channel.spec.ts +82 -0
- package/src/channel/client.ts +209 -0
- package/src/channel/creator.ts +43 -0
- package/src/channel/external.ts +13 -0
- package/src/channel/index.ts +10 -0
- package/src/channel/payload.ts +52 -0
- package/src/channel/retriever.ts +160 -0
- package/src/client.ts +112 -0
- package/src/connection/checker.ts +104 -0
- package/src/connection/connection.spec.ts +35 -0
- package/src/connection/index.ts +10 -0
- package/src/control/authority.ts +25 -0
- package/src/control/external.ts +11 -0
- package/src/control/index.ts +10 -0
- package/src/control/state.spec.ts +24 -0
- package/src/control/state.ts +117 -0
- package/src/errors.ts +153 -0
- package/src/framer/adapter.ts +116 -0
- package/src/framer/client.ts +116 -0
- package/src/framer/external.ts +14 -0
- package/src/framer/frame.spec.ts +317 -0
- package/src/framer/frame.ts +412 -0
- package/src/framer/index.ts +10 -0
- package/src/framer/iterator.spec.ts +62 -0
- package/src/framer/iterator.ts +240 -0
- package/src/framer/streamProxy.ts +59 -0
- package/src/framer/streamer.spec.ts +42 -0
- package/src/framer/streamer.ts +86 -0
- package/src/framer/writer.spec.ts +52 -0
- package/src/framer/writer.ts +236 -0
- package/src/index.ts +43 -4
- package/src/ontology/cdc.ts +135 -0
- package/src/ontology/client.ts +103 -0
- package/src/ontology/external.ts +12 -0
- package/src/ontology/group/client.ts +40 -0
- package/src/ontology/group/external.ts +11 -0
- package/src/ontology/group/group.spec.ts +46 -0
- package/src/ontology/group/group.ts +27 -0
- package/src/ontology/group/index.ts +10 -0
- package/src/ontology/group/payload.ts +65 -0
- package/src/ontology/group/writer.ts +48 -0
- package/src/ontology/index.ts +10 -0
- package/src/ontology/ontology.spec.ts +114 -0
- package/src/ontology/payload.ts +121 -0
- package/src/ontology/retriever.ts +91 -0
- package/src/ontology/writer.ts +49 -0
- package/src/ranger/active.ts +56 -0
- package/src/ranger/alias.ts +183 -0
- package/src/ranger/client.ts +124 -0
- package/src/ranger/external.ts +15 -0
- package/src/ranger/index.ts +10 -0
- package/src/ranger/kv.ts +91 -0
- package/src/ranger/payload.ts +70 -0
- package/src/ranger/range.ts +74 -0
- package/src/ranger/ranger.spec.ts +167 -0
- package/src/ranger/retriever.ts +50 -0
- package/src/ranger/writer.ts +80 -0
- package/src/setupspecs.ts +14 -5
- package/src/transport.ts +39 -0
- package/src/user/index.ts +10 -0
- package/src/user/payload.ts +17 -0
- package/src/util/telem.ts +19 -0
- package/src/vite-env.d.ts +11 -0
- package/src/workspace/client.ts +75 -0
- package/src/workspace/external.ts +11 -0
- package/src/workspace/index.ts +10 -0
- package/src/workspace/lineplot/client.ts +51 -0
- package/src/workspace/lineplot/external.ts +11 -0
- package/src/workspace/lineplot/index.ts +10 -0
- package/src/workspace/lineplot/linePlot.spec.ts +78 -0
- package/src/workspace/lineplot/payload.ts +29 -0
- package/src/workspace/lineplot/retriever.ts +49 -0
- package/src/workspace/lineplot/writer.ts +109 -0
- package/src/workspace/payload.ts +29 -0
- package/src/workspace/pid/client.ts +55 -0
- package/src/workspace/pid/external.ts +11 -0
- package/src/workspace/pid/index.ts +10 -0
- package/src/workspace/pid/payload.ts +31 -0
- package/src/workspace/pid/pid.spec.ts +111 -0
- package/src/workspace/pid/retriever.ts +45 -0
- package/src/workspace/pid/writer.ts +130 -0
- package/src/workspace/retriever.ts +67 -0
- package/src/workspace/workspace.spec.ts +62 -0
- package/src/workspace/writer.ts +103 -0
- package/tsconfig.json +3 -43
- package/tsconfig.vite.json +4 -0
- package/vite.config.ts +25 -0
- package/.DS_Store +0 -0
- package/.editorconfig +0 -15
- package/.eslintrc.json +0 -33
- package/.gitignore +0 -9
- package/.nyc_output/20720f2d-6abe-420f-a3c5-304d52d60827.json +0 -1
- package/.nyc_output/4725921c-6f1b-4ae9-9819-e455f702d31c.json +0 -1
- package/.nyc_output/47478588-5ffd-4332-873c-facaa4a2fc38.json +0 -1
- package/.nyc_output/48180641-e0b2-49ab-a6eb-e7910e9eac2f.json +0 -1
- package/.nyc_output/cb0abf31-740f-47db-b94a-8e3f8f117cb8.json +0 -1
- package/.nyc_output/fc77fce2-dad0-49a8-8d4b-0a9014ecf8c5.json +0 -1
- package/.nyc_output/processinfo/20720f2d-6abe-420f-a3c5-304d52d60827.json +0 -1
- package/.nyc_output/processinfo/4725921c-6f1b-4ae9-9819-e455f702d31c.json +0 -1
- package/.nyc_output/processinfo/47478588-5ffd-4332-873c-facaa4a2fc38.json +0 -1
- package/.nyc_output/processinfo/48180641-e0b2-49ab-a6eb-e7910e9eac2f.json +0 -1
- package/.nyc_output/processinfo/cb0abf31-740f-47db-b94a-8e3f8f117cb8.json +0 -1
- package/.nyc_output/processinfo/fc77fce2-dad0-49a8-8d4b-0a9014ecf8c5.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/.prettierignore +0 -2
- package/CHANGELOG.md +0 -5
- package/build/main/index.d.ts +0 -4
- package/build/main/index.js +0 -35
- package/build/main/lib/auth.js +0 -62
- package/build/main/lib/auth.spec.js +0 -39
- package/build/main/lib/channel/channel.spec.js +0 -49
- package/build/main/lib/channel/client.d.ts +0 -94
- package/build/main/lib/channel/client.js +0 -134
- package/build/main/lib/channel/creator.d.ts +0 -19
- package/build/main/lib/channel/creator.js +0 -44
- package/build/main/lib/channel/payload.d.ts +0 -25
- package/build/main/lib/channel/payload.js +0 -18
- package/build/main/lib/channel/registry.d.ts +0 -9
- package/build/main/lib/channel/registry.js +0 -37
- package/build/main/lib/channel/retriever.d.ts +0 -11
- package/build/main/lib/channel/retriever.js +0 -39
- package/build/main/lib/client.d.ts +0 -30
- package/build/main/lib/client.js +0 -46
- package/build/main/lib/errors.js +0 -122
- package/build/main/lib/segment/client.d.ts +0 -62
- package/build/main/lib/segment/client.js +0 -95
- package/build/main/lib/segment/iterator.d.ts +0 -134
- package/build/main/lib/segment/iterator.js +0 -253
- package/build/main/lib/segment/iterator.spec.js +0 -73
- package/build/main/lib/segment/payload.d.ts +0 -16
- package/build/main/lib/segment/payload.js +0 -13
- package/build/main/lib/segment/splitter.d.ts +0 -7
- package/build/main/lib/segment/splitter.js +0 -25
- package/build/main/lib/segment/typed.d.ts +0 -15
- package/build/main/lib/segment/typed.js +0 -49
- package/build/main/lib/segment/validator.d.ts +0 -22
- package/build/main/lib/segment/validator.js +0 -64
- package/build/main/lib/segment/writer.d.ts +0 -98
- package/build/main/lib/segment/writer.js +0 -183
- package/build/main/lib/segment/writer.spec.js +0 -90
- package/build/main/lib/telem.d.ts +0 -395
- package/build/main/lib/telem.js +0 -553
- package/build/main/lib/telem.spec.js +0 -152
- package/build/main/lib/transport.d.ts +0 -10
- package/build/main/lib/transport.js +0 -22
- package/build/main/lib/user/payload.js +0 -9
- package/build/main/lib/util/telem.d.ts +0 -2
- package/build/main/lib/util/telem.js +0 -13
- package/build/main/setupspecs.js +0 -17
- package/build/module/index.d.ts +0 -4
- package/build/module/index.js +0 -5
- package/build/module/lib/auth.d.ts +0 -54
- package/build/module/lib/auth.js +0 -63
- package/build/module/lib/auth.spec.js +0 -34
- package/build/module/lib/channel/channel.spec.js +0 -44
- package/build/module/lib/channel/client.d.ts +0 -94
- package/build/module/lib/channel/client.js +0 -134
- package/build/module/lib/channel/creator.d.ts +0 -19
- package/build/module/lib/channel/creator.js +0 -42
- package/build/module/lib/channel/payload.d.ts +0 -25
- package/build/module/lib/channel/payload.js +0 -15
- package/build/module/lib/channel/registry.d.ts +0 -9
- package/build/module/lib/channel/registry.js +0 -36
- package/build/module/lib/channel/retriever.d.ts +0 -11
- package/build/module/lib/channel/retriever.js +0 -37
- package/build/module/lib/client.d.ts +0 -30
- package/build/module/lib/client.js +0 -44
- package/build/module/lib/errors.d.ts +0 -53
- package/build/module/lib/errors.js +0 -113
- package/build/module/lib/segment/client.d.ts +0 -62
- package/build/module/lib/segment/client.js +0 -94
- package/build/module/lib/segment/iterator.js +0 -248
- package/build/module/lib/segment/iterator.spec.js +0 -68
- package/build/module/lib/segment/payload.d.ts +0 -16
- package/build/module/lib/segment/payload.js +0 -10
- package/build/module/lib/segment/splitter.d.ts +0 -7
- package/build/module/lib/segment/splitter.js +0 -26
- package/build/module/lib/segment/typed.d.ts +0 -15
- package/build/module/lib/segment/typed.js +0 -49
- package/build/module/lib/segment/validator.d.ts +0 -22
- package/build/module/lib/segment/validator.js +0 -60
- package/build/module/lib/segment/writer.d.ts +0 -98
- package/build/module/lib/segment/writer.js +0 -183
- package/build/module/lib/segment/writer.spec.js +0 -85
- package/build/module/lib/telem.d.ts +0 -395
- package/build/module/lib/telem.js +0 -545
- package/build/module/lib/telem.spec.js +0 -147
- package/build/module/lib/transport.d.ts +0 -10
- package/build/module/lib/transport.js +0 -22
- package/build/module/lib/user/payload.d.ts +0 -12
- package/build/module/lib/user/payload.js +0 -6
- package/build/module/lib/util/telem.d.ts +0 -2
- package/build/module/lib/util/telem.js +0 -9
- package/build/module/setupspecs.d.ts +0 -4
- package/build/module/setupspecs.js +0 -16
- package/build/tsconfig.module.tsbuildinfo +0 -1
- package/build/tsconfig.tsbuildinfo +0 -1
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -191
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -191
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/index.html +0 -116
- package/coverage/lcov-report/src/lib/auth.ts.html +0 -340
- package/coverage/lcov-report/src/lib/channel/client.ts.html +0 -604
- package/coverage/lcov-report/src/lib/channel/creator.ts.html +0 -304
- package/coverage/lcov-report/src/lib/channel/index.html +0 -176
- package/coverage/lcov-report/src/lib/channel/payload.ts.html +0 -139
- package/coverage/lcov-report/src/lib/channel/registry.ts.html +0 -202
- package/coverage/lcov-report/src/lib/channel/retriever.ts.html +0 -244
- package/coverage/lcov-report/src/lib/client.ts.html +0 -244
- package/coverage/lcov-report/src/lib/errors.ts.html +0 -484
- package/coverage/lcov-report/src/lib/index.html +0 -176
- package/coverage/lcov-report/src/lib/segment/client.ts.html +0 -463
- package/coverage/lcov-report/src/lib/segment/index.html +0 -206
- package/coverage/lcov-report/src/lib/segment/iterator.ts.html +0 -928
- package/coverage/lcov-report/src/lib/segment/payload.ts.html +0 -139
- package/coverage/lcov-report/src/lib/segment/splitter.ts.html +0 -181
- package/coverage/lcov-report/src/lib/segment/typed.ts.html +0 -307
- package/coverage/lcov-report/src/lib/segment/validator.ts.html +0 -331
- package/coverage/lcov-report/src/lib/segment/writer.ts.html +0 -727
- package/coverage/lcov-report/src/lib/telem.ts.html +0 -2056
- package/coverage/lcov-report/src/lib/transport.ts.html +0 -196
- package/coverage/lcov-report/src/lib/user/index.html +0 -116
- package/coverage/lcov-report/src/lib/user/payload.ts.html +0 -109
- package/coverage/lcov-report/src/lib/util/index.html +0 -116
- package/coverage/lcov-report/src/lib/util/telem.ts.html +0 -124
- package/coverage/lcov-report/src/setupspecs.ts.html +0 -133
- package/coverage/lcov.info +0 -1230
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/coverage/src/index.html +0 -116
- package/coverage/src/lib/auth.ts.html +0 -340
- package/coverage/src/lib/channel/client.ts.html +0 -604
- package/coverage/src/lib/channel/creator.ts.html +0 -304
- package/coverage/src/lib/channel/index.html +0 -176
- package/coverage/src/lib/channel/payload.ts.html +0 -139
- package/coverage/src/lib/channel/registry.ts.html +0 -202
- package/coverage/src/lib/channel/retriever.ts.html +0 -244
- package/coverage/src/lib/client.ts.html +0 -244
- package/coverage/src/lib/errors.ts.html +0 -484
- package/coverage/src/lib/index.html +0 -176
- package/coverage/src/lib/segment/client.ts.html +0 -463
- package/coverage/src/lib/segment/index.html +0 -206
- package/coverage/src/lib/segment/iterator.ts.html +0 -928
- package/coverage/src/lib/segment/payload.ts.html +0 -139
- package/coverage/src/lib/segment/splitter.ts.html +0 -181
- package/coverage/src/lib/segment/typed.ts.html +0 -307
- package/coverage/src/lib/segment/validator.ts.html +0 -331
- package/coverage/src/lib/segment/writer.ts.html +0 -727
- package/coverage/src/lib/telem.ts.html +0 -2056
- package/coverage/src/lib/transport.ts.html +0 -196
- package/coverage/src/lib/user/index.html +0 -116
- package/coverage/src/lib/user/payload.ts.html +0 -109
- package/coverage/src/lib/util/index.html +0 -116
- package/coverage/src/lib/util/telem.ts.html +0 -124
- package/coverage/src/setupspecs.ts.html +0 -133
- package/src/lib/.DS_Store +0 -0
- package/src/lib/auth.spec.ts +0 -36
- package/src/lib/auth.ts +0 -85
- package/src/lib/channel/channel.spec.ts +0 -49
- package/src/lib/channel/client.ts +0 -173
- package/src/lib/channel/creator.ts +0 -73
- package/src/lib/channel/payload.ts +0 -18
- package/src/lib/channel/registry.ts +0 -39
- package/src/lib/channel/retriever.ts +0 -53
- package/src/lib/client.ts +0 -53
- package/src/lib/errors.ts +0 -133
- package/src/lib/segment/client.ts +0 -126
- package/src/lib/segment/iterator.spec.ts +0 -78
- package/src/lib/segment/iterator.ts +0 -281
- package/src/lib/segment/payload.ts +0 -18
- package/src/lib/segment/splitter.ts +0 -32
- package/src/lib/segment/typed.ts +0 -74
- package/src/lib/segment/validator.ts +0 -82
- package/src/lib/segment/writer.spec.ts +0 -85
- package/src/lib/segment/writer.ts +0 -214
- package/src/lib/telem.spec.ts +0 -200
- package/src/lib/telem.ts +0 -657
- package/src/lib/transport.ts +0 -37
- package/src/lib/user/payload.ts +0 -8
- package/src/lib/util/telem.ts +0 -13
- package/tsconfig.module.json +0 -9
- package/yarn-error.log +0 -5756
- package/yarn.lock +0 -5936
- /package/{build/main/lib → dist/auth}/auth.spec.d.ts +0 -0
- /package/{build/main/lib → dist}/channel/channel.spec.d.ts +0 -0
- /package/{build/main/lib/segment/iterator.spec.d.ts → dist/connection/connection.spec.d.ts} +0 -0
- /package/{build/main/lib/segment/writer.spec.d.ts → dist/control/state.spec.d.ts} +0 -0
- /package/{build/main/lib/telem.spec.d.ts → dist/framer/frame.spec.d.ts} +0 -0
- /package/{build/module/lib/segment → dist/framer}/iterator.spec.d.ts +0 -0
- /package/{build/module/lib/auth.spec.d.ts → dist/framer/streamer.spec.d.ts} +0 -0
- /package/{build/module/lib/segment → dist/framer}/writer.spec.d.ts +0 -0
- /package/{build/module/lib/channel/channel.spec.d.ts → dist/label/label.spec.d.ts} +0 -0
- /package/{build/module/lib/telem.spec.d.ts → dist/ontology/group/group.spec.d.ts} +0 -0
|
@@ -0,0 +1,167 @@
|
|
|
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 { DataType, Rate, TimeSpan, TimeStamp } from "@synnaxlabs/x";
|
|
11
|
+
import { describe, expect, it } from "vitest";
|
|
12
|
+
|
|
13
|
+
import { QueryError } from "@/errors";
|
|
14
|
+
import { type NewPayload } from "@/ranger/payload";
|
|
15
|
+
import { newClient } from "@/setupspecs";
|
|
16
|
+
|
|
17
|
+
const client = newClient();
|
|
18
|
+
|
|
19
|
+
describe("Ranger", () => {
|
|
20
|
+
describe("create", () => {
|
|
21
|
+
it("should create a single range", async () => {
|
|
22
|
+
const timeRange = TimeStamp.now().spanRange(TimeSpan.seconds(1));
|
|
23
|
+
const range = await client.ranges.create({
|
|
24
|
+
name: "My New One Second Range",
|
|
25
|
+
timeRange,
|
|
26
|
+
});
|
|
27
|
+
expect(range.key).not.toHaveLength(0);
|
|
28
|
+
expect(timeRange).toEqual(range.timeRange);
|
|
29
|
+
});
|
|
30
|
+
it("should create multiple ranges", async () => {
|
|
31
|
+
const ranges: NewPayload[] = [
|
|
32
|
+
{
|
|
33
|
+
name: "My New One Second Range",
|
|
34
|
+
timeRange: TimeStamp.now().spanRange(TimeSpan.seconds(1)),
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "My New Two Second Range",
|
|
38
|
+
timeRange: TimeStamp.now().spanRange(TimeSpan.seconds(2)),
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
const createdRanges = await client.ranges.create(ranges);
|
|
42
|
+
expect(createdRanges).toHaveLength(2);
|
|
43
|
+
expect(createdRanges[0].key).not.toHaveLength(0);
|
|
44
|
+
expect(createdRanges[1].key).not.toHaveLength(0);
|
|
45
|
+
expect(createdRanges[0].timeRange).toEqual(ranges[0].timeRange);
|
|
46
|
+
expect(createdRanges[1].timeRange).toEqual(ranges[1].timeRange);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
describe("delete", () => {
|
|
51
|
+
it("should delete a single range", async () => {
|
|
52
|
+
const timeRange = TimeStamp.now().spanRange(TimeSpan.seconds(1));
|
|
53
|
+
const range = await client.ranges.create({
|
|
54
|
+
name: "My New One Second Range",
|
|
55
|
+
timeRange,
|
|
56
|
+
});
|
|
57
|
+
await client.ranges.delete(range.key);
|
|
58
|
+
await expect(async () => await client.ranges.retrieve(range.key)).rejects.toThrow(
|
|
59
|
+
QueryError,
|
|
60
|
+
);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
describe("rename", () => {
|
|
65
|
+
it("should rename a single range", async () => {
|
|
66
|
+
const timeRange = TimeStamp.now().spanRange(TimeSpan.seconds(1));
|
|
67
|
+
const range = await client.ranges.create({
|
|
68
|
+
name: "My New One Second Range",
|
|
69
|
+
timeRange,
|
|
70
|
+
});
|
|
71
|
+
await client.ranges.rename(range.key, "My New One Second Range Renamed");
|
|
72
|
+
const renamed = await client.ranges.retrieve(range.key);
|
|
73
|
+
expect(renamed.name).toEqual("My New One Second Range Renamed");
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
describe("retrieve", () => {
|
|
78
|
+
it("should retrieve a range by key", async () => {
|
|
79
|
+
const timeRange = TimeStamp.now().spanRange(TimeSpan.seconds(1));
|
|
80
|
+
const range = await client.ranges.create({
|
|
81
|
+
name: "My New One Second Range",
|
|
82
|
+
timeRange,
|
|
83
|
+
});
|
|
84
|
+
const retrieved = await client.ranges.retrieve(range.key);
|
|
85
|
+
expect(retrieved.key).toEqual(range.key);
|
|
86
|
+
expect(retrieved.timeRange).toEqual(range.timeRange);
|
|
87
|
+
});
|
|
88
|
+
it("should retrieve a range by name", async () => {
|
|
89
|
+
const timeRange = TimeStamp.now().spanRange(TimeSpan.seconds(1));
|
|
90
|
+
const range = await client.ranges.create({
|
|
91
|
+
name: "My New Three Second Range",
|
|
92
|
+
timeRange,
|
|
93
|
+
});
|
|
94
|
+
const retrieved = await client.ranges.retrieve([range.name]);
|
|
95
|
+
expect(retrieved.length).toBeGreaterThan(0);
|
|
96
|
+
expect(retrieved[0].name).toEqual(range.name);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
describe("KV", () => {
|
|
101
|
+
it("should set, get, and delete a single key", async () => {
|
|
102
|
+
const rng = await client.ranges.create({
|
|
103
|
+
name: "My New One Second Range",
|
|
104
|
+
timeRange: TimeStamp.now().spanRange(TimeSpan.seconds(1)),
|
|
105
|
+
});
|
|
106
|
+
await rng.kv.set("foo", "bar");
|
|
107
|
+
const val = await rng.kv.get("foo");
|
|
108
|
+
expect(val).toEqual("bar");
|
|
109
|
+
await rng.kv.delete("foo");
|
|
110
|
+
await expect(async () => await rng.kv.get("foo")).rejects.toThrow(QueryError);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
it("should set and get multiple keys", async () => {
|
|
114
|
+
const rng = await client.ranges.create({
|
|
115
|
+
name: "My New One Second Range",
|
|
116
|
+
timeRange: TimeStamp.now().spanRange(TimeSpan.seconds(1)),
|
|
117
|
+
});
|
|
118
|
+
await rng.kv.set({ foo: "bar", baz: "qux" });
|
|
119
|
+
const res = await rng.kv.get(["foo", "baz"]);
|
|
120
|
+
expect(res).toEqual({ foo: "bar", baz: "qux" });
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
describe("Alias", () => {
|
|
125
|
+
describe("list", () => {
|
|
126
|
+
it("should list the aliases for the range", async () => {
|
|
127
|
+
const ch = await client.channels.create({
|
|
128
|
+
name: "My New Channel",
|
|
129
|
+
dataType: DataType.FLOAT32,
|
|
130
|
+
rate: Rate.hz(1),
|
|
131
|
+
});
|
|
132
|
+
const rng = await client.ranges.create({
|
|
133
|
+
name: "My New One Second Range",
|
|
134
|
+
timeRange: TimeStamp.now().spanRange(TimeSpan.seconds(1)),
|
|
135
|
+
});
|
|
136
|
+
await rng.setAlias(ch.key, "myalias");
|
|
137
|
+
const aliases = await rng.listAliases();
|
|
138
|
+
expect(aliases).toEqual({ [ch.key]: "myalias" });
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
describe("Active", () => {
|
|
144
|
+
describe("setActive", () => {
|
|
145
|
+
it("should create and set a range as active", async () => {
|
|
146
|
+
const rng = await client.ranges.create({
|
|
147
|
+
name: "My New One Second Range",
|
|
148
|
+
timeRange: TimeStamp.now().spanRange(TimeSpan.seconds(1)),
|
|
149
|
+
});
|
|
150
|
+
await client.ranges.setActive(rng.key);
|
|
151
|
+
const retrieved = await client.ranges.retrieveActive();
|
|
152
|
+
expect(retrieved).not.toBeNull();
|
|
153
|
+
expect(retrieved?.key).toEqual(rng.key);
|
|
154
|
+
});
|
|
155
|
+
it("should clear the active range", async () => {
|
|
156
|
+
const rng = await client.ranges.create({
|
|
157
|
+
name: "My New One Second Range",
|
|
158
|
+
timeRange: TimeStamp.now().spanRange(TimeSpan.seconds(1)),
|
|
159
|
+
});
|
|
160
|
+
await client.ranges.setActive(rng.key);
|
|
161
|
+
await client.ranges.clearActive(rng.key);
|
|
162
|
+
const retrieved = await client.ranges.retrieveActive();
|
|
163
|
+
expect(retrieved).toBeNull();
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
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 { z } from "zod";
|
|
12
|
+
|
|
13
|
+
import { type Params, type Payload, analyzeParams, keyZ, payloadZ } from "./payload";
|
|
14
|
+
|
|
15
|
+
const reqZ = z.object({
|
|
16
|
+
keys: keyZ.array().optional(),
|
|
17
|
+
names: z.array(z.string()).optional(),
|
|
18
|
+
term: z.string().optional(),
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
type Request = z.infer<typeof reqZ>;
|
|
22
|
+
|
|
23
|
+
const resZ = z.object({
|
|
24
|
+
ranges: z.array(payloadZ),
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
export class Retriever {
|
|
28
|
+
private readonly ENDPOINT = "/range/retrieve";
|
|
29
|
+
private readonly client: UnaryClient;
|
|
30
|
+
|
|
31
|
+
constructor(client: UnaryClient) {
|
|
32
|
+
this.client = client;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async retrieve(params: Params): Promise<Payload[]> {
|
|
36
|
+
const { normalized, variant } = analyzeParams(params);
|
|
37
|
+
const res = await this.execute({ [variant]: normalized });
|
|
38
|
+
return res;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async search(term: string): Promise<Payload[]> {
|
|
42
|
+
return await this.execute({ term });
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
private async execute(request: Request): Promise<Payload[]> {
|
|
46
|
+
const [res, err] = await this.client.send(this.ENDPOINT, request, resZ);
|
|
47
|
+
if (err != null) throw err;
|
|
48
|
+
return res.ranges;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
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 { z } from "zod";
|
|
12
|
+
|
|
13
|
+
import {
|
|
14
|
+
type NewPayload,
|
|
15
|
+
type Payload,
|
|
16
|
+
payloadZ,
|
|
17
|
+
keyZ,
|
|
18
|
+
newPayloadZ,
|
|
19
|
+
} from "@/ranger/payload";
|
|
20
|
+
|
|
21
|
+
const createResZ = z.object({
|
|
22
|
+
ranges: payloadZ.array(),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const createReqZ = z.object({
|
|
26
|
+
ranges: newPayloadZ.array(),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const deleteReqZ = z.object({
|
|
30
|
+
keys: keyZ.array(),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const deleteResZ = z.object({});
|
|
34
|
+
|
|
35
|
+
const renameReqZ = z.object({
|
|
36
|
+
key: keyZ,
|
|
37
|
+
name: z.string(),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const renameResZ = z.object({});
|
|
41
|
+
|
|
42
|
+
const CREATE_ENDPOINT = "/range/create";
|
|
43
|
+
const DELETE_ENDPOINT = "/range/delete";
|
|
44
|
+
const RENAME_ENDPOINT = "/range/rename";
|
|
45
|
+
|
|
46
|
+
export class Writer {
|
|
47
|
+
client: UnaryClient;
|
|
48
|
+
|
|
49
|
+
constructor(client: UnaryClient) {
|
|
50
|
+
this.client = client;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async rename(key: string, name: string): Promise<void> {
|
|
54
|
+
await sendRequired<typeof renameReqZ, typeof renameResZ>(
|
|
55
|
+
this.client,
|
|
56
|
+
RENAME_ENDPOINT,
|
|
57
|
+
{ key, name },
|
|
58
|
+
renameResZ,
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async create(ranges: NewPayload[]): Promise<Payload[]> {
|
|
63
|
+
const res = await sendRequired<typeof createReqZ, typeof createResZ>(
|
|
64
|
+
this.client,
|
|
65
|
+
CREATE_ENDPOINT,
|
|
66
|
+
{ ranges },
|
|
67
|
+
createResZ,
|
|
68
|
+
);
|
|
69
|
+
return res.ranges;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async delete(keys: string[]): Promise<void> {
|
|
73
|
+
await sendRequired<typeof deleteReqZ, typeof deleteResZ>(
|
|
74
|
+
this.client,
|
|
75
|
+
DELETE_ENDPOINT,
|
|
76
|
+
{ keys },
|
|
77
|
+
deleteResZ,
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
}
|
package/src/setupspecs.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
|
|
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.
|
|
2
9
|
|
|
3
|
-
|
|
4
|
-
|
|
10
|
+
import Synnax, { type SynnaxProps } from "@/client";
|
|
11
|
+
|
|
12
|
+
export const HOST = "localhost";
|
|
13
|
+
export const PORT = 9090;
|
|
5
14
|
|
|
6
15
|
export const newClient = (...props: SynnaxProps[]): Synnax => {
|
|
7
16
|
let _props = {};
|
|
@@ -9,8 +18,8 @@ export const newClient = (...props: SynnaxProps[]): Synnax => {
|
|
|
9
18
|
return new Synnax({
|
|
10
19
|
host: HOST,
|
|
11
20
|
port: PORT,
|
|
12
|
-
username:
|
|
13
|
-
password:
|
|
21
|
+
username: "synnax",
|
|
22
|
+
password: "seldon",
|
|
14
23
|
..._props,
|
|
15
24
|
});
|
|
16
25
|
};
|
package/src/transport.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
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 {
|
|
11
|
+
HTTPClient,
|
|
12
|
+
WebSocketClient,
|
|
13
|
+
type Middleware,
|
|
14
|
+
type StreamClient,
|
|
15
|
+
type UnaryClient,
|
|
16
|
+
} from "@synnaxlabs/freighter";
|
|
17
|
+
import { binary, type URL } from "@synnaxlabs/x";
|
|
18
|
+
|
|
19
|
+
const baseAPIEndpoint = "/api/v1/";
|
|
20
|
+
|
|
21
|
+
export class Transport {
|
|
22
|
+
readonly url: URL;
|
|
23
|
+
readonly unary: UnaryClient;
|
|
24
|
+
readonly stream: StreamClient;
|
|
25
|
+
readonly secure: boolean;
|
|
26
|
+
|
|
27
|
+
constructor(url: URL, secure: boolean = false) {
|
|
28
|
+
this.secure = secure;
|
|
29
|
+
this.url = url.child(baseAPIEndpoint);
|
|
30
|
+
const ecd = new binary.JSONEncoderDecoder();
|
|
31
|
+
this.unary = new HTTPClient(this.url, ecd, this.secure);
|
|
32
|
+
this.stream = new WebSocketClient(this.url, ecd, this.secure);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
use(...middleware: Middleware[]): void {
|
|
36
|
+
this.unary.use(...middleware);
|
|
37
|
+
this.stream.use(...middleware);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -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 user from "@/user/payload";
|
|
@@ -0,0 +1,17 @@
|
|
|
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 { z } from "zod";
|
|
11
|
+
|
|
12
|
+
export const payloadZ = z.object({
|
|
13
|
+
key: z.string(),
|
|
14
|
+
username: z.string(),
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export type Payload = z.infer<typeof payloadZ>;
|
|
@@ -0,0 +1,19 @@
|
|
|
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 { DataType, NativeTypedArray } from "@synnaxlabs/x";
|
|
11
|
+
|
|
12
|
+
export const randomSeries = (length: number, dataType: DataType): NativeTypedArray => {
|
|
13
|
+
// generate random bytes of the correct length
|
|
14
|
+
const bytes = new Uint8Array(length * dataType.density.valueOf());
|
|
15
|
+
for (let i = 0; i < bytes.byteLength; i++) {
|
|
16
|
+
bytes[i] = Math.floor(Math.random() * 256);
|
|
17
|
+
}
|
|
18
|
+
return new dataType.Array(bytes.buffer);
|
|
19
|
+
};
|
|
@@ -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
|
+
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
|
11
|
+
/// <reference types="vite/client" />
|
|
@@ -0,0 +1,75 @@
|
|
|
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, type AsyncTermSearcher } from "@synnaxlabs/x";
|
|
12
|
+
|
|
13
|
+
import { linePlot } from "@/workspace/lineplot";
|
|
14
|
+
import { type Key, type Workspace } from "@/workspace/payload";
|
|
15
|
+
import { pid } from "@/workspace/pid";
|
|
16
|
+
import { Retriever } from "@/workspace/retriever";
|
|
17
|
+
import { type CrudeWorkspace, Writer } from "@/workspace/writer";
|
|
18
|
+
|
|
19
|
+
export class Client implements AsyncTermSearcher<string, Key, Workspace> {
|
|
20
|
+
readonly pid: pid.Client;
|
|
21
|
+
readonly linePlot: linePlot.Client;
|
|
22
|
+
private readonly retriever: Retriever;
|
|
23
|
+
private readonly writer: Writer;
|
|
24
|
+
|
|
25
|
+
constructor(client: UnaryClient) {
|
|
26
|
+
this.pid = new pid.Client(client);
|
|
27
|
+
this.linePlot = new linePlot.Client(client);
|
|
28
|
+
this.retriever = new Retriever(client);
|
|
29
|
+
this.writer = new Writer(client);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async search(term: string): Promise<Workspace[]> {
|
|
33
|
+
return await this.retriever.search(term);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async retrieveByAuthor(author: string): Promise<Workspace[]> {
|
|
37
|
+
return await this.retriever.retrieveByAuthor(author);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async retrieve(key: Key): Promise<Workspace>;
|
|
41
|
+
|
|
42
|
+
async retrieve(keys: Key[]): Promise<Workspace[]>;
|
|
43
|
+
|
|
44
|
+
async retrieve(keys: Key | Key[]): Promise<Workspace | Workspace[]> {
|
|
45
|
+
const isMany = Array.isArray(keys);
|
|
46
|
+
const res = await this.retriever.retrieve(keys);
|
|
47
|
+
return isMany ? res : res[0];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async page(offset: number, limit: number): Promise<Workspace[]> {
|
|
51
|
+
return await this.retriever.page(offset, limit);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async create(workspace: CrudeWorkspace): Promise<Workspace>;
|
|
55
|
+
|
|
56
|
+
async create(
|
|
57
|
+
workspaces: CrudeWorkspace | CrudeWorkspace[],
|
|
58
|
+
): Promise<Workspace | Workspace[]> {
|
|
59
|
+
const isMany = Array.isArray(workspaces);
|
|
60
|
+
const res = await this.writer.create(workspaces);
|
|
61
|
+
return isMany ? res : res[0];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async rename(key: Key, name: string): Promise<void> {
|
|
65
|
+
await this.writer.rename(key, name);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async setLayout(key: Key, layout: UnknownRecord): Promise<void> {
|
|
69
|
+
await this.writer.setLayout(key, layout);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async delete(...keys: Key[]): Promise<void> {
|
|
73
|
+
await this.writer.delete(keys);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -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/payload";
|
|
11
|
+
export * from "@/workspace/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 workspace from "@/workspace/external";
|
|
@@ -0,0 +1,51 @@
|
|
|
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 LinePlot, type Key, type Params } from "@/workspace/lineplot/payload";
|
|
14
|
+
import { Retriever } from "@/workspace/lineplot/retriever";
|
|
15
|
+
import { type CrudeLinePlot, Writer } from "@/workspace/lineplot/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: CrudeLinePlot): Promise<LinePlot> {
|
|
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<LinePlot>;
|
|
39
|
+
|
|
40
|
+
async retrieve(keys: Key[]): Promise<LinePlot[]>;
|
|
41
|
+
|
|
42
|
+
async retrieve(keys: Params): Promise<LinePlot | LinePlot[]> {
|
|
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
|
+
}
|
|
@@ -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/lineplot/payload";
|
|
11
|
+
export * from "@/workspace/lineplot/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 linePlot from "@/workspace/lineplot/external";
|