@synnaxlabs/client 0.56.2 → 0.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client-B08VDLSA.js +14463 -0
- package/dist/client-B08VDLSA.js.map +1 -0
- package/dist/client.js +1128 -14876
- package/dist/client.js.map +1 -0
- package/dist/src/access/client.d.ts +10 -1
- package/dist/src/access/client.d.ts.map +1 -1
- package/dist/src/access/enforce.d.ts.map +1 -1
- package/dist/src/access/external.d.ts +1 -0
- package/dist/src/access/external.d.ts.map +1 -1
- package/dist/src/access/granted.d.ts +39 -0
- package/dist/src/access/granted.d.ts.map +1 -0
- package/dist/src/access/policy/client.d.ts +136 -147
- package/dist/src/access/policy/client.d.ts.map +1 -1
- package/dist/src/access/policy/types.gen.d.ts +15 -68
- package/dist/src/access/policy/types.gen.d.ts.map +1 -1
- package/dist/src/access/role/client.d.ts +77 -58
- package/dist/src/access/role/client.d.ts.map +1 -1
- package/dist/src/access/role/types.gen.d.ts +8 -14
- package/dist/src/access/role/types.gen.d.ts.map +1 -1
- package/dist/src/actions/actions.d.ts +5 -6
- package/dist/src/actions/actions.d.ts.map +1 -1
- package/dist/src/actions/controller.d.ts +194 -0
- package/dist/src/actions/controller.d.ts.map +1 -0
- package/dist/src/actions/external.d.ts +1 -0
- package/dist/src/actions/external.d.ts.map +1 -1
- package/dist/src/arc/actions.d.ts +575 -0
- package/dist/src/arc/actions.d.ts.map +1 -0
- package/dist/src/arc/actions.gen.d.ts +1439 -0
- package/dist/src/arc/actions.gen.d.ts.map +1 -0
- package/dist/src/arc/client.d.ts +97 -13
- package/dist/src/arc/client.d.ts.map +1 -1
- package/dist/src/arc/compiler/types.gen.d.ts +3 -3
- package/dist/src/arc/compiler/types.gen.d.ts.map +1 -1
- package/dist/src/arc/external.d.ts +2 -0
- package/dist/src/arc/external.d.ts.map +1 -1
- package/dist/src/arc/graph/types.gen.d.ts +45 -597
- package/dist/src/arc/graph/types.gen.d.ts.map +1 -1
- package/dist/src/arc/ir/index.d.ts +1 -1
- package/dist/src/arc/ir/index.d.ts.map +1 -1
- package/dist/src/arc/ir/ir.d.ts +2 -0
- package/dist/src/arc/ir/ir.d.ts.map +1 -0
- package/dist/src/arc/ir/types.gen.d.ts +58 -2807
- package/dist/src/arc/ir/types.gen.d.ts.map +1 -1
- package/dist/src/arc/module/types.gen.d.ts +18 -1090
- package/dist/src/arc/module/types.gen.d.ts.map +1 -1
- package/dist/src/arc/program/types.gen.d.ts +18 -1090
- package/dist/src/arc/program/types.gen.d.ts.map +1 -1
- package/dist/src/arc/text/types.gen.d.ts +54 -1
- package/dist/src/arc/text/types.gen.d.ts.map +1 -1
- package/dist/src/arc/types/types.gen.d.ts +35 -153
- package/dist/src/arc/types/types.gen.d.ts.map +1 -1
- package/dist/src/arc/types.gen.d.ts +98 -2278
- package/dist/src/arc/types.gen.d.ts.map +1 -1
- package/dist/src/auth/auth.d.ts +14 -2
- package/dist/src/auth/auth.d.ts.map +1 -1
- package/dist/src/channel/client.d.ts +113 -75
- package/dist/src/channel/client.d.ts.map +1 -1
- package/dist/src/channel/external.d.ts +0 -1
- package/dist/src/channel/external.d.ts.map +1 -1
- package/dist/src/channel/payload.d.ts +65 -56
- package/dist/src/channel/payload.d.ts.map +1 -1
- package/dist/src/channel/types.gen.d.ts +26 -73
- package/dist/src/channel/types.gen.d.ts.map +1 -1
- package/dist/src/channel/writer.d.ts +1 -3
- package/dist/src/channel/writer.d.ts.map +1 -1
- package/dist/src/client.d.ts +55 -27
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/connection/client.d.ts +146 -0
- package/dist/src/connection/client.d.ts.map +1 -0
- package/dist/src/connection/external.d.ts +3 -0
- package/dist/src/connection/external.d.ts.map +1 -0
- package/dist/src/connection/index.d.ts +1 -1
- package/dist/src/connection/index.d.ts.map +1 -1
- package/dist/src/connection/status.d.ts +252 -0
- package/dist/src/connection/status.d.ts.map +1 -0
- package/dist/src/control/client.d.ts +31 -7
- package/dist/src/control/client.d.ts.map +1 -1
- package/dist/src/control/state.d.ts +47 -16
- package/dist/src/control/state.d.ts.map +1 -1
- package/dist/src/device/client.d.ts +59 -17
- package/dist/src/device/client.d.ts.map +1 -1
- package/dist/src/device/types.gen.d.ts +17 -67
- package/dist/src/device/types.gen.d.ts.map +1 -1
- package/dist/src/errors.d.ts +17 -20
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/ethercat/external.d.ts +2 -0
- package/dist/src/ethercat/external.d.ts.map +1 -0
- package/dist/src/ethercat/index.d.ts +2 -0
- package/dist/src/ethercat/index.d.ts.map +1 -0
- package/dist/src/ethercat/types.gen.d.ts +243 -0
- package/dist/src/ethercat/types.gen.d.ts.map +1 -0
- package/dist/src/framer/adapter.d.ts +8 -5
- package/dist/src/framer/adapter.d.ts.map +1 -1
- package/dist/src/framer/benchutil.d.ts +19 -0
- package/dist/src/framer/benchutil.d.ts.map +1 -0
- package/dist/src/framer/cache/cache.d.ts +38 -0
- package/dist/src/framer/cache/cache.d.ts.map +1 -0
- package/dist/src/framer/cache/dynamic.d.ts +71 -0
- package/dist/src/framer/cache/dynamic.d.ts.map +1 -0
- package/dist/src/framer/cache/reader.d.ts +43 -0
- package/dist/src/framer/cache/reader.d.ts.map +1 -0
- package/dist/src/framer/cache/static.d.ts +66 -0
- package/dist/src/framer/cache/static.d.ts.map +1 -0
- package/dist/src/framer/cache/streamer.d.ts +86 -0
- package/dist/src/framer/cache/streamer.d.ts.map +1 -0
- package/dist/src/framer/cache/transform.d.ts +18 -0
- package/dist/src/framer/cache/transform.d.ts.map +1 -0
- package/dist/src/framer/cache/unary.d.ts +37 -0
- package/dist/src/framer/cache/unary.d.ts.map +1 -0
- package/dist/src/framer/client.d.ts +35 -14
- package/dist/src/framer/client.d.ts.map +1 -1
- package/dist/src/framer/codec.d.ts.map +1 -1
- package/dist/src/framer/deleter.d.ts +3 -2
- package/dist/src/framer/deleter.d.ts.map +1 -1
- package/dist/src/framer/external.d.ts +6 -0
- package/dist/src/framer/external.d.ts.map +1 -1
- package/dist/src/framer/feed.d.ts +40 -0
- package/dist/src/framer/feed.d.ts.map +1 -0
- package/dist/src/framer/frame.d.ts +16 -20
- package/dist/src/framer/frame.d.ts.map +1 -1
- package/dist/src/framer/hardened.d.ts +70 -0
- package/dist/src/framer/hardened.d.ts.map +1 -0
- package/dist/src/framer/iterator.d.ts +36 -43
- package/dist/src/framer/iterator.d.ts.map +1 -1
- package/dist/src/framer/reader.d.ts +3 -2
- package/dist/src/framer/reader.d.ts.map +1 -1
- package/dist/src/framer/streamer.d.ts +132 -205
- package/dist/src/framer/streamer.d.ts.map +1 -1
- package/dist/src/framer/writer.d.ts +130 -161
- package/dist/src/framer/writer.d.ts.map +1 -1
- package/dist/src/group/client.d.ts +66 -9
- package/dist/src/group/client.d.ts.map +1 -1
- package/dist/src/group/types.gen.d.ts +2 -2
- package/dist/src/http/external.d.ts +2 -0
- package/dist/src/http/external.d.ts.map +1 -0
- package/dist/src/http/index.d.ts +2 -0
- package/dist/src/http/index.d.ts.map +1 -0
- package/dist/src/http/types.gen.d.ts +451 -0
- package/dist/src/http/types.gen.d.ts.map +1 -0
- package/dist/src/imex/client.d.ts +88 -0
- package/dist/src/imex/client.d.ts.map +1 -0
- package/dist/src/imex/index.d.ts +2 -0
- package/dist/src/imex/index.d.ts.map +1 -0
- package/dist/src/index.d.ts +18 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/label/client.d.ts +55 -36
- package/dist/src/label/client.d.ts.map +1 -1
- package/dist/src/label/external.d.ts +2 -0
- package/dist/src/label/external.d.ts.map +1 -1
- package/dist/src/label/payload.d.ts +4 -46
- package/dist/src/label/payload.d.ts.map +1 -1
- package/dist/src/label/store.d.ts +8 -0
- package/dist/src/label/store.d.ts.map +1 -0
- package/dist/src/label/types.gen.d.ts +45 -0
- package/dist/src/label/types.gen.d.ts.map +1 -0
- package/dist/src/labjack/external.d.ts +2 -0
- package/dist/src/labjack/external.d.ts.map +1 -0
- package/dist/src/labjack/index.d.ts +2 -0
- package/dist/src/labjack/index.d.ts.map +1 -0
- package/dist/src/labjack/types.gen.d.ts +442 -0
- package/dist/src/labjack/types.gen.d.ts.map +1 -0
- package/dist/src/lineplot/actions.d.ts +914 -0
- package/dist/src/lineplot/actions.d.ts.map +1 -0
- package/dist/src/lineplot/actions.gen.d.ts +4208 -0
- package/dist/src/lineplot/actions.gen.d.ts.map +1 -0
- package/dist/src/lineplot/client.d.ts +66 -16
- package/dist/src/lineplot/client.d.ts.map +1 -1
- package/dist/src/lineplot/external.d.ts +3 -0
- package/dist/src/lineplot/external.d.ts.map +1 -1
- package/dist/src/lineplot/line.d.ts +16 -0
- package/dist/src/lineplot/line.d.ts.map +1 -0
- package/dist/src/lineplot/types.gen.d.ts +837 -14
- package/dist/src/lineplot/types.gen.d.ts.map +1 -1
- package/dist/src/log/actions.d.ts +271 -0
- package/dist/src/log/actions.d.ts.map +1 -0
- package/dist/src/log/actions.gen.d.ts +1529 -0
- package/dist/src/log/actions.gen.d.ts.map +1 -0
- package/dist/src/log/client.d.ts +66 -16
- package/dist/src/log/client.d.ts.map +1 -1
- package/dist/src/log/external.d.ts +2 -0
- package/dist/src/log/external.d.ts.map +1 -1
- package/dist/src/log/types.gen.d.ts +139 -14
- package/dist/src/log/types.gen.d.ts.map +1 -1
- package/dist/src/modbus/external.d.ts +2 -0
- package/dist/src/modbus/external.d.ts.map +1 -0
- package/dist/src/modbus/index.d.ts +2 -0
- package/dist/src/modbus/index.d.ts.map +1 -0
- package/dist/src/modbus/types.gen.d.ts +280 -0
- package/dist/src/modbus/types.gen.d.ts.map +1 -0
- package/dist/src/ni/external.d.ts +2 -0
- package/dist/src/ni/external.d.ts.map +1 -0
- package/dist/src/ni/index.d.ts +2 -0
- package/dist/src/ni/index.d.ts.map +1 -0
- package/dist/src/ni/types.gen.d.ts +21029 -0
- package/dist/src/ni/types.gen.d.ts.map +1 -0
- package/dist/src/node/index.d.ts +2 -0
- package/dist/src/node/index.d.ts.map +1 -0
- package/dist/src/node/types.gen.d.ts +4 -0
- package/dist/src/node/types.gen.d.ts.map +1 -0
- package/dist/src/ontology/client.d.ts +314 -67
- package/dist/src/ontology/client.d.ts.map +1 -1
- package/dist/src/ontology/external.d.ts +1 -0
- package/dist/src/ontology/external.d.ts.map +1 -1
- package/dist/src/ontology/payload.d.ts +60 -18
- package/dist/src/ontology/payload.d.ts.map +1 -1
- package/dist/src/ontology/store.d.ts +32 -0
- package/dist/src/ontology/store.d.ts.map +1 -0
- package/dist/src/ontology/types.gen.d.ts +3 -2
- package/dist/src/ontology/types.gen.d.ts.map +1 -1
- package/dist/src/ontology/writer.d.ts +16 -10
- package/dist/src/ontology/writer.d.ts.map +1 -1
- package/dist/src/opcua/external.d.ts +2 -0
- package/dist/src/opcua/external.d.ts.map +1 -0
- package/dist/src/opcua/index.d.ts +2 -0
- package/dist/src/opcua/index.d.ts.map +1 -0
- package/dist/src/opcua/types.gen.d.ts +82 -0
- package/dist/src/opcua/types.gen.d.ts.map +1 -0
- package/dist/src/pagerduty/external.d.ts +2 -0
- package/dist/src/pagerduty/external.d.ts.map +1 -0
- package/dist/src/pagerduty/index.d.ts +2 -0
- package/dist/src/pagerduty/index.d.ts.map +1 -0
- package/dist/src/pagerduty/types.gen.d.ts +30 -0
- package/dist/src/pagerduty/types.gen.d.ts.map +1 -0
- package/dist/src/panel/actions.d.ts +273 -0
- package/dist/src/panel/actions.d.ts.map +1 -0
- package/dist/src/panel/actions.gen.d.ts +1255 -0
- package/dist/src/panel/actions.gen.d.ts.map +1 -0
- package/dist/src/panel/client.d.ts +148 -0
- package/dist/src/panel/client.d.ts.map +1 -0
- package/dist/src/panel/external.d.ts +6 -0
- package/dist/src/panel/external.d.ts.map +1 -0
- package/dist/src/panel/index.d.ts +2 -0
- package/dist/src/panel/index.d.ts.map +1 -0
- package/dist/src/panel/tree.d.ts +50 -0
- package/dist/src/panel/tree.d.ts.map +1 -0
- package/dist/src/panel/types.gen.d.ts +370 -0
- package/dist/src/panel/types.gen.d.ts.map +1 -0
- package/dist/src/project/client.d.ts +89 -0
- package/dist/src/project/client.d.ts.map +1 -0
- package/dist/src/project/external.d.ts.map +1 -0
- package/dist/src/project/index.d.ts +2 -0
- package/dist/src/project/index.d.ts.map +1 -0
- package/dist/src/project/types.gen.d.ts +27 -0
- package/dist/src/project/types.gen.d.ts.map +1 -0
- package/dist/src/query/cache.d.ts +132 -0
- package/dist/src/query/cache.d.ts.map +1 -0
- package/dist/src/query/deleted.d.ts +20 -0
- package/dist/src/query/deleted.d.ts.map +1 -0
- package/dist/src/query/derived.d.ts +33 -0
- package/dist/src/query/derived.d.ts.map +1 -0
- package/dist/src/query/external.d.ts +10 -0
- package/dist/src/query/external.d.ts.map +1 -0
- package/dist/src/query/index.d.ts +2 -0
- package/dist/src/query/index.d.ts.map +1 -0
- package/dist/src/query/query.d.ts +235 -0
- package/dist/src/query/query.d.ts.map +1 -0
- package/dist/src/query/retriever.d.ts +135 -0
- package/dist/src/query/retriever.d.ts.map +1 -0
- package/dist/src/query/streamer.d.ts +67 -0
- package/dist/src/query/streamer.d.ts.map +1 -0
- package/dist/src/query/table.d.ts +219 -0
- package/dist/src/query/table.d.ts.map +1 -0
- package/dist/src/query/types.d.ts +35 -0
- package/dist/src/query/types.d.ts.map +1 -0
- package/dist/src/query/write.d.ts +21 -0
- package/dist/src/query/write.d.ts.map +1 -0
- package/dist/src/rack/client.d.ts +58 -20
- package/dist/src/rack/client.d.ts.map +1 -1
- package/dist/src/rack/types.gen.d.ts +11 -12
- package/dist/src/rack/types.gen.d.ts.map +1 -1
- package/dist/src/range/alias/types.gen.d.ts +2 -3
- package/dist/src/range/alias/types.gen.d.ts.map +1 -1
- package/dist/src/ranger/client.d.ts +138 -27
- package/dist/src/ranger/client.d.ts.map +1 -1
- package/dist/src/ranger/kv/client.d.ts +7 -4
- package/dist/src/ranger/kv/client.d.ts.map +1 -1
- package/dist/src/ranger/payload.d.ts +3 -0
- package/dist/src/ranger/payload.d.ts.map +1 -1
- package/dist/src/ranger/types.gen.d.ts +45 -101
- package/dist/src/ranger/types.gen.d.ts.map +1 -1
- package/dist/src/ranger/writer.d.ts +2 -74
- package/dist/src/ranger/writer.d.ts.map +1 -1
- package/dist/src/schematic/actions.d.ts +90 -33
- package/dist/src/schematic/actions.d.ts.map +1 -1
- package/dist/src/schematic/actions.gen.d.ts +207 -114
- package/dist/src/schematic/actions.gen.d.ts.map +1 -1
- package/dist/src/schematic/client.d.ts +70 -68
- package/dist/src/schematic/client.d.ts.map +1 -1
- package/dist/src/schematic/symbol/client.d.ts +133 -27
- package/dist/src/schematic/symbol/client.d.ts.map +1 -1
- package/dist/src/schematic/symbol/types.gen.d.ts +258 -153
- package/dist/src/schematic/symbol/types.gen.d.ts.map +1 -1
- package/dist/src/schematic/types.gen.d.ts +17 -96
- package/dist/src/schematic/types.gen.d.ts.map +1 -1
- package/dist/src/status/client.d.ts +69 -14
- package/dist/src/status/client.d.ts.map +1 -1
- package/dist/src/status/external.d.ts +2 -0
- package/dist/src/status/external.d.ts.map +1 -1
- package/dist/src/status/payload.d.ts +2 -36
- package/dist/src/status/payload.d.ts.map +1 -1
- package/dist/src/status/status.d.ts +65 -0
- package/dist/src/status/status.d.ts.map +1 -0
- package/dist/src/status/types.gen.d.ts +58 -0
- package/dist/src/status/types.gen.d.ts.map +1 -0
- package/dist/src/table/actions.d.ts +72 -13
- package/dist/src/table/actions.d.ts.map +1 -1
- package/dist/src/table/actions.gen.d.ts +221 -137
- package/dist/src/table/actions.gen.d.ts.map +1 -1
- package/dist/src/table/client.d.ts +64 -40
- package/dist/src/table/client.d.ts.map +1 -1
- package/dist/src/table/types.gen.d.ts +20 -55
- package/dist/src/table/types.gen.d.ts.map +1 -1
- package/dist/src/task/client.d.ts +149 -28
- package/dist/src/task/client.d.ts.map +1 -1
- package/dist/src/task/types.gen.d.ts +71 -89
- package/dist/src/task/types.gen.d.ts.map +1 -1
- package/dist/src/testutil/access.d.ts +27 -1
- package/dist/src/testutil/access.d.ts.map +1 -1
- package/dist/src/testutil/channels.d.ts +2 -0
- package/dist/src/testutil/channels.d.ts.map +1 -1
- package/dist/src/testutil/client.d.ts +5 -0
- package/dist/src/testutil/client.d.ts.map +1 -1
- package/dist/src/testutil/connection.d.ts +10 -0
- package/dist/src/testutil/connection.d.ts.map +1 -0
- package/dist/src/testutil/index.d.ts +9 -0
- package/dist/src/testutil/index.d.ts.map +1 -0
- package/dist/src/testutil/panels.d.ts +8 -0
- package/dist/src/testutil/panels.d.ts.map +1 -0
- package/dist/src/testutil/proxy.d.ts +29 -0
- package/dist/src/testutil/proxy.d.ts.map +1 -0
- package/dist/src/testutil/query.d.ts +7 -0
- package/dist/src/testutil/query.d.ts.map +1 -0
- package/dist/src/testutil/telem.d.ts +4 -0
- package/dist/src/testutil/telem.d.ts.map +1 -1
- package/dist/src/transport.d.ts +10 -4
- package/dist/src/transport.d.ts.map +1 -1
- package/dist/src/user/client.d.ts +29 -28
- package/dist/src/user/client.d.ts.map +1 -1
- package/dist/src/user/external.d.ts +1 -1
- package/dist/src/user/external.d.ts.map +1 -1
- package/dist/src/user/types.gen.d.ts +4 -4
- package/dist/src/util/retrieve.d.ts +2 -2
- package/dist/src/util/retrieve.d.ts.map +1 -1
- package/dist/src/util/telem.d.ts.map +1 -1
- package/dist/src/view/client.d.ts +30 -14
- package/dist/src/view/client.d.ts.map +1 -1
- package/dist/src/view/types.gen.d.ts +7 -15
- package/dist/src/view/types.gen.d.ts.map +1 -1
- package/dist/testutil.js +189 -0
- package/dist/testutil.js.map +1 -0
- package/package.json +40 -17
- package/src/access/client.ts +14 -3
- package/src/access/enforce.ts +0 -3
- package/src/access/external.ts +1 -0
- package/src/access/granted.ts +114 -0
- package/src/access/policy/client.ts +135 -43
- package/src/access/policy/types.gen.ts +9 -11
- package/src/access/role/client.ts +160 -38
- package/src/access/role/types.gen.ts +8 -12
- package/src/actions/actions.ts +5 -6
- package/src/actions/controller.ts +626 -0
- package/src/actions/external.ts +11 -0
- package/src/arc/actions.gen.ts +313 -0
- package/src/arc/actions.ts +192 -0
- package/src/arc/client.ts +424 -41
- package/src/arc/compiler/types.gen.ts +5 -6
- package/src/arc/external.ts +2 -0
- package/src/arc/graph/types.gen.ts +24 -22
- package/src/arc/ir/index.ts +1 -1
- package/{eslint.config.ts → src/arc/ir/ir.ts} +1 -4
- package/src/arc/ir/types.gen.ts +42 -41
- package/src/arc/text/types.gen.ts +21 -2
- package/src/arc/types/types.gen.ts +40 -32
- package/src/arc/types.gen.ts +31 -29
- package/src/auth/auth.ts +40 -8
- package/src/channel/client.ts +529 -132
- package/src/channel/external.ts +0 -1
- package/src/channel/payload.ts +30 -3
- package/src/channel/types.gen.ts +37 -48
- package/src/channel/writer.ts +2 -11
- package/src/client.ts +215 -91
- package/src/connection/client.ts +495 -0
- package/src/connection/external.ts +34 -0
- package/src/connection/index.ts +1 -1
- package/src/connection/status.ts +442 -0
- package/src/control/client.ts +84 -12
- package/src/control/state.ts +17 -36
- package/src/device/client.ts +293 -41
- package/src/device/types.gen.ts +15 -26
- package/src/errors.ts +45 -22
- package/src/{workspace → ethercat}/external.ts +1 -2
- package/src/{workspace → ethercat}/index.ts +1 -1
- package/src/ethercat/types.gen.ts +151 -0
- package/src/framer/adapter.ts +60 -37
- package/src/framer/benchutil.ts +67 -0
- package/src/framer/cache/cache.ts +115 -0
- package/src/framer/cache/dynamic.ts +279 -0
- package/src/framer/cache/reader.ts +160 -0
- package/src/framer/cache/static.ts +215 -0
- package/src/framer/cache/streamer.ts +391 -0
- package/src/framer/cache/transform.ts +31 -0
- package/src/framer/cache/unary.ts +104 -0
- package/src/framer/client.ts +71 -43
- package/src/framer/codec.ts +55 -18
- package/src/framer/deleter.ts +4 -6
- package/src/framer/external.ts +10 -0
- package/src/framer/feed.ts +108 -0
- package/src/framer/frame.ts +13 -23
- package/src/framer/hardened.ts +283 -0
- package/src/framer/iterator.ts +31 -42
- package/src/framer/reader.ts +11 -11
- package/src/framer/streamer.ts +18 -178
- package/src/framer/writer.ts +39 -59
- package/src/group/client.ts +158 -23
- package/src/http/external.ts +10 -0
- package/src/{cluster → http}/index.ts +1 -1
- package/src/http/types.gen.ts +245 -0
- package/src/imex/client.ts +125 -0
- package/src/imex/index.ts +10 -0
- package/src/index.ts +18 -6
- package/src/label/client.ts +193 -54
- package/src/label/external.ts +2 -0
- package/src/label/payload.ts +4 -9
- package/src/label/store.ts +28 -0
- package/src/label/types.gen.ts +31 -0
- package/src/labjack/external.ts +10 -0
- package/src/labjack/index.ts +10 -0
- package/src/labjack/types.gen.ts +251 -0
- package/src/lineplot/actions.gen.ts +880 -0
- package/src/lineplot/actions.ts +535 -0
- package/src/lineplot/client.ts +224 -52
- package/src/lineplot/external.ts +3 -0
- package/src/lineplot/line.ts +80 -0
- package/src/lineplot/types.gen.ts +225 -12
- package/src/log/actions.gen.ts +474 -0
- package/src/log/actions.ts +242 -0
- package/src/log/client.ts +223 -52
- package/src/log/external.ts +2 -0
- package/src/log/types.gen.ts +45 -14
- package/src/modbus/external.ts +10 -0
- package/src/modbus/index.ts +10 -0
- package/src/modbus/types.gen.ts +185 -0
- package/src/ni/external.ts +10 -0
- package/src/ni/index.ts +10 -0
- package/src/ni/types.gen.ts +1632 -0
- package/src/node/index.ts +10 -0
- package/src/{cluster → node}/types.gen.ts +2 -2
- package/src/ontology/client.ts +408 -99
- package/src/ontology/external.ts +7 -0
- package/src/ontology/payload.ts +48 -7
- package/src/ontology/store.ts +83 -0
- package/src/ontology/types.gen.ts +2 -1
- package/src/ontology/writer.ts +1 -0
- package/src/opcua/external.ts +10 -0
- package/src/opcua/index.ts +10 -0
- package/src/opcua/types.gen.ts +65 -0
- package/src/pagerduty/external.ts +10 -0
- package/src/pagerduty/index.ts +10 -0
- package/src/pagerduty/types.gen.ts +41 -0
- package/src/panel/actions.gen.ts +267 -0
- package/src/panel/actions.ts +357 -0
- package/src/panel/client.ts +327 -0
- package/src/panel/external.ts +14 -0
- package/src/panel/index.ts +10 -0
- package/src/panel/tree.ts +163 -0
- package/src/panel/types.gen.ts +164 -0
- package/src/project/client.ts +273 -0
- package/src/project/external.ts +11 -0
- package/src/project/index.ts +10 -0
- package/src/project/types.gen.ts +40 -0
- package/src/query/cache.ts +326 -0
- package/src/query/deleted.ts +38 -0
- package/src/query/derived.ts +101 -0
- package/src/query/external.ts +51 -0
- package/src/query/index.ts +10 -0
- package/src/query/query.ts +865 -0
- package/src/query/retriever.ts +308 -0
- package/src/query/streamer.ts +207 -0
- package/src/query/table.ts +625 -0
- package/src/query/types.ts +54 -0
- package/src/query/write.ts +42 -0
- package/src/rack/client.ts +233 -45
- package/src/rack/types.gen.ts +15 -16
- package/src/range/alias/types.gen.ts +2 -3
- package/src/ranger/client.ts +581 -70
- package/src/ranger/kv/client.ts +52 -21
- package/src/ranger/payload.ts +3 -0
- package/src/ranger/types.gen.ts +21 -23
- package/src/ranger/writer.ts +4 -8
- package/src/schematic/actions.gen.ts +62 -53
- package/src/schematic/actions.ts +44 -42
- package/src/schematic/client.ts +226 -70
- package/src/schematic/symbol/client.ts +277 -48
- package/src/schematic/symbol/types.gen.ts +22 -34
- package/src/schematic/types.gen.ts +22 -29
- package/src/status/client.ts +321 -44
- package/src/status/external.ts +2 -0
- package/src/status/payload.ts +1 -23
- package/src/status/status.ts +241 -0
- package/src/status/types.gen.ts +108 -0
- package/src/table/actions.gen.ts +96 -63
- package/src/table/actions.ts +44 -19
- package/src/table/client.ts +220 -56
- package/src/table/types.gen.ts +24 -31
- package/src/task/client.ts +580 -101
- package/src/task/types.gen.ts +68 -75
- package/src/testutil/access.ts +102 -6
- package/src/testutil/channels.ts +29 -0
- package/src/testutil/client.ts +27 -2
- package/src/testutil/connection.ts +47 -0
- package/src/testutil/index.ts +17 -0
- package/src/testutil/panels.ts +26 -0
- package/src/testutil/proxy.ts +106 -0
- package/src/testutil/query.ts +28 -0
- package/src/testutil/telem.ts +17 -1
- package/src/transport.ts +18 -7
- package/src/user/client.ts +165 -64
- package/src/user/external.ts +1 -1
- package/src/user/types.gen.ts +5 -5
- package/src/util/retrieve.ts +4 -4
- package/src/util/telem.ts +0 -1
- package/src/view/client.ts +120 -37
- package/src/view/types.gen.ts +8 -11
- package/.turbo/turbo-build.log +0 -20
- package/.vscode/settings.json +0 -3
- package/CONTRIBUTING.md +0 -47
- package/dist/client.cjs +0 -118
- package/dist/eslint.config.d.ts +0 -4
- package/dist/eslint.config.d.ts.map +0 -1
- package/dist/src/access/enforce.spec.d.ts +0 -2
- package/dist/src/access/enforce.spec.d.ts.map +0 -1
- package/dist/src/access/policy/access.spec.d.ts +0 -2
- package/dist/src/access/policy/access.spec.d.ts.map +0 -1
- package/dist/src/access/role/role.spec.d.ts +0 -2
- package/dist/src/access/role/role.spec.d.ts.map +0 -1
- package/dist/src/actions/actions.spec.d.ts +0 -2
- package/dist/src/actions/actions.spec.d.ts.map +0 -1
- package/dist/src/arc/access.spec.d.ts +0 -2
- package/dist/src/arc/access.spec.d.ts.map +0 -1
- package/dist/src/arc/arc.spec.d.ts +0 -2
- package/dist/src/arc/arc.spec.d.ts.map +0 -1
- package/dist/src/arc/lsp.spec.d.ts +0 -2
- package/dist/src/arc/lsp.spec.d.ts.map +0 -1
- package/dist/src/auth/auth.spec.d.ts +0 -2
- package/dist/src/auth/auth.spec.d.ts.map +0 -1
- package/dist/src/channel/access.spec.d.ts +0 -2
- package/dist/src/channel/access.spec.d.ts.map +0 -1
- package/dist/src/channel/batchRetriever.spec.d.ts +0 -2
- package/dist/src/channel/batchRetriever.spec.d.ts.map +0 -1
- package/dist/src/channel/channel.spec.d.ts +0 -2
- package/dist/src/channel/channel.spec.d.ts.map +0 -1
- package/dist/src/channel/payload.spec.d.ts +0 -2
- package/dist/src/channel/payload.spec.d.ts.map +0 -1
- package/dist/src/channel/retriever.d.ts +0 -64
- package/dist/src/channel/retriever.d.ts.map +0 -1
- package/dist/src/cluster/index.d.ts +0 -2
- package/dist/src/cluster/index.d.ts.map +0 -1
- package/dist/src/cluster/types.gen.d.ts +0 -4
- package/dist/src/cluster/types.gen.d.ts.map +0 -1
- package/dist/src/connection/checker.d.ts +0 -86
- package/dist/src/connection/checker.d.ts.map +0 -1
- package/dist/src/connection/connection.spec.d.ts +0 -2
- package/dist/src/connection/connection.spec.d.ts.map +0 -1
- package/dist/src/connection.spec.d.ts +0 -2
- package/dist/src/connection.spec.d.ts.map +0 -1
- package/dist/src/control/state.spec.d.ts +0 -2
- package/dist/src/control/state.spec.d.ts.map +0 -1
- package/dist/src/device/access.spec.d.ts +0 -2
- package/dist/src/device/access.spec.d.ts.map +0 -1
- package/dist/src/device/device.spec.d.ts +0 -2
- package/dist/src/device/device.spec.d.ts.map +0 -1
- package/dist/src/device/payload.spec.d.ts +0 -2
- package/dist/src/device/payload.spec.d.ts.map +0 -1
- package/dist/src/errors.spec.d.ts +0 -2
- package/dist/src/errors.spec.d.ts.map +0 -1
- package/dist/src/framer/adapter.spec.d.ts +0 -2
- package/dist/src/framer/adapter.spec.d.ts.map +0 -1
- package/dist/src/framer/client.spec.d.ts +0 -2
- package/dist/src/framer/client.spec.d.ts.map +0 -1
- package/dist/src/framer/codec.spec.d.ts +0 -2
- package/dist/src/framer/codec.spec.d.ts.map +0 -1
- package/dist/src/framer/deleter.spec.d.ts +0 -2
- package/dist/src/framer/deleter.spec.d.ts.map +0 -1
- package/dist/src/framer/frame.spec.d.ts +0 -2
- package/dist/src/framer/frame.spec.d.ts.map +0 -1
- package/dist/src/framer/iterator.spec.d.ts +0 -2
- package/dist/src/framer/iterator.spec.d.ts.map +0 -1
- package/dist/src/framer/reader.spec.d.ts +0 -2
- package/dist/src/framer/reader.spec.d.ts.map +0 -1
- package/dist/src/framer/streamer.spec.d.ts +0 -2
- package/dist/src/framer/streamer.spec.d.ts.map +0 -1
- package/dist/src/framer/writer.spec.d.ts +0 -2
- package/dist/src/framer/writer.spec.d.ts.map +0 -1
- package/dist/src/group/access.spec.d.ts +0 -2
- package/dist/src/group/access.spec.d.ts.map +0 -1
- package/dist/src/group/group.spec.d.ts +0 -2
- package/dist/src/group/group.spec.d.ts.map +0 -1
- package/dist/src/label/access.spec.d.ts +0 -2
- package/dist/src/label/access.spec.d.ts.map +0 -1
- package/dist/src/label/label.spec.d.ts +0 -2
- package/dist/src/label/label.spec.d.ts.map +0 -1
- package/dist/src/lineplot/access.spec.d.ts +0 -2
- package/dist/src/lineplot/access.spec.d.ts.map +0 -1
- package/dist/src/lineplot/lineplot.spec.d.ts +0 -2
- package/dist/src/lineplot/lineplot.spec.d.ts.map +0 -1
- package/dist/src/log/access.spec.d.ts +0 -2
- package/dist/src/log/access.spec.d.ts.map +0 -1
- package/dist/src/log/log.spec.d.ts +0 -2
- package/dist/src/log/log.spec.d.ts.map +0 -1
- package/dist/src/ontology/ontology.spec.d.ts +0 -2
- package/dist/src/ontology/ontology.spec.d.ts.map +0 -1
- package/dist/src/rack/access.spec.d.ts +0 -2
- package/dist/src/rack/access.spec.d.ts.map +0 -1
- package/dist/src/rack/rack.spec.d.ts +0 -2
- package/dist/src/rack/rack.spec.d.ts.map +0 -1
- package/dist/src/ranger/access.spec.d.ts +0 -2
- package/dist/src/ranger/access.spec.d.ts.map +0 -1
- package/dist/src/ranger/alias/payload.spec.d.ts +0 -2
- package/dist/src/ranger/alias/payload.spec.d.ts.map +0 -1
- package/dist/src/ranger/ranger.spec.d.ts +0 -2
- package/dist/src/ranger/ranger.spec.d.ts.map +0 -1
- package/dist/src/schematic/access.spec.d.ts +0 -2
- package/dist/src/schematic/access.spec.d.ts.map +0 -1
- package/dist/src/schematic/actions.spec.d.ts +0 -2
- package/dist/src/schematic/actions.spec.d.ts.map +0 -1
- package/dist/src/schematic/schematic.spec.d.ts +0 -2
- package/dist/src/schematic/schematic.spec.d.ts.map +0 -1
- package/dist/src/schematic/symbol/access.spec.d.ts +0 -2
- package/dist/src/schematic/symbol/access.spec.d.ts.map +0 -1
- package/dist/src/schematic/symbol/client.spec.d.ts +0 -2
- package/dist/src/schematic/symbol/client.spec.d.ts.map +0 -1
- package/dist/src/status/access.spec.d.ts +0 -2
- package/dist/src/status/access.spec.d.ts.map +0 -1
- package/dist/src/status/status.spec.d.ts +0 -2
- package/dist/src/status/status.spec.d.ts.map +0 -1
- package/dist/src/table/access.spec.d.ts +0 -2
- package/dist/src/table/access.spec.d.ts.map +0 -1
- package/dist/src/table/table.spec.d.ts +0 -2
- package/dist/src/table/table.spec.d.ts.map +0 -1
- package/dist/src/task/access.spec.d.ts +0 -2
- package/dist/src/task/access.spec.d.ts.map +0 -1
- package/dist/src/task/payload.spec.d.ts +0 -2
- package/dist/src/task/payload.spec.d.ts.map +0 -1
- package/dist/src/task/task.spec.d.ts +0 -2
- package/dist/src/task/task.spec.d.ts.map +0 -1
- package/dist/src/user/access.spec.d.ts +0 -2
- package/dist/src/user/access.spec.d.ts.map +0 -1
- package/dist/src/user/user.spec.d.ts +0 -2
- package/dist/src/user/user.spec.d.ts.map +0 -1
- package/dist/src/util/retrieve.spec.d.ts +0 -2
- package/dist/src/util/retrieve.spec.d.ts.map +0 -1
- package/dist/src/view/view.spec.d.ts +0 -2
- package/dist/src/view/view.spec.d.ts.map +0 -1
- package/dist/src/workspace/access.spec.d.ts +0 -2
- package/dist/src/workspace/access.spec.d.ts.map +0 -1
- package/dist/src/workspace/client.d.ts +0 -36
- package/dist/src/workspace/client.d.ts.map +0 -1
- package/dist/src/workspace/external.d.ts.map +0 -1
- package/dist/src/workspace/index.d.ts +0 -2
- package/dist/src/workspace/index.d.ts.map +0 -1
- package/dist/src/workspace/types.gen.d.ts +0 -34
- package/dist/src/workspace/types.gen.d.ts.map +0 -1
- package/dist/src/workspace/workspace.spec.d.ts +0 -2
- package/dist/src/workspace/workspace.spec.d.ts.map +0 -1
- package/examples/node/basicReadWrite.js +0 -86
- package/examples/node/createChannels.js +0 -50
- package/examples/node/createRange.js +0 -67
- package/examples/node/package-lock.json +0 -133
- package/examples/node/package.json +0 -17
- package/examples/node/readLatest.js +0 -76
- package/examples/node/seriesAndFrames.js +0 -173
- package/examples/node/streamRead.js +0 -50
- package/examples/node/streamWrite.js +0 -87
- package/src/access/enforce.spec.ts +0 -188
- package/src/access/policy/access.spec.ts +0 -147
- package/src/access/role/role.spec.ts +0 -95
- package/src/actions/actions.spec.ts +0 -229
- package/src/arc/access.spec.ts +0 -149
- package/src/arc/arc.spec.ts +0 -44
- package/src/arc/lsp.spec.ts +0 -717
- package/src/auth/auth.spec.ts +0 -101
- package/src/channel/access.spec.ts +0 -116
- package/src/channel/batchRetriever.spec.ts +0 -115
- package/src/channel/channel.spec.ts +0 -352
- package/src/channel/payload.spec.ts +0 -117
- package/src/channel/retriever.ts +0 -252
- package/src/connection/checker.ts +0 -203
- package/src/connection/connection.spec.ts +0 -152
- package/src/connection.spec.ts +0 -145
- package/src/control/state.spec.ts +0 -22
- package/src/device/access.spec.ts +0 -159
- package/src/device/device.spec.ts +0 -461
- package/src/device/payload.spec.ts +0 -142
- package/src/errors.spec.ts +0 -71
- package/src/framer/adapter.spec.ts +0 -620
- package/src/framer/client.spec.ts +0 -180
- package/src/framer/codec.spec.ts +0 -383
- package/src/framer/deleter.spec.ts +0 -103
- package/src/framer/frame.spec.ts +0 -973
- package/src/framer/iterator.spec.ts +0 -169
- package/src/framer/reader.spec.ts +0 -865
- package/src/framer/streamer.spec.ts +0 -871
- package/src/framer/writer.spec.ts +0 -486
- package/src/group/access.spec.ts +0 -77
- package/src/group/group.spec.ts +0 -65
- package/src/label/access.spec.ts +0 -109
- package/src/label/label.spec.ts +0 -83
- package/src/lineplot/access.spec.ts +0 -134
- package/src/lineplot/lineplot.spec.ts +0 -120
- package/src/log/access.spec.ts +0 -132
- package/src/log/log.spec.ts +0 -106
- package/src/ontology/ontology.spec.ts +0 -521
- package/src/rack/access.spec.ts +0 -102
- package/src/rack/rack.spec.ts +0 -171
- package/src/ranger/access.spec.ts +0 -115
- package/src/ranger/alias/payload.spec.ts +0 -52
- package/src/ranger/ranger.spec.ts +0 -343
- package/src/schematic/access.spec.ts +0 -134
- package/src/schematic/actions.spec.ts +0 -699
- package/src/schematic/schematic.spec.ts +0 -340
- package/src/schematic/symbol/access.spec.ts +0 -172
- package/src/schematic/symbol/client.spec.ts +0 -160
- package/src/status/access.spec.ts +0 -129
- package/src/status/status.spec.ts +0 -448
- package/src/table/access.spec.ts +0 -128
- package/src/table/table.spec.ts +0 -651
- package/src/task/access.spec.ts +0 -131
- package/src/task/payload.spec.ts +0 -113
- package/src/task/task.spec.ts +0 -657
- package/src/user/access.spec.ts +0 -107
- package/src/user/user.spec.ts +0 -290
- package/src/util/retrieve.spec.ts +0 -49
- package/src/view/view.spec.ts +0 -165
- package/src/workspace/access.spec.ts +0 -108
- package/src/workspace/client.ts +0 -112
- package/src/workspace/types.gen.ts +0 -46
- package/src/workspace/workspace.spec.ts +0 -111
- package/tsconfig.json +0 -5
- package/tsconfig.vite.json +0 -4
- package/vite.config.ts +0 -29
- /package/dist/src/{workspace → project}/external.d.ts +0 -0
|
@@ -1,620 +0,0 @@
|
|
|
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, id, Series, TimeStamp } from "@synnaxlabs/x";
|
|
11
|
-
import { beforeAll, describe, expect, it } from "vitest";
|
|
12
|
-
|
|
13
|
-
import { type channel } from "@/channel";
|
|
14
|
-
import { ReadAdapter, WriteAdapter } from "@/framer/adapter";
|
|
15
|
-
import { Frame } from "@/index";
|
|
16
|
-
import { createTestClient } from "@/testutil/client";
|
|
17
|
-
|
|
18
|
-
const client = createTestClient();
|
|
19
|
-
|
|
20
|
-
describe("WriteFrameAdapter", () => {
|
|
21
|
-
let timeCh: channel.Channel;
|
|
22
|
-
let dataCh: channel.Channel;
|
|
23
|
-
let adapter: WriteAdapter;
|
|
24
|
-
|
|
25
|
-
beforeAll(async () => {
|
|
26
|
-
timeCh = await client.channels.create({
|
|
27
|
-
name: id.create(),
|
|
28
|
-
dataType: DataType.TIMESTAMP,
|
|
29
|
-
isIndex: true,
|
|
30
|
-
});
|
|
31
|
-
dataCh = await client.channels.create({
|
|
32
|
-
name: id.create(),
|
|
33
|
-
dataType: DataType.FLOAT32,
|
|
34
|
-
index: timeCh.key,
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
adapter = await WriteAdapter.open(client.channels.retriever, [
|
|
38
|
-
timeCh.key,
|
|
39
|
-
dataCh.key,
|
|
40
|
-
]);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("should correctly adapt a record of keys to single values", async () => {
|
|
44
|
-
const ts = TimeStamp.now().valueOf();
|
|
45
|
-
const res = await adapter.adapt({ [timeCh.key]: ts, [dataCh.key]: 1 });
|
|
46
|
-
expect(res.columns).toHaveLength(2);
|
|
47
|
-
expect(res.series).toHaveLength(2);
|
|
48
|
-
expect(res.get(timeCh.key)).toHaveLength(1);
|
|
49
|
-
expect(res.get(dataCh.key)).toHaveLength(1);
|
|
50
|
-
expect(res.get(timeCh.key).at(0)).toEqual(ts);
|
|
51
|
-
expect(res.get(dataCh.key).at(0)).toEqual(1);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it("should correctly adapt a record of names to single values", async () => {
|
|
55
|
-
const ts = TimeStamp.now().valueOf();
|
|
56
|
-
const res2 = await adapter.adapt({ [timeCh.name]: ts, [dataCh.name]: 1 });
|
|
57
|
-
expect(res2.columns).toHaveLength(2);
|
|
58
|
-
expect(res2.series).toHaveLength(2);
|
|
59
|
-
expect(res2.get(timeCh.key)).toHaveLength(1);
|
|
60
|
-
expect(res2.get(dataCh.key)).toHaveLength(1);
|
|
61
|
-
expect(res2.get(timeCh.key).at(0)).toEqual(ts);
|
|
62
|
-
expect(res2.get(dataCh.key).at(0)).toEqual(1);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it("should correctly adapt a single name to a single series", async () => {
|
|
66
|
-
const res3 = await adapter.adapt(dataCh.name, new Series(1));
|
|
67
|
-
expect(res3.columns).toHaveLength(1);
|
|
68
|
-
expect(res3.series).toHaveLength(1);
|
|
69
|
-
expect(res3.get(dataCh.key)).toHaveLength(1);
|
|
70
|
-
expect(res3.get(dataCh.key).at(0)).toEqual(1);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it("should correctly adapt multiple names to multiple series", async () => {
|
|
74
|
-
const ts = TimeStamp.now().valueOf();
|
|
75
|
-
const res4 = await adapter.adapt(
|
|
76
|
-
[timeCh.name, dataCh.name],
|
|
77
|
-
[new Series(ts), new Series(1)],
|
|
78
|
-
);
|
|
79
|
-
expect(res4.get(timeCh.key)).toHaveLength(1);
|
|
80
|
-
expect(res4.get(dataCh.key)).toHaveLength(1);
|
|
81
|
-
expect(res4.get(timeCh.key).at(0)).toEqual(ts);
|
|
82
|
-
expect(res4.get(dataCh.key).at(0)).toEqual(1);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it("should correctly adapt a frame keyed by name", async () => {
|
|
86
|
-
const ts = TimeStamp.now().valueOf();
|
|
87
|
-
const fr = new Frame({
|
|
88
|
-
[timeCh.name]: new Series(ts),
|
|
89
|
-
[dataCh.name]: new Series(1),
|
|
90
|
-
});
|
|
91
|
-
const res = await adapter.adapt(fr);
|
|
92
|
-
expect(res.columns).toHaveLength(2);
|
|
93
|
-
expect(res.series).toHaveLength(2);
|
|
94
|
-
expect(res.get(timeCh.key).at(0)).toEqual(ts);
|
|
95
|
-
expect(res.get(dataCh.key).at(0)).toEqual(1);
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it("should not modify a frame keyed by key", async () => {
|
|
99
|
-
const ts = TimeStamp.now().valueOf();
|
|
100
|
-
const fr = new Frame({ [timeCh.key]: new Series(ts), [dataCh.key]: new Series(1) });
|
|
101
|
-
const res = await adapter.adapt(fr);
|
|
102
|
-
expect(res.columns).toHaveLength(2);
|
|
103
|
-
expect(res.series).toHaveLength(2);
|
|
104
|
-
expect(res.get(timeCh.key).at(0)).toEqual(ts);
|
|
105
|
-
expect(res.get(dataCh.key).at(0)).toEqual(1);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it("should correctly adapt a map of series", async () => {
|
|
109
|
-
const ts = TimeStamp.now().valueOf();
|
|
110
|
-
const m = new Map();
|
|
111
|
-
m.set(timeCh.key, new Series(ts));
|
|
112
|
-
const res = await adapter.adapt(m);
|
|
113
|
-
expect(res.columns).toHaveLength(1);
|
|
114
|
-
expect(res.series).toHaveLength(1);
|
|
115
|
-
expect(res.get(timeCh.key)).toHaveLength(1);
|
|
116
|
-
expect(res.get(timeCh.key).at(0)).toEqual(ts);
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it("should correctly adapt a name and JSON value", async () => {
|
|
120
|
-
const jsonChannel = await client.channels.create({
|
|
121
|
-
name: id.create(),
|
|
122
|
-
dataType: DataType.JSON,
|
|
123
|
-
virtual: true,
|
|
124
|
-
});
|
|
125
|
-
const adapter = await WriteAdapter.open(client.channels.retriever, [
|
|
126
|
-
jsonChannel.key,
|
|
127
|
-
]);
|
|
128
|
-
const res = await adapter.adapt(jsonChannel.name, [{ dog: "blue" }]);
|
|
129
|
-
expect(res.columns).toHaveLength(1);
|
|
130
|
-
expect(res.series).toHaveLength(1);
|
|
131
|
-
expect(res.get(jsonChannel.key)).toHaveLength(1);
|
|
132
|
-
expect(res.get(jsonChannel.key).at(0)).toEqual({ dog: "blue" });
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
it("should correctly adapt a name and a json typed series", async () => {
|
|
136
|
-
const jsonChannel = await client.channels.create({
|
|
137
|
-
name: id.create(),
|
|
138
|
-
dataType: DataType.JSON,
|
|
139
|
-
virtual: true,
|
|
140
|
-
});
|
|
141
|
-
const adapter = await WriteAdapter.open(client.channels.retriever, [
|
|
142
|
-
jsonChannel.key,
|
|
143
|
-
]);
|
|
144
|
-
const res = await adapter.adapt(jsonChannel.name, new Series([{ dog: "blue" }]));
|
|
145
|
-
expect(res.columns).toHaveLength(1);
|
|
146
|
-
expect(res.series).toHaveLength(1);
|
|
147
|
-
expect(res.get(jsonChannel.key)).toHaveLength(1);
|
|
148
|
-
expect(res.get(jsonChannel.key).at(0)).toEqual({ dog: "blue" });
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
it("should correctly adapt a numeric value to a BigInt keyed by key", async () => {
|
|
152
|
-
const bigIntCh = await client.channels.create({
|
|
153
|
-
name: id.create(),
|
|
154
|
-
dataType: DataType.INT64,
|
|
155
|
-
virtual: true,
|
|
156
|
-
});
|
|
157
|
-
const res = await adapter.adapt({
|
|
158
|
-
[bigIntCh.key]: 12,
|
|
159
|
-
});
|
|
160
|
-
expect(res.get(bigIntCh.key).at(0)).toEqual(12n);
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
describe("adaptParams", () => {
|
|
164
|
-
it("should correctly adapt generic object keys", async () => {
|
|
165
|
-
const res = await adapter.adaptParams([timeCh.name, dataCh.name]);
|
|
166
|
-
expect(res).toContain(timeCh.key);
|
|
167
|
-
expect(res).toContain(dataCh.key);
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
describe("update", () => {
|
|
172
|
-
it("should return false when updating with the same channels", async () => {
|
|
173
|
-
const hasChanged = await adapter.update([timeCh.key, dataCh.key]);
|
|
174
|
-
expect(hasChanged).toBe(false);
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
it("should return true when adding a new channel", async () => {
|
|
178
|
-
const newCh = await client.channels.create({
|
|
179
|
-
name: id.create(),
|
|
180
|
-
dataType: DataType.FLOAT32,
|
|
181
|
-
index: timeCh.key,
|
|
182
|
-
});
|
|
183
|
-
const hasChanged = await adapter.update([timeCh.key, dataCh.key, newCh.key]);
|
|
184
|
-
expect(hasChanged).toBe(true);
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
it("should return true when removing a channel", async () => {
|
|
188
|
-
const hasChanged = await adapter.update([timeCh.key]);
|
|
189
|
-
expect(hasChanged).toBe(true);
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
it("should return true when replacing channels", async () => {
|
|
193
|
-
const newCh = await client.channels.create({
|
|
194
|
-
name: id.create(),
|
|
195
|
-
dataType: DataType.FLOAT32,
|
|
196
|
-
index: timeCh.key,
|
|
197
|
-
});
|
|
198
|
-
const hasChanged = await adapter.update([timeCh.key, newCh.key]);
|
|
199
|
-
expect(hasChanged).toBe(true);
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
it("should return false when updating with same channels in different order", async () => {
|
|
203
|
-
await adapter.update([timeCh.key, dataCh.key]);
|
|
204
|
-
const hasChanged = await adapter.update([dataCh.key, timeCh.key]);
|
|
205
|
-
expect(hasChanged).toBe(false);
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
it("should return false when updating with channel names that resolve to same keys", async () => {
|
|
209
|
-
await adapter.update([timeCh.key, dataCh.key]);
|
|
210
|
-
const hasChanged = await adapter.update([timeCh.name, dataCh.name]);
|
|
211
|
-
expect(hasChanged).toBe(false);
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
describe("ReadFrameAdapter", () => {
|
|
217
|
-
let timeCh: channel.Channel;
|
|
218
|
-
let dataCh: channel.Channel;
|
|
219
|
-
let extraCh: channel.Channel;
|
|
220
|
-
let adapter: ReadAdapter;
|
|
221
|
-
|
|
222
|
-
beforeAll(async () => {
|
|
223
|
-
timeCh = await client.channels.create({
|
|
224
|
-
name: id.create(),
|
|
225
|
-
dataType: DataType.TIMESTAMP,
|
|
226
|
-
isIndex: true,
|
|
227
|
-
});
|
|
228
|
-
dataCh = await client.channels.create({
|
|
229
|
-
name: id.create(),
|
|
230
|
-
dataType: DataType.FLOAT32,
|
|
231
|
-
index: timeCh.key,
|
|
232
|
-
});
|
|
233
|
-
extraCh = await client.channels.create({
|
|
234
|
-
name: id.create(),
|
|
235
|
-
dataType: DataType.FLOAT64,
|
|
236
|
-
index: timeCh.key,
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
adapter = await ReadAdapter.open(client.channels.retriever, [
|
|
240
|
-
timeCh.key,
|
|
241
|
-
dataCh.key,
|
|
242
|
-
]);
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
describe("adapt", () => {
|
|
246
|
-
describe("with keys (no conversion)", () => {
|
|
247
|
-
describe("hot path - exact channel match", () => {
|
|
248
|
-
it("should return frame unchanged when all channels match", () => {
|
|
249
|
-
// HOT PATH: Frame has exactly the channels registered with adapter
|
|
250
|
-
const ts = TimeStamp.now().valueOf();
|
|
251
|
-
const inputFrame = new Frame({
|
|
252
|
-
[timeCh.key]: new Series([ts]),
|
|
253
|
-
[dataCh.key]: new Series([1.5]),
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
const result = adapter.adapt(inputFrame);
|
|
257
|
-
|
|
258
|
-
// Frame should be returned unchanged (zero allocations)
|
|
259
|
-
expect(result).toBe(inputFrame); // Same object reference
|
|
260
|
-
expect(result.columns).toHaveLength(2);
|
|
261
|
-
expect(result.has(timeCh.key)).toBe(true);
|
|
262
|
-
expect(result.has(dataCh.key)).toBe(true);
|
|
263
|
-
expect(result.get(timeCh.key).at(0)).toEqual(ts);
|
|
264
|
-
expect(result.get(dataCh.key).at(0)).toEqual(1.5);
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
it("should preserve series data types in hot path", () => {
|
|
268
|
-
const ts = TimeStamp.now().valueOf();
|
|
269
|
-
const inputFrame = new Frame({
|
|
270
|
-
[timeCh.key]: new Series({ data: [ts], dataType: DataType.TIMESTAMP }),
|
|
271
|
-
[dataCh.key]: new Series({ data: [1.5], dataType: DataType.FLOAT32 }),
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
const result = adapter.adapt(inputFrame);
|
|
275
|
-
|
|
276
|
-
// Data types should be preserved
|
|
277
|
-
expect(result.get(timeCh.key).dataType).toEqual(DataType.TIMESTAMP);
|
|
278
|
-
expect(result.get(dataCh.key).dataType).toEqual(DataType.FLOAT32);
|
|
279
|
-
});
|
|
280
|
-
});
|
|
281
|
-
|
|
282
|
-
describe("cold path - filtering needed", () => {
|
|
283
|
-
it("should filter out extra channels in key mode", () => {
|
|
284
|
-
// COLD PATH: Frame has extra channels not in adapter
|
|
285
|
-
const ts = TimeStamp.now().valueOf();
|
|
286
|
-
const inputFrame = new Frame({
|
|
287
|
-
[timeCh.key]: new Series([ts]),
|
|
288
|
-
[dataCh.key]: new Series([1.5]),
|
|
289
|
-
[extraCh.key]: new Series([999.0]), // Extra channel
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
const result = adapter.adapt(inputFrame);
|
|
293
|
-
|
|
294
|
-
// Should filter out extraCh
|
|
295
|
-
expect(result).not.toBe(inputFrame); // Different object (filtered)
|
|
296
|
-
expect(result.columns).toHaveLength(2);
|
|
297
|
-
expect(result.has(timeCh.key)).toBe(true);
|
|
298
|
-
expect(result.has(dataCh.key)).toBe(true);
|
|
299
|
-
expect(result.has(extraCh.key)).toBe(false);
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
it("should handle partial matches in key mode", () => {
|
|
303
|
-
// Frame has some matching and some extra channels
|
|
304
|
-
const ts = TimeStamp.now().valueOf();
|
|
305
|
-
const inputFrame = new Frame({
|
|
306
|
-
[timeCh.key]: new Series([ts]),
|
|
307
|
-
[extraCh.key]: new Series([999.0]),
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
const result = adapter.adapt(inputFrame);
|
|
311
|
-
|
|
312
|
-
expect(result.columns).toHaveLength(1);
|
|
313
|
-
expect(result.has(timeCh.key)).toBe(true);
|
|
314
|
-
expect(result.has(extraCh.key)).toBe(false);
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
it("should return empty frame when no channels match in key mode", () => {
|
|
318
|
-
const inputFrame = new Frame({
|
|
319
|
-
[extraCh.key]: new Series([999.0]),
|
|
320
|
-
});
|
|
321
|
-
|
|
322
|
-
const result = adapter.adapt(inputFrame);
|
|
323
|
-
|
|
324
|
-
expect(result.columns).toHaveLength(0);
|
|
325
|
-
expect(result.series).toHaveLength(0);
|
|
326
|
-
});
|
|
327
|
-
});
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
describe("with names (conversion)", () => {
|
|
331
|
-
let nameAdapter: ReadAdapter;
|
|
332
|
-
|
|
333
|
-
beforeAll(async () => {
|
|
334
|
-
// Create adapter with channel names (triggers key-to-name mapping)
|
|
335
|
-
nameAdapter = await ReadAdapter.open(client.channels.retriever, [
|
|
336
|
-
timeCh.name,
|
|
337
|
-
dataCh.name,
|
|
338
|
-
]);
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
describe("hot path - exact match, only convert", () => {
|
|
342
|
-
it("should convert channel keys to names when all channels match", () => {
|
|
343
|
-
// HOT PATH: Frame has exactly the channels in adapter
|
|
344
|
-
const ts = TimeStamp.now().valueOf();
|
|
345
|
-
const inputFrame = new Frame({
|
|
346
|
-
[timeCh.key]: new Series([ts]),
|
|
347
|
-
[dataCh.key]: new Series([2.5]),
|
|
348
|
-
});
|
|
349
|
-
|
|
350
|
-
const result = nameAdapter.adapt(inputFrame);
|
|
351
|
-
|
|
352
|
-
// Output should have names instead of keys (one allocation for conversion)
|
|
353
|
-
expect(result.columns).toHaveLength(2);
|
|
354
|
-
expect(result.has(timeCh.name)).toBe(true);
|
|
355
|
-
expect(result.has(dataCh.name)).toBe(true);
|
|
356
|
-
expect(result.get(timeCh.name).at(0)).toEqual(ts);
|
|
357
|
-
expect(result.get(dataCh.name).at(0)).toEqual(2.5);
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
it("should handle multiple values in hot path", () => {
|
|
361
|
-
const ts = TimeStamp.now().valueOf();
|
|
362
|
-
const inputFrame = new Frame({
|
|
363
|
-
[timeCh.key]: new Series([ts, ts + 1000n]),
|
|
364
|
-
[dataCh.key]: new Series([1.0, 2.0]),
|
|
365
|
-
});
|
|
366
|
-
|
|
367
|
-
const result = nameAdapter.adapt(inputFrame);
|
|
368
|
-
|
|
369
|
-
expect(result.columns).toHaveLength(2);
|
|
370
|
-
expect(result.get(timeCh.name)).toHaveLength(2);
|
|
371
|
-
expect(result.get(dataCh.name)).toHaveLength(2);
|
|
372
|
-
expect(result.get(timeCh.name).at(0)).toEqual(ts);
|
|
373
|
-
expect(result.get(timeCh.name).at(1)).toEqual(ts + 1000n);
|
|
374
|
-
expect(result.get(dataCh.name).at(0)).toEqual(1.0);
|
|
375
|
-
expect(result.get(dataCh.name).at(1)).toEqual(2.0);
|
|
376
|
-
});
|
|
377
|
-
|
|
378
|
-
it("should preserve data types during name conversion", () => {
|
|
379
|
-
const ts = TimeStamp.now().valueOf();
|
|
380
|
-
const inputFrame = new Frame({
|
|
381
|
-
[timeCh.key]: new Series({ data: [ts], dataType: DataType.TIMESTAMP }),
|
|
382
|
-
[dataCh.key]: new Series({ data: [3.5], dataType: DataType.FLOAT32 }),
|
|
383
|
-
});
|
|
384
|
-
|
|
385
|
-
const result = nameAdapter.adapt(inputFrame);
|
|
386
|
-
|
|
387
|
-
expect(result.get(timeCh.name).dataType).toEqual(DataType.TIMESTAMP);
|
|
388
|
-
expect(result.get(dataCh.name).dataType).toEqual(DataType.FLOAT32);
|
|
389
|
-
});
|
|
390
|
-
});
|
|
391
|
-
|
|
392
|
-
describe("cold path - filter and convert", () => {
|
|
393
|
-
it("should filter out extra channels while converting", async () => {
|
|
394
|
-
// COLD PATH: Frame has extra channels that need filtering
|
|
395
|
-
const ts = TimeStamp.now().valueOf();
|
|
396
|
-
const inputFrame = new Frame({
|
|
397
|
-
[timeCh.key]: new Series([ts]),
|
|
398
|
-
[dataCh.key]: new Series([1.5]),
|
|
399
|
-
[extraCh.key]: new Series([999.0]), // Extra channel
|
|
400
|
-
});
|
|
401
|
-
|
|
402
|
-
const result = nameAdapter.adapt(inputFrame);
|
|
403
|
-
|
|
404
|
-
// Should filter extraCh and convert remaining keys to names
|
|
405
|
-
expect(result.columns).toHaveLength(2);
|
|
406
|
-
expect(result.has(timeCh.name)).toBe(true);
|
|
407
|
-
expect(result.has(dataCh.name)).toBe(true);
|
|
408
|
-
expect(result.has(extraCh.key)).toBe(false);
|
|
409
|
-
});
|
|
410
|
-
|
|
411
|
-
it("should handle partial matches while converting", async () => {
|
|
412
|
-
const filterAdapter = await ReadAdapter.open(client.channels.retriever, [
|
|
413
|
-
timeCh.name,
|
|
414
|
-
]);
|
|
415
|
-
|
|
416
|
-
const ts = TimeStamp.now().valueOf();
|
|
417
|
-
const inputFrame = new Frame({
|
|
418
|
-
[timeCh.key]: new Series([ts]),
|
|
419
|
-
[extraCh.key]: new Series([999.0]),
|
|
420
|
-
});
|
|
421
|
-
|
|
422
|
-
const result = filterAdapter.adapt(inputFrame);
|
|
423
|
-
|
|
424
|
-
expect(result.columns).toHaveLength(1);
|
|
425
|
-
expect(result.has(timeCh.name)).toBe(true);
|
|
426
|
-
expect(result.has(extraCh.key)).toBe(false);
|
|
427
|
-
expect(result.get(timeCh.name).at(0)).toEqual(ts);
|
|
428
|
-
});
|
|
429
|
-
|
|
430
|
-
it("should return empty frame when no channels match", async () => {
|
|
431
|
-
const filterAdapter = await ReadAdapter.open(client.channels.retriever, [
|
|
432
|
-
timeCh.name,
|
|
433
|
-
]);
|
|
434
|
-
|
|
435
|
-
const inputFrame = new Frame({
|
|
436
|
-
[extraCh.key]: new Series([999.0]),
|
|
437
|
-
});
|
|
438
|
-
|
|
439
|
-
const result = filterAdapter.adapt(inputFrame);
|
|
440
|
-
|
|
441
|
-
expect(result.columns).toHaveLength(0);
|
|
442
|
-
expect(result.series).toHaveLength(0);
|
|
443
|
-
});
|
|
444
|
-
});
|
|
445
|
-
});
|
|
446
|
-
|
|
447
|
-
describe("edge cases", () => {
|
|
448
|
-
it("should handle empty frames", () => {
|
|
449
|
-
const inputFrame = new Frame({});
|
|
450
|
-
|
|
451
|
-
const result = adapter.adapt(inputFrame);
|
|
452
|
-
|
|
453
|
-
expect(result.columns).toHaveLength(0);
|
|
454
|
-
expect(result.series).toHaveLength(0);
|
|
455
|
-
});
|
|
456
|
-
|
|
457
|
-
it("should handle frames with empty series", () => {
|
|
458
|
-
const inputFrame = new Frame({
|
|
459
|
-
[timeCh.key]: new Series({ data: [], dataType: DataType.TIMESTAMP }),
|
|
460
|
-
[dataCh.key]: new Series({ data: [], dataType: DataType.FLOAT32 }),
|
|
461
|
-
});
|
|
462
|
-
|
|
463
|
-
const result = adapter.adapt(inputFrame);
|
|
464
|
-
|
|
465
|
-
expect(result.columns).toHaveLength(2);
|
|
466
|
-
expect(result.get(timeCh.key)).toHaveLength(0);
|
|
467
|
-
expect(result.get(dataCh.key)).toHaveLength(0);
|
|
468
|
-
});
|
|
469
|
-
});
|
|
470
|
-
|
|
471
|
-
describe("data integrity", () => {
|
|
472
|
-
it("should preserve series values across multiple data types", async () => {
|
|
473
|
-
const int64Ch = await client.channels.create({
|
|
474
|
-
name: id.create(),
|
|
475
|
-
dataType: DataType.INT64,
|
|
476
|
-
index: timeCh.key,
|
|
477
|
-
});
|
|
478
|
-
|
|
479
|
-
const testAdapter = await ReadAdapter.open(client.channels.retriever, [
|
|
480
|
-
timeCh.key,
|
|
481
|
-
dataCh.key,
|
|
482
|
-
int64Ch.key,
|
|
483
|
-
]);
|
|
484
|
-
|
|
485
|
-
const ts = TimeStamp.now().valueOf();
|
|
486
|
-
const inputFrame = new Frame({
|
|
487
|
-
[timeCh.key]: new Series([ts, ts + 1000n]),
|
|
488
|
-
[dataCh.key]: new Series([1.5, 2.5]),
|
|
489
|
-
[int64Ch.key]: new Series([100n, 200n]),
|
|
490
|
-
});
|
|
491
|
-
|
|
492
|
-
const result = testAdapter.adapt(inputFrame);
|
|
493
|
-
|
|
494
|
-
// Verify all values preserved
|
|
495
|
-
expect(result.get(timeCh.key).at(0)).toEqual(ts);
|
|
496
|
-
expect(result.get(timeCh.key).at(1)).toEqual(ts + 1000n);
|
|
497
|
-
expect(result.get(dataCh.key).at(0)).toEqual(1.5);
|
|
498
|
-
expect(result.get(dataCh.key).at(1)).toEqual(2.5);
|
|
499
|
-
expect(result.get(int64Ch.key).at(0)).toEqual(100n);
|
|
500
|
-
expect(result.get(int64Ch.key).at(1)).toEqual(200n);
|
|
501
|
-
});
|
|
502
|
-
|
|
503
|
-
it("should preserve series lengths after filtering", () => {
|
|
504
|
-
const ts = TimeStamp.now().valueOf();
|
|
505
|
-
const inputFrame = new Frame({
|
|
506
|
-
[timeCh.key]: new Series([ts, ts + 1000n, ts + 2000n]),
|
|
507
|
-
[dataCh.key]: new Series([1.0, 2.0, 3.0]),
|
|
508
|
-
[extraCh.key]: new Series([999.0, 888.0, 777.0]),
|
|
509
|
-
});
|
|
510
|
-
|
|
511
|
-
const result = adapter.adapt(inputFrame);
|
|
512
|
-
|
|
513
|
-
// Lengths should be preserved for included channels
|
|
514
|
-
expect(result.get(timeCh.key)).toHaveLength(3);
|
|
515
|
-
expect(result.get(dataCh.key)).toHaveLength(3);
|
|
516
|
-
});
|
|
517
|
-
|
|
518
|
-
it("should preserve series order", () => {
|
|
519
|
-
const ts = TimeStamp.now().valueOf();
|
|
520
|
-
// Create frame with explicit column order
|
|
521
|
-
const inputFrame = new Frame(
|
|
522
|
-
[dataCh.key, timeCh.key],
|
|
523
|
-
[new Series([1.0, 2.0, 3.0]), new Series([ts, ts + 1000n, ts + 2000n])],
|
|
524
|
-
);
|
|
525
|
-
|
|
526
|
-
const result = adapter.adapt(inputFrame);
|
|
527
|
-
|
|
528
|
-
// Order should be preserved (dataCh first, then timeCh)
|
|
529
|
-
expect(result.columns[0]).toEqual(dataCh.key);
|
|
530
|
-
expect(result.columns[1]).toEqual(timeCh.key);
|
|
531
|
-
});
|
|
532
|
-
});
|
|
533
|
-
|
|
534
|
-
describe("state management", () => {
|
|
535
|
-
it("should handle multiple sequential updates correctly", async () => {
|
|
536
|
-
// Start with NAME mode to enable filtering
|
|
537
|
-
const newAdapter = await ReadAdapter.open(client.channels.retriever, [
|
|
538
|
-
timeCh.name,
|
|
539
|
-
]);
|
|
540
|
-
|
|
541
|
-
// Initial state: only timeCh registered
|
|
542
|
-
const ts = TimeStamp.now().valueOf();
|
|
543
|
-
const inputFrame = new Frame({
|
|
544
|
-
[timeCh.key]: new Series([ts]),
|
|
545
|
-
[dataCh.key]: new Series([1.5]),
|
|
546
|
-
});
|
|
547
|
-
|
|
548
|
-
// Should filter out dataCh and convert timeCh key to name
|
|
549
|
-
let result = newAdapter.adapt(inputFrame);
|
|
550
|
-
expect(result.columns).toHaveLength(1);
|
|
551
|
-
expect(result.has(timeCh.name)).toBe(true);
|
|
552
|
-
expect(result.has(dataCh.name)).toBe(false);
|
|
553
|
-
|
|
554
|
-
// Update to include dataCh
|
|
555
|
-
await newAdapter.update([timeCh.name, dataCh.name]);
|
|
556
|
-
|
|
557
|
-
// Should now include both channels (converted to names)
|
|
558
|
-
result = newAdapter.adapt(inputFrame);
|
|
559
|
-
expect(result.columns).toHaveLength(2);
|
|
560
|
-
expect(result.has(timeCh.name)).toBe(true);
|
|
561
|
-
expect(result.has(dataCh.name)).toBe(true);
|
|
562
|
-
});
|
|
563
|
-
});
|
|
564
|
-
|
|
565
|
-
describe("codec integration", () => {
|
|
566
|
-
it("should update codec when channels change", async () => {
|
|
567
|
-
const codecAdapter = await ReadAdapter.open(client.channels.retriever, [
|
|
568
|
-
timeCh.key,
|
|
569
|
-
]);
|
|
570
|
-
expect(codecAdapter.keys).toHaveLength(1);
|
|
571
|
-
await codecAdapter.update([timeCh.key, dataCh.key]);
|
|
572
|
-
expect(codecAdapter.keys).toHaveLength(2);
|
|
573
|
-
});
|
|
574
|
-
});
|
|
575
|
-
});
|
|
576
|
-
|
|
577
|
-
describe("update", () => {
|
|
578
|
-
it("should return false when updating with the same channels", async () => {
|
|
579
|
-
const hasChanged = await adapter.update([timeCh.key, dataCh.key]);
|
|
580
|
-
expect(hasChanged).toBe(false);
|
|
581
|
-
});
|
|
582
|
-
|
|
583
|
-
it("should return true when adding a new channel", async () => {
|
|
584
|
-
const newCh = await client.channels.create({
|
|
585
|
-
name: id.create(),
|
|
586
|
-
dataType: DataType.FLOAT32,
|
|
587
|
-
index: timeCh.key,
|
|
588
|
-
});
|
|
589
|
-
const hasChanged = await adapter.update([timeCh.key, dataCh.key, newCh.key]);
|
|
590
|
-
expect(hasChanged).toBe(true);
|
|
591
|
-
});
|
|
592
|
-
|
|
593
|
-
it("should return true when removing a channel", async () => {
|
|
594
|
-
const hasChanged = await adapter.update([timeCh.key]);
|
|
595
|
-
expect(hasChanged).toBe(true);
|
|
596
|
-
});
|
|
597
|
-
|
|
598
|
-
it("should return true when replacing channels", async () => {
|
|
599
|
-
const newCh = await client.channels.create({
|
|
600
|
-
name: id.create(),
|
|
601
|
-
dataType: DataType.FLOAT32,
|
|
602
|
-
index: timeCh.key,
|
|
603
|
-
});
|
|
604
|
-
const hasChanged = await adapter.update([timeCh.key, newCh.key]);
|
|
605
|
-
expect(hasChanged).toBe(true);
|
|
606
|
-
});
|
|
607
|
-
|
|
608
|
-
it("should return false when updating with same channels in different order", async () => {
|
|
609
|
-
await adapter.update([timeCh.key, dataCh.key]);
|
|
610
|
-
const hasChanged = await adapter.update([dataCh.key, timeCh.key]);
|
|
611
|
-
expect(hasChanged).toBe(false);
|
|
612
|
-
});
|
|
613
|
-
|
|
614
|
-
it("should return false when updating with channel names that resolve to same keys", async () => {
|
|
615
|
-
await adapter.update([timeCh.key, dataCh.key]);
|
|
616
|
-
const hasChanged = await adapter.update([timeCh.name, dataCh.name]);
|
|
617
|
-
expect(hasChanged).toBe(false);
|
|
618
|
-
});
|
|
619
|
-
});
|
|
620
|
-
});
|