@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
|
@@ -0,0 +1,42 @@
|
|
|
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 { destructor } from "@synnaxlabs/x";
|
|
11
|
+
|
|
12
|
+
export interface OptimisticParams<R> {
|
|
13
|
+
/**
|
|
14
|
+
* Rollbacks for the already-applied optimistic cache changes, run in
|
|
15
|
+
* reverse order when commit fails.
|
|
16
|
+
*/
|
|
17
|
+
rollbacks: destructor.Destructor[];
|
|
18
|
+
/**
|
|
19
|
+
* Notified after the rollbacks are captured and before commit runs. Value-bearing
|
|
20
|
+
* writes close over their optimistic value: `() => opts.onOptimistic?.(value)`.
|
|
21
|
+
*/
|
|
22
|
+
onOptimistic?: () => Promise<void> | void;
|
|
23
|
+
/** The network send. Its result is returned when it succeeds. */
|
|
24
|
+
commit: () => Promise<R>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Runs an optimistic write. When commit or `onOptimistic` fails the rollbacks
|
|
29
|
+
* run and the error rethrows; on success the cache keeps the optimistic state.
|
|
30
|
+
*/
|
|
31
|
+
export const optimistic = async <R>({
|
|
32
|
+
rollbacks,
|
|
33
|
+
onOptimistic,
|
|
34
|
+
commit,
|
|
35
|
+
}: OptimisticParams<R>): Promise<R> => {
|
|
36
|
+
const rollback = new destructor.Chain();
|
|
37
|
+
rollback.add(...rollbacks);
|
|
38
|
+
return await rollback.guard(async () => {
|
|
39
|
+
await onOptimistic?.();
|
|
40
|
+
return await commit();
|
|
41
|
+
});
|
|
42
|
+
};
|
package/src/rack/client.ts
CHANGED
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
10
|
import { type UnaryClient } from "@synnaxlabs/freighter";
|
|
11
|
-
import { array } from "@synnaxlabs/x";
|
|
11
|
+
import { array, deep, primitive } from "@synnaxlabs/x";
|
|
12
12
|
import { z } from "zod";
|
|
13
13
|
|
|
14
14
|
import { ontology } from "@/ontology";
|
|
15
|
+
import { query } from "@/query";
|
|
15
16
|
import {
|
|
16
17
|
type Key,
|
|
17
18
|
keyZ,
|
|
@@ -21,7 +22,9 @@ import {
|
|
|
21
22
|
type Payload,
|
|
22
23
|
payloadZ,
|
|
23
24
|
type Status,
|
|
25
|
+
statusZ,
|
|
24
26
|
} from "@/rack/types.gen";
|
|
27
|
+
import { type status } from "@/status";
|
|
25
28
|
import { type task } from "@/task";
|
|
26
29
|
import { checkForMultipleOrNoResults } from "@/util/retrieve";
|
|
27
30
|
|
|
@@ -39,10 +42,11 @@ const retrieveReqZ = z.object({
|
|
|
39
42
|
offset: z.int().optional(),
|
|
40
43
|
includeStatus: z.boolean().optional(),
|
|
41
44
|
});
|
|
42
|
-
const
|
|
45
|
+
const retrieveMultiParamsZ = retrieveReqZ.or(query.keyListZ(keyZ));
|
|
46
|
+
const retrieveResZ = z.object({ racks: payloadZ.array().default(() => []) });
|
|
43
47
|
export const rackZ = payloadZ;
|
|
44
48
|
|
|
45
|
-
const
|
|
49
|
+
const singleRetrieveParamsZ = z.union([
|
|
46
50
|
z
|
|
47
51
|
.object({
|
|
48
52
|
key: keyZ,
|
|
@@ -56,15 +60,20 @@ const singleRetrieveArgsZ = z.union([
|
|
|
56
60
|
})
|
|
57
61
|
.transform(({ name, includeStatus }) => ({ names: [name], includeStatus })),
|
|
58
62
|
]);
|
|
59
|
-
export type RetrieveSingleParams = z.input<typeof
|
|
63
|
+
export type RetrieveSingleParams = z.input<typeof singleRetrieveParamsZ>;
|
|
60
64
|
|
|
61
|
-
const
|
|
65
|
+
const multiRetrieveParamsZ = retrieveReqZ;
|
|
62
66
|
|
|
63
|
-
export type RetrieveMultipleParams = z.input<typeof
|
|
67
|
+
export type RetrieveMultipleParams = z.input<typeof multiRetrieveParamsZ>;
|
|
64
68
|
|
|
65
|
-
const
|
|
69
|
+
const retrieveParamsZ = z.union([singleRetrieveParamsZ, multiRetrieveParamsZ]);
|
|
66
70
|
|
|
67
|
-
export type
|
|
71
|
+
export type RetrieveParams = z.input<typeof retrieveParamsZ>;
|
|
72
|
+
|
|
73
|
+
interface RetrieveRequest extends z.infer<typeof retrieveReqZ> {}
|
|
74
|
+
|
|
75
|
+
type SingleQuery =
|
|
76
|
+
{ key: Key; includeStatus?: boolean } | { name: string; includeStatus?: boolean };
|
|
68
77
|
|
|
69
78
|
const createReqZ = z.object({ racks: newZ.array() });
|
|
70
79
|
const createResZ = z.object({ racks: payloadZ.array() });
|
|
@@ -72,53 +81,178 @@ const createResZ = z.object({ racks: payloadZ.array() });
|
|
|
72
81
|
const deleteReqZ = z.object({ keys: keyZ.array() });
|
|
73
82
|
const deleteResZ = z.object({});
|
|
74
83
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
private readonly tasks: task.Client;
|
|
84
|
+
/** Query fields only the server can evaluate. */
|
|
85
|
+
const SERVER_FIELDS = ["searchTerm", "limit", "offset", "hostIsNode"] as const;
|
|
78
86
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
87
|
+
/** Drops includeStatus when unset so equivalent queries hash identically. */
|
|
88
|
+
const normalizeSingle = (params: RetrieveSingleParams): SingleQuery => {
|
|
89
|
+
const base = "key" in params ? { key: params.key } : { name: params.name };
|
|
90
|
+
return params.includeStatus === true ? { ...base, includeStatus: true } : base;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const singleQueryZ = z
|
|
94
|
+
.union([
|
|
95
|
+
z.strictObject({ key: keyZ, includeStatus: z.boolean().optional() }),
|
|
96
|
+
z.strictObject({ name: z.string(), includeStatus: z.boolean().optional() }),
|
|
97
|
+
keyZ.transform((key) => ({ key })),
|
|
98
|
+
])
|
|
99
|
+
.transform(normalizeSingle);
|
|
100
|
+
|
|
101
|
+
/** The table never holds statuses; the status table is their single home. */
|
|
102
|
+
const stripStatus = ({ status: _, ...rack }: Payload): Omit<Payload, "status"> => rack;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Client-side matching for a request: key and name sets and payload-held
|
|
106
|
+
* flags. Server-computed shapes (search, pagination, host resolution) never
|
|
107
|
+
* reach this filter; they refetch instead.
|
|
108
|
+
*/
|
|
109
|
+
const requestFilter = (
|
|
110
|
+
req: RetrieveRequest,
|
|
111
|
+
): ((r: Omit<Payload, "status">) => boolean) => {
|
|
112
|
+
const keySet = primitive.isNonZero(req.keys) ? new Set(req.keys) : undefined;
|
|
113
|
+
const nameSet = primitive.isNonZero(req.names) ? new Set(req.names) : undefined;
|
|
114
|
+
return (r) => {
|
|
115
|
+
if (keySet != null && !keySet.has(r.key)) return false;
|
|
116
|
+
if (nameSet != null && !nameSet.has(r.name)) return false;
|
|
117
|
+
if (req.integration != null && !r.integrations.includes(req.integration))
|
|
118
|
+
return false;
|
|
119
|
+
if (req.embedded != null && r.embedded !== req.embedded) return false;
|
|
120
|
+
return true;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
// Rack statuses live in the status table under the "rack:<key>" status key.
|
|
125
|
+
const affectedRackKeys = (
|
|
126
|
+
event: query.TableEvent<status.Key, status.Status>,
|
|
127
|
+
): Key[] | null => {
|
|
128
|
+
const [type, key] = event.key.split(":");
|
|
129
|
+
if (type !== "rack") return null;
|
|
130
|
+
const parsed = keyZ.safeParse(Number(key));
|
|
131
|
+
return parsed.success ? [parsed.data] : null;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
export interface ClientConfig {
|
|
135
|
+
unary: UnaryClient;
|
|
136
|
+
tasks: task.Client;
|
|
137
|
+
cache: query.Cache;
|
|
138
|
+
statusStore: query.Table<status.Key, status.Status>;
|
|
139
|
+
ontology: ontology.Client;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export class Client extends query.Retriever<
|
|
143
|
+
typeof retrieveMultiParamsZ,
|
|
144
|
+
Key,
|
|
145
|
+
Omit<Payload, "status">,
|
|
146
|
+
Rack,
|
|
147
|
+
RetrieveSingleParams,
|
|
148
|
+
SingleQuery
|
|
149
|
+
> {
|
|
150
|
+
private readonly cfg: ClientConfig;
|
|
151
|
+
private readonly store: query.Table<Key, Omit<Payload, "status">>;
|
|
152
|
+
|
|
153
|
+
constructor(cfg: ClientConfig) {
|
|
154
|
+
const { cache, statusStore } = cfg;
|
|
155
|
+
const store = cache.createTable<Key, Omit<Payload, "status">>({
|
|
156
|
+
name: "racks",
|
|
157
|
+
fetch: async (keys) => (await this.fetchThrough({ keys })).map(stripStatus),
|
|
158
|
+
listen: [
|
|
159
|
+
query.createSetListener(SET_CHANNEL_NAME, payloadZ, {
|
|
160
|
+
value: ({ status: _, ...rack }) => rack,
|
|
161
|
+
}),
|
|
162
|
+
query.createDeleteListener(DELETE_CHANNEL_NAME, keyZ),
|
|
163
|
+
],
|
|
164
|
+
});
|
|
165
|
+
// Composed rows always carry status; includeStatus only gates fetch flags.
|
|
166
|
+
const composed = cache.derive<Key, Omit<Payload, "status">, Rack>({
|
|
167
|
+
name: "rack.composed",
|
|
168
|
+
source: store,
|
|
169
|
+
compose: (record) => this.compose(record, true),
|
|
170
|
+
equal: (a, b) => deep.equal(a.payload, b.payload),
|
|
171
|
+
watch: [query.deriveWatch(statusStore, (event) => affectedRackKeys(event))],
|
|
172
|
+
});
|
|
173
|
+
const single = cache.queries<SingleQuery, Rack, Key, Rack>({
|
|
174
|
+
name: "rack",
|
|
175
|
+
table: composed,
|
|
176
|
+
fetch: async (q) => [(await this.fetchSingle(q)).key],
|
|
177
|
+
compose: (records) => records[0],
|
|
178
|
+
keyOf: (q) => ("key" in q ? q.key : null),
|
|
179
|
+
matches: (r, q) => ("key" in q ? r.key === q.key : r.name === q.name),
|
|
180
|
+
single: true,
|
|
181
|
+
});
|
|
182
|
+
super(cache, {
|
|
183
|
+
name: "rack",
|
|
184
|
+
table: store,
|
|
185
|
+
request: {
|
|
186
|
+
schema: retrieveMultiParamsZ,
|
|
187
|
+
fetch: async (req) => (await this.fetchThrough(req)).map(stripStatus),
|
|
188
|
+
matches: (r, req) => requestFilter(req)(r),
|
|
189
|
+
serverFields: SERVER_FIELDS,
|
|
190
|
+
watch: [
|
|
191
|
+
query.watch(statusStore, (event, q: RetrieveRequest) => {
|
|
192
|
+
if (q.includeStatus !== true) return null;
|
|
193
|
+
return affectedRackKeys(event);
|
|
194
|
+
}),
|
|
195
|
+
],
|
|
196
|
+
},
|
|
197
|
+
compose: (record, q) =>
|
|
198
|
+
this.compose(record, (q as { includeStatus?: boolean }).includeStatus === true),
|
|
199
|
+
single: { schema: singleQueryZ, space: single },
|
|
200
|
+
});
|
|
201
|
+
this.cfg = cfg;
|
|
202
|
+
this.store = store;
|
|
82
203
|
}
|
|
83
204
|
|
|
84
|
-
async delete(keys: Key | Key[]): Promise<void> {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
205
|
+
async delete(keys: Key | Key[], opts: query.WriteOptions = {}): Promise<void> {
|
|
206
|
+
const keysArr = array.toArray(keys);
|
|
207
|
+
const drop = () => [
|
|
208
|
+
this.cfg.ontology.cache.deleteResources(ontologyID(keysArr)),
|
|
209
|
+
this.store.delete(keysArr),
|
|
210
|
+
];
|
|
211
|
+
await query.optimistic({
|
|
212
|
+
rollbacks: drop(),
|
|
213
|
+
onOptimistic: opts.onOptimistic,
|
|
214
|
+
commit: async () =>
|
|
215
|
+
await this.cfg.unary.send(
|
|
216
|
+
"/rack/delete",
|
|
217
|
+
{ keys: keysArr },
|
|
218
|
+
deleteReqZ,
|
|
219
|
+
deleteResZ,
|
|
220
|
+
),
|
|
221
|
+
});
|
|
222
|
+
drop();
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
async rename(key: Key, name: string, opts: query.WriteOptions = {}): Promise<void> {
|
|
226
|
+
const rename = () => [
|
|
227
|
+
query.partialUpdate(this.store, key, { name }),
|
|
228
|
+
this.cfg.ontology.cache.renameResource(ontologyID(key), name),
|
|
229
|
+
];
|
|
230
|
+
await query.optimistic({
|
|
231
|
+
rollbacks: rename(),
|
|
232
|
+
onOptimistic: opts.onOptimistic,
|
|
233
|
+
commit: async () => {
|
|
234
|
+
const r = await this.retrieve(key);
|
|
235
|
+
await this.create({ ...r.payload, name });
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
rename();
|
|
91
239
|
}
|
|
92
240
|
|
|
93
241
|
async create(rack: New): Promise<Rack>;
|
|
94
242
|
async create(racks: New[]): Promise<Rack[]>;
|
|
95
243
|
async create(rack: New | New[]): Promise<Rack | Rack[]> {
|
|
96
244
|
const isSingle = !Array.isArray(rack);
|
|
97
|
-
const res = await this.
|
|
245
|
+
const res = await this.cfg.unary.send(
|
|
98
246
|
"/rack/create",
|
|
99
247
|
{ racks: array.toArray(rack) },
|
|
100
248
|
createReqZ,
|
|
101
249
|
createResZ,
|
|
102
250
|
);
|
|
251
|
+
this.store.set(res.racks.map(stripStatus));
|
|
103
252
|
const sugared = this.sugar(res.racks);
|
|
104
253
|
return isSingle ? sugared[0] : sugared;
|
|
105
254
|
}
|
|
106
255
|
|
|
107
|
-
async retrieve(args: RetrieveSingleParams): Promise<Rack>;
|
|
108
|
-
async retrieve(args: RetrieveMultipleParams): Promise<Rack[]>;
|
|
109
|
-
async retrieve(args: RetrieveArgs): Promise<Rack | Rack[]> {
|
|
110
|
-
const isSingle = "key" in args || "name" in args;
|
|
111
|
-
const res = await this.client.send(
|
|
112
|
-
"/rack/retrieve",
|
|
113
|
-
args,
|
|
114
|
-
retrieveArgsZ,
|
|
115
|
-
retrieveResZ,
|
|
116
|
-
);
|
|
117
|
-
const sugared = this.sugar(res.racks);
|
|
118
|
-
checkForMultipleOrNoResults("Rack", args, sugared, isSingle);
|
|
119
|
-
return isSingle ? sugared[0] : sugared;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
256
|
sugar(payload: Payload): Rack;
|
|
123
257
|
sugar(payloads: Payload[]): Rack[];
|
|
124
258
|
sugar(payloads: Payload | Payload[]): Rack | Rack[] {
|
|
@@ -126,18 +260,72 @@ export class Client {
|
|
|
126
260
|
const sugared = array
|
|
127
261
|
.toArray(payloads)
|
|
128
262
|
.map(
|
|
129
|
-
({ key, name, status, integrations }) =>
|
|
130
|
-
new Rack(key, name, this.tasks, status, integrations),
|
|
263
|
+
({ key, name, status, integrations, embedded }) =>
|
|
264
|
+
new Rack(key, name, this.cfg.tasks, status, integrations, embedded),
|
|
131
265
|
);
|
|
132
266
|
return isSingle ? sugared[0] : sugared;
|
|
133
267
|
}
|
|
268
|
+
|
|
269
|
+
/** Rebuilds a cached rack, attaching its cached status when requested. */
|
|
270
|
+
private compose(cached: Omit<Payload, "status">, includeStatus: boolean): Rack {
|
|
271
|
+
if (!includeStatus) return this.sugar(cached);
|
|
272
|
+
const st = this.statusOf(cached.key);
|
|
273
|
+
if (st == null) return this.sugar(cached);
|
|
274
|
+
return this.sugar({ ...cached, status: st });
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Only the "rack:<key>" row is the rack's status. Task statuses name their rack in
|
|
278
|
+
// their details, and matching on that would let them take the rack's status over.
|
|
279
|
+
private statusOf(key: Key): Status | undefined {
|
|
280
|
+
const parsed = statusZ.safeParse(this.cfg.statusStore.get(statusKey(key)));
|
|
281
|
+
return parsed.success ? parsed.data : undefined;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/** Writes fetched racks and their included statuses. */
|
|
285
|
+
private writeThrough(racks: Payload[]): void {
|
|
286
|
+
this.store.set(racks.map(stripStatus));
|
|
287
|
+
racks.forEach(({ status: st }) => {
|
|
288
|
+
if (st != null) this.cfg.statusStore.set(st);
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
private async execRetrieve(params: RetrieveParams): Promise<Payload[]> {
|
|
293
|
+
const res = await this.cfg.unary.send(
|
|
294
|
+
"/rack/retrieve",
|
|
295
|
+
params,
|
|
296
|
+
retrieveParamsZ,
|
|
297
|
+
retrieveResZ,
|
|
298
|
+
);
|
|
299
|
+
return res.racks;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/** Fetches racks and writes their included statuses through the caches. */
|
|
303
|
+
private async fetchThrough(req: RetrieveRequest): Promise<Payload[]> {
|
|
304
|
+
const racks = await this.execRetrieve(req);
|
|
305
|
+
this.writeThrough(racks);
|
|
306
|
+
return racks;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
private async fetchSingle(q: SingleQuery): Promise<Rack> {
|
|
310
|
+
// Names are not unique, so only key queries can be served from the table.
|
|
311
|
+
// A status-bearing hit needs both the record and its status cached.
|
|
312
|
+
if ("key" in q && q.includeStatus !== true) {
|
|
313
|
+
const cached = this.store.get(q.key);
|
|
314
|
+
if (cached != null) return this.sugar(cached);
|
|
315
|
+
}
|
|
316
|
+
const racks = await this.execRetrieve(q);
|
|
317
|
+
checkForMultipleOrNoResults("Rack", q, racks, true);
|
|
318
|
+
this.writeThrough(racks);
|
|
319
|
+
return this.sugar(racks[0]);
|
|
320
|
+
}
|
|
134
321
|
}
|
|
135
322
|
|
|
136
323
|
export class Rack {
|
|
137
324
|
key: Key;
|
|
138
325
|
name: string;
|
|
139
326
|
status?: Status;
|
|
140
|
-
integrations
|
|
327
|
+
integrations: string[];
|
|
328
|
+
embedded: boolean;
|
|
141
329
|
private readonly tasks: task.Client;
|
|
142
330
|
|
|
143
331
|
constructor(
|
|
@@ -145,13 +333,15 @@ export class Rack {
|
|
|
145
333
|
name: string,
|
|
146
334
|
taskClient: task.Client,
|
|
147
335
|
status?: Status,
|
|
148
|
-
integrations
|
|
336
|
+
integrations: string[] = [],
|
|
337
|
+
embedded: boolean = false,
|
|
149
338
|
) {
|
|
150
339
|
this.key = key;
|
|
151
340
|
this.name = name;
|
|
152
341
|
this.tasks = taskClient;
|
|
153
342
|
this.status = status;
|
|
154
343
|
this.integrations = integrations;
|
|
344
|
+
this.embedded = embedded;
|
|
155
345
|
}
|
|
156
346
|
|
|
157
347
|
async listTasks(): Promise<task.Task[]> {
|
|
@@ -168,10 +358,7 @@ export class Rack {
|
|
|
168
358
|
task: task.New<Schemas>,
|
|
169
359
|
schemas?: Schemas,
|
|
170
360
|
): Promise<task.Task<Schemas>> {
|
|
171
|
-
task.
|
|
172
|
-
(BigInt(this.key) << 32n) +
|
|
173
|
-
(BigInt(task.key ?? 0) & 0xffffffffn)
|
|
174
|
-
).toString();
|
|
361
|
+
task.rack = this.key;
|
|
175
362
|
return await this.tasks.create(task, schemas as Required<Schemas>);
|
|
176
363
|
}
|
|
177
364
|
|
|
@@ -185,6 +372,7 @@ export class Rack {
|
|
|
185
372
|
name: this.name,
|
|
186
373
|
status: this.status,
|
|
187
374
|
integrations: this.integrations,
|
|
375
|
+
embedded: this.embedded,
|
|
188
376
|
};
|
|
189
377
|
}
|
|
190
378
|
}
|
package/src/rack/types.gen.ts
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
|
|
10
10
|
// Code generated by Oracle. DO NOT EDIT.
|
|
11
11
|
|
|
12
|
-
import { status, zod } from "@synnaxlabs/x";
|
|
13
12
|
import { z } from "zod";
|
|
14
13
|
|
|
15
14
|
import { ontology } from "@/ontology";
|
|
15
|
+
import { status } from "@/status";
|
|
16
16
|
|
|
17
17
|
export const keyZ = z.uint32();
|
|
18
18
|
export type Key = z.infer<typeof keyZ>;
|
|
@@ -29,33 +29,32 @@ export type Status = z.infer<typeof statusZ>;
|
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* Payload is a collection container for hardware devices and tasks running on a
|
|
32
|
-
* specific
|
|
33
|
-
*
|
|
32
|
+
* specific Core. Racks are the integration point between the Core and physical hardware
|
|
33
|
+
* through the Driver.
|
|
34
34
|
*/
|
|
35
35
|
export const payloadZ = z.object({
|
|
36
36
|
/** key is the composite identifier for this rack. */
|
|
37
|
-
key: keyZ,
|
|
37
|
+
key: keyZ.refine((v) => v !== 0, "key is required"),
|
|
38
38
|
/** name is a human-readable name for the rack. */
|
|
39
|
-
name: z.string().min(1, "
|
|
40
|
-
/** taskCounter is an internal counter used for generating unique local task keys. */
|
|
41
|
-
taskCounter: z.uint32().optional(),
|
|
39
|
+
name: z.string().min(1, "name is required"),
|
|
42
40
|
/** embedded is true if this rack is embedded within the Synnax server process. */
|
|
43
|
-
embedded: z.boolean().
|
|
41
|
+
embedded: z.boolean().default(false),
|
|
44
42
|
/** status is the current operational status of the rack. */
|
|
45
43
|
status: statusZ.optional(),
|
|
46
44
|
/**
|
|
47
|
-
* integrations is the list of hardware integrations this rack supports (e.g., "ni",
|
|
48
|
-
* "labjack"). An empty or nil list means the rack supports no integrations.
|
|
45
|
+
* integrations is the list of hardware integrations this rack supports (e.g., "ni",
|
|
46
|
+
* "opc", "labjack"). An empty or nil list means the rack supports no integrations.
|
|
49
47
|
*/
|
|
50
|
-
integrations:
|
|
48
|
+
integrations: z
|
|
49
|
+
.string()
|
|
50
|
+
.array()
|
|
51
|
+
.default(() => []),
|
|
51
52
|
});
|
|
52
53
|
export interface Payload extends z.infer<typeof payloadZ> {}
|
|
53
54
|
|
|
54
|
-
export const newZ = payloadZ
|
|
55
|
-
.
|
|
56
|
-
|
|
57
|
-
key: z.uint32().default(0),
|
|
58
|
-
});
|
|
55
|
+
export const newZ = payloadZ.omit({ embedded: true, key: true }).extend({
|
|
56
|
+
key: keyZ.refine((v) => v !== 0, "key is required").default(0),
|
|
57
|
+
});
|
|
59
58
|
export interface New extends z.input<typeof newZ> {}
|
|
60
59
|
|
|
61
60
|
export const ontologyID = ontology.createIDFactory<Key>("rack");
|
|
@@ -15,9 +15,8 @@ import { channel } from "@/channel";
|
|
|
15
15
|
import { ranger } from "@/ranger";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* Alias associates a human-readable string alias with a channel within the
|
|
19
|
-
*
|
|
20
|
-
* range context.
|
|
18
|
+
* Alias associates a human-readable string alias with a channel within the context of a
|
|
19
|
+
* specific range. Enables semantic naming of channels that varies by range context.
|
|
21
20
|
*/
|
|
22
21
|
export const aliasZ = z.object({
|
|
23
22
|
/** range is the unique identifier of the range containing this alias. */
|