@synnaxlabs/client 0.46.1 → 0.48.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/.turbo/turbo-build.log +7 -7
- package/dist/client.cjs +35 -35
- package/dist/client.js +5053 -4924
- package/dist/eslint.config.d.ts +4 -0
- package/dist/eslint.config.d.ts.map +1 -0
- package/dist/src/access/client.d.ts.map +1 -0
- package/dist/src/access/external.d.ts.map +1 -0
- package/dist/src/access/index.d.ts.map +1 -0
- package/dist/src/access/payload.d.ts.map +1 -0
- package/dist/src/access/policy/client.d.ts.map +1 -0
- package/dist/src/access/policy/external.d.ts.map +1 -0
- package/dist/src/access/policy/index.d.ts.map +1 -0
- package/dist/src/access/policy/payload.d.ts.map +1 -0
- package/dist/src/access/policy/policy.spec.d.ts.map +1 -0
- package/dist/{arc → src/arc}/client.d.ts +17 -2
- package/dist/src/arc/client.d.ts.map +1 -0
- package/dist/src/arc/external.d.ts.map +1 -0
- package/dist/src/arc/index.d.ts.map +1 -0
- package/dist/src/arc/lsp.spec.d.ts +2 -0
- package/dist/src/arc/lsp.spec.d.ts.map +1 -0
- package/dist/{arc → src/arc}/payload.d.ts +11 -9
- package/dist/src/arc/payload.d.ts.map +1 -0
- package/dist/src/auth/auth.d.ts.map +1 -0
- package/dist/{auth → src/auth}/auth.spec.d.ts.map +1 -1
- package/dist/src/auth/index.d.ts.map +1 -0
- package/dist/src/channel/batchRetriever.spec.d.ts.map +1 -0
- package/dist/src/channel/channel.spec.d.ts.map +1 -0
- package/dist/{channel → src/channel}/client.d.ts +8 -8
- package/dist/src/channel/client.d.ts.map +1 -0
- package/dist/src/channel/external.d.ts.map +1 -0
- package/dist/src/channel/index.d.ts.map +1 -0
- package/dist/src/channel/payload.d.ts +260 -0
- package/dist/src/channel/payload.d.ts.map +1 -0
- package/dist/{channel → src/channel}/retriever.d.ts +2 -1
- package/dist/src/channel/retriever.d.ts.map +1 -0
- package/dist/src/channel/writer.d.ts.map +1 -0
- package/dist/{client.d.ts → src/client.d.ts} +10 -6
- package/dist/src/client.d.ts.map +1 -0
- package/dist/{connection → src/connection}/checker.d.ts +3 -4
- package/dist/src/connection/checker.d.ts.map +1 -0
- package/dist/src/connection/connection.spec.d.ts +2 -0
- package/dist/src/connection/connection.spec.d.ts.map +1 -0
- package/dist/src/connection/index.d.ts.map +1 -0
- package/dist/src/connection.spec.d.ts.map +1 -0
- package/dist/src/control/client.d.ts.map +1 -0
- package/dist/src/control/external.d.ts.map +1 -0
- package/dist/src/control/index.d.ts.map +1 -0
- package/dist/{control → src/control}/state.d.ts +1 -2
- package/dist/src/control/state.d.ts.map +1 -0
- package/dist/{control → src/control}/state.spec.d.ts.map +1 -1
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/{errors.spec.d.ts.map → src/errors.spec.d.ts.map} +1 -1
- package/dist/{framer → src/framer}/adapter.d.ts +3 -3
- package/dist/src/framer/adapter.d.ts.map +1 -0
- package/dist/src/framer/adapter.spec.d.ts.map +1 -0
- package/dist/src/framer/client.d.ts.map +1 -0
- package/dist/src/framer/client.spec.d.ts.map +1 -0
- package/dist/src/framer/codec.d.ts.map +1 -0
- package/dist/{framer → src/framer}/codec.spec.d.ts.map +1 -1
- package/dist/src/framer/deleter.d.ts.map +1 -0
- package/dist/src/framer/deleter.spec.d.ts.map +1 -0
- package/dist/{framer → src/framer}/external.d.ts +1 -0
- package/dist/src/framer/external.d.ts.map +1 -0
- package/dist/{framer → src/framer}/frame.d.ts +5 -4
- package/dist/src/framer/frame.d.ts.map +1 -0
- package/dist/{framer → src/framer}/frame.spec.d.ts.map +1 -1
- package/dist/src/framer/index.d.ts.map +1 -0
- package/dist/{framer → src/framer}/iterator.d.ts +1 -2
- package/dist/src/framer/iterator.d.ts.map +1 -0
- package/dist/src/framer/iterator.spec.d.ts.map +1 -0
- package/dist/src/framer/payload.d.ts +7 -0
- package/dist/src/framer/payload.d.ts.map +1 -0
- package/dist/src/framer/streamProxy.d.ts.map +1 -0
- package/dist/{framer → src/framer}/streamer.d.ts +106 -4
- package/dist/src/framer/streamer.d.ts.map +1 -0
- package/dist/src/framer/streamer.spec.d.ts.map +1 -0
- package/dist/{framer → src/framer}/writer.d.ts +133 -36
- package/dist/src/framer/writer.d.ts.map +1 -0
- package/dist/src/framer/writer.spec.d.ts.map +1 -0
- package/dist/src/hardware/client.d.ts.map +1 -0
- package/dist/src/hardware/device/client.d.ts.map +1 -0
- package/dist/src/hardware/device/device.spec.d.ts.map +1 -0
- package/dist/src/hardware/device/external.d.ts.map +1 -0
- package/dist/src/hardware/device/index.d.ts.map +1 -0
- package/dist/{hardware → src/hardware}/device/payload.d.ts +4 -4
- package/dist/src/hardware/device/payload.d.ts.map +1 -0
- package/dist/src/hardware/external.d.ts.map +1 -0
- package/dist/src/hardware/index.d.ts.map +1 -0
- package/dist/src/hardware/rack/client.d.ts.map +1 -0
- package/dist/src/hardware/rack/external.d.ts.map +1 -0
- package/dist/src/hardware/rack/index.d.ts.map +1 -0
- package/dist/{hardware → src/hardware}/rack/payload.d.ts +4 -4
- package/dist/src/hardware/rack/payload.d.ts.map +1 -0
- package/dist/src/hardware/rack/rack.spec.d.ts.map +1 -0
- package/dist/{hardware → src/hardware}/task/client.d.ts +1 -2
- package/dist/src/hardware/task/client.d.ts.map +1 -0
- package/dist/src/hardware/task/external.d.ts.map +1 -0
- package/dist/src/hardware/task/index.d.ts.map +1 -0
- package/dist/src/hardware/task/payload.d.ts.map +1 -0
- package/dist/src/hardware/task/task.spec.d.ts.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +3 -3
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/label/client.d.ts.map +1 -0
- package/dist/src/label/external.d.ts.map +1 -0
- package/dist/src/label/index.d.ts.map +1 -0
- package/dist/{label → src/label}/label.spec.d.ts.map +1 -1
- package/dist/src/label/payload.d.ts.map +1 -0
- package/dist/src/ontology/client.d.ts.map +1 -0
- package/dist/src/ontology/external.d.ts.map +1 -0
- package/dist/src/ontology/group/client.d.ts.map +1 -0
- package/dist/src/ontology/group/external.d.ts.map +1 -0
- package/dist/src/ontology/group/group.spec.d.ts.map +1 -0
- package/dist/src/ontology/group/index.d.ts.map +1 -0
- package/dist/src/ontology/group/payload.d.ts.map +1 -0
- package/dist/src/ontology/index.d.ts.map +1 -0
- package/dist/src/ontology/ontology.spec.d.ts.map +1 -0
- package/dist/src/ontology/payload.d.ts.map +1 -0
- package/dist/src/ontology/writer.d.ts.map +1 -0
- package/dist/{ranger → src/ranger}/alias.d.ts +1 -1
- package/dist/src/ranger/alias.d.ts.map +1 -0
- package/dist/{ranger → src/ranger}/client.d.ts +1 -2
- package/dist/src/ranger/client.d.ts.map +1 -0
- package/dist/src/ranger/external.d.ts.map +1 -0
- package/dist/src/ranger/index.d.ts.map +1 -0
- package/dist/src/ranger/kv.d.ts.map +1 -0
- package/dist/{ranger → src/ranger}/payload.d.ts +1 -1
- package/dist/src/ranger/payload.d.ts.map +1 -0
- package/dist/src/ranger/ranger.spec.d.ts.map +1 -0
- package/dist/src/ranger/writer.d.ts.map +1 -0
- package/dist/src/status/client.d.ts.map +1 -0
- package/dist/src/status/external.d.ts.map +1 -0
- package/dist/src/status/index.d.ts.map +1 -0
- package/dist/{status → src/status}/payload.d.ts +2 -2
- package/dist/src/status/payload.d.ts.map +1 -0
- package/dist/src/status/status.spec.d.ts.map +1 -0
- package/dist/src/testutil/channels.d.ts.map +1 -0
- package/dist/src/testutil/client.d.ts +4 -0
- package/dist/src/testutil/client.d.ts.map +1 -0
- package/dist/src/testutil/telem.d.ts.map +1 -0
- package/dist/{transport.d.ts → src/transport.d.ts} +1 -2
- package/dist/src/transport.d.ts.map +1 -0
- package/dist/src/user/client.d.ts.map +1 -0
- package/dist/src/user/external.d.ts.map +1 -0
- package/dist/src/user/index.d.ts.map +1 -0
- package/dist/src/user/payload.d.ts.map +1 -0
- package/dist/src/user/retriever.d.ts.map +1 -0
- package/dist/{user → src/user}/user.spec.d.ts.map +1 -1
- package/dist/src/user/writer.d.ts.map +1 -0
- package/dist/src/util/decodeJSONString.d.ts.map +1 -0
- package/dist/src/util/parseWithoutKeyConversion.d.ts +3 -0
- package/dist/src/util/parseWithoutKeyConversion.d.ts.map +1 -0
- package/dist/src/util/retrieve.d.ts.map +1 -0
- package/dist/src/util/retrieve.spec.d.ts.map +1 -0
- package/dist/src/util/telem.d.ts +3 -0
- package/dist/src/util/telem.d.ts.map +1 -0
- package/dist/src/workspace/client.d.ts.map +1 -0
- package/dist/src/workspace/external.d.ts.map +1 -0
- package/dist/src/workspace/index.d.ts.map +1 -0
- package/dist/src/workspace/lineplot/client.d.ts.map +1 -0
- package/dist/src/workspace/lineplot/external.d.ts.map +1 -0
- package/dist/src/workspace/lineplot/index.d.ts.map +1 -0
- package/dist/src/workspace/lineplot/lineplot.spec.d.ts.map +1 -0
- package/dist/{workspace → src/workspace}/lineplot/payload.d.ts +1 -1
- package/dist/src/workspace/lineplot/payload.d.ts.map +1 -0
- package/dist/src/workspace/log/client.d.ts.map +1 -0
- package/dist/src/workspace/log/external.d.ts.map +1 -0
- package/dist/src/workspace/log/index.d.ts.map +1 -0
- package/dist/src/workspace/log/log.spec.d.ts.map +1 -0
- package/dist/{workspace → src/workspace}/log/payload.d.ts +1 -1
- package/dist/src/workspace/log/payload.d.ts.map +1 -0
- package/dist/{workspace → src/workspace}/payload.d.ts +1 -1
- package/dist/src/workspace/payload.d.ts.map +1 -0
- package/dist/src/workspace/schematic/client.d.ts.map +1 -0
- package/dist/src/workspace/schematic/external.d.ts.map +1 -0
- package/dist/src/workspace/schematic/index.d.ts.map +1 -0
- package/dist/{workspace → src/workspace}/schematic/payload.d.ts +1 -1
- package/dist/src/workspace/schematic/payload.d.ts.map +1 -0
- package/dist/src/workspace/schematic/schematic.spec.d.ts.map +1 -0
- package/dist/src/workspace/schematic/symbol/client.d.ts.map +1 -0
- package/dist/src/workspace/schematic/symbol/client.spec.d.ts.map +1 -0
- package/dist/src/workspace/schematic/symbol/external.d.ts.map +1 -0
- package/dist/src/workspace/schematic/symbol/index.d.ts.map +1 -0
- package/dist/src/workspace/schematic/symbol/payload.d.ts.map +1 -0
- package/dist/src/workspace/table/client.d.ts.map +1 -0
- package/dist/src/workspace/table/external.d.ts.map +1 -0
- package/dist/src/workspace/table/index.d.ts.map +1 -0
- package/dist/{workspace → src/workspace}/table/payload.d.ts +1 -1
- package/dist/src/workspace/table/payload.d.ts.map +1 -0
- package/dist/src/workspace/table/table.spec.d.ts.map +1 -0
- package/dist/src/workspace/workspace.spec.d.ts.map +1 -0
- package/eslint.config.ts +14 -0
- package/examples/node/streamWrite.js +0 -1
- package/package.json +11 -11
- package/src/arc/client.ts +27 -2
- package/src/arc/lsp.spec.ts +852 -0
- package/src/arc/payload.ts +13 -8
- package/src/auth/auth.spec.ts +14 -14
- package/src/channel/batchRetriever.spec.ts +3 -2
- package/src/channel/channel.spec.ts +8 -22
- package/src/channel/client.ts +22 -14
- package/src/channel/payload.ts +25 -3
- package/src/channel/retriever.ts +2 -3
- package/src/client.ts +26 -14
- package/src/connection/checker.ts +13 -14
- package/src/connection/connection.spec.ts +14 -14
- package/src/connection.spec.ts +145 -0
- package/src/control/state.ts +1 -3
- package/src/errors.ts +2 -2
- package/src/framer/adapter.spec.ts +340 -2
- package/src/framer/adapter.ts +24 -15
- package/src/framer/client.ts +0 -2
- package/src/framer/codec.spec.ts +11 -1
- package/src/framer/codec.ts +3 -2
- package/src/framer/deleter.spec.ts +1 -1
- package/src/framer/deleter.ts +1 -3
- package/src/framer/external.ts +1 -0
- package/src/framer/frame.spec.ts +297 -1
- package/src/framer/frame.ts +26 -6
- package/src/framer/iterator.spec.ts +1 -2
- package/src/framer/iterator.ts +4 -5
- package/{eslint.config.js → src/framer/payload.ts} +6 -3
- package/src/framer/streamer.spec.ts +72 -12
- package/src/framer/streamer.ts +7 -6
- package/src/framer/writer.spec.ts +1 -9
- package/src/framer/writer.ts +29 -35
- package/src/hardware/task/client.ts +9 -2
- package/src/index.ts +10 -3
- package/src/label/client.ts +1 -1
- package/src/ranger/alias.ts +1 -2
- package/src/ranger/client.ts +1 -2
- package/src/ranger/kv.ts +1 -2
- package/src/ranger/payload.ts +1 -2
- package/src/ranger/ranger.spec.ts +1 -2
- package/src/status/client.ts +1 -1
- package/src/status/payload.ts +4 -2
- package/src/testutil/client.ts +4 -4
- package/src/transport.ts +1 -3
- package/src/user/writer.ts +1 -1
- package/src/util/parseWithoutKeyConversion.ts +1 -1
- package/src/util/telem.ts +1 -1
- package/src/workspace/lineplot/payload.ts +1 -1
- package/src/workspace/log/payload.ts +1 -1
- package/src/workspace/payload.ts +1 -1
- package/src/workspace/schematic/payload.ts +1 -1
- package/src/workspace/table/payload.ts +1 -1
- package/tsconfig.json +1 -1
- package/dist/access/client.d.ts.map +0 -1
- package/dist/access/external.d.ts.map +0 -1
- package/dist/access/index.d.ts.map +0 -1
- package/dist/access/payload.d.ts.map +0 -1
- package/dist/access/policy/client.d.ts.map +0 -1
- package/dist/access/policy/external.d.ts.map +0 -1
- package/dist/access/policy/index.d.ts.map +0 -1
- package/dist/access/policy/payload.d.ts.map +0 -1
- package/dist/access/policy/policy.spec.d.ts.map +0 -1
- package/dist/arc/client.d.ts.map +0 -1
- package/dist/arc/external.d.ts.map +0 -1
- package/dist/arc/index.d.ts.map +0 -1
- package/dist/arc/payload.d.ts.map +0 -1
- package/dist/auth/auth.d.ts.map +0 -1
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/channel/batchRetriever.spec.d.ts.map +0 -1
- package/dist/channel/channel.spec.d.ts.map +0 -1
- package/dist/channel/client.d.ts.map +0 -1
- package/dist/channel/external.d.ts.map +0 -1
- package/dist/channel/index.d.ts.map +0 -1
- package/dist/channel/payload.d.ts +0 -150
- package/dist/channel/payload.d.ts.map +0 -1
- package/dist/channel/retriever.d.ts.map +0 -1
- package/dist/channel/writer.d.ts.map +0 -1
- package/dist/client.d.ts.map +0 -1
- package/dist/connection/checker.d.ts.map +0 -1
- package/dist/connection/connection.spec.d.ts.map +0 -1
- package/dist/connection/index.d.ts.map +0 -1
- package/dist/control/client.d.ts.map +0 -1
- package/dist/control/external.d.ts.map +0 -1
- package/dist/control/index.d.ts.map +0 -1
- package/dist/control/state.d.ts.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/framer/adapter.d.ts.map +0 -1
- package/dist/framer/adapter.spec.d.ts.map +0 -1
- package/dist/framer/client.d.ts.map +0 -1
- package/dist/framer/client.spec.d.ts.map +0 -1
- package/dist/framer/codec.d.ts.map +0 -1
- package/dist/framer/deleter.d.ts.map +0 -1
- package/dist/framer/deleter.spec.d.ts.map +0 -1
- package/dist/framer/external.d.ts.map +0 -1
- package/dist/framer/frame.d.ts.map +0 -1
- package/dist/framer/index.d.ts.map +0 -1
- package/dist/framer/iterator.d.ts.map +0 -1
- package/dist/framer/iterator.spec.d.ts.map +0 -1
- package/dist/framer/streamProxy.d.ts.map +0 -1
- package/dist/framer/streamer.d.ts.map +0 -1
- package/dist/framer/streamer.spec.d.ts.map +0 -1
- package/dist/framer/writer.d.ts.map +0 -1
- package/dist/framer/writer.spec.d.ts.map +0 -1
- package/dist/hardware/client.d.ts.map +0 -1
- package/dist/hardware/device/client.d.ts.map +0 -1
- package/dist/hardware/device/device.spec.d.ts.map +0 -1
- package/dist/hardware/device/external.d.ts.map +0 -1
- package/dist/hardware/device/index.d.ts.map +0 -1
- package/dist/hardware/device/payload.d.ts.map +0 -1
- package/dist/hardware/external.d.ts.map +0 -1
- package/dist/hardware/index.d.ts.map +0 -1
- package/dist/hardware/rack/client.d.ts.map +0 -1
- package/dist/hardware/rack/external.d.ts.map +0 -1
- package/dist/hardware/rack/index.d.ts.map +0 -1
- package/dist/hardware/rack/payload.d.ts.map +0 -1
- package/dist/hardware/rack/rack.spec.d.ts.map +0 -1
- package/dist/hardware/task/client.d.ts.map +0 -1
- package/dist/hardware/task/external.d.ts.map +0 -1
- package/dist/hardware/task/index.d.ts.map +0 -1
- package/dist/hardware/task/payload.d.ts.map +0 -1
- package/dist/hardware/task/task.spec.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/label/client.d.ts.map +0 -1
- package/dist/label/external.d.ts.map +0 -1
- package/dist/label/index.d.ts.map +0 -1
- package/dist/label/payload.d.ts.map +0 -1
- package/dist/ontology/client.d.ts.map +0 -1
- package/dist/ontology/external.d.ts.map +0 -1
- package/dist/ontology/group/client.d.ts.map +0 -1
- package/dist/ontology/group/external.d.ts.map +0 -1
- package/dist/ontology/group/group.spec.d.ts.map +0 -1
- package/dist/ontology/group/index.d.ts.map +0 -1
- package/dist/ontology/group/payload.d.ts.map +0 -1
- package/dist/ontology/index.d.ts.map +0 -1
- package/dist/ontology/ontology.spec.d.ts.map +0 -1
- package/dist/ontology/payload.d.ts.map +0 -1
- package/dist/ontology/writer.d.ts.map +0 -1
- package/dist/ranger/alias.d.ts.map +0 -1
- package/dist/ranger/client.d.ts.map +0 -1
- package/dist/ranger/external.d.ts.map +0 -1
- package/dist/ranger/index.d.ts.map +0 -1
- package/dist/ranger/kv.d.ts.map +0 -1
- package/dist/ranger/payload.d.ts.map +0 -1
- package/dist/ranger/ranger.spec.d.ts.map +0 -1
- package/dist/ranger/writer.d.ts.map +0 -1
- package/dist/status/client.d.ts.map +0 -1
- package/dist/status/external.d.ts.map +0 -1
- package/dist/status/index.d.ts.map +0 -1
- package/dist/status/payload.d.ts.map +0 -1
- package/dist/status/status.spec.d.ts.map +0 -1
- package/dist/testutil/channels.d.ts.map +0 -1
- package/dist/testutil/client.d.ts +0 -4
- package/dist/testutil/client.d.ts.map +0 -1
- package/dist/testutil/telem.d.ts.map +0 -1
- package/dist/transport.d.ts.map +0 -1
- package/dist/user/client.d.ts.map +0 -1
- package/dist/user/external.d.ts.map +0 -1
- package/dist/user/index.d.ts.map +0 -1
- package/dist/user/payload.d.ts.map +0 -1
- package/dist/user/retriever.d.ts.map +0 -1
- package/dist/user/writer.d.ts.map +0 -1
- package/dist/util/decodeJSONString.d.ts.map +0 -1
- package/dist/util/parseWithoutKeyConversion.d.ts +0 -3
- package/dist/util/parseWithoutKeyConversion.d.ts.map +0 -1
- package/dist/util/retrieve.d.ts.map +0 -1
- package/dist/util/retrieve.spec.d.ts.map +0 -1
- package/dist/util/telem.d.ts +0 -3
- package/dist/util/telem.d.ts.map +0 -1
- package/dist/workspace/client.d.ts.map +0 -1
- package/dist/workspace/external.d.ts.map +0 -1
- package/dist/workspace/index.d.ts.map +0 -1
- package/dist/workspace/lineplot/client.d.ts.map +0 -1
- package/dist/workspace/lineplot/external.d.ts.map +0 -1
- package/dist/workspace/lineplot/index.d.ts.map +0 -1
- package/dist/workspace/lineplot/lineplot.spec.d.ts.map +0 -1
- package/dist/workspace/lineplot/payload.d.ts.map +0 -1
- package/dist/workspace/log/client.d.ts.map +0 -1
- package/dist/workspace/log/external.d.ts.map +0 -1
- package/dist/workspace/log/index.d.ts.map +0 -1
- package/dist/workspace/log/log.spec.d.ts.map +0 -1
- package/dist/workspace/log/payload.d.ts.map +0 -1
- package/dist/workspace/payload.d.ts.map +0 -1
- package/dist/workspace/schematic/client.d.ts.map +0 -1
- package/dist/workspace/schematic/external.d.ts.map +0 -1
- package/dist/workspace/schematic/index.d.ts.map +0 -1
- package/dist/workspace/schematic/payload.d.ts.map +0 -1
- package/dist/workspace/schematic/schematic.spec.d.ts.map +0 -1
- package/dist/workspace/schematic/symbol/client.d.ts.map +0 -1
- package/dist/workspace/schematic/symbol/client.spec.d.ts.map +0 -1
- package/dist/workspace/schematic/symbol/external.d.ts.map +0 -1
- package/dist/workspace/schematic/symbol/index.d.ts.map +0 -1
- package/dist/workspace/schematic/symbol/payload.d.ts.map +0 -1
- package/dist/workspace/table/client.d.ts.map +0 -1
- package/dist/workspace/table/external.d.ts.map +0 -1
- package/dist/workspace/table/index.d.ts.map +0 -1
- package/dist/workspace/table/payload.d.ts.map +0 -1
- package/dist/workspace/table/table.spec.d.ts.map +0 -1
- package/dist/workspace/workspace.spec.d.ts.map +0 -1
- /package/dist/{access → src/access}/client.d.ts +0 -0
- /package/dist/{access → src/access}/external.d.ts +0 -0
- /package/dist/{access → src/access}/index.d.ts +0 -0
- /package/dist/{access → src/access}/payload.d.ts +0 -0
- /package/dist/{access → src/access}/policy/client.d.ts +0 -0
- /package/dist/{access → src/access}/policy/external.d.ts +0 -0
- /package/dist/{access → src/access}/policy/index.d.ts +0 -0
- /package/dist/{access → src/access}/policy/payload.d.ts +0 -0
- /package/dist/{access → src/access}/policy/policy.spec.d.ts +0 -0
- /package/dist/{arc → src/arc}/external.d.ts +0 -0
- /package/dist/{arc → src/arc}/index.d.ts +0 -0
- /package/dist/{auth → src/auth}/auth.d.ts +0 -0
- /package/dist/{auth → src/auth}/auth.spec.d.ts +0 -0
- /package/dist/{auth → src/auth}/index.d.ts +0 -0
- /package/dist/{channel → src/channel}/batchRetriever.spec.d.ts +0 -0
- /package/dist/{channel → src/channel}/channel.spec.d.ts +0 -0
- /package/dist/{channel → src/channel}/external.d.ts +0 -0
- /package/dist/{channel → src/channel}/index.d.ts +0 -0
- /package/dist/{channel → src/channel}/writer.d.ts +0 -0
- /package/dist/{connection → src/connection}/index.d.ts +0 -0
- /package/dist/{connection → src}/connection.spec.d.ts +0 -0
- /package/dist/{control → src/control}/client.d.ts +0 -0
- /package/dist/{control → src/control}/external.d.ts +0 -0
- /package/dist/{control → src/control}/index.d.ts +0 -0
- /package/dist/{control → src/control}/state.spec.d.ts +0 -0
- /package/dist/{errors.d.ts → src/errors.d.ts} +0 -0
- /package/dist/{errors.spec.d.ts → src/errors.spec.d.ts} +0 -0
- /package/dist/{framer → src/framer}/adapter.spec.d.ts +0 -0
- /package/dist/{framer → src/framer}/client.d.ts +0 -0
- /package/dist/{framer → src/framer}/client.spec.d.ts +0 -0
- /package/dist/{framer → src/framer}/codec.d.ts +0 -0
- /package/dist/{framer → src/framer}/codec.spec.d.ts +0 -0
- /package/dist/{framer → src/framer}/deleter.d.ts +0 -0
- /package/dist/{framer → src/framer}/deleter.spec.d.ts +0 -0
- /package/dist/{framer → src/framer}/frame.spec.d.ts +0 -0
- /package/dist/{framer → src/framer}/index.d.ts +0 -0
- /package/dist/{framer → src/framer}/iterator.spec.d.ts +0 -0
- /package/dist/{framer → src/framer}/streamProxy.d.ts +0 -0
- /package/dist/{framer → src/framer}/streamer.spec.d.ts +0 -0
- /package/dist/{framer → src/framer}/writer.spec.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/client.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/device/client.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/device/device.spec.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/device/external.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/device/index.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/external.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/index.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/rack/client.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/rack/external.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/rack/index.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/rack/rack.spec.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/task/external.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/task/index.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/task/payload.d.ts +0 -0
- /package/dist/{hardware → src/hardware}/task/task.spec.d.ts +0 -0
- /package/dist/{label → src/label}/client.d.ts +0 -0
- /package/dist/{label → src/label}/external.d.ts +0 -0
- /package/dist/{label → src/label}/index.d.ts +0 -0
- /package/dist/{label → src/label}/label.spec.d.ts +0 -0
- /package/dist/{label → src/label}/payload.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/client.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/external.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/group/client.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/group/external.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/group/group.spec.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/group/index.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/group/payload.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/index.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/ontology.spec.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/payload.d.ts +0 -0
- /package/dist/{ontology → src/ontology}/writer.d.ts +0 -0
- /package/dist/{ranger → src/ranger}/external.d.ts +0 -0
- /package/dist/{ranger → src/ranger}/index.d.ts +0 -0
- /package/dist/{ranger → src/ranger}/kv.d.ts +0 -0
- /package/dist/{ranger → src/ranger}/ranger.spec.d.ts +0 -0
- /package/dist/{ranger → src/ranger}/writer.d.ts +0 -0
- /package/dist/{status → src/status}/client.d.ts +0 -0
- /package/dist/{status → src/status}/external.d.ts +0 -0
- /package/dist/{status → src/status}/index.d.ts +0 -0
- /package/dist/{status → src/status}/status.spec.d.ts +0 -0
- /package/dist/{testutil → src/testutil}/channels.d.ts +0 -0
- /package/dist/{testutil → src/testutil}/telem.d.ts +0 -0
- /package/dist/{user → src/user}/client.d.ts +0 -0
- /package/dist/{user → src/user}/external.d.ts +0 -0
- /package/dist/{user → src/user}/index.d.ts +0 -0
- /package/dist/{user → src/user}/payload.d.ts +0 -0
- /package/dist/{user → src/user}/retriever.d.ts +0 -0
- /package/dist/{user → src/user}/user.spec.d.ts +0 -0
- /package/dist/{user → src/user}/writer.d.ts +0 -0
- /package/dist/{util → src/util}/decodeJSONString.d.ts +0 -0
- /package/dist/{util → src/util}/retrieve.d.ts +0 -0
- /package/dist/{util → src/util}/retrieve.spec.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/client.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/external.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/index.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/lineplot/client.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/lineplot/external.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/lineplot/index.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/lineplot/lineplot.spec.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/log/client.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/log/external.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/log/index.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/log/log.spec.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/schematic/client.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/schematic/external.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/schematic/index.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/schematic/schematic.spec.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/schematic/symbol/client.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/schematic/symbol/client.spec.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/schematic/symbol/external.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/schematic/symbol/index.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/schematic/symbol/payload.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/table/client.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/table/external.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/table/index.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/table/table.spec.d.ts +0 -0
- /package/dist/{workspace → src/workspace}/workspace.spec.d.ts +0 -0
package/src/framer/adapter.ts
CHANGED
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
import { compare } from "@synnaxlabs/x";
|
|
11
|
-
import { type CrudeSeries, Series } from "@synnaxlabs/x/telem";
|
|
10
|
+
import { compare, type CrudeSeries, Series } from "@synnaxlabs/x";
|
|
12
11
|
|
|
13
12
|
import { channel } from "@/channel";
|
|
14
13
|
import { ValidationError } from "@/errors";
|
|
@@ -18,13 +17,13 @@ import { type CrudeFrame, Frame } from "@/framer/frame";
|
|
|
18
17
|
export class ReadAdapter {
|
|
19
18
|
private adapter: Map<channel.Key, channel.Name> | null;
|
|
20
19
|
retriever: channel.Retriever;
|
|
21
|
-
keys: channel.Key
|
|
20
|
+
keys: Set<channel.Key>;
|
|
22
21
|
codec: Codec;
|
|
23
22
|
|
|
24
23
|
private constructor(retriever: channel.Retriever) {
|
|
25
24
|
this.retriever = retriever;
|
|
26
25
|
this.adapter = null;
|
|
27
|
-
this.keys =
|
|
26
|
+
this.keys = new Set();
|
|
28
27
|
this.codec = new Codec();
|
|
29
28
|
}
|
|
30
29
|
|
|
@@ -41,7 +40,10 @@ export class ReadAdapter {
|
|
|
41
40
|
const { variant, normalized } = channel.analyzeParams(channels);
|
|
42
41
|
const fetched = await this.retriever.retrieve(normalized);
|
|
43
42
|
const newKeys = fetched.map((c) => c.key);
|
|
44
|
-
if (
|
|
43
|
+
if (
|
|
44
|
+
compare.uniqueUnorderedPrimitiveArrays(Array.from(this.keys), newKeys) ===
|
|
45
|
+
compare.EQUAL
|
|
46
|
+
)
|
|
45
47
|
return false;
|
|
46
48
|
this.codec.update(
|
|
47
49
|
newKeys,
|
|
@@ -49,7 +51,7 @@ export class ReadAdapter {
|
|
|
49
51
|
);
|
|
50
52
|
if (variant === "keys") {
|
|
51
53
|
this.adapter = null;
|
|
52
|
-
this.keys = normalized as channel.Key[];
|
|
54
|
+
this.keys = new Set(normalized as channel.Key[]);
|
|
53
55
|
return true;
|
|
54
56
|
}
|
|
55
57
|
const a = new Map<channel.Key, channel.Name>();
|
|
@@ -59,20 +61,27 @@ export class ReadAdapter {
|
|
|
59
61
|
if (channel == null) throw new Error(`Channel ${name} not found`);
|
|
60
62
|
a.set(channel.key, channel.name);
|
|
61
63
|
});
|
|
62
|
-
this.keys =
|
|
64
|
+
this.keys = new Set(this.adapter.keys());
|
|
63
65
|
return true;
|
|
64
66
|
}
|
|
65
67
|
|
|
66
|
-
adapt(
|
|
67
|
-
if (this.adapter == null)
|
|
68
|
+
adapt(frm: Frame): Frame {
|
|
69
|
+
if (this.adapter == null) {
|
|
70
|
+
let shouldFilter = false;
|
|
71
|
+
frm.forEach((k) => {
|
|
72
|
+
if (!this.keys.has(k as channel.Key)) shouldFilter = true;
|
|
73
|
+
});
|
|
74
|
+
if (shouldFilter) return frm.filter((k) => this.keys.has(k as channel.Key));
|
|
75
|
+
return frm;
|
|
76
|
+
}
|
|
68
77
|
const a = this.adapter;
|
|
69
|
-
return
|
|
70
|
-
if (typeof
|
|
71
|
-
const name = a.get(
|
|
72
|
-
if (name == null)
|
|
73
|
-
return [name, arr];
|
|
78
|
+
return frm.mapFilter((col, arr) => {
|
|
79
|
+
if (typeof col === "number") {
|
|
80
|
+
const name = a.get(col);
|
|
81
|
+
if (name == null) return [col, arr, false];
|
|
82
|
+
return [name, arr, true];
|
|
74
83
|
}
|
|
75
|
-
return [
|
|
84
|
+
return [col, arr, true];
|
|
76
85
|
});
|
|
77
86
|
}
|
|
78
87
|
}
|
package/src/framer/client.ts
CHANGED
|
@@ -125,7 +125,6 @@ export class Client {
|
|
|
125
125
|
channels: Object.keys(data_),
|
|
126
126
|
mode: WriterMode.Persist,
|
|
127
127
|
errOnUnauthorized: true,
|
|
128
|
-
enableAutoCommit: true,
|
|
129
128
|
autoIndexPersistInterval: TimeSpan.MAX,
|
|
130
129
|
});
|
|
131
130
|
await w.write(data_);
|
|
@@ -136,7 +135,6 @@ export class Client {
|
|
|
136
135
|
channels: channels as channel.Params,
|
|
137
136
|
mode: WriterMode.Persist,
|
|
138
137
|
errOnUnauthorized: true,
|
|
139
|
-
enableAutoCommit: true,
|
|
140
138
|
autoIndexPersistInterval: TimeSpan.MAX,
|
|
141
139
|
});
|
|
142
140
|
await w.write(channels as channel.Params, data);
|
package/src/framer/codec.spec.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
// Copyright 2025 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
|
+
|
|
1
10
|
import { type WebsocketMessage } from "@synnaxlabs/freighter";
|
|
2
11
|
import { DataType, Series, TimeStamp } from "@synnaxlabs/x";
|
|
3
12
|
import { describe, expect, it } from "vitest";
|
|
@@ -12,7 +21,8 @@ import {
|
|
|
12
21
|
WSWriterCodec,
|
|
13
22
|
} from "@/framer/codec";
|
|
14
23
|
import { Frame } from "@/framer/frame";
|
|
15
|
-
import { WriterCommand
|
|
24
|
+
import { WriterCommand } from "@/framer/payload";
|
|
25
|
+
import { type WriteRequest } from "@/framer/writer";
|
|
16
26
|
|
|
17
27
|
describe("encoder", () => {
|
|
18
28
|
describe("base codec", () => {
|
package/src/framer/codec.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Use of this software is governed by the Business Source License included in the file
|
|
4
4
|
// licenses/BSL.txt.
|
|
@@ -20,8 +20,9 @@ import { type z } from "zod";
|
|
|
20
20
|
import { type channel } from "@/channel";
|
|
21
21
|
import { ValidationError } from "@/errors";
|
|
22
22
|
import { type Frame, type Payload } from "@/framer/frame";
|
|
23
|
+
import { WriterCommand } from "@/framer/payload";
|
|
23
24
|
import { type StreamerResponse } from "@/framer/streamer";
|
|
24
|
-
import {
|
|
25
|
+
import { type WriteRequest } from "@/framer/writer";
|
|
25
26
|
|
|
26
27
|
const seriesPldLength = (series: SeriesPayload): number =>
|
|
27
28
|
series.data.byteLength / series.dataType.density.valueOf();
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
import { TimeRange, TimeStamp } from "@synnaxlabs/x
|
|
10
|
+
import { TimeRange, TimeStamp } from "@synnaxlabs/x";
|
|
11
11
|
import { describe, expect, test } from "vitest";
|
|
12
12
|
|
|
13
13
|
import { NotFoundError, UnauthorizedError } from "@/errors";
|
package/src/framer/deleter.ts
CHANGED
|
@@ -22,8 +22,6 @@ interface Request extends z.infer<typeof reqZ> {}
|
|
|
22
22
|
|
|
23
23
|
const resZ = z.object({});
|
|
24
24
|
|
|
25
|
-
const ENDPOINT = "/frame/delete";
|
|
26
|
-
|
|
27
25
|
export class Deleter {
|
|
28
26
|
/*
|
|
29
27
|
Deleter is used to delete a time range of telemetry from the data engine.
|
|
@@ -37,7 +35,7 @@ export class Deleter {
|
|
|
37
35
|
async delete(props: Request): Promise<void> {
|
|
38
36
|
await sendRequired<typeof reqZ, typeof resZ>(
|
|
39
37
|
this.client,
|
|
40
|
-
|
|
38
|
+
"/frame/delete",
|
|
41
39
|
props,
|
|
42
40
|
reqZ,
|
|
43
41
|
resZ,
|
package/src/framer/external.ts
CHANGED
package/src/framer/frame.spec.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
import { DataType, Series, TimeRange } from "@synnaxlabs/x
|
|
10
|
+
import { DataType, Series, TimeRange } from "@synnaxlabs/x";
|
|
11
11
|
import { describe, expect, it, test } from "vitest";
|
|
12
12
|
|
|
13
13
|
import { framer } from "@/framer";
|
|
@@ -543,4 +543,300 @@ describe("framer.Frame", () => {
|
|
|
543
543
|
expect(digest[13][0]).toEqual(s3.digest);
|
|
544
544
|
});
|
|
545
545
|
});
|
|
546
|
+
|
|
547
|
+
describe("mapFilter", () => {
|
|
548
|
+
it("should filter out items based on the keep boolean", () => {
|
|
549
|
+
const f = new framer.Frame(
|
|
550
|
+
new Map([
|
|
551
|
+
[
|
|
552
|
+
12,
|
|
553
|
+
[
|
|
554
|
+
new Series({
|
|
555
|
+
data: new Float32Array([1, 2, 3]),
|
|
556
|
+
timeRange: new TimeRange(40, 50000),
|
|
557
|
+
}),
|
|
558
|
+
],
|
|
559
|
+
],
|
|
560
|
+
[
|
|
561
|
+
13,
|
|
562
|
+
[
|
|
563
|
+
new Series({
|
|
564
|
+
data: new Float32Array([4, 5, 6]),
|
|
565
|
+
timeRange: new TimeRange(500, 50001),
|
|
566
|
+
}),
|
|
567
|
+
],
|
|
568
|
+
],
|
|
569
|
+
[
|
|
570
|
+
14,
|
|
571
|
+
[
|
|
572
|
+
new Series({
|
|
573
|
+
data: new Float32Array([7, 8, 9]),
|
|
574
|
+
timeRange: new TimeRange(600, 60000),
|
|
575
|
+
}),
|
|
576
|
+
],
|
|
577
|
+
],
|
|
578
|
+
]),
|
|
579
|
+
);
|
|
580
|
+
const filtered = f.mapFilter((k, arr) => [k, arr, k !== 13]);
|
|
581
|
+
expect(filtered.columns).toEqual([12, 14]);
|
|
582
|
+
expect(filtered.series.length).toEqual(2);
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
it("should map keys to new values", () => {
|
|
586
|
+
const f = new framer.Frame(
|
|
587
|
+
new Map([
|
|
588
|
+
[
|
|
589
|
+
12,
|
|
590
|
+
[
|
|
591
|
+
new Series({
|
|
592
|
+
data: new Float32Array([1, 2, 3]),
|
|
593
|
+
timeRange: new TimeRange(40, 50000),
|
|
594
|
+
}),
|
|
595
|
+
],
|
|
596
|
+
],
|
|
597
|
+
[
|
|
598
|
+
13,
|
|
599
|
+
[
|
|
600
|
+
new Series({
|
|
601
|
+
data: new Float32Array([4, 5, 6]),
|
|
602
|
+
timeRange: new TimeRange(500, 50001),
|
|
603
|
+
}),
|
|
604
|
+
],
|
|
605
|
+
],
|
|
606
|
+
]),
|
|
607
|
+
);
|
|
608
|
+
const mapped = f.mapFilter((k, arr) => {
|
|
609
|
+
const newKey = typeof k === "number" ? k + 100 : k;
|
|
610
|
+
return [newKey, arr, true];
|
|
611
|
+
});
|
|
612
|
+
expect(mapped.columns).toEqual([112, 113]);
|
|
613
|
+
expect(mapped.series.length).toEqual(2);
|
|
614
|
+
});
|
|
615
|
+
|
|
616
|
+
it("should map series to new series", () => {
|
|
617
|
+
const f = new framer.Frame(
|
|
618
|
+
new Map([
|
|
619
|
+
[
|
|
620
|
+
12,
|
|
621
|
+
[
|
|
622
|
+
new Series({
|
|
623
|
+
data: new Float32Array([1, 2, 3]),
|
|
624
|
+
timeRange: new TimeRange(40, 50000),
|
|
625
|
+
}),
|
|
626
|
+
],
|
|
627
|
+
],
|
|
628
|
+
]),
|
|
629
|
+
);
|
|
630
|
+
const mapped = f.mapFilter((k, arr) => {
|
|
631
|
+
const newData = new Float32Array(arr.length);
|
|
632
|
+
for (let j = 0; j < arr.length; j++) newData[j] = (arr.at(j) as number) * 2;
|
|
633
|
+
const newArr = new Series({
|
|
634
|
+
data: newData,
|
|
635
|
+
timeRange: arr.timeRange,
|
|
636
|
+
});
|
|
637
|
+
return [k, newArr, true];
|
|
638
|
+
});
|
|
639
|
+
expect(mapped.get(12).at(0)).toEqual(2);
|
|
640
|
+
expect(mapped.get(12).at(1)).toEqual(4);
|
|
641
|
+
expect(mapped.get(12).at(2)).toEqual(6);
|
|
642
|
+
});
|
|
643
|
+
|
|
644
|
+
it("should both map and filter simultaneously", () => {
|
|
645
|
+
const f = new framer.Frame(
|
|
646
|
+
new Map([
|
|
647
|
+
[
|
|
648
|
+
12,
|
|
649
|
+
[
|
|
650
|
+
new Series({
|
|
651
|
+
data: new Float32Array([1, 2, 3]),
|
|
652
|
+
timeRange: new TimeRange(40, 50000),
|
|
653
|
+
}),
|
|
654
|
+
],
|
|
655
|
+
],
|
|
656
|
+
[
|
|
657
|
+
13,
|
|
658
|
+
[
|
|
659
|
+
new Series({
|
|
660
|
+
data: new Float32Array([4, 5, 6]),
|
|
661
|
+
timeRange: new TimeRange(500, 50001),
|
|
662
|
+
}),
|
|
663
|
+
],
|
|
664
|
+
],
|
|
665
|
+
[
|
|
666
|
+
14,
|
|
667
|
+
[
|
|
668
|
+
new Series({
|
|
669
|
+
data: new Float32Array([7, 8, 9]),
|
|
670
|
+
timeRange: new TimeRange(600, 60000),
|
|
671
|
+
}),
|
|
672
|
+
],
|
|
673
|
+
],
|
|
674
|
+
]),
|
|
675
|
+
);
|
|
676
|
+
const result = f.mapFilter((k, arr) => {
|
|
677
|
+
const keep = typeof k === "number" && k % 2 === 0;
|
|
678
|
+
const newKey = typeof k === "number" ? k + 1 : k;
|
|
679
|
+
return [newKey, arr, keep];
|
|
680
|
+
});
|
|
681
|
+
expect(result.columns).toEqual([13, 15]);
|
|
682
|
+
expect(result.series.length).toEqual(2);
|
|
683
|
+
});
|
|
684
|
+
|
|
685
|
+
it("should handle empty frames", () => {
|
|
686
|
+
const f = new framer.Frame();
|
|
687
|
+
const result = f.mapFilter((k, arr) => [k, arr, true]);
|
|
688
|
+
expect(result.columns).toEqual([]);
|
|
689
|
+
expect(result.series.length).toEqual(0);
|
|
690
|
+
});
|
|
691
|
+
|
|
692
|
+
it("should handle filtering out all items", () => {
|
|
693
|
+
const f = new framer.Frame(
|
|
694
|
+
new Map([
|
|
695
|
+
[
|
|
696
|
+
12,
|
|
697
|
+
[
|
|
698
|
+
new Series({
|
|
699
|
+
data: new Float32Array([1, 2, 3]),
|
|
700
|
+
timeRange: new TimeRange(40, 50000),
|
|
701
|
+
}),
|
|
702
|
+
],
|
|
703
|
+
],
|
|
704
|
+
[
|
|
705
|
+
13,
|
|
706
|
+
[
|
|
707
|
+
new Series({
|
|
708
|
+
data: new Float32Array([4, 5, 6]),
|
|
709
|
+
timeRange: new TimeRange(500, 50001),
|
|
710
|
+
}),
|
|
711
|
+
],
|
|
712
|
+
],
|
|
713
|
+
]),
|
|
714
|
+
);
|
|
715
|
+
const result = f.mapFilter((k, arr) => [k, arr, false]);
|
|
716
|
+
expect(result.columns).toEqual([]);
|
|
717
|
+
expect(result.series.length).toEqual(0);
|
|
718
|
+
});
|
|
719
|
+
|
|
720
|
+
it("should keep all items when keep is always true", () => {
|
|
721
|
+
const f = new framer.Frame(
|
|
722
|
+
new Map([
|
|
723
|
+
[
|
|
724
|
+
12,
|
|
725
|
+
[
|
|
726
|
+
new Series({
|
|
727
|
+
data: new Float32Array([1, 2, 3]),
|
|
728
|
+
timeRange: new TimeRange(40, 50000),
|
|
729
|
+
}),
|
|
730
|
+
],
|
|
731
|
+
],
|
|
732
|
+
[
|
|
733
|
+
13,
|
|
734
|
+
[
|
|
735
|
+
new Series({
|
|
736
|
+
data: new Float32Array([4, 5, 6]),
|
|
737
|
+
timeRange: new TimeRange(500, 50001),
|
|
738
|
+
}),
|
|
739
|
+
],
|
|
740
|
+
],
|
|
741
|
+
]),
|
|
742
|
+
);
|
|
743
|
+
const result = f.mapFilter((k, arr) => [k, arr, true]);
|
|
744
|
+
expect(result.columns).toEqual([12, 13]);
|
|
745
|
+
expect(result.series.length).toEqual(2);
|
|
746
|
+
});
|
|
747
|
+
|
|
748
|
+
it("should use the index parameter correctly", () => {
|
|
749
|
+
const f = new framer.Frame(
|
|
750
|
+
new Map([
|
|
751
|
+
[
|
|
752
|
+
12,
|
|
753
|
+
[
|
|
754
|
+
new Series({
|
|
755
|
+
data: new Float32Array([1, 2, 3]),
|
|
756
|
+
timeRange: new TimeRange(40, 50000),
|
|
757
|
+
}),
|
|
758
|
+
],
|
|
759
|
+
],
|
|
760
|
+
[
|
|
761
|
+
13,
|
|
762
|
+
[
|
|
763
|
+
new Series({
|
|
764
|
+
data: new Float32Array([4, 5, 6]),
|
|
765
|
+
timeRange: new TimeRange(500, 50001),
|
|
766
|
+
}),
|
|
767
|
+
],
|
|
768
|
+
],
|
|
769
|
+
[
|
|
770
|
+
14,
|
|
771
|
+
[
|
|
772
|
+
new Series({
|
|
773
|
+
data: new Float32Array([7, 8, 9]),
|
|
774
|
+
timeRange: new TimeRange(600, 60000),
|
|
775
|
+
}),
|
|
776
|
+
],
|
|
777
|
+
],
|
|
778
|
+
]),
|
|
779
|
+
);
|
|
780
|
+
// Keep only items at even indices
|
|
781
|
+
const result = f.mapFilter((k, arr, i) => [k, arr, i % 2 === 0]);
|
|
782
|
+
expect(result.columns).toEqual([12, 14]);
|
|
783
|
+
expect(result.series.length).toEqual(2);
|
|
784
|
+
});
|
|
785
|
+
|
|
786
|
+
it("should work with string keys", () => {
|
|
787
|
+
const f = new framer.Frame({
|
|
788
|
+
a: new Series({
|
|
789
|
+
data: new Float32Array([1, 2, 3]),
|
|
790
|
+
timeRange: new TimeRange(40, 50000),
|
|
791
|
+
}),
|
|
792
|
+
b: new Series({
|
|
793
|
+
data: new Float32Array([4, 5, 6]),
|
|
794
|
+
timeRange: new TimeRange(500, 50001),
|
|
795
|
+
}),
|
|
796
|
+
c: new Series({
|
|
797
|
+
data: new Float32Array([7, 8, 9]),
|
|
798
|
+
timeRange: new TimeRange(600, 60000),
|
|
799
|
+
}),
|
|
800
|
+
});
|
|
801
|
+
const result = f.mapFilter((k, arr) => {
|
|
802
|
+
const newKey = k === "a" ? "x" : k;
|
|
803
|
+
const keep = k === "a" || k === "c";
|
|
804
|
+
return [newKey, arr, keep];
|
|
805
|
+
});
|
|
806
|
+
expect(result.columns).toEqual(["x", "c"]);
|
|
807
|
+
expect(result.series.length).toEqual(2);
|
|
808
|
+
});
|
|
809
|
+
|
|
810
|
+
it("should handle frames with multiple series per channel", () => {
|
|
811
|
+
const f = new framer.Frame(
|
|
812
|
+
new Map([
|
|
813
|
+
[
|
|
814
|
+
12,
|
|
815
|
+
[
|
|
816
|
+
new Series({
|
|
817
|
+
data: new Float32Array([1, 2, 3]),
|
|
818
|
+
timeRange: new TimeRange(40, 50000),
|
|
819
|
+
}),
|
|
820
|
+
new Series({
|
|
821
|
+
data: new Float32Array([4, 5, 6]),
|
|
822
|
+
timeRange: new TimeRange(50001, 60000),
|
|
823
|
+
}),
|
|
824
|
+
],
|
|
825
|
+
],
|
|
826
|
+
[
|
|
827
|
+
13,
|
|
828
|
+
[
|
|
829
|
+
new Series({
|
|
830
|
+
data: new Float32Array([7, 8, 9]),
|
|
831
|
+
timeRange: new TimeRange(500, 50001),
|
|
832
|
+
}),
|
|
833
|
+
],
|
|
834
|
+
],
|
|
835
|
+
]),
|
|
836
|
+
);
|
|
837
|
+
const result = f.mapFilter((k, arr) => [k, arr, k === 12]);
|
|
838
|
+
expect(result.columns).toEqual([12, 12]);
|
|
839
|
+
expect(result.series.length).toEqual(2);
|
|
840
|
+
});
|
|
841
|
+
});
|
|
546
842
|
});
|
package/src/framer/frame.ts
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
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 { array, unique } from "@synnaxlabs/x";
|
|
11
10
|
import {
|
|
11
|
+
array,
|
|
12
12
|
MultiSeries,
|
|
13
13
|
Series,
|
|
14
14
|
type SeriesDigest,
|
|
@@ -17,7 +17,8 @@ import {
|
|
|
17
17
|
type TelemValue,
|
|
18
18
|
TimeRange,
|
|
19
19
|
TimeStamp,
|
|
20
|
-
|
|
20
|
+
unique,
|
|
21
|
+
} from "@synnaxlabs/x";
|
|
21
22
|
import { z } from "zod";
|
|
22
23
|
|
|
23
24
|
import { type channel } from "@/channel";
|
|
@@ -221,9 +222,9 @@ export class Frame {
|
|
|
221
222
|
|
|
222
223
|
/**
|
|
223
224
|
* @returns true if the frame is horizontal. Horizontal frames have a single channel,
|
|
224
|
-
* and are strongly aligned by default.A horizontal frame typically has a single
|
|
225
|
-
* (in which case, it's also 'square'), although it can have multiple series if
|
|
226
|
-
* the series are continuous in time.
|
|
225
|
+
* and are strongly aligned by default. A horizontal frame typically has a single
|
|
226
|
+
* array (in which case, it's also 'square'), although it can have multiple series if
|
|
227
|
+
* all the series are continuous in time.
|
|
227
228
|
*/
|
|
228
229
|
get isHorizontal(): boolean {
|
|
229
230
|
return this.uniqueColumns.length === 1;
|
|
@@ -304,7 +305,11 @@ export class Frame {
|
|
|
304
305
|
|
|
305
306
|
push(keyOrFrame: channel.KeyOrName | Frame, ...v: Series[]): void {
|
|
306
307
|
if (keyOrFrame instanceof Frame) {
|
|
307
|
-
if (
|
|
308
|
+
if (
|
|
309
|
+
keyOrFrame.colType != null &&
|
|
310
|
+
this.colType !== null &&
|
|
311
|
+
keyOrFrame.colType !== this.colType
|
|
312
|
+
)
|
|
308
313
|
throw new ValidationError("keyVariant must match");
|
|
309
314
|
this.series.push(...keyOrFrame.series);
|
|
310
315
|
(this.columns as channel.Keys).push(...(keyOrFrame.columns as channel.Keys));
|
|
@@ -354,6 +359,21 @@ export class Frame {
|
|
|
354
359
|
return frame;
|
|
355
360
|
}
|
|
356
361
|
|
|
362
|
+
mapFilter(
|
|
363
|
+
fn: (
|
|
364
|
+
k: channel.KeyOrName,
|
|
365
|
+
arr: Series,
|
|
366
|
+
i: number,
|
|
367
|
+
) => [channel.KeyOrName, Series, boolean],
|
|
368
|
+
): Frame {
|
|
369
|
+
const frame = new Frame();
|
|
370
|
+
this.forEach((k, arr, i) => {
|
|
371
|
+
const [newK, newArr, keep] = fn(k, arr, i);
|
|
372
|
+
if (keep) frame.push(newK, newArr);
|
|
373
|
+
});
|
|
374
|
+
return frame;
|
|
375
|
+
}
|
|
376
|
+
|
|
357
377
|
/**
|
|
358
378
|
* Iterates over all series in the current frame.
|
|
359
379
|
*
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
import { TimeRange, TimeSpan, TimeStamp } from "@synnaxlabs/x
|
|
10
|
+
import { TimeRange, TimeSpan, TimeStamp } from "@synnaxlabs/x";
|
|
11
11
|
import { describe, expect, test } from "vitest";
|
|
12
12
|
|
|
13
13
|
import { AUTO_SPAN } from "@/framer/iterator";
|
|
@@ -68,7 +68,6 @@ describe("Iterator", () => {
|
|
|
68
68
|
const writer = await client.openWriter({
|
|
69
69
|
start: TimeStamp.SECOND,
|
|
70
70
|
channels,
|
|
71
|
-
enableAutoCommit: true,
|
|
72
71
|
});
|
|
73
72
|
await writer.write({
|
|
74
73
|
[idx_ch.key]: secondsLinspace(1, 10),
|
package/src/framer/iterator.ts
CHANGED
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
10
|
import { type Stream, type StreamClient } from "@synnaxlabs/freighter";
|
|
11
|
-
import { errors } from "@synnaxlabs/x";
|
|
12
11
|
import {
|
|
13
12
|
type CrudeTimeRange,
|
|
14
13
|
type CrudeTimeSpan,
|
|
15
14
|
type CrudeTimeStamp,
|
|
15
|
+
errors,
|
|
16
16
|
TimeRange,
|
|
17
17
|
TimeSpan,
|
|
18
18
|
TimeStamp,
|
|
19
|
-
} from "@synnaxlabs/x
|
|
19
|
+
} from "@synnaxlabs/x";
|
|
20
20
|
import { z } from "zod";
|
|
21
21
|
|
|
22
22
|
import { channel } from "@/channel";
|
|
@@ -78,7 +78,6 @@ export interface IteratorConfig {
|
|
|
78
78
|
* telemetry between two timestamps, see the SegmentClient.read method.
|
|
79
79
|
*/
|
|
80
80
|
export class Iterator {
|
|
81
|
-
private static readonly ENDPOINT = "/frame/iterate";
|
|
82
81
|
private readonly stream: StreamProxy<typeof reqZ, typeof resZ>;
|
|
83
82
|
private readonly adapter: ReadAdapter;
|
|
84
83
|
value: Frame;
|
|
@@ -108,11 +107,11 @@ export class Iterator {
|
|
|
108
107
|
opts: IteratorConfig = {},
|
|
109
108
|
): Promise<Iterator> {
|
|
110
109
|
const adapter = await ReadAdapter.open(retriever, channels);
|
|
111
|
-
const stream = await client.stream(
|
|
110
|
+
const stream = await client.stream("/frame/iterate", reqZ, resZ);
|
|
112
111
|
const iter = new Iterator(stream, adapter);
|
|
113
112
|
await iter.execute({
|
|
114
113
|
command: Command.Open,
|
|
115
|
-
keys: adapter.keys,
|
|
114
|
+
keys: Array.from(adapter.keys),
|
|
116
115
|
bounds: new TimeRange(tr),
|
|
117
116
|
chunkSize: opts.chunkSize ?? 1e5,
|
|
118
117
|
});
|
|
@@ -7,6 +7,9 @@
|
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
export enum WriterCommand {
|
|
11
|
+
Open = 0,
|
|
12
|
+
Write = 1,
|
|
13
|
+
Commit = 2,
|
|
14
|
+
SetAuthority = 3,
|
|
15
|
+
}
|