@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
|
@@ -0,0 +1,151 @@
|
|
|
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
|
+
// Code generated by Oracle. DO NOT EDIT.
|
|
11
|
+
|
|
12
|
+
import { id, zod } from "@synnaxlabs/x";
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
|
|
15
|
+
import { channel } from "@/channel";
|
|
16
|
+
import { device } from "@/device";
|
|
17
|
+
import { task } from "@/task";
|
|
18
|
+
|
|
19
|
+
/** PDOAddress addresses a PDO entry explicitly in the CoE object dictionary. */
|
|
20
|
+
export const pdoAddressZ = z.object({
|
|
21
|
+
/** index is the CoE object dictionary index of the PDO entry. */
|
|
22
|
+
index: zod.uint16.default(0),
|
|
23
|
+
/** subIndex is the CoE object dictionary sub-index of the PDO entry. */
|
|
24
|
+
subIndex: zod.uint8.default(0),
|
|
25
|
+
/** bitLength is the size of the PDO entry, in bits. */
|
|
26
|
+
bitLength: zod.uint8.default(16),
|
|
27
|
+
/** dataType is the data type of the PDO entry. */
|
|
28
|
+
dataType: z.string().default("uint16"),
|
|
29
|
+
});
|
|
30
|
+
export interface PDOAddress extends z.infer<typeof pdoAddressZ> {}
|
|
31
|
+
|
|
32
|
+
/** BaseReadChannel carries the fields every EtherCAT read channel shares. */
|
|
33
|
+
export const baseReadChannelZ = z.object({
|
|
34
|
+
/** key uniquely identifies the channel within the task. */
|
|
35
|
+
key: z.string().default(id.create),
|
|
36
|
+
/** name is the human-readable channel name. */
|
|
37
|
+
name: z.string().default(""),
|
|
38
|
+
/** disabled is true when the channel is excluded from acquisition. */
|
|
39
|
+
disabled: z.boolean().default(false),
|
|
40
|
+
/** channel is the Synnax channel that raw samples are written to. */
|
|
41
|
+
channel: channel.keyZ.default(0),
|
|
42
|
+
/** device is the key of the slave device the channel reads from. */
|
|
43
|
+
device: device.keyZ.default(""),
|
|
44
|
+
});
|
|
45
|
+
export interface BaseReadChannel extends z.infer<typeof baseReadChannelZ> {}
|
|
46
|
+
|
|
47
|
+
/** BaseWriteChannel carries the fields every EtherCAT write channel shares. */
|
|
48
|
+
export const baseWriteChannelZ = z.object({
|
|
49
|
+
/** key uniquely identifies the channel within the task. */
|
|
50
|
+
key: z.string().default(id.create),
|
|
51
|
+
/** name is the human-readable channel name. */
|
|
52
|
+
name: z.string().default(""),
|
|
53
|
+
/** disabled is true when the channel is excluded from the task. */
|
|
54
|
+
disabled: z.boolean().default(false),
|
|
55
|
+
/** cmdChannel is the Synnax channel commands are read from. */
|
|
56
|
+
cmdChannel: channel.keyZ.default(0),
|
|
57
|
+
/** stateChannel is the Synnax channel the output state is written to. */
|
|
58
|
+
stateChannel: channel.keyZ.default(0),
|
|
59
|
+
/** cmdChannelName is the human-readable name of the command channel. */
|
|
60
|
+
cmdChannelName: z.string().default(""),
|
|
61
|
+
/** stateChannelName is the human-readable name of the state channel. */
|
|
62
|
+
stateChannelName: z.string().default(""),
|
|
63
|
+
/** device is the key of the slave device the channel writes to. */
|
|
64
|
+
device: device.keyZ.default(""),
|
|
65
|
+
});
|
|
66
|
+
export interface BaseWriteChannel extends z.infer<typeof baseWriteChannelZ> {}
|
|
67
|
+
|
|
68
|
+
export const scanConfigZ = task.scanConfigZ;
|
|
69
|
+
export interface ScanConfig extends z.infer<typeof scanConfigZ> {}
|
|
70
|
+
|
|
71
|
+
/** AutomaticReadChannel resolves its PDO address from the slave's discovered PDOs. */
|
|
72
|
+
export const automaticReadChannelZ = baseReadChannelZ.extend({
|
|
73
|
+
type: z.literal("automatic"),
|
|
74
|
+
/** pdo is the name of the PDO entry to resolve on the slave. */
|
|
75
|
+
pdo: z.string().default(""),
|
|
76
|
+
});
|
|
77
|
+
export interface AutomaticReadChannel extends z.infer<typeof automaticReadChannelZ> {}
|
|
78
|
+
|
|
79
|
+
/** ManualReadChannel specifies its PDO address inline. */
|
|
80
|
+
export const manualReadChannelZ = baseReadChannelZ.extend(pdoAddressZ.shape).extend({
|
|
81
|
+
type: z.literal("manual"),
|
|
82
|
+
});
|
|
83
|
+
export interface ManualReadChannel extends z.infer<typeof manualReadChannelZ> {}
|
|
84
|
+
|
|
85
|
+
export const READ_CHANNEL_TYPES = ["automatic", "manual"] as const;
|
|
86
|
+
export const readChannelTypeZ = z.enum(READ_CHANNEL_TYPES);
|
|
87
|
+
export type ReadChannelType = z.infer<typeof readChannelTypeZ>;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* ReadChannel is a single EtherCAT read channel (TxPDO, slave to master). The type
|
|
91
|
+
* field selects how the PDO entry is addressed.
|
|
92
|
+
*/
|
|
93
|
+
export const readChannelZ = z.discriminatedUnion("type", [
|
|
94
|
+
automaticReadChannelZ,
|
|
95
|
+
manualReadChannelZ,
|
|
96
|
+
]);
|
|
97
|
+
export type ReadChannel = AutomaticReadChannel | ManualReadChannel;
|
|
98
|
+
|
|
99
|
+
export const READ_CHANNEL_SCHEMAS: {
|
|
100
|
+
[K in ReadChannelType]: z.ZodType<Extract<ReadChannel, { type: K }>>;
|
|
101
|
+
} = {
|
|
102
|
+
automatic: automaticReadChannelZ,
|
|
103
|
+
manual: manualReadChannelZ,
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/** AutomaticWriteChannel resolves its PDO address from the slave's discovered PDOs. */
|
|
107
|
+
export const automaticWriteChannelZ = baseWriteChannelZ.extend({
|
|
108
|
+
type: z.literal("automatic"),
|
|
109
|
+
/** pdo is the name of the PDO entry to resolve on the slave. */
|
|
110
|
+
pdo: z.string().default(""),
|
|
111
|
+
});
|
|
112
|
+
export interface AutomaticWriteChannel extends z.infer<typeof automaticWriteChannelZ> {}
|
|
113
|
+
|
|
114
|
+
/** ManualWriteChannel specifies its PDO address inline. */
|
|
115
|
+
export const manualWriteChannelZ = baseWriteChannelZ.extend(pdoAddressZ.shape).extend({
|
|
116
|
+
type: z.literal("manual"),
|
|
117
|
+
});
|
|
118
|
+
export interface ManualWriteChannel extends z.infer<typeof manualWriteChannelZ> {}
|
|
119
|
+
|
|
120
|
+
export const WRITE_CHANNEL_TYPES = ["automatic", "manual"] as const;
|
|
121
|
+
export const writeChannelTypeZ = z.enum(WRITE_CHANNEL_TYPES);
|
|
122
|
+
export type WriteChannelType = z.infer<typeof writeChannelTypeZ>;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* WriteChannel is a single EtherCAT write channel (RxPDO, master to slave). The type
|
|
126
|
+
* field selects how the PDO entry is addressed.
|
|
127
|
+
*/
|
|
128
|
+
export const writeChannelZ = z.discriminatedUnion("type", [
|
|
129
|
+
automaticWriteChannelZ,
|
|
130
|
+
manualWriteChannelZ,
|
|
131
|
+
]);
|
|
132
|
+
export type WriteChannel = AutomaticWriteChannel | ManualWriteChannel;
|
|
133
|
+
|
|
134
|
+
export const WRITE_CHANNEL_SCHEMAS: {
|
|
135
|
+
[K in WriteChannelType]: z.ZodType<Extract<WriteChannel, { type: K }>>;
|
|
136
|
+
} = {
|
|
137
|
+
automatic: automaticWriteChannelZ,
|
|
138
|
+
manual: manualWriteChannelZ,
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export const readConfigZ = task.readConfigZ.extend({
|
|
142
|
+
channels: readChannelZ.array().default(() => []),
|
|
143
|
+
});
|
|
144
|
+
export interface ReadConfig extends z.infer<typeof readConfigZ> {}
|
|
145
|
+
|
|
146
|
+
export const writeConfigZ = task.persistConfigZ.extend({
|
|
147
|
+
stateRate: z.number().default(25),
|
|
148
|
+
executionRate: z.number().default(1000),
|
|
149
|
+
channels: writeChannelZ.array().default(() => []),
|
|
150
|
+
});
|
|
151
|
+
export interface WriteConfig extends z.infer<typeof writeConfigZ> {}
|
package/src/framer/adapter.ts
CHANGED
|
@@ -7,43 +7,61 @@
|
|
|
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 { type CrudeSeries, Series } from "@synnaxlabs/x";
|
|
11
11
|
|
|
12
|
-
import { channel } from "@/channel";
|
|
13
|
-
import {
|
|
12
|
+
import { type channel } from "@/channel";
|
|
13
|
+
import { analyzeParams, paramsZ } from "@/channel/payload";
|
|
14
|
+
import { QueryError, ValidationError } from "@/errors";
|
|
14
15
|
import { Codec } from "@/framer/codec";
|
|
15
16
|
import { type CrudeFrame, Frame } from "@/framer/frame";
|
|
16
17
|
|
|
18
|
+
/** Fetches channel payloads. Missing channels are omitted, not thrown. */
|
|
19
|
+
export type ChannelRetriever = (channels: channel.Params) => Promise<channel.Payload[]>;
|
|
20
|
+
|
|
21
|
+
/** Fetches channel payloads, throwing a {@link QueryError} when any is missing. */
|
|
22
|
+
const retrieveRequired = async (
|
|
23
|
+
retrieve: ChannelRetriever,
|
|
24
|
+
channels: channel.Params,
|
|
25
|
+
): Promise<channel.Payload[]> => {
|
|
26
|
+
const { normalized } = analyzeParams(channels);
|
|
27
|
+
const results = await retrieve(normalized);
|
|
28
|
+
const notFound: (channel.Key | channel.Name)[] = [];
|
|
29
|
+
normalized.forEach((v) => {
|
|
30
|
+
if (results.find((c) => c.name === v || c.key === v) == null) notFound.push(v);
|
|
31
|
+
});
|
|
32
|
+
if (notFound.length > 0)
|
|
33
|
+
throw new QueryError(`Could not find channels: ${JSON.stringify(notFound)}`);
|
|
34
|
+
return results;
|
|
35
|
+
};
|
|
36
|
+
|
|
17
37
|
export class ReadAdapter {
|
|
18
38
|
private adapter: Map<channel.Key, string> | null;
|
|
19
|
-
|
|
39
|
+
private readonly retrieveChannels: ChannelRetriever;
|
|
20
40
|
keys: Set<channel.Key>;
|
|
21
41
|
codec: Codec;
|
|
22
42
|
|
|
23
|
-
private constructor(
|
|
24
|
-
this.
|
|
43
|
+
private constructor(retrieveChannels: ChannelRetriever) {
|
|
44
|
+
this.retrieveChannels = retrieveChannels;
|
|
25
45
|
this.adapter = null;
|
|
26
46
|
this.keys = new Set();
|
|
27
47
|
this.codec = new Codec();
|
|
28
48
|
}
|
|
29
49
|
|
|
30
50
|
static async open(
|
|
31
|
-
|
|
51
|
+
retrieveChannels: ChannelRetriever,
|
|
32
52
|
channels: channel.Params,
|
|
33
53
|
): Promise<ReadAdapter> {
|
|
34
|
-
const adapter = new ReadAdapter(
|
|
54
|
+
const adapter = new ReadAdapter(retrieveChannels);
|
|
35
55
|
await adapter.update(channels);
|
|
36
56
|
return adapter;
|
|
37
57
|
}
|
|
38
58
|
|
|
39
59
|
async update(channels: channel.Params): Promise<boolean> {
|
|
40
|
-
const { variant, normalized } =
|
|
41
|
-
const fetched = await this.
|
|
60
|
+
const { variant, normalized } = analyzeParams(channels);
|
|
61
|
+
const fetched = await this.retrieveChannels(normalized);
|
|
42
62
|
const newKeys = fetched.map((c) => c.key);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
compare.EQUAL
|
|
46
|
-
)
|
|
63
|
+
const newKeySet = new Set(newKeys);
|
|
64
|
+
if (newKeySet.size === this.keys.size && newKeySet.isSubsetOf(this.keys))
|
|
47
65
|
return false;
|
|
48
66
|
this.codec.update(
|
|
49
67
|
newKeys,
|
|
@@ -51,7 +69,7 @@ export class ReadAdapter {
|
|
|
51
69
|
);
|
|
52
70
|
if (variant === "keys") {
|
|
53
71
|
this.adapter = null;
|
|
54
|
-
this.keys = new Set(normalized
|
|
72
|
+
this.keys = new Set(normalized);
|
|
55
73
|
return true;
|
|
56
74
|
}
|
|
57
75
|
const a = new Map<channel.Key, string>();
|
|
@@ -74,10 +92,10 @@ export class ReadAdapter {
|
|
|
74
92
|
if (shouldFilter) return frm.filter((k) => this.keys.has(k as channel.Key));
|
|
75
93
|
return frm;
|
|
76
94
|
}
|
|
77
|
-
const
|
|
95
|
+
const { adapter } = this;
|
|
78
96
|
return frm.mapFilter((col, arr) => {
|
|
79
97
|
if (typeof col === "number") {
|
|
80
|
-
const name =
|
|
98
|
+
const name = adapter.get(col);
|
|
81
99
|
if (name == null) return [col, arr, false];
|
|
82
100
|
return [name, arr, true];
|
|
83
101
|
}
|
|
@@ -87,29 +105,31 @@ export class ReadAdapter {
|
|
|
87
105
|
}
|
|
88
106
|
|
|
89
107
|
export class WriteAdapter {
|
|
90
|
-
private
|
|
91
|
-
|
|
108
|
+
private byName: Map<channel.Name, channel.Payload> | null;
|
|
109
|
+
private byKey: Map<channel.Key, channel.Payload>;
|
|
110
|
+
private readonly retrieveChannels: ChannelRetriever;
|
|
92
111
|
keys: channel.Key[];
|
|
93
112
|
codec: Codec;
|
|
94
113
|
|
|
95
|
-
private constructor(
|
|
96
|
-
this.
|
|
97
|
-
this.
|
|
114
|
+
private constructor(retrieveChannels: ChannelRetriever) {
|
|
115
|
+
this.retrieveChannels = retrieveChannels;
|
|
116
|
+
this.byName = null;
|
|
117
|
+
this.byKey = new Map();
|
|
98
118
|
this.keys = [];
|
|
99
119
|
this.codec = new Codec();
|
|
100
120
|
}
|
|
101
121
|
|
|
102
122
|
static async open(
|
|
103
|
-
|
|
123
|
+
retrieveChannels: ChannelRetriever,
|
|
104
124
|
channels: channel.Params,
|
|
105
125
|
): Promise<WriteAdapter> {
|
|
106
|
-
const adapter = new WriteAdapter(
|
|
126
|
+
const adapter = new WriteAdapter(retrieveChannels);
|
|
107
127
|
await adapter.update(channels);
|
|
108
128
|
return adapter;
|
|
109
129
|
}
|
|
110
130
|
|
|
111
131
|
async adaptParams(data: channel.Params): Promise<channel.Key[]> {
|
|
112
|
-
const arrParams =
|
|
132
|
+
const arrParams = paramsZ.parse(data);
|
|
113
133
|
const keys = await Promise.all(
|
|
114
134
|
arrParams.map(async (p) => await this.adaptToKey(p)),
|
|
115
135
|
);
|
|
@@ -117,15 +137,14 @@ export class WriteAdapter {
|
|
|
117
137
|
}
|
|
118
138
|
|
|
119
139
|
async update(channels: channel.Params): Promise<boolean> {
|
|
120
|
-
const results = await
|
|
140
|
+
const results = await retrieveRequired(this.retrieveChannels, channels);
|
|
121
141
|
const newKeys = results.map((c) => c.key);
|
|
122
142
|
const previousKeySet = new Set(this.keys);
|
|
123
143
|
const newKeySet = new Set(newKeys);
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
this.adapter = new Map<string, channel.Key>(results.map((c) => [c.name, c.key]));
|
|
144
|
+
if (newKeySet.size === previousKeySet.size && newKeySet.isSubsetOf(previousKeySet))
|
|
145
|
+
return false;
|
|
146
|
+
this.byName = new Map(results.map((c) => [c.name, c]));
|
|
147
|
+
this.byKey = new Map(results.map((c) => [c.key, c]));
|
|
129
148
|
this.keys = newKeys;
|
|
130
149
|
this.codec.update(
|
|
131
150
|
this.keys,
|
|
@@ -137,7 +156,13 @@ export class WriteAdapter {
|
|
|
137
156
|
private async fetchChannel(
|
|
138
157
|
ch: channel.Key | channel.Name | channel.Payload,
|
|
139
158
|
): Promise<channel.Payload> {
|
|
140
|
-
|
|
159
|
+
// The channel set is fixed between updates, so cached payloads cannot go stale.
|
|
160
|
+
let cached: channel.Payload | undefined;
|
|
161
|
+
if (typeof ch === "number") cached = this.byKey.get(ch);
|
|
162
|
+
else if (typeof ch === "string") cached = this.byName?.get(ch);
|
|
163
|
+
else cached = this.byKey.get(ch.key);
|
|
164
|
+
if (cached != null) return cached;
|
|
165
|
+
const res = await this.retrieveChannels(ch);
|
|
141
166
|
if (res.length === 0) throw new Error(`Channel ${JSON.stringify(ch)} not found`);
|
|
142
167
|
return res[0];
|
|
143
168
|
}
|
|
@@ -154,9 +179,7 @@ export class WriteAdapter {
|
|
|
154
179
|
|
|
155
180
|
async adapt(
|
|
156
181
|
columnsOrData:
|
|
157
|
-
| channel.
|
|
158
|
-
| Record<channel.Key | channel.Name, CrudeSeries>
|
|
159
|
-
| CrudeFrame,
|
|
182
|
+
channel.Params | Record<channel.Key | channel.Name, CrudeSeries> | CrudeFrame,
|
|
160
183
|
series?: CrudeSeries | CrudeSeries[],
|
|
161
184
|
): Promise<Frame> {
|
|
162
185
|
if (typeof columnsOrData === "string" || typeof columnsOrData === "number") {
|
|
@@ -205,9 +228,9 @@ export class WriteAdapter {
|
|
|
205
228
|
|
|
206
229
|
if (columnsOrData instanceof Frame || columnsOrData instanceof Map) {
|
|
207
230
|
const fr = new Frame(columnsOrData);
|
|
208
|
-
if (this.
|
|
231
|
+
if (this.byName == null) return fr;
|
|
209
232
|
const cols = fr.columns.map((col_) => {
|
|
210
|
-
const col = typeof col_ === "string" ? this.
|
|
233
|
+
const col = typeof col_ === "string" ? this.byName?.get(col_)?.key : col_;
|
|
211
234
|
if (col == null)
|
|
212
235
|
throw new ValidationError(`
|
|
213
236
|
Channel ${col_} was not provided in the list of channels when opening the writer
|
|
@@ -0,0 +1,67 @@
|
|
|
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 { DataType, TimeRange } from "@synnaxlabs/x";
|
|
11
|
+
|
|
12
|
+
import { type channel } from "@/channel";
|
|
13
|
+
import { Codec } from "@/framer/codec";
|
|
14
|
+
import { Frame, type Payload } from "@/framer/frame";
|
|
15
|
+
|
|
16
|
+
export const createKeys = (n: number): channel.Key[] =>
|
|
17
|
+
Array.from({ length: n }, (_, i) => i + 1);
|
|
18
|
+
|
|
19
|
+
interface PayloadOptions {
|
|
20
|
+
/** Base alignment for every series in the frame. */
|
|
21
|
+
alignment?: bigint;
|
|
22
|
+
/** Give every series a distinct time range and alignment, defeating the codec's
|
|
23
|
+
* equal-props fast paths. */
|
|
24
|
+
varied?: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Builds a frame payload with one float32 series per key. */
|
|
28
|
+
export const createPayload = (
|
|
29
|
+
keys: channel.Key[],
|
|
30
|
+
samplesPerChannel: number,
|
|
31
|
+
{ alignment = 0n, varied = false }: PayloadOptions = {},
|
|
32
|
+
): Payload => {
|
|
33
|
+
const data = new Float32Array(samplesPerChannel);
|
|
34
|
+
for (let i = 0; i < data.length; i++) data[i] = i;
|
|
35
|
+
return {
|
|
36
|
+
keys: [...keys],
|
|
37
|
+
series: keys.map((_, i) => ({
|
|
38
|
+
dataType: DataType.FLOAT32,
|
|
39
|
+
data: data.buffer.slice(0),
|
|
40
|
+
alignment: varied ? alignment + BigInt(i) : alignment,
|
|
41
|
+
timeRange: varied ? new TimeRange(i * 1000, (i + 1) * 1000) : TimeRange.ZERO,
|
|
42
|
+
})),
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/** Builds a sequence of frames with monotonically increasing alignments, the shape
|
|
47
|
+
* the streaming run loop ingests in steady state. */
|
|
48
|
+
export const createSequence = (
|
|
49
|
+
keys: channel.Key[],
|
|
50
|
+
samplesPerChannel: number,
|
|
51
|
+
count: number,
|
|
52
|
+
): Frame[] =>
|
|
53
|
+
Array.from(
|
|
54
|
+
{ length: count },
|
|
55
|
+
(_, i) =>
|
|
56
|
+
new Frame(
|
|
57
|
+
createPayload(keys, samplesPerChannel, {
|
|
58
|
+
alignment: BigInt(i * samplesPerChannel),
|
|
59
|
+
}),
|
|
60
|
+
),
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
export const createCodec = (keys: channel.Key[]): Codec =>
|
|
64
|
+
new Codec(
|
|
65
|
+
keys,
|
|
66
|
+
keys.map(() => DataType.FLOAT32),
|
|
67
|
+
);
|
|
@@ -0,0 +1,115 @@
|
|
|
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 { TimeSpan } from "@synnaxlabs/x";
|
|
11
|
+
|
|
12
|
+
import { type channel } from "@/channel";
|
|
13
|
+
import { UnexpectedError } from "@/errors";
|
|
14
|
+
import { type DynamicProps } from "@/framer/cache/dynamic";
|
|
15
|
+
import {
|
|
16
|
+
DEFAULT_STATIC_PROPS,
|
|
17
|
+
type StaticProps,
|
|
18
|
+
zeroGCMetrics,
|
|
19
|
+
} from "@/framer/cache/static";
|
|
20
|
+
import { Unary } from "@/framer/cache/unary";
|
|
21
|
+
|
|
22
|
+
const DEFAULT_DYNAMIC_BUFFER_SIZE: TimeSpan = TimeSpan.seconds(60);
|
|
23
|
+
|
|
24
|
+
/** Props for instantiating a {@link Cache} */
|
|
25
|
+
export interface CacheProps
|
|
26
|
+
extends StaticProps, Partial<Pick<DynamicProps, "dynamicBufferSize">> {
|
|
27
|
+
/**
|
|
28
|
+
* Sets the interval at which the cache will garbage collect, removing stale data
|
|
29
|
+
* that is not in use by the rest of the program.
|
|
30
|
+
* @default TimeSpan.seconds(30)
|
|
31
|
+
*/
|
|
32
|
+
gcInterval?: TimeSpan;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Maintains an in-memory cache of channel data. Entries are created on demand and
|
|
37
|
+
* carry no channel metadata; buffer types derive from the data written to them.
|
|
38
|
+
*/
|
|
39
|
+
export class Cache {
|
|
40
|
+
private readonly props: Required<CacheProps>;
|
|
41
|
+
private readonly cache = new Map<channel.Key, Unary>();
|
|
42
|
+
private readonly gcInterval: ReturnType<typeof setInterval>;
|
|
43
|
+
private closed = false;
|
|
44
|
+
|
|
45
|
+
constructor(props: CacheProps = {}) {
|
|
46
|
+
const {
|
|
47
|
+
dynamicBufferSize = DEFAULT_DYNAMIC_BUFFER_SIZE,
|
|
48
|
+
gcInterval = TimeSpan.seconds(30),
|
|
49
|
+
instrumentation = DEFAULT_STATIC_PROPS.instrumentation,
|
|
50
|
+
transform = DEFAULT_STATIC_PROPS.transform,
|
|
51
|
+
staleEntryThreshold = DEFAULT_STATIC_PROPS.staleEntryThreshold,
|
|
52
|
+
} = props;
|
|
53
|
+
this.props = {
|
|
54
|
+
dynamicBufferSize,
|
|
55
|
+
gcInterval,
|
|
56
|
+
instrumentation,
|
|
57
|
+
transform,
|
|
58
|
+
staleEntryThreshold,
|
|
59
|
+
};
|
|
60
|
+
this.gcInterval = setInterval(() => this.gc(), gcInterval.milliseconds);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Returns the cache entry for the given channel, creating an empty one if it does
|
|
65
|
+
* not exist.
|
|
66
|
+
* @throws {UnexpectedError} if the cache has been closed.
|
|
67
|
+
*/
|
|
68
|
+
get(key: channel.Key): Unary {
|
|
69
|
+
if (this.closed)
|
|
70
|
+
throw new UnexpectedError(`get(${key}) called on a closed telemetry cache`);
|
|
71
|
+
const existing = this.cache.get(key);
|
|
72
|
+
if (existing != null) return existing;
|
|
73
|
+
const { dynamicBufferSize, transform, staleEntryThreshold } = this.props;
|
|
74
|
+
const unary = new Unary({
|
|
75
|
+
dynamicBufferSize,
|
|
76
|
+
transform,
|
|
77
|
+
staleEntryThreshold,
|
|
78
|
+
instrumentation: this.props.instrumentation.child(`cache-${key}`),
|
|
79
|
+
});
|
|
80
|
+
this.cache.set(key, unary);
|
|
81
|
+
return unary;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private gc(): void {
|
|
85
|
+
const {
|
|
86
|
+
instrumentation: { L },
|
|
87
|
+
} = this.props;
|
|
88
|
+
L.info("starting garbage collection");
|
|
89
|
+
const total = zeroGCMetrics();
|
|
90
|
+
this.cache.forEach((c) => {
|
|
91
|
+
const res = c.gc();
|
|
92
|
+
total.purgedSeries += res.purgedSeries;
|
|
93
|
+
total.purgedBytes = total.purgedBytes.add(res.purgedBytes);
|
|
94
|
+
});
|
|
95
|
+
L.info(
|
|
96
|
+
"garbage collection complete",
|
|
97
|
+
{
|
|
98
|
+
purgedSeries: total.purgedSeries,
|
|
99
|
+
purgedBytes: total.purgedBytes.toString(),
|
|
100
|
+
},
|
|
101
|
+
true,
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Closes the cache, clearing all entries and stopping garbage collection. All
|
|
107
|
+
* methods throw after close.
|
|
108
|
+
*/
|
|
109
|
+
close(): void {
|
|
110
|
+
this.closed = true;
|
|
111
|
+
clearInterval(this.gcInterval);
|
|
112
|
+
this.cache.forEach((c) => c.close());
|
|
113
|
+
this.cache.clear();
|
|
114
|
+
}
|
|
115
|
+
}
|