@synnaxlabs/client 0.56.1 → 0.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client-B08VDLSA.js +14463 -0
- package/dist/client-B08VDLSA.js.map +1 -0
- package/dist/client.js +1128 -14876
- package/dist/client.js.map +1 -0
- package/dist/src/access/client.d.ts +10 -1
- package/dist/src/access/client.d.ts.map +1 -1
- package/dist/src/access/enforce.d.ts.map +1 -1
- package/dist/src/access/external.d.ts +1 -0
- package/dist/src/access/external.d.ts.map +1 -1
- package/dist/src/access/granted.d.ts +39 -0
- package/dist/src/access/granted.d.ts.map +1 -0
- package/dist/src/access/policy/client.d.ts +136 -147
- package/dist/src/access/policy/client.d.ts.map +1 -1
- package/dist/src/access/policy/types.gen.d.ts +15 -68
- package/dist/src/access/policy/types.gen.d.ts.map +1 -1
- package/dist/src/access/role/client.d.ts +77 -58
- package/dist/src/access/role/client.d.ts.map +1 -1
- package/dist/src/access/role/types.gen.d.ts +8 -14
- package/dist/src/access/role/types.gen.d.ts.map +1 -1
- package/dist/src/actions/actions.d.ts +5 -6
- package/dist/src/actions/actions.d.ts.map +1 -1
- package/dist/src/actions/controller.d.ts +194 -0
- package/dist/src/actions/controller.d.ts.map +1 -0
- package/dist/src/actions/external.d.ts +1 -0
- package/dist/src/actions/external.d.ts.map +1 -1
- package/dist/src/arc/actions.d.ts +575 -0
- package/dist/src/arc/actions.d.ts.map +1 -0
- package/dist/src/arc/actions.gen.d.ts +1439 -0
- package/dist/src/arc/actions.gen.d.ts.map +1 -0
- package/dist/src/arc/client.d.ts +97 -13
- package/dist/src/arc/client.d.ts.map +1 -1
- package/dist/src/arc/compiler/types.gen.d.ts +3 -3
- package/dist/src/arc/compiler/types.gen.d.ts.map +1 -1
- package/dist/src/arc/external.d.ts +2 -0
- package/dist/src/arc/external.d.ts.map +1 -1
- package/dist/src/arc/graph/types.gen.d.ts +45 -597
- package/dist/src/arc/graph/types.gen.d.ts.map +1 -1
- package/dist/src/arc/ir/index.d.ts +1 -1
- package/dist/src/arc/ir/index.d.ts.map +1 -1
- package/dist/src/arc/ir/ir.d.ts +2 -0
- package/dist/src/arc/ir/ir.d.ts.map +1 -0
- package/dist/src/arc/ir/types.gen.d.ts +58 -2807
- package/dist/src/arc/ir/types.gen.d.ts.map +1 -1
- package/dist/src/arc/module/types.gen.d.ts +18 -1090
- package/dist/src/arc/module/types.gen.d.ts.map +1 -1
- package/dist/src/arc/program/types.gen.d.ts +18 -1090
- package/dist/src/arc/program/types.gen.d.ts.map +1 -1
- package/dist/src/arc/text/types.gen.d.ts +54 -1
- package/dist/src/arc/text/types.gen.d.ts.map +1 -1
- package/dist/src/arc/types/types.gen.d.ts +35 -153
- package/dist/src/arc/types/types.gen.d.ts.map +1 -1
- package/dist/src/arc/types.gen.d.ts +98 -2278
- package/dist/src/arc/types.gen.d.ts.map +1 -1
- package/dist/src/auth/auth.d.ts +14 -2
- package/dist/src/auth/auth.d.ts.map +1 -1
- package/dist/src/channel/client.d.ts +113 -75
- package/dist/src/channel/client.d.ts.map +1 -1
- package/dist/src/channel/external.d.ts +0 -1
- package/dist/src/channel/external.d.ts.map +1 -1
- package/dist/src/channel/payload.d.ts +65 -56
- package/dist/src/channel/payload.d.ts.map +1 -1
- package/dist/src/channel/types.gen.d.ts +26 -73
- package/dist/src/channel/types.gen.d.ts.map +1 -1
- package/dist/src/channel/writer.d.ts +1 -3
- package/dist/src/channel/writer.d.ts.map +1 -1
- package/dist/src/client.d.ts +55 -27
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/connection/client.d.ts +146 -0
- package/dist/src/connection/client.d.ts.map +1 -0
- package/dist/src/connection/external.d.ts +3 -0
- package/dist/src/connection/external.d.ts.map +1 -0
- package/dist/src/connection/index.d.ts +1 -1
- package/dist/src/connection/index.d.ts.map +1 -1
- package/dist/src/connection/status.d.ts +252 -0
- package/dist/src/connection/status.d.ts.map +1 -0
- package/dist/src/control/client.d.ts +31 -7
- package/dist/src/control/client.d.ts.map +1 -1
- package/dist/src/control/state.d.ts +47 -16
- package/dist/src/control/state.d.ts.map +1 -1
- package/dist/src/device/client.d.ts +59 -17
- package/dist/src/device/client.d.ts.map +1 -1
- package/dist/src/device/types.gen.d.ts +17 -67
- package/dist/src/device/types.gen.d.ts.map +1 -1
- package/dist/src/errors.d.ts +17 -20
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/ethercat/external.d.ts +2 -0
- package/dist/src/ethercat/external.d.ts.map +1 -0
- package/dist/src/ethercat/index.d.ts +2 -0
- package/dist/src/ethercat/index.d.ts.map +1 -0
- package/dist/src/ethercat/types.gen.d.ts +243 -0
- package/dist/src/ethercat/types.gen.d.ts.map +1 -0
- package/dist/src/framer/adapter.d.ts +8 -5
- package/dist/src/framer/adapter.d.ts.map +1 -1
- package/dist/src/framer/benchutil.d.ts +19 -0
- package/dist/src/framer/benchutil.d.ts.map +1 -0
- package/dist/src/framer/cache/cache.d.ts +38 -0
- package/dist/src/framer/cache/cache.d.ts.map +1 -0
- package/dist/src/framer/cache/dynamic.d.ts +71 -0
- package/dist/src/framer/cache/dynamic.d.ts.map +1 -0
- package/dist/src/framer/cache/reader.d.ts +43 -0
- package/dist/src/framer/cache/reader.d.ts.map +1 -0
- package/dist/src/framer/cache/static.d.ts +66 -0
- package/dist/src/framer/cache/static.d.ts.map +1 -0
- package/dist/src/framer/cache/streamer.d.ts +86 -0
- package/dist/src/framer/cache/streamer.d.ts.map +1 -0
- package/dist/src/framer/cache/transform.d.ts +18 -0
- package/dist/src/framer/cache/transform.d.ts.map +1 -0
- package/dist/src/framer/cache/unary.d.ts +37 -0
- package/dist/src/framer/cache/unary.d.ts.map +1 -0
- package/dist/src/framer/client.d.ts +35 -14
- package/dist/src/framer/client.d.ts.map +1 -1
- package/dist/src/framer/codec.d.ts.map +1 -1
- package/dist/src/framer/deleter.d.ts +3 -2
- package/dist/src/framer/deleter.d.ts.map +1 -1
- package/dist/src/framer/external.d.ts +6 -0
- package/dist/src/framer/external.d.ts.map +1 -1
- package/dist/src/framer/feed.d.ts +40 -0
- package/dist/src/framer/feed.d.ts.map +1 -0
- package/dist/src/framer/frame.d.ts +16 -20
- package/dist/src/framer/frame.d.ts.map +1 -1
- package/dist/src/framer/hardened.d.ts +70 -0
- package/dist/src/framer/hardened.d.ts.map +1 -0
- package/dist/src/framer/iterator.d.ts +36 -43
- package/dist/src/framer/iterator.d.ts.map +1 -1
- package/dist/src/framer/reader.d.ts +3 -2
- package/dist/src/framer/reader.d.ts.map +1 -1
- package/dist/src/framer/streamer.d.ts +132 -205
- package/dist/src/framer/streamer.d.ts.map +1 -1
- package/dist/src/framer/writer.d.ts +130 -161
- package/dist/src/framer/writer.d.ts.map +1 -1
- package/dist/src/group/client.d.ts +66 -9
- package/dist/src/group/client.d.ts.map +1 -1
- package/dist/src/group/types.gen.d.ts +2 -2
- package/dist/src/http/external.d.ts +2 -0
- package/dist/src/http/external.d.ts.map +1 -0
- package/dist/src/http/index.d.ts +2 -0
- package/dist/src/http/index.d.ts.map +1 -0
- package/dist/src/http/types.gen.d.ts +451 -0
- package/dist/src/http/types.gen.d.ts.map +1 -0
- package/dist/src/imex/client.d.ts +88 -0
- package/dist/src/imex/client.d.ts.map +1 -0
- package/dist/src/imex/index.d.ts +2 -0
- package/dist/src/imex/index.d.ts.map +1 -0
- package/dist/src/index.d.ts +18 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/label/client.d.ts +55 -36
- package/dist/src/label/client.d.ts.map +1 -1
- package/dist/src/label/external.d.ts +2 -0
- package/dist/src/label/external.d.ts.map +1 -1
- package/dist/src/label/payload.d.ts +4 -46
- package/dist/src/label/payload.d.ts.map +1 -1
- package/dist/src/label/store.d.ts +8 -0
- package/dist/src/label/store.d.ts.map +1 -0
- package/dist/src/label/types.gen.d.ts +45 -0
- package/dist/src/label/types.gen.d.ts.map +1 -0
- package/dist/src/labjack/external.d.ts +2 -0
- package/dist/src/labjack/external.d.ts.map +1 -0
- package/dist/src/labjack/index.d.ts +2 -0
- package/dist/src/labjack/index.d.ts.map +1 -0
- package/dist/src/labjack/types.gen.d.ts +442 -0
- package/dist/src/labjack/types.gen.d.ts.map +1 -0
- package/dist/src/lineplot/actions.d.ts +914 -0
- package/dist/src/lineplot/actions.d.ts.map +1 -0
- package/dist/src/lineplot/actions.gen.d.ts +4208 -0
- package/dist/src/lineplot/actions.gen.d.ts.map +1 -0
- package/dist/src/lineplot/client.d.ts +66 -16
- package/dist/src/lineplot/client.d.ts.map +1 -1
- package/dist/src/lineplot/external.d.ts +3 -0
- package/dist/src/lineplot/external.d.ts.map +1 -1
- package/dist/src/lineplot/line.d.ts +16 -0
- package/dist/src/lineplot/line.d.ts.map +1 -0
- package/dist/src/lineplot/types.gen.d.ts +837 -14
- package/dist/src/lineplot/types.gen.d.ts.map +1 -1
- package/dist/src/log/actions.d.ts +271 -0
- package/dist/src/log/actions.d.ts.map +1 -0
- package/dist/src/log/actions.gen.d.ts +1529 -0
- package/dist/src/log/actions.gen.d.ts.map +1 -0
- package/dist/src/log/client.d.ts +66 -16
- package/dist/src/log/client.d.ts.map +1 -1
- package/dist/src/log/external.d.ts +2 -0
- package/dist/src/log/external.d.ts.map +1 -1
- package/dist/src/log/types.gen.d.ts +139 -14
- package/dist/src/log/types.gen.d.ts.map +1 -1
- package/dist/src/modbus/external.d.ts +2 -0
- package/dist/src/modbus/external.d.ts.map +1 -0
- package/dist/src/modbus/index.d.ts +2 -0
- package/dist/src/modbus/index.d.ts.map +1 -0
- package/dist/src/modbus/types.gen.d.ts +280 -0
- package/dist/src/modbus/types.gen.d.ts.map +1 -0
- package/dist/src/ni/external.d.ts +2 -0
- package/dist/src/ni/external.d.ts.map +1 -0
- package/dist/src/ni/index.d.ts +2 -0
- package/dist/src/ni/index.d.ts.map +1 -0
- package/dist/src/ni/types.gen.d.ts +21029 -0
- package/dist/src/ni/types.gen.d.ts.map +1 -0
- package/dist/src/node/index.d.ts +2 -0
- package/dist/src/node/index.d.ts.map +1 -0
- package/dist/src/node/types.gen.d.ts +4 -0
- package/dist/src/node/types.gen.d.ts.map +1 -0
- package/dist/src/ontology/client.d.ts +314 -67
- package/dist/src/ontology/client.d.ts.map +1 -1
- package/dist/src/ontology/external.d.ts +1 -0
- package/dist/src/ontology/external.d.ts.map +1 -1
- package/dist/src/ontology/payload.d.ts +60 -18
- package/dist/src/ontology/payload.d.ts.map +1 -1
- package/dist/src/ontology/store.d.ts +32 -0
- package/dist/src/ontology/store.d.ts.map +1 -0
- package/dist/src/ontology/types.gen.d.ts +3 -2
- package/dist/src/ontology/types.gen.d.ts.map +1 -1
- package/dist/src/ontology/writer.d.ts +16 -10
- package/dist/src/ontology/writer.d.ts.map +1 -1
- package/dist/src/opcua/external.d.ts +2 -0
- package/dist/src/opcua/external.d.ts.map +1 -0
- package/dist/src/opcua/index.d.ts +2 -0
- package/dist/src/opcua/index.d.ts.map +1 -0
- package/dist/src/opcua/types.gen.d.ts +82 -0
- package/dist/src/opcua/types.gen.d.ts.map +1 -0
- package/dist/src/pagerduty/external.d.ts +2 -0
- package/dist/src/pagerduty/external.d.ts.map +1 -0
- package/dist/src/pagerduty/index.d.ts +2 -0
- package/dist/src/pagerduty/index.d.ts.map +1 -0
- package/dist/src/pagerduty/types.gen.d.ts +30 -0
- package/dist/src/pagerduty/types.gen.d.ts.map +1 -0
- package/dist/src/panel/actions.d.ts +273 -0
- package/dist/src/panel/actions.d.ts.map +1 -0
- package/dist/src/panel/actions.gen.d.ts +1255 -0
- package/dist/src/panel/actions.gen.d.ts.map +1 -0
- package/dist/src/panel/client.d.ts +148 -0
- package/dist/src/panel/client.d.ts.map +1 -0
- package/dist/src/panel/external.d.ts +6 -0
- package/dist/src/panel/external.d.ts.map +1 -0
- package/dist/src/panel/index.d.ts +2 -0
- package/dist/src/panel/index.d.ts.map +1 -0
- package/dist/src/panel/tree.d.ts +50 -0
- package/dist/src/panel/tree.d.ts.map +1 -0
- package/dist/src/panel/types.gen.d.ts +370 -0
- package/dist/src/panel/types.gen.d.ts.map +1 -0
- package/dist/src/project/client.d.ts +89 -0
- package/dist/src/project/client.d.ts.map +1 -0
- package/dist/src/project/external.d.ts.map +1 -0
- package/dist/src/project/index.d.ts +2 -0
- package/dist/src/project/index.d.ts.map +1 -0
- package/dist/src/project/types.gen.d.ts +27 -0
- package/dist/src/project/types.gen.d.ts.map +1 -0
- package/dist/src/query/cache.d.ts +132 -0
- package/dist/src/query/cache.d.ts.map +1 -0
- package/dist/src/query/deleted.d.ts +20 -0
- package/dist/src/query/deleted.d.ts.map +1 -0
- package/dist/src/query/derived.d.ts +33 -0
- package/dist/src/query/derived.d.ts.map +1 -0
- package/dist/src/query/external.d.ts +10 -0
- package/dist/src/query/external.d.ts.map +1 -0
- package/dist/src/query/index.d.ts +2 -0
- package/dist/src/query/index.d.ts.map +1 -0
- package/dist/src/query/query.d.ts +235 -0
- package/dist/src/query/query.d.ts.map +1 -0
- package/dist/src/query/retriever.d.ts +135 -0
- package/dist/src/query/retriever.d.ts.map +1 -0
- package/dist/src/query/streamer.d.ts +67 -0
- package/dist/src/query/streamer.d.ts.map +1 -0
- package/dist/src/query/table.d.ts +219 -0
- package/dist/src/query/table.d.ts.map +1 -0
- package/dist/src/query/types.d.ts +35 -0
- package/dist/src/query/types.d.ts.map +1 -0
- package/dist/src/query/write.d.ts +21 -0
- package/dist/src/query/write.d.ts.map +1 -0
- package/dist/src/rack/client.d.ts +58 -20
- package/dist/src/rack/client.d.ts.map +1 -1
- package/dist/src/rack/types.gen.d.ts +11 -12
- package/dist/src/rack/types.gen.d.ts.map +1 -1
- package/dist/src/range/alias/types.gen.d.ts +2 -3
- package/dist/src/range/alias/types.gen.d.ts.map +1 -1
- package/dist/src/ranger/client.d.ts +138 -27
- package/dist/src/ranger/client.d.ts.map +1 -1
- package/dist/src/ranger/kv/client.d.ts +7 -4
- package/dist/src/ranger/kv/client.d.ts.map +1 -1
- package/dist/src/ranger/payload.d.ts +3 -0
- package/dist/src/ranger/payload.d.ts.map +1 -1
- package/dist/src/ranger/types.gen.d.ts +45 -101
- package/dist/src/ranger/types.gen.d.ts.map +1 -1
- package/dist/src/ranger/writer.d.ts +2 -74
- package/dist/src/ranger/writer.d.ts.map +1 -1
- package/dist/src/schematic/actions.d.ts +90 -33
- package/dist/src/schematic/actions.d.ts.map +1 -1
- package/dist/src/schematic/actions.gen.d.ts +207 -114
- package/dist/src/schematic/actions.gen.d.ts.map +1 -1
- package/dist/src/schematic/client.d.ts +70 -68
- package/dist/src/schematic/client.d.ts.map +1 -1
- package/dist/src/schematic/symbol/client.d.ts +133 -27
- package/dist/src/schematic/symbol/client.d.ts.map +1 -1
- package/dist/src/schematic/symbol/types.gen.d.ts +258 -153
- package/dist/src/schematic/symbol/types.gen.d.ts.map +1 -1
- package/dist/src/schematic/types.gen.d.ts +17 -96
- package/dist/src/schematic/types.gen.d.ts.map +1 -1
- package/dist/src/status/client.d.ts +69 -14
- package/dist/src/status/client.d.ts.map +1 -1
- package/dist/src/status/external.d.ts +2 -0
- package/dist/src/status/external.d.ts.map +1 -1
- package/dist/src/status/payload.d.ts +2 -36
- package/dist/src/status/payload.d.ts.map +1 -1
- package/dist/src/status/status.d.ts +65 -0
- package/dist/src/status/status.d.ts.map +1 -0
- package/dist/src/status/types.gen.d.ts +58 -0
- package/dist/src/status/types.gen.d.ts.map +1 -0
- package/dist/src/table/actions.d.ts +72 -13
- package/dist/src/table/actions.d.ts.map +1 -1
- package/dist/src/table/actions.gen.d.ts +221 -137
- package/dist/src/table/actions.gen.d.ts.map +1 -1
- package/dist/src/table/client.d.ts +64 -40
- package/dist/src/table/client.d.ts.map +1 -1
- package/dist/src/table/types.gen.d.ts +20 -55
- package/dist/src/table/types.gen.d.ts.map +1 -1
- package/dist/src/task/client.d.ts +149 -28
- package/dist/src/task/client.d.ts.map +1 -1
- package/dist/src/task/types.gen.d.ts +71 -89
- package/dist/src/task/types.gen.d.ts.map +1 -1
- package/dist/src/testutil/access.d.ts +27 -1
- package/dist/src/testutil/access.d.ts.map +1 -1
- package/dist/src/testutil/channels.d.ts +2 -0
- package/dist/src/testutil/channels.d.ts.map +1 -1
- package/dist/src/testutil/client.d.ts +5 -0
- package/dist/src/testutil/client.d.ts.map +1 -1
- package/dist/src/testutil/connection.d.ts +10 -0
- package/dist/src/testutil/connection.d.ts.map +1 -0
- package/dist/src/testutil/index.d.ts +9 -0
- package/dist/src/testutil/index.d.ts.map +1 -0
- package/dist/src/testutil/panels.d.ts +8 -0
- package/dist/src/testutil/panels.d.ts.map +1 -0
- package/dist/src/testutil/proxy.d.ts +29 -0
- package/dist/src/testutil/proxy.d.ts.map +1 -0
- package/dist/src/testutil/query.d.ts +7 -0
- package/dist/src/testutil/query.d.ts.map +1 -0
- package/dist/src/testutil/telem.d.ts +4 -0
- package/dist/src/testutil/telem.d.ts.map +1 -1
- package/dist/src/transport.d.ts +10 -4
- package/dist/src/transport.d.ts.map +1 -1
- package/dist/src/user/client.d.ts +29 -28
- package/dist/src/user/client.d.ts.map +1 -1
- package/dist/src/user/external.d.ts +1 -1
- package/dist/src/user/external.d.ts.map +1 -1
- package/dist/src/user/types.gen.d.ts +4 -4
- package/dist/src/util/retrieve.d.ts +2 -2
- package/dist/src/util/retrieve.d.ts.map +1 -1
- package/dist/src/util/telem.d.ts.map +1 -1
- package/dist/src/view/client.d.ts +30 -14
- package/dist/src/view/client.d.ts.map +1 -1
- package/dist/src/view/types.gen.d.ts +7 -15
- package/dist/src/view/types.gen.d.ts.map +1 -1
- package/dist/testutil.js +189 -0
- package/dist/testutil.js.map +1 -0
- package/package.json +40 -17
- package/src/access/client.ts +14 -3
- package/src/access/enforce.ts +0 -3
- package/src/access/external.ts +1 -0
- package/src/access/granted.ts +114 -0
- package/src/access/policy/client.ts +135 -43
- package/src/access/policy/types.gen.ts +9 -11
- package/src/access/role/client.ts +160 -38
- package/src/access/role/types.gen.ts +8 -12
- package/src/actions/actions.ts +5 -6
- package/src/actions/controller.ts +626 -0
- package/src/actions/external.ts +11 -0
- package/src/arc/actions.gen.ts +313 -0
- package/src/arc/actions.ts +192 -0
- package/src/arc/client.ts +424 -41
- package/src/arc/compiler/types.gen.ts +5 -6
- package/src/arc/external.ts +2 -0
- package/src/arc/graph/types.gen.ts +24 -22
- package/src/arc/ir/index.ts +1 -1
- package/{eslint.config.ts → src/arc/ir/ir.ts} +1 -4
- package/src/arc/ir/types.gen.ts +42 -41
- package/src/arc/text/types.gen.ts +21 -2
- package/src/arc/types/types.gen.ts +40 -32
- package/src/arc/types.gen.ts +31 -29
- package/src/auth/auth.ts +40 -8
- package/src/channel/client.ts +529 -132
- package/src/channel/external.ts +0 -1
- package/src/channel/payload.ts +30 -3
- package/src/channel/types.gen.ts +37 -48
- package/src/channel/writer.ts +2 -11
- package/src/client.ts +215 -91
- package/src/connection/client.ts +495 -0
- package/src/connection/external.ts +34 -0
- package/src/connection/index.ts +1 -1
- package/src/connection/status.ts +442 -0
- package/src/control/client.ts +84 -12
- package/src/control/state.ts +17 -36
- package/src/device/client.ts +293 -41
- package/src/device/types.gen.ts +15 -26
- package/src/errors.ts +45 -22
- package/src/{workspace → ethercat}/external.ts +1 -2
- package/src/{workspace → ethercat}/index.ts +1 -1
- package/src/ethercat/types.gen.ts +151 -0
- package/src/framer/adapter.ts +60 -37
- package/src/framer/benchutil.ts +67 -0
- package/src/framer/cache/cache.ts +115 -0
- package/src/framer/cache/dynamic.ts +279 -0
- package/src/framer/cache/reader.ts +160 -0
- package/src/framer/cache/static.ts +215 -0
- package/src/framer/cache/streamer.ts +391 -0
- package/src/framer/cache/transform.ts +31 -0
- package/src/framer/cache/unary.ts +104 -0
- package/src/framer/client.ts +71 -43
- package/src/framer/codec.ts +55 -18
- package/src/framer/deleter.ts +4 -6
- package/src/framer/external.ts +10 -0
- package/src/framer/feed.ts +108 -0
- package/src/framer/frame.ts +13 -23
- package/src/framer/hardened.ts +283 -0
- package/src/framer/iterator.ts +31 -42
- package/src/framer/reader.ts +11 -11
- package/src/framer/streamer.ts +18 -178
- package/src/framer/writer.ts +39 -59
- package/src/group/client.ts +158 -23
- package/src/http/external.ts +10 -0
- package/src/{cluster → http}/index.ts +1 -1
- package/src/http/types.gen.ts +245 -0
- package/src/imex/client.ts +125 -0
- package/src/imex/index.ts +10 -0
- package/src/index.ts +18 -6
- package/src/label/client.ts +193 -54
- package/src/label/external.ts +2 -0
- package/src/label/payload.ts +4 -9
- package/src/label/store.ts +28 -0
- package/src/label/types.gen.ts +31 -0
- package/src/labjack/external.ts +10 -0
- package/src/labjack/index.ts +10 -0
- package/src/labjack/types.gen.ts +251 -0
- package/src/lineplot/actions.gen.ts +880 -0
- package/src/lineplot/actions.ts +535 -0
- package/src/lineplot/client.ts +224 -52
- package/src/lineplot/external.ts +3 -0
- package/src/lineplot/line.ts +80 -0
- package/src/lineplot/types.gen.ts +225 -12
- package/src/log/actions.gen.ts +474 -0
- package/src/log/actions.ts +242 -0
- package/src/log/client.ts +223 -52
- package/src/log/external.ts +2 -0
- package/src/log/types.gen.ts +45 -14
- package/src/modbus/external.ts +10 -0
- package/src/modbus/index.ts +10 -0
- package/src/modbus/types.gen.ts +185 -0
- package/src/ni/external.ts +10 -0
- package/src/ni/index.ts +10 -0
- package/src/ni/types.gen.ts +1632 -0
- package/src/node/index.ts +10 -0
- package/src/{cluster → node}/types.gen.ts +2 -2
- package/src/ontology/client.ts +408 -99
- package/src/ontology/external.ts +7 -0
- package/src/ontology/payload.ts +48 -7
- package/src/ontology/store.ts +83 -0
- package/src/ontology/types.gen.ts +2 -1
- package/src/ontology/writer.ts +1 -0
- package/src/opcua/external.ts +10 -0
- package/src/opcua/index.ts +10 -0
- package/src/opcua/types.gen.ts +65 -0
- package/src/pagerduty/external.ts +10 -0
- package/src/pagerduty/index.ts +10 -0
- package/src/pagerduty/types.gen.ts +41 -0
- package/src/panel/actions.gen.ts +267 -0
- package/src/panel/actions.ts +357 -0
- package/src/panel/client.ts +327 -0
- package/src/panel/external.ts +14 -0
- package/src/panel/index.ts +10 -0
- package/src/panel/tree.ts +163 -0
- package/src/panel/types.gen.ts +164 -0
- package/src/project/client.ts +273 -0
- package/src/project/external.ts +11 -0
- package/src/project/index.ts +10 -0
- package/src/project/types.gen.ts +40 -0
- package/src/query/cache.ts +326 -0
- package/src/query/deleted.ts +38 -0
- package/src/query/derived.ts +101 -0
- package/src/query/external.ts +51 -0
- package/src/query/index.ts +10 -0
- package/src/query/query.ts +865 -0
- package/src/query/retriever.ts +308 -0
- package/src/query/streamer.ts +207 -0
- package/src/query/table.ts +625 -0
- package/src/query/types.ts +54 -0
- package/src/query/write.ts +42 -0
- package/src/rack/client.ts +233 -45
- package/src/rack/types.gen.ts +15 -16
- package/src/range/alias/types.gen.ts +2 -3
- package/src/ranger/client.ts +581 -70
- package/src/ranger/kv/client.ts +52 -21
- package/src/ranger/payload.ts +3 -0
- package/src/ranger/types.gen.ts +21 -23
- package/src/ranger/writer.ts +4 -8
- package/src/schematic/actions.gen.ts +62 -53
- package/src/schematic/actions.ts +44 -42
- package/src/schematic/client.ts +226 -70
- package/src/schematic/symbol/client.ts +277 -48
- package/src/schematic/symbol/types.gen.ts +22 -34
- package/src/schematic/types.gen.ts +22 -29
- package/src/status/client.ts +321 -44
- package/src/status/external.ts +2 -0
- package/src/status/payload.ts +1 -23
- package/src/status/status.ts +241 -0
- package/src/status/types.gen.ts +108 -0
- package/src/table/actions.gen.ts +96 -63
- package/src/table/actions.ts +44 -19
- package/src/table/client.ts +220 -56
- package/src/table/types.gen.ts +24 -31
- package/src/task/client.ts +580 -101
- package/src/task/types.gen.ts +68 -75
- package/src/testutil/access.ts +102 -6
- package/src/testutil/channels.ts +29 -0
- package/src/testutil/client.ts +27 -2
- package/src/testutil/connection.ts +47 -0
- package/src/testutil/index.ts +17 -0
- package/src/testutil/panels.ts +26 -0
- package/src/testutil/proxy.ts +106 -0
- package/src/testutil/query.ts +28 -0
- package/src/testutil/telem.ts +17 -1
- package/src/transport.ts +18 -7
- package/src/user/client.ts +165 -64
- package/src/user/external.ts +1 -1
- package/src/user/types.gen.ts +5 -5
- package/src/util/retrieve.ts +4 -4
- package/src/util/telem.ts +0 -1
- package/src/view/client.ts +120 -37
- package/src/view/types.gen.ts +8 -11
- package/.turbo/turbo-build.log +0 -20
- package/.vscode/settings.json +0 -3
- package/CONTRIBUTING.md +0 -47
- package/dist/client.cjs +0 -118
- package/dist/eslint.config.d.ts +0 -4
- package/dist/eslint.config.d.ts.map +0 -1
- package/dist/src/access/enforce.spec.d.ts +0 -2
- package/dist/src/access/enforce.spec.d.ts.map +0 -1
- package/dist/src/access/policy/access.spec.d.ts +0 -2
- package/dist/src/access/policy/access.spec.d.ts.map +0 -1
- package/dist/src/access/role/role.spec.d.ts +0 -2
- package/dist/src/access/role/role.spec.d.ts.map +0 -1
- package/dist/src/actions/actions.spec.d.ts +0 -2
- package/dist/src/actions/actions.spec.d.ts.map +0 -1
- package/dist/src/arc/access.spec.d.ts +0 -2
- package/dist/src/arc/access.spec.d.ts.map +0 -1
- package/dist/src/arc/arc.spec.d.ts +0 -2
- package/dist/src/arc/arc.spec.d.ts.map +0 -1
- package/dist/src/arc/lsp.spec.d.ts +0 -2
- package/dist/src/arc/lsp.spec.d.ts.map +0 -1
- package/dist/src/auth/auth.spec.d.ts +0 -2
- package/dist/src/auth/auth.spec.d.ts.map +0 -1
- package/dist/src/channel/access.spec.d.ts +0 -2
- package/dist/src/channel/access.spec.d.ts.map +0 -1
- package/dist/src/channel/batchRetriever.spec.d.ts +0 -2
- package/dist/src/channel/batchRetriever.spec.d.ts.map +0 -1
- package/dist/src/channel/channel.spec.d.ts +0 -2
- package/dist/src/channel/channel.spec.d.ts.map +0 -1
- package/dist/src/channel/payload.spec.d.ts +0 -2
- package/dist/src/channel/payload.spec.d.ts.map +0 -1
- package/dist/src/channel/retriever.d.ts +0 -64
- package/dist/src/channel/retriever.d.ts.map +0 -1
- package/dist/src/cluster/index.d.ts +0 -2
- package/dist/src/cluster/index.d.ts.map +0 -1
- package/dist/src/cluster/types.gen.d.ts +0 -4
- package/dist/src/cluster/types.gen.d.ts.map +0 -1
- package/dist/src/connection/checker.d.ts +0 -86
- package/dist/src/connection/checker.d.ts.map +0 -1
- package/dist/src/connection/connection.spec.d.ts +0 -2
- package/dist/src/connection/connection.spec.d.ts.map +0 -1
- package/dist/src/connection.spec.d.ts +0 -2
- package/dist/src/connection.spec.d.ts.map +0 -1
- package/dist/src/control/state.spec.d.ts +0 -2
- package/dist/src/control/state.spec.d.ts.map +0 -1
- package/dist/src/device/access.spec.d.ts +0 -2
- package/dist/src/device/access.spec.d.ts.map +0 -1
- package/dist/src/device/device.spec.d.ts +0 -2
- package/dist/src/device/device.spec.d.ts.map +0 -1
- package/dist/src/device/payload.spec.d.ts +0 -2
- package/dist/src/device/payload.spec.d.ts.map +0 -1
- package/dist/src/errors.spec.d.ts +0 -2
- package/dist/src/errors.spec.d.ts.map +0 -1
- package/dist/src/framer/adapter.spec.d.ts +0 -2
- package/dist/src/framer/adapter.spec.d.ts.map +0 -1
- package/dist/src/framer/client.spec.d.ts +0 -2
- package/dist/src/framer/client.spec.d.ts.map +0 -1
- package/dist/src/framer/codec.spec.d.ts +0 -2
- package/dist/src/framer/codec.spec.d.ts.map +0 -1
- package/dist/src/framer/deleter.spec.d.ts +0 -2
- package/dist/src/framer/deleter.spec.d.ts.map +0 -1
- package/dist/src/framer/frame.spec.d.ts +0 -2
- package/dist/src/framer/frame.spec.d.ts.map +0 -1
- package/dist/src/framer/iterator.spec.d.ts +0 -2
- package/dist/src/framer/iterator.spec.d.ts.map +0 -1
- package/dist/src/framer/reader.spec.d.ts +0 -2
- package/dist/src/framer/reader.spec.d.ts.map +0 -1
- package/dist/src/framer/streamer.spec.d.ts +0 -2
- package/dist/src/framer/streamer.spec.d.ts.map +0 -1
- package/dist/src/framer/writer.spec.d.ts +0 -2
- package/dist/src/framer/writer.spec.d.ts.map +0 -1
- package/dist/src/group/access.spec.d.ts +0 -2
- package/dist/src/group/access.spec.d.ts.map +0 -1
- package/dist/src/group/group.spec.d.ts +0 -2
- package/dist/src/group/group.spec.d.ts.map +0 -1
- package/dist/src/label/access.spec.d.ts +0 -2
- package/dist/src/label/access.spec.d.ts.map +0 -1
- package/dist/src/label/label.spec.d.ts +0 -2
- package/dist/src/label/label.spec.d.ts.map +0 -1
- package/dist/src/lineplot/access.spec.d.ts +0 -2
- package/dist/src/lineplot/access.spec.d.ts.map +0 -1
- package/dist/src/lineplot/lineplot.spec.d.ts +0 -2
- package/dist/src/lineplot/lineplot.spec.d.ts.map +0 -1
- package/dist/src/log/access.spec.d.ts +0 -2
- package/dist/src/log/access.spec.d.ts.map +0 -1
- package/dist/src/log/log.spec.d.ts +0 -2
- package/dist/src/log/log.spec.d.ts.map +0 -1
- package/dist/src/ontology/ontology.spec.d.ts +0 -2
- package/dist/src/ontology/ontology.spec.d.ts.map +0 -1
- package/dist/src/rack/access.spec.d.ts +0 -2
- package/dist/src/rack/access.spec.d.ts.map +0 -1
- package/dist/src/rack/rack.spec.d.ts +0 -2
- package/dist/src/rack/rack.spec.d.ts.map +0 -1
- package/dist/src/ranger/access.spec.d.ts +0 -2
- package/dist/src/ranger/access.spec.d.ts.map +0 -1
- package/dist/src/ranger/alias/payload.spec.d.ts +0 -2
- package/dist/src/ranger/alias/payload.spec.d.ts.map +0 -1
- package/dist/src/ranger/ranger.spec.d.ts +0 -2
- package/dist/src/ranger/ranger.spec.d.ts.map +0 -1
- package/dist/src/schematic/access.spec.d.ts +0 -2
- package/dist/src/schematic/access.spec.d.ts.map +0 -1
- package/dist/src/schematic/actions.spec.d.ts +0 -2
- package/dist/src/schematic/actions.spec.d.ts.map +0 -1
- package/dist/src/schematic/schematic.spec.d.ts +0 -2
- package/dist/src/schematic/schematic.spec.d.ts.map +0 -1
- package/dist/src/schematic/symbol/access.spec.d.ts +0 -2
- package/dist/src/schematic/symbol/access.spec.d.ts.map +0 -1
- package/dist/src/schematic/symbol/client.spec.d.ts +0 -2
- package/dist/src/schematic/symbol/client.spec.d.ts.map +0 -1
- package/dist/src/status/access.spec.d.ts +0 -2
- package/dist/src/status/access.spec.d.ts.map +0 -1
- package/dist/src/status/status.spec.d.ts +0 -2
- package/dist/src/status/status.spec.d.ts.map +0 -1
- package/dist/src/table/access.spec.d.ts +0 -2
- package/dist/src/table/access.spec.d.ts.map +0 -1
- package/dist/src/table/table.spec.d.ts +0 -2
- package/dist/src/table/table.spec.d.ts.map +0 -1
- package/dist/src/task/access.spec.d.ts +0 -2
- package/dist/src/task/access.spec.d.ts.map +0 -1
- package/dist/src/task/payload.spec.d.ts +0 -2
- package/dist/src/task/payload.spec.d.ts.map +0 -1
- package/dist/src/task/task.spec.d.ts +0 -2
- package/dist/src/task/task.spec.d.ts.map +0 -1
- package/dist/src/user/access.spec.d.ts +0 -2
- package/dist/src/user/access.spec.d.ts.map +0 -1
- package/dist/src/user/user.spec.d.ts +0 -2
- package/dist/src/user/user.spec.d.ts.map +0 -1
- package/dist/src/util/retrieve.spec.d.ts +0 -2
- package/dist/src/util/retrieve.spec.d.ts.map +0 -1
- package/dist/src/view/view.spec.d.ts +0 -2
- package/dist/src/view/view.spec.d.ts.map +0 -1
- package/dist/src/workspace/access.spec.d.ts +0 -2
- package/dist/src/workspace/access.spec.d.ts.map +0 -1
- package/dist/src/workspace/client.d.ts +0 -36
- package/dist/src/workspace/client.d.ts.map +0 -1
- package/dist/src/workspace/external.d.ts.map +0 -1
- package/dist/src/workspace/index.d.ts +0 -2
- package/dist/src/workspace/index.d.ts.map +0 -1
- package/dist/src/workspace/types.gen.d.ts +0 -34
- package/dist/src/workspace/types.gen.d.ts.map +0 -1
- package/dist/src/workspace/workspace.spec.d.ts +0 -2
- package/dist/src/workspace/workspace.spec.d.ts.map +0 -1
- package/examples/node/basicReadWrite.js +0 -86
- package/examples/node/createChannels.js +0 -50
- package/examples/node/createRange.js +0 -67
- package/examples/node/package-lock.json +0 -133
- package/examples/node/package.json +0 -17
- package/examples/node/readLatest.js +0 -76
- package/examples/node/seriesAndFrames.js +0 -173
- package/examples/node/streamRead.js +0 -50
- package/examples/node/streamWrite.js +0 -87
- package/src/access/enforce.spec.ts +0 -188
- package/src/access/policy/access.spec.ts +0 -147
- package/src/access/role/role.spec.ts +0 -95
- package/src/actions/actions.spec.ts +0 -229
- package/src/arc/access.spec.ts +0 -149
- package/src/arc/arc.spec.ts +0 -44
- package/src/arc/lsp.spec.ts +0 -717
- package/src/auth/auth.spec.ts +0 -101
- package/src/channel/access.spec.ts +0 -116
- package/src/channel/batchRetriever.spec.ts +0 -115
- package/src/channel/channel.spec.ts +0 -352
- package/src/channel/payload.spec.ts +0 -117
- package/src/channel/retriever.ts +0 -252
- package/src/connection/checker.ts +0 -203
- package/src/connection/connection.spec.ts +0 -152
- package/src/connection.spec.ts +0 -145
- package/src/control/state.spec.ts +0 -22
- package/src/device/access.spec.ts +0 -159
- package/src/device/device.spec.ts +0 -461
- package/src/device/payload.spec.ts +0 -142
- package/src/errors.spec.ts +0 -71
- package/src/framer/adapter.spec.ts +0 -620
- package/src/framer/client.spec.ts +0 -180
- package/src/framer/codec.spec.ts +0 -383
- package/src/framer/deleter.spec.ts +0 -103
- package/src/framer/frame.spec.ts +0 -973
- package/src/framer/iterator.spec.ts +0 -169
- package/src/framer/reader.spec.ts +0 -865
- package/src/framer/streamer.spec.ts +0 -871
- package/src/framer/writer.spec.ts +0 -486
- package/src/group/access.spec.ts +0 -77
- package/src/group/group.spec.ts +0 -65
- package/src/label/access.spec.ts +0 -109
- package/src/label/label.spec.ts +0 -83
- package/src/lineplot/access.spec.ts +0 -134
- package/src/lineplot/lineplot.spec.ts +0 -120
- package/src/log/access.spec.ts +0 -132
- package/src/log/log.spec.ts +0 -106
- package/src/ontology/ontology.spec.ts +0 -521
- package/src/rack/access.spec.ts +0 -102
- package/src/rack/rack.spec.ts +0 -171
- package/src/ranger/access.spec.ts +0 -115
- package/src/ranger/alias/payload.spec.ts +0 -52
- package/src/ranger/ranger.spec.ts +0 -343
- package/src/schematic/access.spec.ts +0 -134
- package/src/schematic/actions.spec.ts +0 -699
- package/src/schematic/schematic.spec.ts +0 -340
- package/src/schematic/symbol/access.spec.ts +0 -172
- package/src/schematic/symbol/client.spec.ts +0 -160
- package/src/status/access.spec.ts +0 -129
- package/src/status/status.spec.ts +0 -448
- package/src/table/access.spec.ts +0 -128
- package/src/table/table.spec.ts +0 -651
- package/src/task/access.spec.ts +0 -131
- package/src/task/payload.spec.ts +0 -113
- package/src/task/task.spec.ts +0 -657
- package/src/user/access.spec.ts +0 -107
- package/src/user/user.spec.ts +0 -290
- package/src/util/retrieve.spec.ts +0 -49
- package/src/view/view.spec.ts +0 -165
- package/src/workspace/access.spec.ts +0 -108
- package/src/workspace/client.ts +0 -112
- package/src/workspace/types.gen.ts +0 -46
- package/src/workspace/workspace.spec.ts +0 -111
- package/tsconfig.json +0 -5
- package/tsconfig.vite.json +0 -4
- package/vite.config.ts +0 -29
- /package/dist/src/{workspace → project}/external.d.ts +0 -0
package/src/channel/external.ts
CHANGED
package/src/channel/payload.ts
CHANGED
|
@@ -19,21 +19,32 @@ import {
|
|
|
19
19
|
type Payload,
|
|
20
20
|
payloadZ,
|
|
21
21
|
} from "@/channel/types.gen";
|
|
22
|
-
import {
|
|
22
|
+
import { idToString } from "@/ontology/payload";
|
|
23
|
+
import {
|
|
24
|
+
analyzeParams as baseAnalyzeParams,
|
|
25
|
+
type ParamAnalysisResult,
|
|
26
|
+
} from "@/util/retrieve";
|
|
23
27
|
|
|
28
|
+
/** One or many channels, named by key or by name. */
|
|
24
29
|
export type PrimitiveParams = Key | Name | Key[] | Name[];
|
|
25
30
|
|
|
31
|
+
/** Zod schema for {@link Params}, resolving every form to a key array. */
|
|
26
32
|
export const paramsZ = z.union([
|
|
27
33
|
zod.toArray(keyZ),
|
|
28
34
|
zod.toArray(nameZ),
|
|
29
35
|
zod.toArray(payloadZ).transform((p) => p.map((c) => c.key)),
|
|
30
36
|
]);
|
|
37
|
+
/** Anything that names one or many channels. */
|
|
31
38
|
export type Params = PrimitiveParams | Payload | Payload[];
|
|
32
39
|
|
|
33
40
|
const CHAR_REGEX = /[a-zA-Z0-9_]/;
|
|
34
41
|
|
|
35
42
|
const VALID_NAME_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
36
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Rewrites a channel name into a valid identifier, replacing every other character with
|
|
46
|
+
* an underscore and prefixing a leading digit.
|
|
47
|
+
*/
|
|
37
48
|
export const escapeInvalidName = (name: string, changeEmptyToUnderscore = false) => {
|
|
38
49
|
if (name === "") return changeEmptyToUnderscore ? "_" : "";
|
|
39
50
|
if (name.match(VALID_NAME_PATTERN)) return name;
|
|
@@ -47,5 +58,21 @@ export const escapeInvalidName = (name: string, changeEmptyToUnderscore = false)
|
|
|
47
58
|
return result;
|
|
48
59
|
};
|
|
49
60
|
|
|
50
|
-
|
|
51
|
-
|
|
61
|
+
/** @returns the key of the status that reports on the given channel. */
|
|
62
|
+
export const statusKey = (channel: Key): string => idToString(ontologyID(channel));
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Resolves channel params into a normalized array, reporting whether the caller named
|
|
66
|
+
* one channel or many, and whether by key or by name.
|
|
67
|
+
*/
|
|
68
|
+
export const analyzeParams = (
|
|
69
|
+
channels: Params,
|
|
70
|
+
): ParamAnalysisResult<Key | Name, { number: "keys"; string: "names" }> => {
|
|
71
|
+
if (Array.isArray(channels) && channels.length > 0 && typeof channels[0] === "object")
|
|
72
|
+
channels = (channels as Payload[]).map((c) => c.key);
|
|
73
|
+
else if (typeof channels === "object" && "key" in channels) channels = [channels.key];
|
|
74
|
+
return baseAnalyzeParams(channels as PrimitiveParams, {
|
|
75
|
+
number: "keys",
|
|
76
|
+
string: "names",
|
|
77
|
+
});
|
|
78
|
+
};
|
package/src/channel/types.gen.ts
CHANGED
|
@@ -9,11 +9,12 @@
|
|
|
9
9
|
|
|
10
10
|
// Code generated by Oracle. DO NOT EDIT.
|
|
11
11
|
|
|
12
|
-
import { control,
|
|
12
|
+
import { control, telem, TimeSpan, zod } from "@synnaxlabs/x";
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
|
|
15
|
-
import {
|
|
15
|
+
import { node } from "@/node";
|
|
16
16
|
import { ontology } from "@/ontology";
|
|
17
|
+
import { status } from "@/status";
|
|
17
18
|
|
|
18
19
|
export const keyZ = z.uint32().or(
|
|
19
20
|
z
|
|
@@ -32,18 +33,21 @@ export type OperationType = z.infer<typeof operationTypeZ>;
|
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
35
|
* Operation defines an aggregation operation applied to channel data. Operations
|
|
35
|
-
* calculate min, max, or
|
|
36
|
+
* calculate min, max, average, or derivative values over a time duration or triggered
|
|
36
37
|
* by a reset channel.
|
|
37
38
|
*/
|
|
38
39
|
export const operationZ = z.object({
|
|
39
|
-
/** type is the aggregation operation type: min, max, avg, or none. */
|
|
40
|
+
/** type is the aggregation operation type: min, max, avg, derivative, or none. */
|
|
40
41
|
type: operationTypeZ,
|
|
41
42
|
/**
|
|
42
|
-
* resetChannel is the
|
|
43
|
-
*
|
|
43
|
+
* resetChannel is the key of a channel that resets the aggregation when it receives a
|
|
44
|
+
* sample. If 0, no reset channel is used.
|
|
44
45
|
*/
|
|
45
46
|
resetChannel: keyZ.default(0),
|
|
46
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* duration is the interval at which the aggregation resets. If 0, the aggregation is
|
|
49
|
+
* not reset on a timer.
|
|
50
|
+
*/
|
|
47
51
|
duration: telem.timeSpanZ.default(TimeSpan.ZERO),
|
|
48
52
|
});
|
|
49
53
|
export interface Operation extends z.infer<typeof operationZ> {}
|
|
@@ -55,82 +59,67 @@ export const statusZ = status.statusZ();
|
|
|
55
59
|
export type Status = z.infer<typeof statusZ>;
|
|
56
60
|
|
|
57
61
|
/**
|
|
58
|
-
* Payload is a logical collection of samples emitted by or representing values
|
|
59
|
-
*
|
|
60
|
-
*
|
|
62
|
+
* Payload is a logical collection of samples emitted by or representing values from a
|
|
63
|
+
* single source. Channels are the fundamental unit of telemetry storage and streaming
|
|
64
|
+
* in Synnax.
|
|
61
65
|
*/
|
|
62
66
|
export const payloadZ = z.object({
|
|
63
67
|
/**
|
|
64
|
-
* key is the unique identifier for this channel, automatically assigned
|
|
65
|
-
* by Synnax.
|
|
68
|
+
* key is the unique identifier for this channel, automatically assigned by Synnax.
|
|
66
69
|
*/
|
|
67
|
-
key: keyZ,
|
|
70
|
+
key: keyZ.default(0),
|
|
68
71
|
/** name is the human-readable channel name. */
|
|
69
72
|
name: nameZ,
|
|
70
73
|
/**
|
|
71
|
-
* leaseholder is the
|
|
72
|
-
*
|
|
74
|
+
* leaseholder is the node that holds the lease for this channel. Mostly for internal
|
|
75
|
+
* use.
|
|
73
76
|
*/
|
|
74
|
-
leaseholder:
|
|
77
|
+
leaseholder: node.keyZ.default(0),
|
|
75
78
|
/**
|
|
76
|
-
* dataType is the data type of samples stored in this channel (e.g.,
|
|
77
|
-
*
|
|
79
|
+
* dataType is the data type of samples stored in this channel (e.g., float64, int32,
|
|
80
|
+
* timestamp).
|
|
78
81
|
*/
|
|
79
82
|
dataType: telem.dataTypeZ,
|
|
80
83
|
/**
|
|
81
|
-
* isIndex is true if this is an index channel. Index channels must have int64
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
+
* isIndex is true if this is an index channel. Index channels must have int64 values
|
|
85
|
+
* (TIMESTAMP data type) written in ascending order, and are most commonly Unix
|
|
86
|
+
* nanosecond timestamps.
|
|
84
87
|
*/
|
|
85
|
-
isIndex: z.boolean(),
|
|
88
|
+
isIndex: z.boolean().default(false),
|
|
86
89
|
/**
|
|
87
|
-
* index is the channel used to index this channel's values, associating
|
|
88
|
-
*
|
|
90
|
+
* index is the channel used to index this channel's values, associating each value
|
|
91
|
+
* with a timestamp.
|
|
89
92
|
*/
|
|
90
|
-
index: keyZ,
|
|
93
|
+
index: keyZ.default(0),
|
|
91
94
|
/** alias is an optional alternate name for the channel within a specific context. */
|
|
92
95
|
alias: z.string().optional(),
|
|
93
96
|
/**
|
|
94
|
-
* virtual is true if this channel does not store data in the database but can
|
|
95
|
-
*
|
|
97
|
+
* virtual is true if this channel does not store data in the database but can still
|
|
98
|
+
* be used for streaming purposes.
|
|
96
99
|
*/
|
|
97
100
|
virtual: z.boolean().default(false),
|
|
98
101
|
/** internal is true if this is a system channel hidden from normal user queries. */
|
|
99
102
|
internal: z.boolean().default(false),
|
|
100
103
|
/**
|
|
101
|
-
* expression is an Arc expression for calculated channels. If set, the channel
|
|
102
|
-
*
|
|
104
|
+
* expression is an Arc expression for calculated channels. If set, the channel is
|
|
105
|
+
* automatically configured as virtual.
|
|
103
106
|
*/
|
|
104
107
|
expression: z.string().default(""),
|
|
105
108
|
/**
|
|
106
|
-
* operations contains optional aggregation operations (min, max, avg)
|
|
107
|
-
* channel data over time or triggered by a reset channel.
|
|
109
|
+
* operations contains optional aggregation operations (min, max, avg, derivative)
|
|
110
|
+
* applied to channel data over time or triggered by a reset channel.
|
|
108
111
|
*/
|
|
109
|
-
operations:
|
|
112
|
+
operations: operationZ.array().default(() => []),
|
|
110
113
|
/**
|
|
111
114
|
* concurrency sets the policy for concurrent writes to the channel's data. Only
|
|
112
115
|
* virtual channels can have a policy of shared concurrency.
|
|
113
116
|
*/
|
|
114
|
-
concurrency: control.concurrencyZ.default(control.Concurrency.exclusive)
|
|
117
|
+
concurrency: control.concurrencyZ.default(control.Concurrency.exclusive),
|
|
115
118
|
/** status is the current operational status of the channel. */
|
|
116
119
|
status: statusZ.optional(),
|
|
117
120
|
});
|
|
118
121
|
export interface Payload extends z.infer<typeof payloadZ> {}
|
|
119
|
-
|
|
120
|
-
export const newZ = payloadZ
|
|
121
|
-
.omit({ leaseholder: true })
|
|
122
|
-
.partial({
|
|
123
|
-
key: true,
|
|
124
|
-
index: true,
|
|
125
|
-
isIndex: true,
|
|
126
|
-
internal: true,
|
|
127
|
-
virtual: true,
|
|
128
|
-
expression: true,
|
|
129
|
-
})
|
|
130
|
-
.extend({
|
|
131
|
-
leaseholder: zod.uint12.optional(),
|
|
132
|
-
});
|
|
133
|
-
export interface New extends z.input<typeof newZ> {}
|
|
122
|
+
export interface New extends z.input<typeof payloadZ> {}
|
|
134
123
|
|
|
135
124
|
export const ontologyID = ontology.createIDFactory<Key>("channel");
|
|
136
125
|
export const TYPE_ONTOLOGY_ID = ontologyID(0);
|
package/src/channel/writer.ts
CHANGED
|
@@ -11,18 +11,16 @@ import { type UnaryClient } from "@synnaxlabs/freighter";
|
|
|
11
11
|
import { type DataType } from "@synnaxlabs/x";
|
|
12
12
|
import { z } from "zod";
|
|
13
13
|
|
|
14
|
-
import { type CacheRetriever } from "@/channel/retriever";
|
|
15
14
|
import {
|
|
16
15
|
type Key,
|
|
17
16
|
keyZ,
|
|
18
17
|
nameZ,
|
|
19
18
|
type New,
|
|
20
|
-
newZ,
|
|
21
19
|
type Payload,
|
|
22
20
|
payloadZ,
|
|
23
21
|
} from "@/channel/types.gen";
|
|
24
22
|
|
|
25
|
-
const createReqZ = z.object({ channels:
|
|
23
|
+
const createReqZ = z.object({ channels: payloadZ.array() });
|
|
26
24
|
const createResZ = z.object({ channels: payloadZ.array() });
|
|
27
25
|
|
|
28
26
|
const deleteReqZ = z.object({
|
|
@@ -39,11 +37,9 @@ export interface RenameProps extends z.input<typeof renameReqZ> {}
|
|
|
39
37
|
|
|
40
38
|
export class Writer {
|
|
41
39
|
private readonly client: UnaryClient;
|
|
42
|
-
private readonly cache: CacheRetriever;
|
|
43
40
|
|
|
44
|
-
constructor(client: UnaryClient
|
|
41
|
+
constructor(client: UnaryClient) {
|
|
45
42
|
this.client = client;
|
|
46
|
-
this.cache = cache;
|
|
47
43
|
}
|
|
48
44
|
|
|
49
45
|
async create(channels: New[]): Promise<Payload[]> {
|
|
@@ -58,19 +54,14 @@ export class Writer {
|
|
|
58
54
|
createReqZ,
|
|
59
55
|
createResZ,
|
|
60
56
|
);
|
|
61
|
-
this.cache.set(created);
|
|
62
57
|
return created;
|
|
63
58
|
}
|
|
64
59
|
|
|
65
60
|
async delete(props: DeleteProps): Promise<void> {
|
|
66
|
-
const keys = keyZ.array().parse(props.keys ?? []);
|
|
67
61
|
await this.client.send("/channel/delete", props, deleteReqZ, deleteResZ);
|
|
68
|
-
if (keys.length > 0) this.cache.delete(keys);
|
|
69
|
-
if (props.names != null) this.cache.delete(props.names);
|
|
70
62
|
}
|
|
71
63
|
|
|
72
64
|
async rename(keys: Key[], names: string[]): Promise<void> {
|
|
73
65
|
await this.client.send("/channel/rename", { keys, names }, renameReqZ, renameResZ);
|
|
74
|
-
this.cache.rename(keys, names);
|
|
75
66
|
}
|
|
76
67
|
}
|
package/src/client.ts
CHANGED
|
@@ -7,7 +7,16 @@
|
|
|
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
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
array,
|
|
12
|
+
breaker,
|
|
13
|
+
type CrudeTimeSpan,
|
|
14
|
+
TimeSpan,
|
|
15
|
+
TimeStamp,
|
|
16
|
+
url,
|
|
17
|
+
uuid,
|
|
18
|
+
zod,
|
|
19
|
+
} from "@synnaxlabs/x";
|
|
11
20
|
import { z } from "zod";
|
|
12
21
|
|
|
13
22
|
import { access } from "@/access";
|
|
@@ -20,14 +29,16 @@ import { device } from "@/device";
|
|
|
20
29
|
import { errorsMiddleware } from "@/errors";
|
|
21
30
|
import { framer } from "@/framer";
|
|
22
31
|
import { group } from "@/group";
|
|
32
|
+
import { imex } from "@/imex";
|
|
23
33
|
import { label } from "@/label";
|
|
24
34
|
import { lineplot } from "@/lineplot";
|
|
25
35
|
import { log } from "@/log";
|
|
26
36
|
import { ontology } from "@/ontology";
|
|
37
|
+
import { panel } from "@/panel";
|
|
38
|
+
import { project } from "@/project";
|
|
39
|
+
import { query } from "@/query";
|
|
27
40
|
import { rack } from "@/rack";
|
|
28
41
|
import { ranger } from "@/ranger";
|
|
29
|
-
import { alias } from "@/ranger/alias";
|
|
30
|
-
import { kv } from "@/ranger/kv";
|
|
31
42
|
import { schematic } from "@/schematic";
|
|
32
43
|
import { status } from "@/status";
|
|
33
44
|
import { table } from "@/table";
|
|
@@ -35,7 +46,6 @@ import { task } from "@/task";
|
|
|
35
46
|
import { Transport } from "@/transport";
|
|
36
47
|
import { user } from "@/user";
|
|
37
48
|
import { view } from "@/view";
|
|
38
|
-
import { workspace } from "@/workspace";
|
|
39
49
|
|
|
40
50
|
export const synnaxParamsZ = z.object({
|
|
41
51
|
host: z.string({ error: "Host is required" }).min(1, "Host is required"),
|
|
@@ -49,6 +59,16 @@ export const synnaxParamsZ = z.object({
|
|
|
49
59
|
secure: z.boolean().default(false),
|
|
50
60
|
name: z.string().optional(),
|
|
51
61
|
retry: breaker.breakerConfigZ.optional(),
|
|
62
|
+
cache: z.boolean().default(true),
|
|
63
|
+
/**
|
|
64
|
+
* Receives cache errors that have no caller to throw to (listener fan-out, streamer
|
|
65
|
+
* frame handling, background reconciliation). Defaults to console logging.
|
|
66
|
+
*/
|
|
67
|
+
// output is unknown, not void: strict void validation would make a
|
|
68
|
+
// caller's `(e) => list.push(e)` throw at error-report time
|
|
69
|
+
onInternalError: z
|
|
70
|
+
.function({ input: z.tuple([z.instanceof(Error)]), output: z.unknown() })
|
|
71
|
+
.optional(),
|
|
52
72
|
});
|
|
53
73
|
|
|
54
74
|
export interface SynnaxParams extends z.input<typeof synnaxParamsZ> {}
|
|
@@ -56,13 +76,13 @@ export interface ParsedSynnaxParams extends z.infer<typeof synnaxParamsZ> {}
|
|
|
56
76
|
|
|
57
77
|
/**
|
|
58
78
|
* Client to perform operations against a Synnax cluster.
|
|
59
|
-
*
|
|
60
79
|
* @property channel - Channel client for creating and retrieving channels.
|
|
61
80
|
* @property data - Data client for reading and writing telemetry.
|
|
62
|
-
* @property
|
|
81
|
+
* @property connection - The connection state machine.
|
|
63
82
|
* @property ontology - Client for querying the cluster's ontology.
|
|
64
83
|
*/
|
|
65
84
|
export default class Synnax extends framer.Client {
|
|
85
|
+
readonly key: string;
|
|
66
86
|
readonly createdAt: TimeStamp;
|
|
67
87
|
readonly params: ParsedSynnaxParams;
|
|
68
88
|
readonly ranges: ranger.Client;
|
|
@@ -70,9 +90,9 @@ export default class Synnax extends framer.Client {
|
|
|
70
90
|
readonly auth: auth.Client;
|
|
71
91
|
readonly users: user.Client;
|
|
72
92
|
readonly access: access.Client;
|
|
73
|
-
readonly
|
|
93
|
+
readonly connection: connection.Handle;
|
|
74
94
|
readonly ontology: ontology.Client;
|
|
75
|
-
readonly
|
|
95
|
+
readonly projects: project.Client;
|
|
76
96
|
readonly labels: label.Client;
|
|
77
97
|
readonly statuses: status.Client;
|
|
78
98
|
readonly tasks: task.Client;
|
|
@@ -83,31 +103,31 @@ export default class Synnax extends framer.Client {
|
|
|
83
103
|
readonly views: view.Client;
|
|
84
104
|
readonly schematics: schematic.Client;
|
|
85
105
|
readonly lineplots: lineplot.Client;
|
|
106
|
+
readonly panels: panel.Client;
|
|
86
107
|
readonly logs: log.Client;
|
|
87
108
|
readonly tables: table.Client;
|
|
88
109
|
readonly groups: group.Client;
|
|
89
|
-
|
|
110
|
+
readonly imex: imex.Client;
|
|
111
|
+
private readonly cache: query.Cache;
|
|
90
112
|
private readonly transport: Transport;
|
|
113
|
+
private readonly conn: connection.Client;
|
|
91
114
|
|
|
92
|
-
/**
|
|
93
|
-
* The version of the client.
|
|
94
|
-
*/
|
|
115
|
+
/** The version of the client. */
|
|
95
116
|
readonly clientVersion: string = __VERSION__;
|
|
96
117
|
|
|
97
118
|
/**
|
|
98
119
|
* @param props.host - Hostname of a node in the cluster.
|
|
99
120
|
* @param props.port - Port of the node in the cluster.
|
|
100
|
-
* @param props.username - Username for authentication. Not required if the
|
|
101
|
-
*
|
|
102
|
-
* @param props.password - Password for authentication. Not required if the
|
|
103
|
-
*
|
|
104
|
-
* @param props.connectivityPollFrequency -
|
|
105
|
-
*
|
|
106
|
-
* @param props.secure - Whether to connect to the cluster using TLS. The cluster
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* the client from polling the cluster for connectivity information.
|
|
121
|
+
* @param props.username - Username for authentication. Not required if the cluster is
|
|
122
|
+
* insecure.
|
|
123
|
+
* @param props.password - Password for authentication. Not required if the cluster is
|
|
124
|
+
* insecure.
|
|
125
|
+
* @param props.connectivityPollFrequency - Heartbeat cadence while the connection is
|
|
126
|
+
* healthy. Defaults to 30 seconds.
|
|
127
|
+
* @param props.secure - Whether to connect to the cluster using TLS. The cluster must
|
|
128
|
+
* be configured to support TLS. Defaults to false. A Synnax client must be closed
|
|
129
|
+
* when it is no longer needed. This stops the connection machine and closes the
|
|
130
|
+
* change stream.
|
|
111
131
|
*/
|
|
112
132
|
constructor(params: SynnaxParams) {
|
|
113
133
|
const parsedParams = zod.parse(synnaxParamsZ, params);
|
|
@@ -119,88 +139,192 @@ export default class Synnax extends framer.Client {
|
|
|
119
139
|
connectivityPollFrequency,
|
|
120
140
|
clockSkewThreshold,
|
|
121
141
|
secure,
|
|
122
|
-
retry
|
|
142
|
+
retry,
|
|
123
143
|
} = parsedParams;
|
|
124
144
|
const transport = new Transport(
|
|
125
|
-
new URL({ host, port: Number(port) }),
|
|
126
|
-
|
|
145
|
+
new url.URL({ host, port: Number(port) }),
|
|
146
|
+
retry,
|
|
127
147
|
secure,
|
|
128
148
|
);
|
|
129
149
|
transport.use(errorsMiddleware);
|
|
130
|
-
|
|
131
|
-
|
|
150
|
+
// The arrow reads this.channels only when called, after construction completes.
|
|
151
|
+
const retrieveChannels: framer.ChannelRetriever = async (toRetrieve) => {
|
|
152
|
+
const result = await this.channels.retrieve(
|
|
153
|
+
array.toArray(toRetrieve) as channel.Key[] | channel.Name[],
|
|
154
|
+
);
|
|
155
|
+
return result.map((ch) => ch.payload);
|
|
156
|
+
};
|
|
157
|
+
super({ stream: transport.stream, unary: transport.unary, retrieveChannels });
|
|
158
|
+
const cache = new query.Cache({
|
|
159
|
+
openStreamer: parsedParams.cache
|
|
160
|
+
? async (config) => await this.openStreamer(config)
|
|
161
|
+
: null,
|
|
162
|
+
breaker: retry,
|
|
163
|
+
onStreamLive: () => this.conn.notify({ type: "stream.live" }),
|
|
164
|
+
onStreamDrop: (error) => this.conn.notify({ type: "stream.drop", error }),
|
|
165
|
+
onStreamDenied: (error) => this.conn.notify({ type: "stream.denied", error }),
|
|
166
|
+
onError: parsedParams.onInternalError,
|
|
167
|
+
});
|
|
168
|
+
this.cache = cache;
|
|
169
|
+
this.conn = new connection.Client({
|
|
170
|
+
unary: transport.unaryNoRetry,
|
|
171
|
+
address: `${host}:${Number(port)}`,
|
|
172
|
+
name: parsedParams.name,
|
|
173
|
+
clockSkewThreshold: new TimeSpan(clockSkewThreshold).abs(),
|
|
174
|
+
requiresStream: parsedParams.cache,
|
|
175
|
+
retry,
|
|
176
|
+
heartbeatInterval: connectivityPollFrequency,
|
|
177
|
+
stream: {
|
|
178
|
+
reset: async () => await cache.reset(),
|
|
179
|
+
ensure: async () => await cache.ensureStreaming(),
|
|
180
|
+
},
|
|
181
|
+
onInternalError: parsedParams.onInternalError,
|
|
182
|
+
});
|
|
183
|
+
this.connection = this.conn;
|
|
184
|
+
cache.onEpoch((epoch) => this.conn.notify({ type: "epoch.advanced", epoch }));
|
|
185
|
+
transport.unary.use(this.conn.middleware());
|
|
186
|
+
// The auth client fails fast: login retries belong to the request that triggered
|
|
187
|
+
// them (the breaker-wrapped unary or the check loop), never stacked beneath it.
|
|
188
|
+
this.auth = new auth.Client(
|
|
189
|
+
transport.unaryNoRetry,
|
|
190
|
+
{ username, password },
|
|
191
|
+
{
|
|
192
|
+
onSuccess: () => this.conn.notify({ type: "auth.success" }),
|
|
193
|
+
onFailure: (error) => this.conn.notify({ type: "auth.failure", error }),
|
|
194
|
+
},
|
|
132
195
|
);
|
|
133
|
-
super(transport.stream, transport.unary, chRetriever);
|
|
134
|
-
this.auth = new auth.Client(transport.unary, { username, password });
|
|
135
196
|
transport.use(this.auth.middleware());
|
|
136
|
-
const chCreator = new channel.Writer(transport.unary
|
|
197
|
+
const chCreator = new channel.Writer(transport.unary);
|
|
198
|
+
this.key = uuid.create();
|
|
137
199
|
this.createdAt = TimeStamp.now();
|
|
138
200
|
this.params = parsedParams;
|
|
139
201
|
this.transport = transport;
|
|
140
|
-
|
|
141
|
-
this.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
this.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
this,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
this
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
this.
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
this.
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
202
|
+
const unary = this.transport.unary;
|
|
203
|
+
this.ontology = new ontology.Client({ unary, cache });
|
|
204
|
+
this.labels = new label.Client({ unary, cache, ontology: this.ontology });
|
|
205
|
+
this.statuses = new status.Client({
|
|
206
|
+
unary,
|
|
207
|
+
cache,
|
|
208
|
+
ontology: this.ontology,
|
|
209
|
+
labels: this.labels,
|
|
210
|
+
});
|
|
211
|
+
this.ranges = new ranger.Client({
|
|
212
|
+
framer: this,
|
|
213
|
+
unary,
|
|
214
|
+
channels: retrieveChannels,
|
|
215
|
+
labels: this.labels,
|
|
216
|
+
ontology: this.ontology,
|
|
217
|
+
cache,
|
|
218
|
+
});
|
|
219
|
+
this.channels = new channel.Client({
|
|
220
|
+
framer: this,
|
|
221
|
+
unary,
|
|
222
|
+
writer: chCreator,
|
|
223
|
+
statuses: this.statuses,
|
|
224
|
+
ranges: this.ranges,
|
|
225
|
+
cache,
|
|
226
|
+
ontology: this.ontology,
|
|
227
|
+
});
|
|
228
|
+
this.control = new control.Client({ unary, cache });
|
|
229
|
+
this.access = new access.Client({ unary, cache, ontology: this.ontology });
|
|
230
|
+
this.users = new user.Client({ unary, cache, ontology: this.ontology });
|
|
231
|
+
this.projects = new project.Client({
|
|
232
|
+
unary,
|
|
233
|
+
file: this.transport.file,
|
|
234
|
+
cache,
|
|
235
|
+
ontology: this.ontology,
|
|
236
|
+
});
|
|
237
|
+
this.tasks = new task.Client({
|
|
238
|
+
unary,
|
|
239
|
+
framer: this,
|
|
240
|
+
ontology: this.ontology,
|
|
241
|
+
ranges: this.ranges,
|
|
242
|
+
cache,
|
|
243
|
+
statusStore: this.statuses.store,
|
|
244
|
+
});
|
|
245
|
+
this.racks = new rack.Client({
|
|
246
|
+
unary,
|
|
247
|
+
tasks: this.tasks,
|
|
248
|
+
cache,
|
|
249
|
+
statusStore: this.statuses.store,
|
|
250
|
+
ontology: this.ontology,
|
|
251
|
+
});
|
|
252
|
+
this.devices = new device.Client({
|
|
253
|
+
unary,
|
|
254
|
+
cache,
|
|
255
|
+
statusStore: this.statuses.store,
|
|
256
|
+
ontology: this.ontology,
|
|
257
|
+
});
|
|
258
|
+
this.arcs = new arc.Client({
|
|
259
|
+
unary,
|
|
260
|
+
stream: this.transport.stream,
|
|
261
|
+
ontology: this.ontology,
|
|
262
|
+
tasks: this.tasks,
|
|
263
|
+
cache,
|
|
264
|
+
statusStore: this.statuses.store,
|
|
265
|
+
});
|
|
266
|
+
this.views = new view.Client({ unary, cache, ontology: this.ontology });
|
|
267
|
+
this.groups = new group.Client({
|
|
268
|
+
unary,
|
|
269
|
+
ontology: this.ontology,
|
|
270
|
+
cache,
|
|
271
|
+
});
|
|
272
|
+
this.schematics = new schematic.Client({
|
|
273
|
+
unary,
|
|
274
|
+
file: this.transport.file,
|
|
275
|
+
ontology: this.ontology,
|
|
276
|
+
cache,
|
|
277
|
+
groupStore: this.groups.store,
|
|
278
|
+
});
|
|
279
|
+
this.lineplots = new lineplot.Client({ unary, cache, ontology: this.ontology });
|
|
280
|
+
this.panels = new panel.Client({
|
|
281
|
+
unary,
|
|
282
|
+
ontology: this.ontology,
|
|
283
|
+
cache,
|
|
284
|
+
});
|
|
285
|
+
this.logs = new log.Client({ unary, cache, ontology: this.ontology });
|
|
286
|
+
this.tables = new table.Client({ unary, cache, ontology: this.ontology });
|
|
287
|
+
this.imex = new imex.Client({ file: this.transport.file });
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Awaits the connection becoming usable: success, or warning when the cluster refuses
|
|
292
|
+
* live updates. Idempotent: resolves immediately when already connected.
|
|
293
|
+
* @throws {AuthError} on a definitive credential rejection.
|
|
294
|
+
* @throws {DisconnectedError} when the cluster cannot be reached after the configured
|
|
295
|
+
* retry budget, or when the client is closed while waiting.
|
|
296
|
+
* @throws {Error} if the timeout elapses first.
|
|
297
|
+
*/
|
|
298
|
+
async connect({ timeout }: ConnectOptions = {}): Promise<connection.Status> {
|
|
299
|
+
return await this.conn.connect(timeout);
|
|
181
300
|
}
|
|
182
301
|
|
|
183
|
-
|
|
184
|
-
|
|
302
|
+
/** Supplies new credentials after an auth failure and resumes connecting. */
|
|
303
|
+
reauthenticate(credentials: auth.Credentials): void {
|
|
304
|
+
this.auth.setCredentials(credentials);
|
|
305
|
+
this.conn.notify({ type: "credentials.replaced" });
|
|
185
306
|
}
|
|
186
307
|
|
|
187
|
-
|
|
188
|
-
|
|
308
|
+
/**
|
|
309
|
+
* Closes the client, stopping the connection check loop and tearing down the
|
|
310
|
+
* query cache and its change stream. Resolves once both are closed.
|
|
311
|
+
* @throws {AggregateError} carrying every underlying close failure.
|
|
312
|
+
*/
|
|
313
|
+
async close(): Promise<void> {
|
|
314
|
+
const results = await Promise.allSettled([this.conn.close(), this.cache.close()]);
|
|
315
|
+
const failures = results.filter((r) => r.status === "rejected");
|
|
316
|
+
if (failures.length > 0)
|
|
317
|
+
throw new AggregateError(
|
|
318
|
+
failures.map((f) => f.reason),
|
|
319
|
+
"failed to close the client",
|
|
320
|
+
);
|
|
189
321
|
}
|
|
190
322
|
}
|
|
191
323
|
|
|
192
|
-
export interface
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
export const newConnectionChecker = (params: CheckConnectionParams) => {
|
|
201
|
-
const { host, port, secure, name, retry } = params;
|
|
202
|
-
const retryConfig = zod.parse(breaker.breakerConfigZ.optional(), retry);
|
|
203
|
-
const url = new URL({ host, port: Number(port) });
|
|
204
|
-
const transport = new Transport(url, retryConfig, secure);
|
|
205
|
-
return new connection.Checker(transport.unary, undefined, __VERSION__, name);
|
|
206
|
-
};
|
|
324
|
+
export interface ConnectOptions {
|
|
325
|
+
/**
|
|
326
|
+
* Maximum time to wait before rejecting. Without it, connect rejects when
|
|
327
|
+
* the connection escalates to error(unreachable) after its retry budget.
|
|
328
|
+
*/
|
|
329
|
+
timeout?: CrudeTimeSpan;
|
|
330
|
+
}
|