@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/arc/payload.ts
CHANGED
|
@@ -7,18 +7,16 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
import { xy } from "@synnaxlabs/x";
|
|
11
|
-
import { record } from "@synnaxlabs/x/record";
|
|
10
|
+
import { record, xy } from "@synnaxlabs/x";
|
|
12
11
|
import { z } from "zod/v4";
|
|
13
12
|
|
|
14
|
-
import {
|
|
13
|
+
import { statusZ as baseStatusZ } from "@/status/payload";
|
|
15
14
|
import { parseWithoutKeyConversion } from "@/util/parseWithoutKeyConversion";
|
|
16
15
|
|
|
17
16
|
export const irNodeZ = z.object({
|
|
18
17
|
key: z.string(),
|
|
19
18
|
type: z.string(),
|
|
20
19
|
config: record.unknownZ.or(z.string().transform(parseWithoutKeyConversion)),
|
|
21
|
-
source: z.string().optional(),
|
|
22
20
|
});
|
|
23
21
|
|
|
24
22
|
export const graphNodeZ = irNodeZ.extend({
|
|
@@ -49,6 +47,14 @@ export const keyZ = z.uuid();
|
|
|
49
47
|
export type Key = z.infer<typeof keyZ>;
|
|
50
48
|
export type Params = Key | Key[];
|
|
51
49
|
|
|
50
|
+
export const statusDetailsZ = z.object({
|
|
51
|
+
running: z.boolean(),
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
export const statusZ = baseStatusZ(statusDetailsZ);
|
|
55
|
+
|
|
56
|
+
export type Status = z.infer<typeof statusZ>;
|
|
57
|
+
|
|
52
58
|
export const arcZ = z.object({
|
|
53
59
|
key: keyZ,
|
|
54
60
|
name: z.string(),
|
|
@@ -56,13 +62,12 @@ export const arcZ = z.object({
|
|
|
56
62
|
text: textZ,
|
|
57
63
|
deploy: z.boolean(),
|
|
58
64
|
version: z.string(),
|
|
65
|
+
status: statusZ.optional().nullable(),
|
|
59
66
|
});
|
|
60
67
|
|
|
61
|
-
export interface Arc extends z.infer<typeof arcZ> {
|
|
62
|
-
status?: Status;
|
|
63
|
-
}
|
|
68
|
+
export interface Arc extends z.infer<typeof arcZ> {}
|
|
64
69
|
|
|
65
|
-
export const newZ = arcZ.partial({ key: true });
|
|
70
|
+
export const newZ = arcZ.partial({ key: true }).omit({ status: true });
|
|
66
71
|
export interface New extends z.input<typeof newZ> {}
|
|
67
72
|
|
|
68
73
|
export const ONTOLOGY_TYPE = "arc";
|
package/src/auth/auth.spec.ts
CHANGED
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
10
|
import { type Context } from "@synnaxlabs/freighter";
|
|
11
|
-
import { URL } from "@synnaxlabs/x
|
|
11
|
+
import { URL } from "@synnaxlabs/x";
|
|
12
12
|
import { describe, expect, it, test } from "vitest";
|
|
13
13
|
|
|
14
14
|
import { auth } from "@/auth";
|
|
15
15
|
import { AuthError, ExpiredTokenError, InvalidTokenError } from "@/errors";
|
|
16
|
-
import {
|
|
16
|
+
import { TEST_CLIENT_PARAMS } from "@/testutil/client";
|
|
17
17
|
import { Transport } from "@/transport";
|
|
18
18
|
|
|
19
19
|
const DUMMY_CTX: Context = {
|
|
@@ -27,11 +27,11 @@ describe("auth", () => {
|
|
|
27
27
|
test("valid credentials", async () => {
|
|
28
28
|
const transport = new Transport(
|
|
29
29
|
new URL({
|
|
30
|
-
host:
|
|
31
|
-
port: Number(
|
|
30
|
+
host: TEST_CLIENT_PARAMS.host,
|
|
31
|
+
port: Number(TEST_CLIENT_PARAMS.port),
|
|
32
32
|
}),
|
|
33
33
|
);
|
|
34
|
-
const client = new auth.Client(transport.unary,
|
|
34
|
+
const client = new auth.Client(transport.unary, TEST_CLIENT_PARAMS);
|
|
35
35
|
const mw = client.middleware();
|
|
36
36
|
const res = await mw(DUMMY_CTX, async () => [DUMMY_CTX, null]);
|
|
37
37
|
expect(res).toEqual([DUMMY_CTX, null]);
|
|
@@ -40,12 +40,12 @@ describe("auth", () => {
|
|
|
40
40
|
test("invalid credentials", async () => {
|
|
41
41
|
const transport = new Transport(
|
|
42
42
|
new URL({
|
|
43
|
-
host:
|
|
44
|
-
port: Number(
|
|
43
|
+
host: TEST_CLIENT_PARAMS.host,
|
|
44
|
+
port: Number(TEST_CLIENT_PARAMS.port),
|
|
45
45
|
}),
|
|
46
46
|
);
|
|
47
47
|
const client = new auth.Client(transport.unary, {
|
|
48
|
-
...
|
|
48
|
+
...TEST_CLIENT_PARAMS,
|
|
49
49
|
password: "wrong",
|
|
50
50
|
});
|
|
51
51
|
const mw = client.middleware();
|
|
@@ -59,11 +59,11 @@ describe("auth", () => {
|
|
|
59
59
|
it(`should re-authenticate and retry the request for ${ErrorType.name}`, async () => {
|
|
60
60
|
const transport = new Transport(
|
|
61
61
|
new URL({
|
|
62
|
-
host:
|
|
63
|
-
port: Number(
|
|
62
|
+
host: TEST_CLIENT_PARAMS.host,
|
|
63
|
+
port: Number(TEST_CLIENT_PARAMS.port),
|
|
64
64
|
}),
|
|
65
65
|
);
|
|
66
|
-
const client = new auth.Client(transport.unary,
|
|
66
|
+
const client = new auth.Client(transport.unary, TEST_CLIENT_PARAMS);
|
|
67
67
|
const mw = client.middleware();
|
|
68
68
|
let isFirst = true;
|
|
69
69
|
let tkOne: string | undefined;
|
|
@@ -86,11 +86,11 @@ describe("auth", () => {
|
|
|
86
86
|
it("should fail after MAX_RETRIES", async () => {
|
|
87
87
|
const transport = new Transport(
|
|
88
88
|
new URL({
|
|
89
|
-
host:
|
|
90
|
-
port: Number(
|
|
89
|
+
host: TEST_CLIENT_PARAMS.host,
|
|
90
|
+
port: Number(TEST_CLIENT_PARAMS.port),
|
|
91
91
|
}),
|
|
92
92
|
);
|
|
93
|
-
const client = new auth.Client(transport.unary,
|
|
93
|
+
const client = new auth.Client(transport.unary, TEST_CLIENT_PARAMS);
|
|
94
94
|
const mw = client.middleware();
|
|
95
95
|
const [, err] = await mw(DUMMY_CTX, async () => [
|
|
96
96
|
DUMMY_CTX,
|
|
@@ -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 { errors } from "@synnaxlabs/x";
|
|
11
|
-
import { DataType, Rate } from "@synnaxlabs/x/telem";
|
|
10
|
+
import { DataType, errors, Rate } from "@synnaxlabs/x";
|
|
12
11
|
import { describe, expect, it, vi } from "vitest";
|
|
13
12
|
|
|
14
13
|
import { channel } from "@/channel";
|
|
@@ -55,6 +54,7 @@ describe("channelchannel.Retriever", () => {
|
|
|
55
54
|
index: 0,
|
|
56
55
|
virtual: false,
|
|
57
56
|
expression: "",
|
|
57
|
+
operations: [],
|
|
58
58
|
requires: [],
|
|
59
59
|
}));
|
|
60
60
|
});
|
|
@@ -84,6 +84,7 @@ describe("channelchannel.Retriever", () => {
|
|
|
84
84
|
index: 0,
|
|
85
85
|
virtual: false,
|
|
86
86
|
expression: "",
|
|
87
|
+
operations: [],
|
|
87
88
|
requires: [],
|
|
88
89
|
}));
|
|
89
90
|
});
|
|
@@ -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 { DataType, TimeStamp } from "@synnaxlabs/x
|
|
11
|
-
import {
|
|
10
|
+
import { DataType, id, TimeStamp } from "@synnaxlabs/x";
|
|
11
|
+
import { describe, expect, it, test } from "vitest";
|
|
12
12
|
|
|
13
13
|
import { Channel } from "@/channel/client";
|
|
14
14
|
import { NotFoundError, PathError } from "@/errors";
|
|
@@ -31,24 +31,23 @@ describe("Channel", () => {
|
|
|
31
31
|
}, 80000);
|
|
32
32
|
|
|
33
33
|
test("create calculated", async () => {
|
|
34
|
+
const chOneName = id.create();
|
|
34
35
|
let chOne = new Channel({
|
|
35
|
-
name:
|
|
36
|
-
|
|
37
|
-
dataType: DataType.
|
|
36
|
+
name: chOneName,
|
|
37
|
+
virtual: true,
|
|
38
|
+
dataType: DataType.FLOAT32,
|
|
38
39
|
});
|
|
39
40
|
chOne = await client.channels.create(chOne);
|
|
40
41
|
let calculatedCH = new Channel({
|
|
41
42
|
name: "test2",
|
|
42
43
|
virtual: true,
|
|
43
44
|
dataType: DataType.FLOAT32,
|
|
44
|
-
expression:
|
|
45
|
-
requires: [chOne.key],
|
|
45
|
+
expression: `return ${chOne.name} * 2`,
|
|
46
46
|
});
|
|
47
47
|
calculatedCH = await client.channels.create(calculatedCH);
|
|
48
48
|
expect(calculatedCH.key).not.toEqual(0);
|
|
49
49
|
expect(calculatedCH.virtual).toEqual(true);
|
|
50
|
-
expect(calculatedCH.expression).toEqual(
|
|
51
|
-
expect(calculatedCH.requires).toEqual([chOne.key]);
|
|
50
|
+
expect(calculatedCH.expression).toEqual(`return ${chOneName} * 2`);
|
|
52
51
|
});
|
|
53
52
|
|
|
54
53
|
test("create calculated, missing required channel", async () => {
|
|
@@ -58,7 +57,6 @@ describe("Channel", () => {
|
|
|
58
57
|
virtual: true,
|
|
59
58
|
dataType: DataType.FLOAT32,
|
|
60
59
|
expression: "test * 2",
|
|
61
|
-
requires: [],
|
|
62
60
|
});
|
|
63
61
|
} catch (e) {
|
|
64
62
|
expect(PathError.matches(e)).toBe(true);
|
|
@@ -289,21 +287,12 @@ describe("Channel", () => {
|
|
|
289
287
|
});
|
|
290
288
|
|
|
291
289
|
describe("update calculations", () => {
|
|
292
|
-
let idxCH: Channel;
|
|
293
|
-
beforeAll(async () => {
|
|
294
|
-
idxCH = await client.channels.create({
|
|
295
|
-
name: "idx",
|
|
296
|
-
dataType: DataType.TIMESTAMP,
|
|
297
|
-
isIndex: true,
|
|
298
|
-
});
|
|
299
|
-
});
|
|
300
290
|
test("update virtual channel expression", async () => {
|
|
301
291
|
const channel = await client.channels.create({
|
|
302
292
|
name: "virtual-calc",
|
|
303
293
|
dataType: DataType.FLOAT32,
|
|
304
294
|
virtual: true,
|
|
305
295
|
expression: "return 1",
|
|
306
|
-
requires: [idxCH.key],
|
|
307
296
|
});
|
|
308
297
|
|
|
309
298
|
const updated = await client.channels.create({
|
|
@@ -312,7 +301,6 @@ describe("Channel", () => {
|
|
|
312
301
|
dataType: channel.dataType,
|
|
313
302
|
virtual: true,
|
|
314
303
|
expression: "return 2",
|
|
315
|
-
requires: [idxCH.key],
|
|
316
304
|
});
|
|
317
305
|
|
|
318
306
|
const channelsWithName = await client.channels.retrieve(["virtual-calc"]);
|
|
@@ -330,7 +318,6 @@ describe("Channel", () => {
|
|
|
330
318
|
dataType: DataType.FLOAT32,
|
|
331
319
|
virtual: true,
|
|
332
320
|
expression: "return 1",
|
|
333
|
-
requires: [idxCH.key],
|
|
334
321
|
});
|
|
335
322
|
|
|
336
323
|
const updated = await client.channels.create({
|
|
@@ -339,7 +326,6 @@ describe("Channel", () => {
|
|
|
339
326
|
dataType: channel.dataType,
|
|
340
327
|
virtual: true,
|
|
341
328
|
expression: channel.expression,
|
|
342
|
-
requires: [idxCH.key],
|
|
343
329
|
});
|
|
344
330
|
expect(updated.name).toEqual("new-name");
|
|
345
331
|
|
package/src/channel/client.ts
CHANGED
|
@@ -8,15 +8,16 @@
|
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
10
|
import { sendRequired, type UnaryClient } from "@synnaxlabs/freighter";
|
|
11
|
-
import { array, status } from "@synnaxlabs/x";
|
|
12
11
|
import {
|
|
12
|
+
array,
|
|
13
13
|
type CrudeDensity,
|
|
14
14
|
type CrudeTimeRange,
|
|
15
15
|
type CrudeTimeStamp,
|
|
16
16
|
DataType,
|
|
17
17
|
type MultiSeries,
|
|
18
|
+
status,
|
|
18
19
|
type TypedArray,
|
|
19
|
-
} from "@synnaxlabs/x
|
|
20
|
+
} from "@synnaxlabs/x";
|
|
20
21
|
import { z } from "zod";
|
|
21
22
|
|
|
22
23
|
import {
|
|
@@ -25,6 +26,7 @@ import {
|
|
|
25
26
|
keyZ,
|
|
26
27
|
type Name,
|
|
27
28
|
type New,
|
|
29
|
+
type Operation,
|
|
28
30
|
type Params,
|
|
29
31
|
type Payload,
|
|
30
32
|
payloadZ,
|
|
@@ -112,9 +114,7 @@ export class Channel {
|
|
|
112
114
|
* the calculated value
|
|
113
115
|
*/
|
|
114
116
|
readonly expression: string;
|
|
115
|
-
|
|
116
|
-
* Only used for calculated channels. Specifies the channels required for calculation
|
|
117
|
-
*/
|
|
117
|
+
readonly operations: Operation[];
|
|
118
118
|
readonly requires: Key[];
|
|
119
119
|
/**
|
|
120
120
|
* The status of the channel.
|
|
@@ -134,12 +134,15 @@ export class Channel {
|
|
|
134
134
|
alias,
|
|
135
135
|
status: argsStatus,
|
|
136
136
|
expression = "",
|
|
137
|
+
operations = [],
|
|
137
138
|
requires = [],
|
|
138
139
|
}: New & {
|
|
139
140
|
internal?: boolean;
|
|
140
141
|
frameClient?: framer.Client;
|
|
141
142
|
density?: CrudeDensity;
|
|
142
143
|
status?: status.Crude;
|
|
144
|
+
operations?: Operation[];
|
|
145
|
+
requires?: Key[];
|
|
143
146
|
}) {
|
|
144
147
|
this.key = keyZ.parse(key);
|
|
145
148
|
this.name = name;
|
|
@@ -151,7 +154,8 @@ export class Channel {
|
|
|
151
154
|
this.alias = alias;
|
|
152
155
|
this.virtual = virtual;
|
|
153
156
|
this.expression = expression;
|
|
154
|
-
this.
|
|
157
|
+
this.operations = operations;
|
|
158
|
+
this.requires = requires;
|
|
155
159
|
if (argsStatus != null) this.status = status.create(argsStatus);
|
|
156
160
|
this._frameClient = frameClient ?? null;
|
|
157
161
|
}
|
|
@@ -177,9 +181,10 @@ export class Channel {
|
|
|
177
181
|
isIndex: this.isIndex,
|
|
178
182
|
internal: this.internal,
|
|
179
183
|
virtual: this.virtual,
|
|
180
|
-
expression: this.expression,
|
|
181
184
|
requires: this.requires,
|
|
185
|
+
expression: this.expression,
|
|
182
186
|
status: this.status,
|
|
187
|
+
operations: this.operations,
|
|
183
188
|
});
|
|
184
189
|
}
|
|
185
190
|
|
|
@@ -434,7 +439,15 @@ export class Client {
|
|
|
434
439
|
export const isCalculated = ({ virtual, expression }: Payload): boolean =>
|
|
435
440
|
virtual && expression !== "";
|
|
436
441
|
|
|
437
|
-
export const
|
|
442
|
+
export const isLegacyCalculated = (pld: Payload): boolean =>
|
|
443
|
+
isCalculated(pld) && pld.requires.length > 0;
|
|
444
|
+
|
|
445
|
+
export const ontologyID = (key: Key): ontology.ID => ({
|
|
446
|
+
type: "channel",
|
|
447
|
+
key: key.toString(),
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
export const resolveLegacyCalculatedIndex = async (
|
|
438
451
|
retrieve: (key: Key) => Promise<Payload | null>,
|
|
439
452
|
channel: Payload,
|
|
440
453
|
): Promise<Key | null> => {
|
|
@@ -448,14 +461,9 @@ export const resolveCalculatedIndex = async (
|
|
|
448
461
|
const requiredChannel = await retrieve(required);
|
|
449
462
|
if (requiredChannel == null) return null;
|
|
450
463
|
if (isCalculated(requiredChannel)) {
|
|
451
|
-
const index = await
|
|
464
|
+
const index = await resolveLegacyCalculatedIndex(retrieve, requiredChannel);
|
|
452
465
|
if (index != null) return index;
|
|
453
466
|
}
|
|
454
467
|
}
|
|
455
468
|
return null;
|
|
456
469
|
};
|
|
457
|
-
|
|
458
|
-
export const ontologyID = (key: Key): ontology.ID => ({
|
|
459
|
-
type: "channel",
|
|
460
|
-
key: key.toString(),
|
|
461
|
-
});
|
package/src/channel/payload.ts
CHANGED
|
@@ -7,7 +7,15 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
array,
|
|
12
|
+
type CrudeDataType,
|
|
13
|
+
DataType,
|
|
14
|
+
math,
|
|
15
|
+
status,
|
|
16
|
+
TimeSpan,
|
|
17
|
+
zod,
|
|
18
|
+
} from "@synnaxlabs/x";
|
|
11
19
|
import { z } from "zod";
|
|
12
20
|
|
|
13
21
|
const errorMessage = "Channel key must be a valid uint32.";
|
|
@@ -27,6 +35,18 @@ export type KeyOrName = Key | Name;
|
|
|
27
35
|
export type KeysOrNames = Keys | Names;
|
|
28
36
|
export type PrimitiveParams = Key | Name | Keys | Names;
|
|
29
37
|
|
|
38
|
+
export const OPERATION_TYPES = ["min", "max", "avg", "none"] as const;
|
|
39
|
+
export const operationType = z.enum(OPERATION_TYPES);
|
|
40
|
+
export type OperationType = z.infer<typeof operationType>;
|
|
41
|
+
|
|
42
|
+
export const operationZ = z.object({
|
|
43
|
+
type: operationType,
|
|
44
|
+
resetChannel: keyZ.optional(),
|
|
45
|
+
duration: TimeSpan.z.optional(),
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
export type Operation = z.infer<typeof operationZ>;
|
|
49
|
+
|
|
30
50
|
export const statusZ = status.statusZ();
|
|
31
51
|
export type Status = z.infer<typeof statusZ>;
|
|
32
52
|
export const payloadZ = z.object({
|
|
@@ -40,8 +60,9 @@ export const payloadZ = z.object({
|
|
|
40
60
|
virtual: z.boolean(),
|
|
41
61
|
alias: z.string().optional(),
|
|
42
62
|
expression: z.string().default(""),
|
|
43
|
-
requires: array.nullableZ(keyZ),
|
|
44
63
|
status: statusZ.optional(),
|
|
64
|
+
operations: array.nullableZ(operationZ),
|
|
65
|
+
requires: array.nullableZ(keyZ),
|
|
45
66
|
});
|
|
46
67
|
export interface Payload extends z.infer<typeof payloadZ> {}
|
|
47
68
|
|
|
@@ -53,7 +74,8 @@ export const newZ = payloadZ.extend({
|
|
|
53
74
|
internal: z.boolean().optional().default(false),
|
|
54
75
|
virtual: z.boolean().optional().default(false),
|
|
55
76
|
expression: z.string().optional().default(""),
|
|
56
|
-
|
|
77
|
+
operations: array.nullableZ(operationZ).optional(),
|
|
78
|
+
requires: array.nullableZ(keyZ).optional(),
|
|
57
79
|
});
|
|
58
80
|
|
|
59
81
|
export interface New
|
package/src/channel/retriever.ts
CHANGED
|
@@ -8,9 +8,7 @@
|
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
10
|
import { type UnaryClient } from "@synnaxlabs/freighter";
|
|
11
|
-
import { array } from "@synnaxlabs/x
|
|
12
|
-
import { debounce } from "@synnaxlabs/x/debounce";
|
|
13
|
-
import { DataType } from "@synnaxlabs/x/telem";
|
|
11
|
+
import { array, DataType, debounce } from "@synnaxlabs/x";
|
|
14
12
|
import { Mutex } from "async-mutex";
|
|
15
13
|
import { z } from "zod";
|
|
16
14
|
|
|
@@ -46,6 +44,7 @@ const reqZ = z.object({
|
|
|
46
44
|
isIndex: z.boolean().optional(),
|
|
47
45
|
internal: z.boolean().optional(),
|
|
48
46
|
calculated: z.boolean().optional(),
|
|
47
|
+
legacyCalculated: z.boolean().optional(),
|
|
49
48
|
});
|
|
50
49
|
export interface RetrieveRequest extends z.input<typeof reqZ> {}
|
|
51
50
|
|
package/src/client.ts
CHANGED
|
@@ -7,9 +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 { breaker } from "@synnaxlabs/x";
|
|
11
|
-
import { TimeSpan, TimeStamp } from "@synnaxlabs/x/telem";
|
|
12
|
-
import { URL } from "@synnaxlabs/x/url";
|
|
10
|
+
import { breaker, TimeSpan, TimeStamp, URL } from "@synnaxlabs/x";
|
|
13
11
|
import { z } from "zod";
|
|
14
12
|
|
|
15
13
|
import { access } from "@/access";
|
|
@@ -32,7 +30,7 @@ import { Transport } from "@/transport";
|
|
|
32
30
|
import { user } from "@/user";
|
|
33
31
|
import { workspace } from "@/workspace";
|
|
34
32
|
|
|
35
|
-
export const
|
|
33
|
+
export const synnaxParamsZ = z.object({
|
|
36
34
|
host: z.string({ error: "Host is required" }).min(1, "Host is required"),
|
|
37
35
|
port: z
|
|
38
36
|
.number({ error: "Port is required" })
|
|
@@ -45,8 +43,8 @@ export const synnaxPropsZ = z.object({
|
|
|
45
43
|
retry: breaker.breakerConfigZ.optional(),
|
|
46
44
|
});
|
|
47
45
|
|
|
48
|
-
export interface
|
|
49
|
-
export interface
|
|
46
|
+
export interface SynnaxParams extends z.input<typeof synnaxParamsZ> {}
|
|
47
|
+
export interface ParsedSynnaxParams extends z.infer<typeof synnaxParamsZ> {}
|
|
50
48
|
|
|
51
49
|
/**
|
|
52
50
|
* Client to perform operations against a Synnax cluster.
|
|
@@ -58,7 +56,7 @@ export interface ParsedSynnaxProps extends z.infer<typeof synnaxPropsZ> {}
|
|
|
58
56
|
*/
|
|
59
57
|
export default class Synnax extends framer.Client {
|
|
60
58
|
readonly createdAt: TimeStamp;
|
|
61
|
-
readonly
|
|
59
|
+
readonly params: ParsedSynnaxParams;
|
|
62
60
|
readonly ranges: ranger.Client;
|
|
63
61
|
readonly channels: channel.Client;
|
|
64
62
|
readonly auth: auth.Client | undefined;
|
|
@@ -95,8 +93,8 @@ export default class Synnax extends framer.Client {
|
|
|
95
93
|
* A Synnax client must be closed when it is no longer needed. This will stop
|
|
96
94
|
* the client from polling the cluster for connectivity information.
|
|
97
95
|
*/
|
|
98
|
-
constructor(
|
|
99
|
-
const
|
|
96
|
+
constructor(params: SynnaxParams) {
|
|
97
|
+
const parsedParams = synnaxParamsZ.parse(params);
|
|
100
98
|
const {
|
|
101
99
|
host,
|
|
102
100
|
port,
|
|
@@ -105,7 +103,7 @@ export default class Synnax extends framer.Client {
|
|
|
105
103
|
connectivityPollFrequency,
|
|
106
104
|
secure,
|
|
107
105
|
retry: breaker,
|
|
108
|
-
} =
|
|
106
|
+
} = parsedParams;
|
|
109
107
|
const transport = new Transport(
|
|
110
108
|
new URL({ host, port: Number(port) }),
|
|
111
109
|
breaker,
|
|
@@ -123,7 +121,7 @@ export default class Synnax extends framer.Client {
|
|
|
123
121
|
const chCreator = new channel.Writer(transport.unary, chRetriever);
|
|
124
122
|
super(transport.stream, transport.unary, chRetriever);
|
|
125
123
|
this.createdAt = TimeStamp.now();
|
|
126
|
-
this.
|
|
124
|
+
this.params = parsedParams;
|
|
127
125
|
this.auth = auth_;
|
|
128
126
|
this.transport = transport;
|
|
129
127
|
this.channels = new channel.Client(this, chRetriever, transport.unary, chCreator);
|
|
@@ -131,7 +129,7 @@ export default class Synnax extends framer.Client {
|
|
|
131
129
|
transport.unary,
|
|
132
130
|
connectivityPollFrequency,
|
|
133
131
|
this.clientVersion,
|
|
134
|
-
|
|
132
|
+
parsedParams.name,
|
|
135
133
|
);
|
|
136
134
|
this.control = new control.Client(this);
|
|
137
135
|
this.ontology = new ontology.Client(transport.unary, this);
|
|
@@ -158,7 +156,7 @@ export default class Synnax extends framer.Client {
|
|
|
158
156
|
);
|
|
159
157
|
const racks = new rack.Client(this.transport.unary, tasks);
|
|
160
158
|
this.hardware = new hardware.Client(tasks, racks, devices);
|
|
161
|
-
this.arcs = new arc.Client(this.transport.unary);
|
|
159
|
+
this.arcs = new arc.Client(this.transport.unary, this.transport.stream);
|
|
162
160
|
}
|
|
163
161
|
|
|
164
162
|
get key(): string {
|
|
@@ -166,6 +164,20 @@ export default class Synnax extends framer.Client {
|
|
|
166
164
|
}
|
|
167
165
|
|
|
168
166
|
close(): void {
|
|
169
|
-
this.connectivity.
|
|
167
|
+
this.connectivity.stop();
|
|
170
168
|
}
|
|
171
169
|
}
|
|
170
|
+
|
|
171
|
+
export interface CheckConnectionParams
|
|
172
|
+
extends Pick<SynnaxParams, "host" | "port" | "secure" | "retry" | "name"> {}
|
|
173
|
+
|
|
174
|
+
export const checkConnection = async (params: CheckConnectionParams) =>
|
|
175
|
+
await newConnectionChecker(params).check();
|
|
176
|
+
|
|
177
|
+
export const newConnectionChecker = (params: CheckConnectionParams) => {
|
|
178
|
+
const { host, port, secure, name, retry } = params;
|
|
179
|
+
const retryConfig = breaker.breakerConfigZ.optional().parse(retry);
|
|
180
|
+
const url = new URL({ host, port: Number(port) });
|
|
181
|
+
const transport = new Transport(url, retryConfig, secure);
|
|
182
|
+
return new connection.Checker(transport.unary, undefined, __VERSION__, name);
|
|
183
|
+
};
|
|
@@ -7,9 +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 type
|
|
11
|
-
import { migrate } from "@synnaxlabs/x";
|
|
12
|
-
import { TimeSpan } from "@synnaxlabs/x/telem";
|
|
10
|
+
import { sendRequired, type UnaryClient } from "@synnaxlabs/freighter";
|
|
11
|
+
import { migrate, TimeSpan } from "@synnaxlabs/x";
|
|
13
12
|
import { z } from "zod";
|
|
14
13
|
|
|
15
14
|
export const statusZ = z.enum(["disconnected", "connecting", "connected", "failed"]);
|
|
@@ -30,6 +29,7 @@ const responseZ = z.object({
|
|
|
30
29
|
clusterKey: z.string(),
|
|
31
30
|
nodeVersion: z.string().optional(),
|
|
32
31
|
});
|
|
32
|
+
const requestZ = z.void();
|
|
33
33
|
|
|
34
34
|
const DEFAULT: State = {
|
|
35
35
|
clusterKey: "",
|
|
@@ -45,15 +45,14 @@ const createWarning = (
|
|
|
45
45
|
clientVersion: string,
|
|
46
46
|
clientIsNewer: boolean,
|
|
47
47
|
): string => {
|
|
48
|
-
const toUpgrade = clientIsNewer ? "
|
|
49
|
-
return `Synnax
|
|
48
|
+
const toUpgrade = clientIsNewer ? "Core" : "client";
|
|
49
|
+
return `Synnax Core version ${nodeVersion != null ? `${nodeVersion} ` : ""}is too ${clientIsNewer ? "old" : "new"} for client version ${clientVersion}.
|
|
50
50
|
This may cause compatibility issues. We recommend updating the ${toUpgrade}. For more information, see
|
|
51
51
|
https://docs.synnaxlabs.com/reference/typescript-client/troubleshooting#old-${toUpgrade}-version`;
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
/** Polls a synnax cluster for connectivity information. */
|
|
55
55
|
export class Checker {
|
|
56
|
-
private static readonly ENDPOINT = "/connectivity/check";
|
|
57
56
|
static readonly DEFAULT: State = DEFAULT;
|
|
58
57
|
private readonly _state: State;
|
|
59
58
|
private readonly pollFrequency = TimeSpan.seconds(30);
|
|
@@ -82,11 +81,11 @@ export class Checker {
|
|
|
82
81
|
this.clientVersion = clientVersion;
|
|
83
82
|
this.name = name;
|
|
84
83
|
void this.check();
|
|
85
|
-
this.
|
|
84
|
+
this.start();
|
|
86
85
|
}
|
|
87
86
|
|
|
88
87
|
/** Stops the connectivity client from polling the cluster for connectivity */
|
|
89
|
-
|
|
88
|
+
stop(): void {
|
|
90
89
|
if (this.interval != null) clearInterval(this.interval);
|
|
91
90
|
}
|
|
92
91
|
|
|
@@ -97,13 +96,13 @@ export class Checker {
|
|
|
97
96
|
async check(): Promise<State> {
|
|
98
97
|
const prevStatus = this._state.status;
|
|
99
98
|
try {
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
const res = await sendRequired(
|
|
100
|
+
this.client,
|
|
101
|
+
"/connectivity/check",
|
|
102
|
+
undefined,
|
|
103
|
+
requestZ,
|
|
104
104
|
responseZ,
|
|
105
105
|
);
|
|
106
|
-
if (err != null) throw err;
|
|
107
106
|
const nodeVersion = res.nodeVersion;
|
|
108
107
|
const clientVersion = this.clientVersion;
|
|
109
108
|
const warned = this.versionWarned;
|
|
@@ -157,7 +156,7 @@ export class Checker {
|
|
|
157
156
|
this.onChangeHandlers.push(callback);
|
|
158
157
|
}
|
|
159
158
|
|
|
160
|
-
private
|
|
159
|
+
private start(): void {
|
|
161
160
|
this.interval = setInterval(() => {
|
|
162
161
|
void this.check();
|
|
163
162
|
}, this.pollFrequency.milliseconds);
|