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