@synnaxlabs/client 0.56.2 → 0.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client-DDACDVZ-.js +14505 -0
- package/dist/client-DDACDVZ-.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 +91 -0
- package/dist/src/framer/cache/dynamic.d.ts.map +1 -0
- package/dist/src/framer/cache/reader.d.ts +57 -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 +39 -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 +39 -16
- 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 +340 -0
- package/src/framer/cache/reader.ts +231 -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 +108 -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 +19 -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/lineplot/client.ts
CHANGED
|
@@ -8,98 +8,270 @@
|
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
10
|
import { type UnaryClient } from "@synnaxlabs/freighter";
|
|
11
|
-
import { array,
|
|
11
|
+
import { array, type destructor, zod } from "@synnaxlabs/x";
|
|
12
12
|
import { z } from "zod";
|
|
13
13
|
|
|
14
|
+
import { actions } from "@/actions";
|
|
15
|
+
import { createOf, kindOf, reduceAll } from "@/lineplot/actions";
|
|
16
|
+
import {
|
|
17
|
+
type Action,
|
|
18
|
+
dispatchReqZ,
|
|
19
|
+
rename as renameAction,
|
|
20
|
+
scopedActionZ,
|
|
21
|
+
} from "@/lineplot/actions.gen";
|
|
14
22
|
import {
|
|
15
23
|
type Key,
|
|
16
24
|
keyZ,
|
|
17
25
|
type LinePlot,
|
|
18
26
|
linePlotZ,
|
|
19
27
|
type New,
|
|
20
|
-
|
|
28
|
+
ontologyID,
|
|
21
29
|
} from "@/lineplot/types.gen";
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
30
|
+
import { type ontology } from "@/ontology";
|
|
31
|
+
import { project } from "@/project";
|
|
32
|
+
import { query } from "@/query";
|
|
24
33
|
|
|
25
|
-
const
|
|
34
|
+
export const SET_CHANNEL_NAME = "sy_lineplot_set";
|
|
35
|
+
export const DELETE_CHANNEL_NAME = "sy_lineplot_delete";
|
|
26
36
|
|
|
27
|
-
const setDataReqZ = z.object({
|
|
28
|
-
key: keyZ,
|
|
29
|
-
data: caseconv.preserveCase(record.unknownZ()),
|
|
30
|
-
});
|
|
31
37
|
const deleteReqZ = z.object({ keys: keyZ.array() });
|
|
32
38
|
|
|
33
|
-
const retrieveReqZ = z.object({
|
|
34
|
-
|
|
39
|
+
const retrieveReqZ = z.object({
|
|
40
|
+
keys: keyZ.array(),
|
|
41
|
+
ignoreNotFoundError: z.boolean().optional(),
|
|
42
|
+
});
|
|
43
|
+
const retrieveMultiParamsZ = retrieveReqZ.or(query.keyListZ(keyZ));
|
|
44
|
+
const singleRetrieveParamsZ = z
|
|
35
45
|
.object({ key: keyZ })
|
|
36
46
|
.transform(({ key }) => ({ keys: [key] }));
|
|
37
47
|
|
|
38
|
-
export const
|
|
39
|
-
export type
|
|
40
|
-
export type RetrieveSingleParams = z.input<typeof
|
|
48
|
+
export const retrieveParamsZ = z.union([singleRetrieveParamsZ, retrieveReqZ]);
|
|
49
|
+
export type RetrieveParams = z.input<typeof retrieveParamsZ>;
|
|
50
|
+
export type RetrieveSingleParams = z.input<typeof singleRetrieveParamsZ>;
|
|
41
51
|
export type RetrieveMultipleParams = z.input<typeof retrieveReqZ>;
|
|
42
52
|
|
|
43
|
-
|
|
53
|
+
interface RetrieveRequest extends z.infer<typeof retrieveReqZ> {}
|
|
44
54
|
|
|
45
|
-
const
|
|
55
|
+
const retrieveResZ = z.object({ linePlots: linePlotZ.array().default(() => []) });
|
|
56
|
+
|
|
57
|
+
const createReqZ = z.object({ project: project.keyZ, linePlots: linePlotZ.array() });
|
|
46
58
|
const createResZ = z.object({ linePlots: linePlotZ.array() });
|
|
47
59
|
|
|
48
60
|
const emptyResZ = z.object({});
|
|
49
61
|
|
|
50
|
-
|
|
51
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Client-side matching for a request: exact for the requested key set, the
|
|
64
|
+
* only field a request carries.
|
|
65
|
+
*/
|
|
66
|
+
const requestFilter = (req: RetrieveRequest): ((p: LinePlot) => boolean) => {
|
|
67
|
+
const keySet = new Set(req.keys);
|
|
68
|
+
return (p) => keySet.has(p.key);
|
|
69
|
+
};
|
|
52
70
|
|
|
53
|
-
|
|
54
|
-
|
|
71
|
+
export interface ClientConfig {
|
|
72
|
+
unary: UnaryClient;
|
|
73
|
+
cache: query.Cache;
|
|
74
|
+
ontology: ontology.Client;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export class Client extends query.Retriever<
|
|
78
|
+
typeof retrieveMultiParamsZ,
|
|
79
|
+
Key,
|
|
80
|
+
LinePlot
|
|
81
|
+
> {
|
|
82
|
+
private readonly cfg: ClientConfig;
|
|
83
|
+
private readonly store: query.Table<Key, LinePlot>;
|
|
84
|
+
private readonly dispatcher: actions.Controller<Key, LinePlot, Action>;
|
|
85
|
+
|
|
86
|
+
constructor(cfg: ClientConfig) {
|
|
87
|
+
const { cache } = cfg;
|
|
88
|
+
// Dispatch mutates documents server-side, so fetched copies never clobber
|
|
89
|
+
// a doc holding locally replayed edits: the table hydrates if-absent.
|
|
90
|
+
const store = cache.createTable<Key, LinePlot>({
|
|
91
|
+
name: "line plots",
|
|
92
|
+
hydrate: "if-absent",
|
|
93
|
+
fetch: async (keys) =>
|
|
94
|
+
await this.execRetrieve({ keys, ignoreNotFoundError: true }),
|
|
95
|
+
listen: [query.createDeleteListener(DELETE_CHANNEL_NAME, keyZ)],
|
|
96
|
+
});
|
|
97
|
+
const dispatcher = new actions.Controller<Key, LinePlot, Action>({
|
|
98
|
+
store,
|
|
99
|
+
onError: cache.onError,
|
|
100
|
+
reduce: reduceAll,
|
|
101
|
+
kindOf,
|
|
102
|
+
createOf,
|
|
103
|
+
});
|
|
104
|
+
cache.listen(dispatcher.listener(SET_CHANNEL_NAME, scopedActionZ));
|
|
105
|
+
super(cache, {
|
|
106
|
+
name: "line plot",
|
|
107
|
+
table: store,
|
|
108
|
+
request: {
|
|
109
|
+
schema: retrieveMultiParamsZ,
|
|
110
|
+
fetch: async (req) => await this.execRetrieve(req),
|
|
111
|
+
matches: (plot, req) => requestFilter(req)(plot),
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
this.cfg = cfg;
|
|
115
|
+
this.store = store;
|
|
116
|
+
this.dispatcher = dispatcher;
|
|
55
117
|
}
|
|
56
118
|
|
|
57
|
-
async create(workspace: workspace.Key, linePlot: New): Promise<LinePlot>;
|
|
58
|
-
async create(workspace: workspace.Key, linePlots: New[]): Promise<LinePlot[]>;
|
|
59
119
|
async create(
|
|
60
|
-
|
|
120
|
+
project: project.Key,
|
|
121
|
+
linePlot: New,
|
|
122
|
+
opts?: query.WriteOptions<LinePlot[]>,
|
|
123
|
+
): Promise<LinePlot>;
|
|
124
|
+
async create(
|
|
125
|
+
project: project.Key,
|
|
126
|
+
linePlots: New[],
|
|
127
|
+
opts?: query.WriteOptions<LinePlot[]>,
|
|
128
|
+
): Promise<LinePlot[]>;
|
|
129
|
+
async create(
|
|
130
|
+
project: project.Key,
|
|
61
131
|
linePlots: New | New[],
|
|
132
|
+
opts: query.WriteOptions<LinePlot[]> = {},
|
|
62
133
|
): Promise<LinePlot | LinePlot[]> {
|
|
63
134
|
const isMany = Array.isArray(linePlots);
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
135
|
+
const optimistic = array
|
|
136
|
+
.toArray(linePlots)
|
|
137
|
+
.map((p) => zod.parse(linePlotZ, p, { label: "line plot" }));
|
|
138
|
+
const res = await query.optimistic({
|
|
139
|
+
rollbacks: [this.store.set(optimistic)],
|
|
140
|
+
onOptimistic: () => opts.onOptimistic?.(optimistic),
|
|
141
|
+
commit: async () =>
|
|
142
|
+
await this.cfg.unary.send(
|
|
143
|
+
"/lineplot/create",
|
|
144
|
+
{ project, linePlots: optimistic },
|
|
145
|
+
createReqZ,
|
|
146
|
+
createResZ,
|
|
147
|
+
),
|
|
148
|
+
});
|
|
149
|
+
this.store.set(res.linePlots);
|
|
70
150
|
return isMany ? res.linePlots : res.linePlots[0];
|
|
71
151
|
}
|
|
72
152
|
|
|
73
|
-
async rename(key: Key, name: string): Promise<void> {
|
|
74
|
-
|
|
153
|
+
async rename(key: Key, name: string, opts: query.WriteOptions = {}): Promise<void> {
|
|
154
|
+
const rename = () => [
|
|
155
|
+
query.partialUpdate(this.store, key, { name }),
|
|
156
|
+
this.cfg.ontology.cache.renameResource(ontologyID(key), name),
|
|
157
|
+
];
|
|
158
|
+
await query.optimistic({
|
|
159
|
+
rollbacks: rename(),
|
|
160
|
+
onOptimistic: opts.onOptimistic,
|
|
161
|
+
commit: async () => await this.sendDispatch(key, "", [renameAction({ name })]),
|
|
162
|
+
});
|
|
163
|
+
rename();
|
|
75
164
|
}
|
|
76
165
|
|
|
77
|
-
|
|
78
|
-
|
|
166
|
+
/**
|
|
167
|
+
* Applies actions to the cached line plot and sends them to the server, recording an
|
|
168
|
+
* undoable entry. Returns false without side effects when the line plot isn't cached.
|
|
169
|
+
* Rolls back the local apply and rethrows on send failure.
|
|
170
|
+
*/
|
|
171
|
+
async dispatch(
|
|
172
|
+
key: Key,
|
|
173
|
+
actions: Action | Action[],
|
|
174
|
+
opts: actions.Options<LinePlot, Action> = {},
|
|
175
|
+
): Promise<boolean> {
|
|
176
|
+
return await this.dispatcher.dispatch(
|
|
177
|
+
key,
|
|
178
|
+
array.toArray(actions),
|
|
179
|
+
this.dispatchSender(key),
|
|
180
|
+
opts,
|
|
181
|
+
);
|
|
79
182
|
}
|
|
80
183
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
): Promise<
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return
|
|
184
|
+
/**
|
|
185
|
+
* Reverts the line plot's most recent undoable entry. Returns false when
|
|
186
|
+
* nothing is undoable.
|
|
187
|
+
*/
|
|
188
|
+
async undo(key: Key): Promise<boolean> {
|
|
189
|
+
return await this.dispatcher.undo(key, this.dispatchSender(key));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Re-applies the line plot's most recently undone entry. Returns false when
|
|
194
|
+
* nothing is redoable.
|
|
195
|
+
*/
|
|
196
|
+
async redo(key: Key): Promise<boolean> {
|
|
197
|
+
return await this.dispatcher.redo(key, this.dispatchSender(key));
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** Whether the line plot has a live undo entry. */
|
|
201
|
+
hasUndo(key: Key): boolean {
|
|
202
|
+
return this.dispatcher.hasUndo(key);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/** Whether the line plot has a live redo entry. */
|
|
206
|
+
hasRedo(key: Key): boolean {
|
|
207
|
+
return this.dispatcher.hasRedo(key);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Subscribes to changes in the line plot's undo/redo stacks. Returns a
|
|
212
|
+
* destructor that unsubscribes.
|
|
213
|
+
*/
|
|
214
|
+
onUndoStateChange(callback: () => void, key?: Key): destructor.Destructor {
|
|
215
|
+
return this.dispatcher.onUndoStateChange(callback, key);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/** Stages actions committed atomically as one undoable entry. */
|
|
219
|
+
beginTransaction(key: Key, kind?: string): actions.Transaction<Action> {
|
|
220
|
+
return this.dispatcher.transaction(key, this.dispatchSender(key), kind);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
private dispatchSender(key: Key): actions.SendDispatch<Action> {
|
|
224
|
+
return async (actions, dispatchKey) =>
|
|
225
|
+
await this.sendDispatch(key, dispatchKey, actions);
|
|
95
226
|
}
|
|
96
227
|
|
|
97
|
-
async
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
228
|
+
private async sendDispatch(
|
|
229
|
+
key: Key,
|
|
230
|
+
dispatchKey: string,
|
|
231
|
+
actions: Action[],
|
|
232
|
+
): Promise<void> {
|
|
233
|
+
await this.cfg.unary.send(
|
|
234
|
+
"/lineplot/dispatch",
|
|
235
|
+
{ key, dispatchKey, actions },
|
|
236
|
+
dispatchReqZ,
|
|
102
237
|
emptyResZ,
|
|
103
238
|
);
|
|
104
239
|
}
|
|
240
|
+
|
|
241
|
+
async delete(keys: Key | Key[], opts: query.WriteOptions = {}): Promise<void> {
|
|
242
|
+
const keysArr = array.toArray(keys);
|
|
243
|
+
const drop = () => [
|
|
244
|
+
this.cfg.ontology.cache.deleteRelationships(ontologyID(keysArr)),
|
|
245
|
+
this.store.delete(keysArr),
|
|
246
|
+
];
|
|
247
|
+
await query.optimistic({
|
|
248
|
+
rollbacks: drop(),
|
|
249
|
+
onOptimistic: opts.onOptimistic,
|
|
250
|
+
commit: async () =>
|
|
251
|
+
await this.cfg.unary.send(
|
|
252
|
+
"/lineplot/delete",
|
|
253
|
+
{ keys: keysArr },
|
|
254
|
+
deleteReqZ,
|
|
255
|
+
emptyResZ,
|
|
256
|
+
),
|
|
257
|
+
});
|
|
258
|
+
drop();
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/** Subscribes to every line plot delete delivered to the cache. */
|
|
262
|
+
onDelete(handler: (key: Key) => void): destructor.Destructor {
|
|
263
|
+
return this.store.subscribe((event) => {
|
|
264
|
+
if (event.variant === "delete") handler(event.key);
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
private async execRetrieve(params: RetrieveMultipleParams): Promise<LinePlot[]> {
|
|
269
|
+
const res = await this.cfg.unary.send(
|
|
270
|
+
"/lineplot/retrieve",
|
|
271
|
+
params,
|
|
272
|
+
retrieveReqZ,
|
|
273
|
+
retrieveResZ,
|
|
274
|
+
);
|
|
275
|
+
return res.linePlots;
|
|
276
|
+
}
|
|
105
277
|
}
|
package/src/lineplot/external.ts
CHANGED
|
@@ -7,5 +7,8 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
+
export * from "@/lineplot/actions";
|
|
11
|
+
export * from "@/lineplot/actions.gen";
|
|
10
12
|
export * from "@/lineplot/client";
|
|
13
|
+
export * from "@/lineplot/line";
|
|
11
14
|
export * from "@/lineplot/types.gen";
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Copyright 2026 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
10
|
+
import { type channel } from "@/channel";
|
|
11
|
+
import {
|
|
12
|
+
type Channels,
|
|
13
|
+
type Line,
|
|
14
|
+
lineZ,
|
|
15
|
+
type Ranges,
|
|
16
|
+
X_AXIS_KEYS,
|
|
17
|
+
type XAxisKey,
|
|
18
|
+
Y_AXIS_KEYS,
|
|
19
|
+
type YAxisKey,
|
|
20
|
+
} from "@/lineplot/types.gen";
|
|
21
|
+
|
|
22
|
+
// LineKeyParts is the structured identity of a plotted line: a y-channel on a y-axis
|
|
23
|
+
// plotted against an x-channel/x-axis over a range. It is the decoded form of Line.key.
|
|
24
|
+
export interface LineKeyParts {
|
|
25
|
+
yAxis: YAxisKey;
|
|
26
|
+
xAxis: XAxisKey;
|
|
27
|
+
range: string;
|
|
28
|
+
xChannel: channel.Key;
|
|
29
|
+
yChannel: channel.Key;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const SEPARATOR = "---";
|
|
33
|
+
|
|
34
|
+
// lineKey encodes the identity of a line into the stable string stored as
|
|
35
|
+
// Line.key. This is the only place the key format is defined.
|
|
36
|
+
export const lineKey = (parts: LineKeyParts): string =>
|
|
37
|
+
[parts.yAxis, parts.xAxis, parts.range, parts.xChannel, parts.yChannel].join(
|
|
38
|
+
SEPARATOR,
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
export const parseLineKey = (key: string): LineKeyParts => {
|
|
42
|
+
const [yAxis, xAxis, range, xChannel, yChannel] = key.split(SEPARATOR);
|
|
43
|
+
return {
|
|
44
|
+
yAxis: yAxis as YAxisKey,
|
|
45
|
+
xAxis: xAxis as XAxisKey,
|
|
46
|
+
range,
|
|
47
|
+
xChannel: Number(xChannel),
|
|
48
|
+
yChannel: Number(yChannel),
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// reconcileLines rebuilds the complete set of lines implied by the channel and
|
|
53
|
+
// range bindings: one line per (x-axis, range, y-axis, y-channel) combination.
|
|
54
|
+
// Existing lines are preserved by key so user styling survives, missing ones
|
|
55
|
+
// are created with default styling, and lines whose combination no longer
|
|
56
|
+
// exists are returned in `dropped` (so callers can restore them on undo).
|
|
57
|
+
export const reconcileLines = (
|
|
58
|
+
channels: Channels,
|
|
59
|
+
ranges: Ranges,
|
|
60
|
+
existing: Line[],
|
|
61
|
+
): { lines: Line[]; dropped: Line[] } => {
|
|
62
|
+
const byKey = new Map(existing.map((l) => [l.key, l]));
|
|
63
|
+
const kept = new Set<string>();
|
|
64
|
+
const lines: Line[] = [];
|
|
65
|
+
for (const xAxis of X_AXIS_KEYS) {
|
|
66
|
+
const xChannel = channels[xAxis];
|
|
67
|
+
for (const range of ranges[xAxis])
|
|
68
|
+
for (const yAxis of Y_AXIS_KEYS)
|
|
69
|
+
for (const yChannel of channels[yAxis]) {
|
|
70
|
+
const key = lineKey({ yAxis, xAxis, range, xChannel, yChannel });
|
|
71
|
+
if (kept.has(key)) continue;
|
|
72
|
+
kept.add(key);
|
|
73
|
+
// A new line takes Oracle schema defaults (stroke width, downsample);
|
|
74
|
+
// label and color stay unset so they resolve at render time.
|
|
75
|
+
lines.push(byKey.get(key) ?? lineZ.parse({ key }));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const dropped = existing.filter((l) => !kept.has(l.key));
|
|
79
|
+
return { lines, dropped };
|
|
80
|
+
};
|
|
@@ -9,34 +9,247 @@
|
|
|
9
9
|
|
|
10
10
|
// Code generated by Oracle. DO NOT EDIT.
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import { color, spatial, text, uuid } from "@synnaxlabs/x";
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
|
|
15
|
+
import { channel } from "@/channel";
|
|
15
16
|
import { ontology } from "@/ontology";
|
|
16
17
|
|
|
18
|
+
export const AXIS_KEYS = ["x1", "x2", "y1", "y2", "y3", "y4"] as const;
|
|
19
|
+
export const axisKeyZ = z.enum(AXIS_KEYS);
|
|
20
|
+
export type AxisKey = z.infer<typeof axisKeyZ>;
|
|
21
|
+
|
|
22
|
+
export const TICK_TYPES = ["linear", "time"] as const;
|
|
23
|
+
export const tickTypeZ = z.enum(TICK_TYPES);
|
|
24
|
+
export type TickType = z.infer<typeof tickTypeZ>;
|
|
25
|
+
|
|
26
|
+
export const DOWNSAMPLE_MODES = ["average", "decimate"] as const;
|
|
27
|
+
export const downsampleModeZ = z.enum(DOWNSAMPLE_MODES);
|
|
28
|
+
export type DownsampleMode = z.infer<typeof downsampleModeZ>;
|
|
29
|
+
|
|
30
|
+
export const X_AXIS_KEYS = ["x1", "x2"] as const;
|
|
31
|
+
export const xAxisKeyZ = z.enum(X_AXIS_KEYS);
|
|
32
|
+
export type XAxisKey = z.infer<typeof xAxisKeyZ>;
|
|
33
|
+
|
|
34
|
+
export const Y_AXIS_KEYS = ["y1", "y2", "y3", "y4"] as const;
|
|
35
|
+
export const yAxisKeyZ = z.enum(Y_AXIS_KEYS);
|
|
36
|
+
export type YAxisKey = z.infer<typeof yAxisKeyZ>;
|
|
37
|
+
|
|
38
|
+
/** Title is the plot title configuration. */
|
|
39
|
+
export const titleZ = z.object({
|
|
40
|
+
/** level is the typography level of the title text. */
|
|
41
|
+
level: text.levelZ.default("h4"),
|
|
42
|
+
/** visible is whether the title is shown above the plot. */
|
|
43
|
+
visible: z.boolean().default(false),
|
|
44
|
+
});
|
|
45
|
+
export interface Title extends z.infer<typeof titleZ> {}
|
|
46
|
+
|
|
47
|
+
/** Legend is the plot legend configuration. */
|
|
48
|
+
export const legendZ = z.object({
|
|
49
|
+
/**
|
|
50
|
+
* hidden is whether the legend is hidden. When false (the default), the legend is
|
|
51
|
+
* shown.
|
|
52
|
+
*/
|
|
53
|
+
hidden: z.boolean().default(false),
|
|
54
|
+
/** position is the anchor position of the legend within the plot container. */
|
|
55
|
+
position: spatial.stickyXYZ.prefault({
|
|
56
|
+
x: 50,
|
|
57
|
+
y: 50,
|
|
58
|
+
root: { x: "left", y: "top" },
|
|
59
|
+
units: { x: "px", y: "px" },
|
|
60
|
+
}),
|
|
61
|
+
});
|
|
62
|
+
export interface Legend extends z.infer<typeof legendZ> {}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Channels binds channel keys to each axis. x1 and x2 are single-channel; y1 through y4
|
|
66
|
+
* carry zero or more channels each.
|
|
67
|
+
*/
|
|
68
|
+
export const channelsZ = z.object({
|
|
69
|
+
/** x1 is the channel rendered on the x1 axis. */
|
|
70
|
+
x1: channel.keyZ.default(0),
|
|
71
|
+
/** x2 is the channel rendered on the x2 axis. */
|
|
72
|
+
x2: channel.keyZ.default(0),
|
|
73
|
+
/** y1 are the channels rendered on the y1 axis. */
|
|
74
|
+
y1: channel.keyZ.array().default(() => []),
|
|
75
|
+
/** y2 are the channels rendered on the y2 axis. */
|
|
76
|
+
y2: channel.keyZ.array().default(() => []),
|
|
77
|
+
/** y3 are the channels rendered on the y3 axis. */
|
|
78
|
+
y3: channel.keyZ.array().default(() => []),
|
|
79
|
+
/** y4 are the channels rendered on the y4 axis. */
|
|
80
|
+
y4: channel.keyZ.array().default(() => []),
|
|
81
|
+
});
|
|
82
|
+
export interface Channels extends z.infer<typeof channelsZ> {}
|
|
83
|
+
|
|
84
|
+
/** Ranges binds range keys to each x-axis. */
|
|
85
|
+
export const rangesZ = z.object({
|
|
86
|
+
/**
|
|
87
|
+
* x1 are the range keys plotted against the x1 axis. Range keys are opaque strings
|
|
88
|
+
* rather than UUIDs because the console layers synthetic rolling-window ranges (e.g.
|
|
89
|
+
* "recent", "rolling1m") alongside persisted ranges; the server stores whatever the
|
|
90
|
+
* client sends.
|
|
91
|
+
*/
|
|
92
|
+
x1: z
|
|
93
|
+
.string()
|
|
94
|
+
.array()
|
|
95
|
+
.default(() => []),
|
|
96
|
+
/** x2 are the range keys plotted against the x2 axis. */
|
|
97
|
+
x2: z
|
|
98
|
+
.string()
|
|
99
|
+
.array()
|
|
100
|
+
.default(() => []),
|
|
101
|
+
});
|
|
102
|
+
export interface Ranges extends z.infer<typeof rangesZ> {}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* ManualBounds controls whether an axis uses a manually-set bound on each side
|
|
106
|
+
* independently. When a side is false (the default), the corresponding entry in
|
|
107
|
+
* Axis.bounds is recomputed locally from the rendered data window and never broadcast
|
|
108
|
+
* to the server; when true, Axis.bounds holds the user-set value.
|
|
109
|
+
*/
|
|
110
|
+
export const manualBoundsZ = z.object({
|
|
111
|
+
/**
|
|
112
|
+
* lower is whether the lower bound is set manually rather than computed from data.
|
|
113
|
+
*/
|
|
114
|
+
lower: z.boolean().default(false),
|
|
115
|
+
/**
|
|
116
|
+
* upper is whether the upper bound is set manually rather than computed from data.
|
|
117
|
+
*/
|
|
118
|
+
upper: z.boolean().default(false),
|
|
119
|
+
});
|
|
120
|
+
export interface ManualBounds extends z.infer<typeof manualBoundsZ> {}
|
|
121
|
+
|
|
122
|
+
/** Line is the per-line styling and downsampling configuration. */
|
|
123
|
+
export const lineZ = z.object({
|
|
124
|
+
/**
|
|
125
|
+
* key is the line identifier derived from its channel and range assignment. Format is
|
|
126
|
+
* internal to the client and stable across re-renders so styling overrides persist.
|
|
127
|
+
*/
|
|
128
|
+
key: z.string(),
|
|
129
|
+
/**
|
|
130
|
+
* label is the user-specified line label. Null means derive from the channel name at
|
|
131
|
+
* render time; non-null is an override.
|
|
132
|
+
*/
|
|
133
|
+
label: z.string().optional(),
|
|
134
|
+
/**
|
|
135
|
+
* color is the line color. When null, the Console assigns one from the visualization
|
|
136
|
+
* palette at render time.
|
|
137
|
+
*/
|
|
138
|
+
color: color.colorZ.optional(),
|
|
139
|
+
/** strokeWidth is the line stroke width in pixels. */
|
|
140
|
+
strokeWidth: z.number().default(2),
|
|
141
|
+
/**
|
|
142
|
+
* downsample is the downsample factor applied before rendering. 1 means render every
|
|
143
|
+
* sample; higher values render every Nth sample.
|
|
144
|
+
*/
|
|
145
|
+
downsample: z.uint32().default(1),
|
|
146
|
+
/** downsampleMode selects how the downsample factor is applied. */
|
|
147
|
+
downsampleMode: downsampleModeZ.default("decimate"),
|
|
148
|
+
});
|
|
149
|
+
export interface Line extends z.infer<typeof lineZ> {}
|
|
150
|
+
|
|
151
|
+
/** Rule is a horizontal or vertical annotation line drawn over the plot. */
|
|
152
|
+
export const ruleZ = z.object({
|
|
153
|
+
/** key is the unique rule identifier within the line plot. */
|
|
154
|
+
key: z.string(),
|
|
155
|
+
/** label is the human-readable label rendered alongside the rule. */
|
|
156
|
+
label: z.string(),
|
|
157
|
+
/**
|
|
158
|
+
* color is the display color of the rule. When null, the Console assigns a default at
|
|
159
|
+
* render time.
|
|
160
|
+
*/
|
|
161
|
+
color: color.colorZ.optional(),
|
|
162
|
+
/** axis is the axis the rule is anchored to. */
|
|
163
|
+
axis: axisKeyZ,
|
|
164
|
+
/** lineWidth is the rule line width in pixels. */
|
|
165
|
+
lineWidth: z.number().default(1),
|
|
166
|
+
/** lineDash is the dash length in pixels; 0 renders a solid line. */
|
|
167
|
+
lineDash: z.number().default(0),
|
|
168
|
+
/** units is the unit label displayed next to the position value. */
|
|
169
|
+
units: z.string().default(""),
|
|
170
|
+
/** position is the value-space position of the rule along its anchored axis. */
|
|
171
|
+
position: z.number(),
|
|
172
|
+
});
|
|
173
|
+
export interface Rule extends z.infer<typeof ruleZ> {}
|
|
174
|
+
|
|
17
175
|
export const keyZ = z.uuid();
|
|
18
176
|
export type Key = z.infer<typeof keyZ>;
|
|
19
177
|
|
|
178
|
+
/** Axis is the configuration for a single plot axis. */
|
|
179
|
+
export const axisZ = z.object({
|
|
180
|
+
/** key identifies which of the six axes this configuration applies to. */
|
|
181
|
+
key: axisKeyZ,
|
|
182
|
+
/** label is the human-readable label rendered along the axis. */
|
|
183
|
+
label: z.string().default(""),
|
|
184
|
+
/** labelDirection is the orientation in which the label text is laid out. */
|
|
185
|
+
labelDirection: spatial.directionZ.default("x"),
|
|
186
|
+
/** labelLevel is the typography level of the label. */
|
|
187
|
+
labelLevel: text.levelZ.default("small"),
|
|
188
|
+
/**
|
|
189
|
+
* bounds is the value-space window of the axis. When the matching entry in
|
|
190
|
+
* manual_bounds is false the field is overwritten locally on every render; otherwise
|
|
191
|
+
* it is the user-set fixed bound.
|
|
192
|
+
*/
|
|
193
|
+
bounds: spatial.boundsZ().prefault({ lower: 0, upper: 0 }),
|
|
194
|
+
/** manualBounds controls per-edge manual bound override. */
|
|
195
|
+
manualBounds: manualBoundsZ.prefault({}),
|
|
196
|
+
/** tickSpacing is the target pixel distance between adjacent tick marks. */
|
|
197
|
+
tickSpacing: z.number().default(75),
|
|
198
|
+
/**
|
|
199
|
+
* type selects the tick label style. Null means default (linear). X-axes typically
|
|
200
|
+
* carry "time" when bound to a timestamp channel.
|
|
201
|
+
*/
|
|
202
|
+
type: tickTypeZ.optional(),
|
|
203
|
+
});
|
|
204
|
+
export interface Axis extends z.infer<typeof axisZ> {}
|
|
205
|
+
|
|
206
|
+
/** Axes bundles configuration for all six fixed plot axes. */
|
|
207
|
+
export const axesZ = z.object({
|
|
208
|
+
/** x1 is the x1 axis configuration. */
|
|
209
|
+
x1: axisZ.prefault({ key: "x1" }),
|
|
210
|
+
/** x2 is the x2 axis configuration. */
|
|
211
|
+
x2: axisZ.prefault({ key: "x2" }),
|
|
212
|
+
/** y1 is the y1 axis configuration. */
|
|
213
|
+
y1: axisZ.prefault({ key: "y1", labelDirection: "y" }),
|
|
214
|
+
/** y2 is the y2 axis configuration. */
|
|
215
|
+
y2: axisZ.prefault({ key: "y2", labelDirection: "y" }),
|
|
216
|
+
/** y3 is the y3 axis configuration. */
|
|
217
|
+
y3: axisZ.prefault({ key: "y3", labelDirection: "y" }),
|
|
218
|
+
/** y4 is the y4 axis configuration. */
|
|
219
|
+
y4: axisZ.prefault({ key: "y4", labelDirection: "y" }),
|
|
220
|
+
});
|
|
221
|
+
export interface Axes extends z.infer<typeof axesZ> {}
|
|
222
|
+
|
|
20
223
|
/**
|
|
21
|
-
* LinePlot is a time-series visualization component for plotting telemetry data.
|
|
22
|
-
*
|
|
23
|
-
*
|
|
224
|
+
* LinePlot is a time-series visualization component for plotting telemetry data. Line
|
|
225
|
+
* plots support multiple channels, real-time streaming, and historical data display
|
|
226
|
+
* with zoom and pan capabilities.
|
|
24
227
|
*/
|
|
25
228
|
export const linePlotZ = z.object({
|
|
26
229
|
/** key is the unique identifier for this line plot. */
|
|
27
|
-
key: keyZ,
|
|
230
|
+
key: keyZ.default(uuid.create),
|
|
28
231
|
/** name is a human-readable name for the line plot. */
|
|
29
|
-
name: z.string(),
|
|
232
|
+
name: z.string().min(1, "name is required"),
|
|
233
|
+
/** title is the plot title configuration. */
|
|
234
|
+
title: titleZ.prefault({}),
|
|
235
|
+
/** legend is the plot legend configuration. */
|
|
236
|
+
legend: legendZ.prefault({}),
|
|
237
|
+
/** channels binds channel keys to each axis. */
|
|
238
|
+
channels: channelsZ.prefault({}),
|
|
239
|
+
/** ranges binds range keys to each x-axis. */
|
|
240
|
+
ranges: rangesZ.prefault({}),
|
|
241
|
+
/** axes bundles per-axis configuration. */
|
|
242
|
+
axes: axesZ.prefault({}),
|
|
30
243
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
244
|
+
* lines holds per-line styling and downsampling configuration. Each entry corresponds
|
|
245
|
+
* to one channel and range combination produced by the channels and ranges bindings.
|
|
33
246
|
*/
|
|
34
|
-
|
|
247
|
+
lines: lineZ.array().default(() => []),
|
|
248
|
+
/** rules holds annotation rules drawn over the plot. */
|
|
249
|
+
rules: ruleZ.array().default(() => []),
|
|
35
250
|
});
|
|
36
251
|
export interface LinePlot extends z.infer<typeof linePlotZ> {}
|
|
37
|
-
|
|
38
|
-
export const newZ = linePlotZ.partial({ key: true });
|
|
39
|
-
export interface New extends z.input<typeof newZ> {}
|
|
252
|
+
export interface New extends z.input<typeof linePlotZ> {}
|
|
40
253
|
|
|
41
254
|
export const ontologyID = ontology.createIDFactory<Key>("lineplot");
|
|
42
255
|
export const TYPE_ONTOLOGY_ID = ontologyID("");
|