@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
|
@@ -0,0 +1,242 @@
|
|
|
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 { color } from "@synnaxlabs/x";
|
|
11
|
+
|
|
12
|
+
import { actions } from "@/actions";
|
|
13
|
+
import {
|
|
14
|
+
type Action,
|
|
15
|
+
addChannel,
|
|
16
|
+
createReduceAll,
|
|
17
|
+
type Handlers,
|
|
18
|
+
removeChannel,
|
|
19
|
+
rename,
|
|
20
|
+
setChannelAlias,
|
|
21
|
+
setChannelColor,
|
|
22
|
+
setChannelEntry,
|
|
23
|
+
setChannelNamesHidden,
|
|
24
|
+
setChannelNotation,
|
|
25
|
+
setChannelPrecision,
|
|
26
|
+
setChannels,
|
|
27
|
+
setChannelTimestampFormat,
|
|
28
|
+
setChannelTimestampTz,
|
|
29
|
+
setReceiptTimestampHidden,
|
|
30
|
+
setTimestampPrecision,
|
|
31
|
+
swapChannel,
|
|
32
|
+
} from "@/log/actions.gen";
|
|
33
|
+
import { channelEntryZ } from "@/log/types.gen";
|
|
34
|
+
|
|
35
|
+
// Handlers report the narrowest resource each action touches as its target. Log-level
|
|
36
|
+
// config (name, timestamp precision, display flags) targets the log key itself; channel
|
|
37
|
+
// mutations target the specific channel so concurrent edits to distinct channels
|
|
38
|
+
// neither coalesce nor invalidate each other's undoables.
|
|
39
|
+
const handlers: Handlers = {
|
|
40
|
+
create: (state, payload) => {
|
|
41
|
+
Object.assign(state, payload.log);
|
|
42
|
+
return { inverse: [], targets: [payload.log.key] };
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
rename: (state, payload) => {
|
|
46
|
+
const oldName = state.name;
|
|
47
|
+
state.name = payload.name;
|
|
48
|
+
return { inverse: [rename({ name: oldName })], targets: [state.key] };
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
addChannel: (state, payload) => {
|
|
52
|
+
if (state.channels.some((e) => e.channel === payload.channel))
|
|
53
|
+
return actions.NO_OP_RESULT;
|
|
54
|
+
state.channels.push(
|
|
55
|
+
channelEntryZ.parse({ channel: payload.channel, color: color.ZERO }),
|
|
56
|
+
);
|
|
57
|
+
return {
|
|
58
|
+
inverse: [removeChannel({ channel: payload.channel })],
|
|
59
|
+
targets: [`channel:${payload.channel}`],
|
|
60
|
+
};
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
removeChannel: (state, payload) => {
|
|
64
|
+
const idx = state.channels.findIndex((e) => e.channel === payload.channel);
|
|
65
|
+
if (idx === -1) return actions.NO_OP_RESULT;
|
|
66
|
+
const oldEntry = actions.snapshotDraft(state.channels[idx]);
|
|
67
|
+
state.channels.splice(idx, 1);
|
|
68
|
+
return {
|
|
69
|
+
inverse: [
|
|
70
|
+
addChannel({ channel: payload.channel }),
|
|
71
|
+
setChannelEntry({ entry: oldEntry }),
|
|
72
|
+
],
|
|
73
|
+
targets: [`channel:${payload.channel}`],
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
setChannelEntry: (state, payload) => {
|
|
78
|
+
const idx = state.channels.findIndex((e) => e.channel === payload.entry.channel);
|
|
79
|
+
if (idx === -1) {
|
|
80
|
+
state.channels.push(payload.entry);
|
|
81
|
+
return {
|
|
82
|
+
inverse: [removeChannel({ channel: payload.entry.channel })],
|
|
83
|
+
targets: [`channel:${payload.entry.channel}`],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const oldEntry = actions.snapshotDraft(state.channels[idx]);
|
|
87
|
+
state.channels[idx] = payload.entry;
|
|
88
|
+
return {
|
|
89
|
+
inverse: [setChannelEntry({ entry: oldEntry })],
|
|
90
|
+
targets: [`channel:${payload.entry.channel}`],
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
setChannelColor: (state, payload) => {
|
|
95
|
+
const entry = state.channels.find((e) => e.channel === payload.channel);
|
|
96
|
+
if (entry == null) return actions.NO_OP_RESULT;
|
|
97
|
+
const inverse = [
|
|
98
|
+
setChannelColor({
|
|
99
|
+
channel: payload.channel,
|
|
100
|
+
color: actions.snapshotDraft(entry.color),
|
|
101
|
+
}),
|
|
102
|
+
];
|
|
103
|
+
entry.color = payload.color;
|
|
104
|
+
return { inverse, targets: [`channel:${payload.channel}`] };
|
|
105
|
+
},
|
|
106
|
+
|
|
107
|
+
setChannelNotation: (state, payload) => {
|
|
108
|
+
const entry = state.channels.find((e) => e.channel === payload.channel);
|
|
109
|
+
if (entry == null) return actions.NO_OP_RESULT;
|
|
110
|
+
const inverse = [
|
|
111
|
+
setChannelNotation({ channel: payload.channel, notation: entry.notation }),
|
|
112
|
+
];
|
|
113
|
+
entry.notation = payload.notation;
|
|
114
|
+
return { inverse, targets: [`channel:${payload.channel}`] };
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
setChannelPrecision: (state, payload) => {
|
|
118
|
+
const entry = state.channels.find((e) => e.channel === payload.channel);
|
|
119
|
+
if (entry == null) return actions.NO_OP_RESULT;
|
|
120
|
+
const inverse = [
|
|
121
|
+
setChannelPrecision({ channel: payload.channel, precision: entry.precision }),
|
|
122
|
+
];
|
|
123
|
+
entry.precision = payload.precision;
|
|
124
|
+
return { inverse, targets: [`channel:${payload.channel}`] };
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
setChannelAlias: (state, payload) => {
|
|
128
|
+
const entry = state.channels.find((e) => e.channel === payload.channel);
|
|
129
|
+
if (entry == null) return actions.NO_OP_RESULT;
|
|
130
|
+
const inverse = [setChannelAlias({ channel: payload.channel, alias: entry.alias })];
|
|
131
|
+
entry.alias = payload.alias;
|
|
132
|
+
return { inverse, targets: [`channel:${payload.channel}`] };
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
setChannelTimestampFormat: (state, payload) => {
|
|
136
|
+
const entry = state.channels.find((e) => e.channel === payload.channel);
|
|
137
|
+
if (entry == null) return actions.NO_OP_RESULT;
|
|
138
|
+
const inverse = [
|
|
139
|
+
setChannelTimestampFormat({
|
|
140
|
+
channel: payload.channel,
|
|
141
|
+
format: entry.timestamp.format,
|
|
142
|
+
}),
|
|
143
|
+
];
|
|
144
|
+
entry.timestamp.format = payload.format;
|
|
145
|
+
return { inverse, targets: [`channel:${payload.channel}`] };
|
|
146
|
+
},
|
|
147
|
+
|
|
148
|
+
setChannelTimestampTz: (state, payload) => {
|
|
149
|
+
const entry = state.channels.find((e) => e.channel === payload.channel);
|
|
150
|
+
if (entry == null) return actions.NO_OP_RESULT;
|
|
151
|
+
const inverse = [
|
|
152
|
+
setChannelTimestampTz({ channel: payload.channel, tz: entry.timestamp.tz }),
|
|
153
|
+
];
|
|
154
|
+
entry.timestamp.tz = payload.tz;
|
|
155
|
+
return { inverse, targets: [`channel:${payload.channel}`] };
|
|
156
|
+
},
|
|
157
|
+
|
|
158
|
+
setChannels: (state, payload) => {
|
|
159
|
+
const oldChannels = actions.snapshotDraft(state.channels);
|
|
160
|
+
const targets = new Set<string>();
|
|
161
|
+
oldChannels.forEach((e) => targets.add(`channel:${e.channel}`));
|
|
162
|
+
payload.channels.forEach((e) => targets.add(`channel:${e.channel}`));
|
|
163
|
+
state.channels = payload.channels;
|
|
164
|
+
return { inverse: [setChannels({ channels: oldChannels })], targets: [...targets] };
|
|
165
|
+
},
|
|
166
|
+
|
|
167
|
+
swapChannel: (state, payload) => {
|
|
168
|
+
const idx = state.channels.findIndex((e) => e.channel === payload.from);
|
|
169
|
+
if (idx === -1) return actions.NO_OP_RESULT;
|
|
170
|
+
state.channels[idx].channel = payload.to;
|
|
171
|
+
return {
|
|
172
|
+
inverse: [swapChannel({ from: payload.to, to: payload.from })],
|
|
173
|
+
targets: [`channel:${payload.from}`, `channel:${payload.to}`],
|
|
174
|
+
};
|
|
175
|
+
},
|
|
176
|
+
|
|
177
|
+
setTimestampPrecision: (state, payload) => {
|
|
178
|
+
const oldPrecision = state.timestampPrecision;
|
|
179
|
+
state.timestampPrecision = payload.timestampPrecision;
|
|
180
|
+
return {
|
|
181
|
+
inverse: [setTimestampPrecision({ timestampPrecision: oldPrecision })],
|
|
182
|
+
targets: [state.key],
|
|
183
|
+
};
|
|
184
|
+
},
|
|
185
|
+
|
|
186
|
+
setChannelNamesHidden: (state, payload) => {
|
|
187
|
+
const oldValue = state.channelNamesHidden;
|
|
188
|
+
state.channelNamesHidden = payload.channelNamesHidden;
|
|
189
|
+
return {
|
|
190
|
+
inverse: [setChannelNamesHidden({ channelNamesHidden: oldValue })],
|
|
191
|
+
targets: [state.key],
|
|
192
|
+
};
|
|
193
|
+
},
|
|
194
|
+
|
|
195
|
+
setReceiptTimestampHidden: (state, payload) => {
|
|
196
|
+
const oldValue = state.receiptTimestampHidden;
|
|
197
|
+
state.receiptTimestampHidden = payload.receiptTimestampHidden;
|
|
198
|
+
return {
|
|
199
|
+
inverse: [setReceiptTimestampHidden({ receiptTimestampHidden: oldValue })],
|
|
200
|
+
targets: [state.key],
|
|
201
|
+
};
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
export const reduceAll = createReduceAll(handlers);
|
|
206
|
+
|
|
207
|
+
// createOf hands the dispatch controller the document carried by a create
|
|
208
|
+
// action so frames for never-cached documents ingest instead of drop.
|
|
209
|
+
export const createOf = (action: Action) =>
|
|
210
|
+
action.type === "create" ? action.create.log : undefined;
|
|
211
|
+
|
|
212
|
+
// kindOf keys single-channel edits by channel so rapid edits to one
|
|
213
|
+
// channel's config coalesce into a single undoable, while edits to distinct
|
|
214
|
+
// channels stay separate. Log-level edits (name, precision, flags) key by their
|
|
215
|
+
// action type; multi-action batches collapse into one "transaction" undoable.
|
|
216
|
+
export const kindOf = (actions: Action[]): string => {
|
|
217
|
+
if (actions.length === 0) return "default";
|
|
218
|
+
if (actions.length > 1) return "transaction";
|
|
219
|
+
const a = actions[0];
|
|
220
|
+
switch (a.type) {
|
|
221
|
+
case "add_channel":
|
|
222
|
+
return `channel:${a.addChannel.channel}`;
|
|
223
|
+
case "remove_channel":
|
|
224
|
+
return `channel:${a.removeChannel.channel}`;
|
|
225
|
+
case "set_channel_entry":
|
|
226
|
+
return `channel:${a.setChannelEntry.entry.channel}`;
|
|
227
|
+
case "set_channel_color":
|
|
228
|
+
return `channel:${a.setChannelColor.channel}`;
|
|
229
|
+
case "set_channel_notation":
|
|
230
|
+
return `channel:${a.setChannelNotation.channel}`;
|
|
231
|
+
case "set_channel_precision":
|
|
232
|
+
return `channel:${a.setChannelPrecision.channel}`;
|
|
233
|
+
case "set_channel_alias":
|
|
234
|
+
return `channel:${a.setChannelAlias.channel}`;
|
|
235
|
+
case "set_channel_timestamp_format":
|
|
236
|
+
return `channel:${a.setChannelTimestampFormat.channel}`;
|
|
237
|
+
case "set_channel_timestamp_tz":
|
|
238
|
+
return `channel:${a.setChannelTimestampTz.channel}`;
|
|
239
|
+
default:
|
|
240
|
+
return a.type;
|
|
241
|
+
}
|
|
242
|
+
};
|
package/src/log/client.ts
CHANGED
|
@@ -8,88 +8,259 @@
|
|
|
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 {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
14
|
+
import { actions } from "@/actions";
|
|
15
|
+
import { createOf, kindOf, reduceAll } from "@/log/actions";
|
|
16
|
+
import {
|
|
17
|
+
type Action,
|
|
18
|
+
dispatchReqZ,
|
|
19
|
+
rename as renameAction,
|
|
20
|
+
scopedActionZ,
|
|
21
|
+
} from "@/log/actions.gen";
|
|
22
|
+
import { type Key, keyZ, type Log, logZ, type New, ontologyID } from "@/log/types.gen";
|
|
23
|
+
import { type ontology } from "@/ontology";
|
|
24
|
+
import { project } from "@/project";
|
|
25
|
+
import { query } from "@/query";
|
|
17
26
|
|
|
18
|
-
const
|
|
27
|
+
export const SET_CHANNEL_NAME = "sy_log_set";
|
|
28
|
+
export const DELETE_CHANNEL_NAME = "sy_log_delete";
|
|
19
29
|
|
|
20
|
-
const setDataReqZ = z.object({
|
|
21
|
-
key: keyZ,
|
|
22
|
-
data: caseconv.preserveCase(record.unknownZ()),
|
|
23
|
-
});
|
|
24
30
|
const deleteReqZ = z.object({ keys: keyZ.array() });
|
|
25
31
|
|
|
26
|
-
const retrieveReqZ = z.object({
|
|
27
|
-
|
|
32
|
+
const retrieveReqZ = z.object({
|
|
33
|
+
keys: keyZ.array(),
|
|
34
|
+
ignoreNotFoundError: z.boolean().optional(),
|
|
35
|
+
});
|
|
36
|
+
const retrieveMultiParamsZ = retrieveReqZ.or(query.keyListZ(keyZ));
|
|
37
|
+
const singleRetrieveParamsZ = z
|
|
28
38
|
.object({ key: keyZ })
|
|
29
39
|
.transform(({ key }) => ({ keys: [key] }));
|
|
30
40
|
|
|
31
|
-
export const
|
|
32
|
-
export type
|
|
33
|
-
export type RetrieveSingleParams = z.input<typeof
|
|
41
|
+
export const retrieveParamsZ = z.union([singleRetrieveParamsZ, retrieveReqZ]);
|
|
42
|
+
export type RetrieveParams = z.input<typeof retrieveParamsZ>;
|
|
43
|
+
export type RetrieveSingleParams = z.input<typeof singleRetrieveParamsZ>;
|
|
34
44
|
export type RetrieveMultipleParams = z.input<typeof retrieveReqZ>;
|
|
35
45
|
|
|
36
|
-
|
|
46
|
+
interface RetrieveRequest extends z.infer<typeof retrieveReqZ> {}
|
|
47
|
+
|
|
48
|
+
const retrieveResZ = z.object({ logs: logZ.array().default(() => []) });
|
|
37
49
|
|
|
38
|
-
const createReqZ = z.object({
|
|
50
|
+
const createReqZ = z.object({ project: project.keyZ, logs: logZ.array() });
|
|
39
51
|
const createResZ = z.object({ logs: logZ.array() });
|
|
40
52
|
|
|
41
53
|
const emptyResZ = z.object({});
|
|
42
54
|
|
|
43
|
-
|
|
44
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Client-side matching for a request: exact for the requested key set, the
|
|
57
|
+
* only field a request carries.
|
|
58
|
+
*/
|
|
59
|
+
const requestFilter = (req: RetrieveRequest): ((l: Log) => boolean) => {
|
|
60
|
+
const keySet = new Set(req.keys);
|
|
61
|
+
return (l) => keySet.has(l.key);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export interface ClientConfig {
|
|
65
|
+
unary: UnaryClient;
|
|
66
|
+
cache: query.Cache;
|
|
67
|
+
ontology: ontology.Client;
|
|
68
|
+
}
|
|
45
69
|
|
|
46
|
-
|
|
47
|
-
|
|
70
|
+
export class Client extends query.Retriever<typeof retrieveMultiParamsZ, Key, Log> {
|
|
71
|
+
private readonly cfg: ClientConfig;
|
|
72
|
+
private readonly store: query.Table<Key, Log>;
|
|
73
|
+
private readonly dispatcher: actions.Controller<Key, Log, Action>;
|
|
74
|
+
|
|
75
|
+
constructor(cfg: ClientConfig) {
|
|
76
|
+
const { cache } = cfg;
|
|
77
|
+
// Dispatch mutates documents server-side, so fetched copies never clobber
|
|
78
|
+
// a doc holding locally replayed edits: the table hydrates if-absent.
|
|
79
|
+
const store = cache.createTable<Key, Log>({
|
|
80
|
+
name: "logs",
|
|
81
|
+
hydrate: "if-absent",
|
|
82
|
+
fetch: async (keys) =>
|
|
83
|
+
await this.execRetrieve({ keys, ignoreNotFoundError: true }),
|
|
84
|
+
listen: [query.createDeleteListener(DELETE_CHANNEL_NAME, keyZ)],
|
|
85
|
+
});
|
|
86
|
+
const dispatcher = new actions.Controller<Key, Log, Action>({
|
|
87
|
+
store,
|
|
88
|
+
onError: cache.onError,
|
|
89
|
+
reduce: reduceAll,
|
|
90
|
+
kindOf,
|
|
91
|
+
createOf,
|
|
92
|
+
});
|
|
93
|
+
cache.listen(dispatcher.listener(SET_CHANNEL_NAME, scopedActionZ));
|
|
94
|
+
super(cache, {
|
|
95
|
+
name: "log",
|
|
96
|
+
table: store,
|
|
97
|
+
request: {
|
|
98
|
+
schema: retrieveMultiParamsZ,
|
|
99
|
+
fetch: async (req) => await this.execRetrieve(req),
|
|
100
|
+
matches: (log, req) => requestFilter(req)(log),
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
this.cfg = cfg;
|
|
104
|
+
this.store = store;
|
|
105
|
+
this.dispatcher = dispatcher;
|
|
48
106
|
}
|
|
49
107
|
|
|
50
|
-
async create(
|
|
51
|
-
|
|
52
|
-
|
|
108
|
+
async create(
|
|
109
|
+
project: project.Key,
|
|
110
|
+
log: New,
|
|
111
|
+
opts?: query.WriteOptions<Log[]>,
|
|
112
|
+
): Promise<Log>;
|
|
113
|
+
async create(
|
|
114
|
+
project: project.Key,
|
|
115
|
+
logs: New[],
|
|
116
|
+
opts?: query.WriteOptions<Log[]>,
|
|
117
|
+
): Promise<Log[]>;
|
|
118
|
+
async create(
|
|
119
|
+
project: project.Key,
|
|
120
|
+
logs: New | New[],
|
|
121
|
+
opts: query.WriteOptions<Log[]> = {},
|
|
122
|
+
): Promise<Log | Log[]> {
|
|
53
123
|
const isMany = Array.isArray(logs);
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
124
|
+
const optimistic = array
|
|
125
|
+
.toArray(logs)
|
|
126
|
+
.map((l) => zod.parse(logZ, l, { label: "log" }));
|
|
127
|
+
const res = await query.optimistic({
|
|
128
|
+
rollbacks: [this.store.set(optimistic)],
|
|
129
|
+
onOptimistic: () => opts.onOptimistic?.(optimistic),
|
|
130
|
+
commit: async () =>
|
|
131
|
+
await this.cfg.unary.send(
|
|
132
|
+
"/log/create",
|
|
133
|
+
{ project, logs: optimistic },
|
|
134
|
+
createReqZ,
|
|
135
|
+
createResZ,
|
|
136
|
+
),
|
|
137
|
+
});
|
|
138
|
+
this.store.set(res.logs);
|
|
60
139
|
return isMany ? res.logs : res.logs[0];
|
|
61
140
|
}
|
|
62
141
|
|
|
63
|
-
async rename(key: Key, name: string): Promise<void> {
|
|
64
|
-
|
|
142
|
+
async rename(key: Key, name: string, opts: query.WriteOptions = {}): Promise<void> {
|
|
143
|
+
const rename = () => [
|
|
144
|
+
query.partialUpdate(this.store, key, { name }),
|
|
145
|
+
this.cfg.ontology.cache.renameResource(ontologyID(key), name),
|
|
146
|
+
];
|
|
147
|
+
await query.optimistic({
|
|
148
|
+
rollbacks: rename(),
|
|
149
|
+
onOptimistic: opts.onOptimistic,
|
|
150
|
+
commit: async () => await this.sendDispatch(key, "", [renameAction({ name })]),
|
|
151
|
+
});
|
|
152
|
+
rename();
|
|
65
153
|
}
|
|
66
154
|
|
|
67
|
-
|
|
68
|
-
|
|
155
|
+
/**
|
|
156
|
+
* Applies actions to the cached log and sends them to the server, recording an
|
|
157
|
+
* undoable entry. Returns false without side effects when the log isn't cached. Rolls
|
|
158
|
+
* back the local apply and rethrows on send failure.
|
|
159
|
+
*/
|
|
160
|
+
async dispatch(
|
|
161
|
+
key: Key,
|
|
162
|
+
actions: Action | Action[],
|
|
163
|
+
opts: actions.Options<Log, Action> = {},
|
|
164
|
+
): Promise<boolean> {
|
|
165
|
+
return await this.dispatcher.dispatch(
|
|
166
|
+
key,
|
|
167
|
+
array.toArray(actions),
|
|
168
|
+
this.dispatchSender(key),
|
|
169
|
+
opts,
|
|
170
|
+
);
|
|
69
171
|
}
|
|
70
172
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
): Promise<
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return
|
|
173
|
+
/**
|
|
174
|
+
* Reverts the log's most recent undoable entry. Returns false when
|
|
175
|
+
* nothing is undoable.
|
|
176
|
+
*/
|
|
177
|
+
async undo(key: Key): Promise<boolean> {
|
|
178
|
+
return await this.dispatcher.undo(key, this.dispatchSender(key));
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Re-applies the log's most recently undone entry. Returns false when
|
|
183
|
+
* nothing is redoable.
|
|
184
|
+
*/
|
|
185
|
+
async redo(key: Key): Promise<boolean> {
|
|
186
|
+
return await this.dispatcher.redo(key, this.dispatchSender(key));
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/** Whether the log has a live undo entry. */
|
|
190
|
+
hasUndo(key: Key): boolean {
|
|
191
|
+
return this.dispatcher.hasUndo(key);
|
|
85
192
|
}
|
|
86
193
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
194
|
+
/** Whether the log has a live redo entry. */
|
|
195
|
+
hasRedo(key: Key): boolean {
|
|
196
|
+
return this.dispatcher.hasRedo(key);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Subscribes to changes in the log's undo/redo stacks. Returns a
|
|
201
|
+
* destructor that unsubscribes.
|
|
202
|
+
*/
|
|
203
|
+
onUndoStateChange(callback: () => void, key?: Key): destructor.Destructor {
|
|
204
|
+
return this.dispatcher.onUndoStateChange(callback, key);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/** Stages actions committed atomically as one undoable entry. */
|
|
208
|
+
beginTransaction(key: Key, kind?: string): actions.Transaction<Action> {
|
|
209
|
+
return this.dispatcher.transaction(key, this.dispatchSender(key), kind);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
private dispatchSender(key: Key): actions.SendDispatch<Action> {
|
|
213
|
+
return async (actions, dispatchKey) =>
|
|
214
|
+
await this.sendDispatch(key, dispatchKey, actions);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
private async sendDispatch(
|
|
218
|
+
key: Key,
|
|
219
|
+
dispatchKey: string,
|
|
220
|
+
actions: Action[],
|
|
221
|
+
): Promise<void> {
|
|
222
|
+
await this.cfg.unary.send(
|
|
223
|
+
"/log/dispatch",
|
|
224
|
+
{ key, dispatchKey, actions },
|
|
225
|
+
dispatchReqZ,
|
|
92
226
|
emptyResZ,
|
|
93
227
|
);
|
|
94
228
|
}
|
|
229
|
+
|
|
230
|
+
async delete(keys: Key | Key[], opts: query.WriteOptions = {}): Promise<void> {
|
|
231
|
+
const keysArr = array.toArray(keys);
|
|
232
|
+
const drop = () => [
|
|
233
|
+
this.cfg.ontology.cache.deleteRelationships(ontologyID(keysArr)),
|
|
234
|
+
this.store.delete(keysArr),
|
|
235
|
+
];
|
|
236
|
+
await query.optimistic({
|
|
237
|
+
rollbacks: drop(),
|
|
238
|
+
onOptimistic: opts.onOptimistic,
|
|
239
|
+
commit: async () =>
|
|
240
|
+
await this.cfg.unary.send(
|
|
241
|
+
"/log/delete",
|
|
242
|
+
{ keys: keysArr },
|
|
243
|
+
deleteReqZ,
|
|
244
|
+
emptyResZ,
|
|
245
|
+
),
|
|
246
|
+
});
|
|
247
|
+
drop();
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/** Subscribes to every log delete delivered to the cache. */
|
|
251
|
+
onDelete(handler: (key: Key) => void): destructor.Destructor {
|
|
252
|
+
return this.store.subscribe((event) => {
|
|
253
|
+
if (event.variant === "delete") handler(event.key);
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
private async execRetrieve(params: RetrieveMultipleParams): Promise<Log[]> {
|
|
258
|
+
const res = await this.cfg.unary.send(
|
|
259
|
+
"/log/retrieve",
|
|
260
|
+
params,
|
|
261
|
+
retrieveReqZ,
|
|
262
|
+
retrieveResZ,
|
|
263
|
+
);
|
|
264
|
+
return res.logs;
|
|
265
|
+
}
|
|
95
266
|
}
|
package/src/log/external.ts
CHANGED
|
@@ -7,5 +7,7 @@
|
|
|
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 "@/log/actions";
|
|
11
|
+
export * from "@/log/actions.gen";
|
|
10
12
|
export * from "@/log/client";
|
|
11
13
|
export * from "@/log/types.gen";
|
package/src/log/types.gen.ts
CHANGED
|
@@ -9,34 +9,65 @@
|
|
|
9
9
|
|
|
10
10
|
// Code generated by Oracle. DO NOT EDIT.
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import { color, notation, telem, 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
|
+
/** TimestampConfig is per-channel timestamp display configuration. */
|
|
19
|
+
export const timestampConfigZ = z.object({
|
|
20
|
+
/** format controls how channel timestamps are rendered. */
|
|
21
|
+
format: telem.timestampFormatZ,
|
|
22
|
+
/** tz is the time zone used when rendering timestamps. */
|
|
23
|
+
tz: telem.timeZoneZ,
|
|
24
|
+
});
|
|
25
|
+
export interface TimestampConfig extends z.infer<typeof timestampConfigZ> {}
|
|
26
|
+
|
|
17
27
|
export const keyZ = z.uuid();
|
|
18
28
|
export type Key = z.infer<typeof keyZ>;
|
|
19
29
|
|
|
30
|
+
/** ChannelEntry is a per-channel display configuration entry within a log. */
|
|
31
|
+
export const channelEntryZ = z.object({
|
|
32
|
+
/** channel is the channel this entry references. */
|
|
33
|
+
channel: channel.keyZ,
|
|
34
|
+
/** color is the display color for the channel. */
|
|
35
|
+
color: color.colorZ,
|
|
36
|
+
/** notation is the numeric notation used to render samples. */
|
|
37
|
+
notation: notation.notationZ.default("standard"),
|
|
38
|
+
/**
|
|
39
|
+
* precision is the number of decimal digits to display. -1 means "use the log-level
|
|
40
|
+
* precision"; 17 is the maximum significant digits for a float64.
|
|
41
|
+
*/
|
|
42
|
+
precision: z.int32().min(-1).max(17).default(-1),
|
|
43
|
+
/** alias is a human-readable alias displayed in place of the channel name. */
|
|
44
|
+
alias: z.string().default(""),
|
|
45
|
+
/** timestamp is the per-channel timestamp display configuration. */
|
|
46
|
+
timestamp: timestampConfigZ.prefault({ format: "preciseDate", tz: "local" }),
|
|
47
|
+
});
|
|
48
|
+
export interface ChannelEntry extends z.infer<typeof channelEntryZ> {}
|
|
49
|
+
|
|
20
50
|
/**
|
|
21
|
-
* Log is a timestamped event and message logging component. Logs display
|
|
22
|
-
*
|
|
23
|
-
*
|
|
51
|
+
* Log is a timestamped event and message logging component. Logs display chronological
|
|
52
|
+
* records of events, system messages, and audit trails with filtering and formatting
|
|
53
|
+
* capabilities.
|
|
24
54
|
*/
|
|
25
55
|
export const logZ = z.object({
|
|
26
56
|
/** key is the unique identifier for this log. */
|
|
27
|
-
key: keyZ,
|
|
57
|
+
key: keyZ.default(uuid.create),
|
|
28
58
|
/** name is a human-readable name for the log. */
|
|
29
|
-
name: z.string(),
|
|
30
|
-
/**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
59
|
+
name: z.string().min(1, "name is required"),
|
|
60
|
+
/** channels are the channels displayed in this log, in order. */
|
|
61
|
+
channels: channelEntryZ.array().default(() => []),
|
|
62
|
+
/** timestampPrecision is the precision of displayed timestamps (0-3). */
|
|
63
|
+
timestampPrecision: z.int32().min(0).max(3).default(0),
|
|
64
|
+
/** channelNamesHidden is true when channel names are hidden. */
|
|
65
|
+
channelNamesHidden: z.boolean().default(false),
|
|
66
|
+
/** receiptTimestampHidden is true when the receipt timestamp column is hidden. */
|
|
67
|
+
receiptTimestampHidden: z.boolean().default(false),
|
|
35
68
|
});
|
|
36
69
|
export interface Log extends z.infer<typeof logZ> {}
|
|
37
|
-
|
|
38
|
-
export const newZ = logZ.partial({ key: true });
|
|
39
|
-
export interface New extends z.input<typeof newZ> {}
|
|
70
|
+
export interface New extends z.input<typeof logZ> {}
|
|
40
71
|
|
|
41
72
|
export const ontologyID = ontology.createIDFactory<Key>("log");
|
|
42
73
|
export const TYPE_ONTOLOGY_ID = ontologyID("");
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
export * from "@/modbus/types.gen";
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
export * as modbus from "@/modbus/external";
|