@synnaxlabs/client 0.56.2 → 0.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client-DDACDVZ-.js +14505 -0
- package/dist/client-DDACDVZ-.js.map +1 -0
- package/dist/client.js +1128 -14876
- package/dist/client.js.map +1 -0
- package/dist/src/access/client.d.ts +10 -1
- package/dist/src/access/client.d.ts.map +1 -1
- package/dist/src/access/enforce.d.ts.map +1 -1
- package/dist/src/access/external.d.ts +1 -0
- package/dist/src/access/external.d.ts.map +1 -1
- package/dist/src/access/granted.d.ts +39 -0
- package/dist/src/access/granted.d.ts.map +1 -0
- package/dist/src/access/policy/client.d.ts +136 -147
- package/dist/src/access/policy/client.d.ts.map +1 -1
- package/dist/src/access/policy/types.gen.d.ts +15 -68
- package/dist/src/access/policy/types.gen.d.ts.map +1 -1
- package/dist/src/access/role/client.d.ts +77 -58
- package/dist/src/access/role/client.d.ts.map +1 -1
- package/dist/src/access/role/types.gen.d.ts +8 -14
- package/dist/src/access/role/types.gen.d.ts.map +1 -1
- package/dist/src/actions/actions.d.ts +5 -6
- package/dist/src/actions/actions.d.ts.map +1 -1
- package/dist/src/actions/controller.d.ts +194 -0
- package/dist/src/actions/controller.d.ts.map +1 -0
- package/dist/src/actions/external.d.ts +1 -0
- package/dist/src/actions/external.d.ts.map +1 -1
- package/dist/src/arc/actions.d.ts +575 -0
- package/dist/src/arc/actions.d.ts.map +1 -0
- package/dist/src/arc/actions.gen.d.ts +1439 -0
- package/dist/src/arc/actions.gen.d.ts.map +1 -0
- package/dist/src/arc/client.d.ts +97 -13
- package/dist/src/arc/client.d.ts.map +1 -1
- package/dist/src/arc/compiler/types.gen.d.ts +3 -3
- package/dist/src/arc/compiler/types.gen.d.ts.map +1 -1
- package/dist/src/arc/external.d.ts +2 -0
- package/dist/src/arc/external.d.ts.map +1 -1
- package/dist/src/arc/graph/types.gen.d.ts +45 -597
- package/dist/src/arc/graph/types.gen.d.ts.map +1 -1
- package/dist/src/arc/ir/index.d.ts +1 -1
- package/dist/src/arc/ir/index.d.ts.map +1 -1
- package/dist/src/arc/ir/ir.d.ts +2 -0
- package/dist/src/arc/ir/ir.d.ts.map +1 -0
- package/dist/src/arc/ir/types.gen.d.ts +58 -2807
- package/dist/src/arc/ir/types.gen.d.ts.map +1 -1
- package/dist/src/arc/module/types.gen.d.ts +18 -1090
- package/dist/src/arc/module/types.gen.d.ts.map +1 -1
- package/dist/src/arc/program/types.gen.d.ts +18 -1090
- package/dist/src/arc/program/types.gen.d.ts.map +1 -1
- package/dist/src/arc/text/types.gen.d.ts +54 -1
- package/dist/src/arc/text/types.gen.d.ts.map +1 -1
- package/dist/src/arc/types/types.gen.d.ts +35 -153
- package/dist/src/arc/types/types.gen.d.ts.map +1 -1
- package/dist/src/arc/types.gen.d.ts +98 -2278
- package/dist/src/arc/types.gen.d.ts.map +1 -1
- package/dist/src/auth/auth.d.ts +14 -2
- package/dist/src/auth/auth.d.ts.map +1 -1
- package/dist/src/channel/client.d.ts +113 -75
- package/dist/src/channel/client.d.ts.map +1 -1
- package/dist/src/channel/external.d.ts +0 -1
- package/dist/src/channel/external.d.ts.map +1 -1
- package/dist/src/channel/payload.d.ts +65 -56
- package/dist/src/channel/payload.d.ts.map +1 -1
- package/dist/src/channel/types.gen.d.ts +26 -73
- package/dist/src/channel/types.gen.d.ts.map +1 -1
- package/dist/src/channel/writer.d.ts +1 -3
- package/dist/src/channel/writer.d.ts.map +1 -1
- package/dist/src/client.d.ts +55 -27
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/connection/client.d.ts +146 -0
- package/dist/src/connection/client.d.ts.map +1 -0
- package/dist/src/connection/external.d.ts +3 -0
- package/dist/src/connection/external.d.ts.map +1 -0
- package/dist/src/connection/index.d.ts +1 -1
- package/dist/src/connection/index.d.ts.map +1 -1
- package/dist/src/connection/status.d.ts +252 -0
- package/dist/src/connection/status.d.ts.map +1 -0
- package/dist/src/control/client.d.ts +31 -7
- package/dist/src/control/client.d.ts.map +1 -1
- package/dist/src/control/state.d.ts +47 -16
- package/dist/src/control/state.d.ts.map +1 -1
- package/dist/src/device/client.d.ts +59 -17
- package/dist/src/device/client.d.ts.map +1 -1
- package/dist/src/device/types.gen.d.ts +17 -67
- package/dist/src/device/types.gen.d.ts.map +1 -1
- package/dist/src/errors.d.ts +17 -20
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/ethercat/external.d.ts +2 -0
- package/dist/src/ethercat/external.d.ts.map +1 -0
- package/dist/src/ethercat/index.d.ts +2 -0
- package/dist/src/ethercat/index.d.ts.map +1 -0
- package/dist/src/ethercat/types.gen.d.ts +243 -0
- package/dist/src/ethercat/types.gen.d.ts.map +1 -0
- package/dist/src/framer/adapter.d.ts +8 -5
- package/dist/src/framer/adapter.d.ts.map +1 -1
- package/dist/src/framer/benchutil.d.ts +19 -0
- package/dist/src/framer/benchutil.d.ts.map +1 -0
- package/dist/src/framer/cache/cache.d.ts +38 -0
- package/dist/src/framer/cache/cache.d.ts.map +1 -0
- package/dist/src/framer/cache/dynamic.d.ts +91 -0
- package/dist/src/framer/cache/dynamic.d.ts.map +1 -0
- package/dist/src/framer/cache/reader.d.ts +57 -0
- package/dist/src/framer/cache/reader.d.ts.map +1 -0
- package/dist/src/framer/cache/static.d.ts +66 -0
- package/dist/src/framer/cache/static.d.ts.map +1 -0
- package/dist/src/framer/cache/streamer.d.ts +86 -0
- package/dist/src/framer/cache/streamer.d.ts.map +1 -0
- package/dist/src/framer/cache/transform.d.ts +18 -0
- package/dist/src/framer/cache/transform.d.ts.map +1 -0
- package/dist/src/framer/cache/unary.d.ts +39 -0
- package/dist/src/framer/cache/unary.d.ts.map +1 -0
- package/dist/src/framer/client.d.ts +35 -14
- package/dist/src/framer/client.d.ts.map +1 -1
- package/dist/src/framer/codec.d.ts.map +1 -1
- package/dist/src/framer/deleter.d.ts +3 -2
- package/dist/src/framer/deleter.d.ts.map +1 -1
- package/dist/src/framer/external.d.ts +6 -0
- package/dist/src/framer/external.d.ts.map +1 -1
- package/dist/src/framer/feed.d.ts +40 -0
- package/dist/src/framer/feed.d.ts.map +1 -0
- package/dist/src/framer/frame.d.ts +16 -20
- package/dist/src/framer/frame.d.ts.map +1 -1
- package/dist/src/framer/hardened.d.ts +70 -0
- package/dist/src/framer/hardened.d.ts.map +1 -0
- package/dist/src/framer/iterator.d.ts +36 -43
- package/dist/src/framer/iterator.d.ts.map +1 -1
- package/dist/src/framer/reader.d.ts +3 -2
- package/dist/src/framer/reader.d.ts.map +1 -1
- package/dist/src/framer/streamer.d.ts +132 -205
- package/dist/src/framer/streamer.d.ts.map +1 -1
- package/dist/src/framer/writer.d.ts +130 -161
- package/dist/src/framer/writer.d.ts.map +1 -1
- package/dist/src/group/client.d.ts +66 -9
- package/dist/src/group/client.d.ts.map +1 -1
- package/dist/src/group/types.gen.d.ts +2 -2
- package/dist/src/http/external.d.ts +2 -0
- package/dist/src/http/external.d.ts.map +1 -0
- package/dist/src/http/index.d.ts +2 -0
- package/dist/src/http/index.d.ts.map +1 -0
- package/dist/src/http/types.gen.d.ts +451 -0
- package/dist/src/http/types.gen.d.ts.map +1 -0
- package/dist/src/imex/client.d.ts +88 -0
- package/dist/src/imex/client.d.ts.map +1 -0
- package/dist/src/imex/index.d.ts +2 -0
- package/dist/src/imex/index.d.ts.map +1 -0
- package/dist/src/index.d.ts +18 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/label/client.d.ts +55 -36
- package/dist/src/label/client.d.ts.map +1 -1
- package/dist/src/label/external.d.ts +2 -0
- package/dist/src/label/external.d.ts.map +1 -1
- package/dist/src/label/payload.d.ts +4 -46
- package/dist/src/label/payload.d.ts.map +1 -1
- package/dist/src/label/store.d.ts +8 -0
- package/dist/src/label/store.d.ts.map +1 -0
- package/dist/src/label/types.gen.d.ts +45 -0
- package/dist/src/label/types.gen.d.ts.map +1 -0
- package/dist/src/labjack/external.d.ts +2 -0
- package/dist/src/labjack/external.d.ts.map +1 -0
- package/dist/src/labjack/index.d.ts +2 -0
- package/dist/src/labjack/index.d.ts.map +1 -0
- package/dist/src/labjack/types.gen.d.ts +442 -0
- package/dist/src/labjack/types.gen.d.ts.map +1 -0
- package/dist/src/lineplot/actions.d.ts +914 -0
- package/dist/src/lineplot/actions.d.ts.map +1 -0
- package/dist/src/lineplot/actions.gen.d.ts +4208 -0
- package/dist/src/lineplot/actions.gen.d.ts.map +1 -0
- package/dist/src/lineplot/client.d.ts +66 -16
- package/dist/src/lineplot/client.d.ts.map +1 -1
- package/dist/src/lineplot/external.d.ts +3 -0
- package/dist/src/lineplot/external.d.ts.map +1 -1
- package/dist/src/lineplot/line.d.ts +16 -0
- package/dist/src/lineplot/line.d.ts.map +1 -0
- package/dist/src/lineplot/types.gen.d.ts +837 -14
- package/dist/src/lineplot/types.gen.d.ts.map +1 -1
- package/dist/src/log/actions.d.ts +271 -0
- package/dist/src/log/actions.d.ts.map +1 -0
- package/dist/src/log/actions.gen.d.ts +1529 -0
- package/dist/src/log/actions.gen.d.ts.map +1 -0
- package/dist/src/log/client.d.ts +66 -16
- package/dist/src/log/client.d.ts.map +1 -1
- package/dist/src/log/external.d.ts +2 -0
- package/dist/src/log/external.d.ts.map +1 -1
- package/dist/src/log/types.gen.d.ts +139 -14
- package/dist/src/log/types.gen.d.ts.map +1 -1
- package/dist/src/modbus/external.d.ts +2 -0
- package/dist/src/modbus/external.d.ts.map +1 -0
- package/dist/src/modbus/index.d.ts +2 -0
- package/dist/src/modbus/index.d.ts.map +1 -0
- package/dist/src/modbus/types.gen.d.ts +280 -0
- package/dist/src/modbus/types.gen.d.ts.map +1 -0
- package/dist/src/ni/external.d.ts +2 -0
- package/dist/src/ni/external.d.ts.map +1 -0
- package/dist/src/ni/index.d.ts +2 -0
- package/dist/src/ni/index.d.ts.map +1 -0
- package/dist/src/ni/types.gen.d.ts +21029 -0
- package/dist/src/ni/types.gen.d.ts.map +1 -0
- package/dist/src/node/index.d.ts +2 -0
- package/dist/src/node/index.d.ts.map +1 -0
- package/dist/src/node/types.gen.d.ts +4 -0
- package/dist/src/node/types.gen.d.ts.map +1 -0
- package/dist/src/ontology/client.d.ts +314 -67
- package/dist/src/ontology/client.d.ts.map +1 -1
- package/dist/src/ontology/external.d.ts +1 -0
- package/dist/src/ontology/external.d.ts.map +1 -1
- package/dist/src/ontology/payload.d.ts +60 -18
- package/dist/src/ontology/payload.d.ts.map +1 -1
- package/dist/src/ontology/store.d.ts +32 -0
- package/dist/src/ontology/store.d.ts.map +1 -0
- package/dist/src/ontology/types.gen.d.ts +3 -2
- package/dist/src/ontology/types.gen.d.ts.map +1 -1
- package/dist/src/ontology/writer.d.ts +16 -10
- package/dist/src/ontology/writer.d.ts.map +1 -1
- package/dist/src/opcua/external.d.ts +2 -0
- package/dist/src/opcua/external.d.ts.map +1 -0
- package/dist/src/opcua/index.d.ts +2 -0
- package/dist/src/opcua/index.d.ts.map +1 -0
- package/dist/src/opcua/types.gen.d.ts +82 -0
- package/dist/src/opcua/types.gen.d.ts.map +1 -0
- package/dist/src/pagerduty/external.d.ts +2 -0
- package/dist/src/pagerduty/external.d.ts.map +1 -0
- package/dist/src/pagerduty/index.d.ts +2 -0
- package/dist/src/pagerduty/index.d.ts.map +1 -0
- package/dist/src/pagerduty/types.gen.d.ts +30 -0
- package/dist/src/pagerduty/types.gen.d.ts.map +1 -0
- package/dist/src/panel/actions.d.ts +273 -0
- package/dist/src/panel/actions.d.ts.map +1 -0
- package/dist/src/panel/actions.gen.d.ts +1255 -0
- package/dist/src/panel/actions.gen.d.ts.map +1 -0
- package/dist/src/panel/client.d.ts +148 -0
- package/dist/src/panel/client.d.ts.map +1 -0
- package/dist/src/panel/external.d.ts +6 -0
- package/dist/src/panel/external.d.ts.map +1 -0
- package/dist/src/panel/index.d.ts +2 -0
- package/dist/src/panel/index.d.ts.map +1 -0
- package/dist/src/panel/tree.d.ts +50 -0
- package/dist/src/panel/tree.d.ts.map +1 -0
- package/dist/src/panel/types.gen.d.ts +370 -0
- package/dist/src/panel/types.gen.d.ts.map +1 -0
- package/dist/src/project/client.d.ts +89 -0
- package/dist/src/project/client.d.ts.map +1 -0
- package/dist/src/project/external.d.ts.map +1 -0
- package/dist/src/project/index.d.ts +2 -0
- package/dist/src/project/index.d.ts.map +1 -0
- package/dist/src/project/types.gen.d.ts +27 -0
- package/dist/src/project/types.gen.d.ts.map +1 -0
- package/dist/src/query/cache.d.ts +132 -0
- package/dist/src/query/cache.d.ts.map +1 -0
- package/dist/src/query/deleted.d.ts +20 -0
- package/dist/src/query/deleted.d.ts.map +1 -0
- package/dist/src/query/derived.d.ts +33 -0
- package/dist/src/query/derived.d.ts.map +1 -0
- package/dist/src/query/external.d.ts +10 -0
- package/dist/src/query/external.d.ts.map +1 -0
- package/dist/src/query/index.d.ts +2 -0
- package/dist/src/query/index.d.ts.map +1 -0
- package/dist/src/query/query.d.ts +235 -0
- package/dist/src/query/query.d.ts.map +1 -0
- package/dist/src/query/retriever.d.ts +135 -0
- package/dist/src/query/retriever.d.ts.map +1 -0
- package/dist/src/query/streamer.d.ts +67 -0
- package/dist/src/query/streamer.d.ts.map +1 -0
- package/dist/src/query/table.d.ts +219 -0
- package/dist/src/query/table.d.ts.map +1 -0
- package/dist/src/query/types.d.ts +35 -0
- package/dist/src/query/types.d.ts.map +1 -0
- package/dist/src/query/write.d.ts +21 -0
- package/dist/src/query/write.d.ts.map +1 -0
- package/dist/src/rack/client.d.ts +58 -20
- package/dist/src/rack/client.d.ts.map +1 -1
- package/dist/src/rack/types.gen.d.ts +11 -12
- package/dist/src/rack/types.gen.d.ts.map +1 -1
- package/dist/src/range/alias/types.gen.d.ts +2 -3
- package/dist/src/range/alias/types.gen.d.ts.map +1 -1
- package/dist/src/ranger/client.d.ts +138 -27
- package/dist/src/ranger/client.d.ts.map +1 -1
- package/dist/src/ranger/kv/client.d.ts +7 -4
- package/dist/src/ranger/kv/client.d.ts.map +1 -1
- package/dist/src/ranger/payload.d.ts +3 -0
- package/dist/src/ranger/payload.d.ts.map +1 -1
- package/dist/src/ranger/types.gen.d.ts +45 -101
- package/dist/src/ranger/types.gen.d.ts.map +1 -1
- package/dist/src/ranger/writer.d.ts +2 -74
- package/dist/src/ranger/writer.d.ts.map +1 -1
- package/dist/src/schematic/actions.d.ts +90 -33
- package/dist/src/schematic/actions.d.ts.map +1 -1
- package/dist/src/schematic/actions.gen.d.ts +207 -114
- package/dist/src/schematic/actions.gen.d.ts.map +1 -1
- package/dist/src/schematic/client.d.ts +70 -68
- package/dist/src/schematic/client.d.ts.map +1 -1
- package/dist/src/schematic/symbol/client.d.ts +133 -27
- package/dist/src/schematic/symbol/client.d.ts.map +1 -1
- package/dist/src/schematic/symbol/types.gen.d.ts +258 -153
- package/dist/src/schematic/symbol/types.gen.d.ts.map +1 -1
- package/dist/src/schematic/types.gen.d.ts +17 -96
- package/dist/src/schematic/types.gen.d.ts.map +1 -1
- package/dist/src/status/client.d.ts +69 -14
- package/dist/src/status/client.d.ts.map +1 -1
- package/dist/src/status/external.d.ts +2 -0
- package/dist/src/status/external.d.ts.map +1 -1
- package/dist/src/status/payload.d.ts +2 -36
- package/dist/src/status/payload.d.ts.map +1 -1
- package/dist/src/status/status.d.ts +65 -0
- package/dist/src/status/status.d.ts.map +1 -0
- package/dist/src/status/types.gen.d.ts +58 -0
- package/dist/src/status/types.gen.d.ts.map +1 -0
- package/dist/src/table/actions.d.ts +72 -13
- package/dist/src/table/actions.d.ts.map +1 -1
- package/dist/src/table/actions.gen.d.ts +221 -137
- package/dist/src/table/actions.gen.d.ts.map +1 -1
- package/dist/src/table/client.d.ts +64 -40
- package/dist/src/table/client.d.ts.map +1 -1
- package/dist/src/table/types.gen.d.ts +20 -55
- package/dist/src/table/types.gen.d.ts.map +1 -1
- package/dist/src/task/client.d.ts +149 -28
- package/dist/src/task/client.d.ts.map +1 -1
- package/dist/src/task/types.gen.d.ts +71 -89
- package/dist/src/task/types.gen.d.ts.map +1 -1
- package/dist/src/testutil/access.d.ts +27 -1
- package/dist/src/testutil/access.d.ts.map +1 -1
- package/dist/src/testutil/channels.d.ts +2 -0
- package/dist/src/testutil/channels.d.ts.map +1 -1
- package/dist/src/testutil/client.d.ts +5 -0
- package/dist/src/testutil/client.d.ts.map +1 -1
- package/dist/src/testutil/connection.d.ts +10 -0
- package/dist/src/testutil/connection.d.ts.map +1 -0
- package/dist/src/testutil/index.d.ts +9 -0
- package/dist/src/testutil/index.d.ts.map +1 -0
- package/dist/src/testutil/panels.d.ts +8 -0
- package/dist/src/testutil/panels.d.ts.map +1 -0
- package/dist/src/testutil/proxy.d.ts +29 -0
- package/dist/src/testutil/proxy.d.ts.map +1 -0
- package/dist/src/testutil/query.d.ts +7 -0
- package/dist/src/testutil/query.d.ts.map +1 -0
- package/dist/src/testutil/telem.d.ts +4 -0
- package/dist/src/testutil/telem.d.ts.map +1 -1
- package/dist/src/transport.d.ts +10 -4
- package/dist/src/transport.d.ts.map +1 -1
- package/dist/src/user/client.d.ts +29 -28
- package/dist/src/user/client.d.ts.map +1 -1
- package/dist/src/user/external.d.ts +1 -1
- package/dist/src/user/external.d.ts.map +1 -1
- package/dist/src/user/types.gen.d.ts +4 -4
- package/dist/src/util/retrieve.d.ts +2 -2
- package/dist/src/util/retrieve.d.ts.map +1 -1
- package/dist/src/util/telem.d.ts.map +1 -1
- package/dist/src/view/client.d.ts +30 -14
- package/dist/src/view/client.d.ts.map +1 -1
- package/dist/src/view/types.gen.d.ts +7 -15
- package/dist/src/view/types.gen.d.ts.map +1 -1
- package/dist/testutil.js +189 -0
- package/dist/testutil.js.map +1 -0
- package/package.json +39 -16
- package/src/access/client.ts +14 -3
- package/src/access/enforce.ts +0 -3
- package/src/access/external.ts +1 -0
- package/src/access/granted.ts +114 -0
- package/src/access/policy/client.ts +135 -43
- package/src/access/policy/types.gen.ts +9 -11
- package/src/access/role/client.ts +160 -38
- package/src/access/role/types.gen.ts +8 -12
- package/src/actions/actions.ts +5 -6
- package/src/actions/controller.ts +626 -0
- package/src/actions/external.ts +11 -0
- package/src/arc/actions.gen.ts +313 -0
- package/src/arc/actions.ts +192 -0
- package/src/arc/client.ts +424 -41
- package/src/arc/compiler/types.gen.ts +5 -6
- package/src/arc/external.ts +2 -0
- package/src/arc/graph/types.gen.ts +24 -22
- package/src/arc/ir/index.ts +1 -1
- package/{eslint.config.ts → src/arc/ir/ir.ts} +1 -4
- package/src/arc/ir/types.gen.ts +42 -41
- package/src/arc/text/types.gen.ts +21 -2
- package/src/arc/types/types.gen.ts +40 -32
- package/src/arc/types.gen.ts +31 -29
- package/src/auth/auth.ts +40 -8
- package/src/channel/client.ts +529 -132
- package/src/channel/external.ts +0 -1
- package/src/channel/payload.ts +30 -3
- package/src/channel/types.gen.ts +37 -48
- package/src/channel/writer.ts +2 -11
- package/src/client.ts +215 -91
- package/src/connection/client.ts +495 -0
- package/src/connection/external.ts +34 -0
- package/src/connection/index.ts +1 -1
- package/src/connection/status.ts +442 -0
- package/src/control/client.ts +84 -12
- package/src/control/state.ts +17 -36
- package/src/device/client.ts +293 -41
- package/src/device/types.gen.ts +15 -26
- package/src/errors.ts +45 -22
- package/src/{workspace → ethercat}/external.ts +1 -2
- package/src/{workspace → ethercat}/index.ts +1 -1
- package/src/ethercat/types.gen.ts +151 -0
- package/src/framer/adapter.ts +60 -37
- package/src/framer/benchutil.ts +67 -0
- package/src/framer/cache/cache.ts +115 -0
- package/src/framer/cache/dynamic.ts +340 -0
- package/src/framer/cache/reader.ts +231 -0
- package/src/framer/cache/static.ts +215 -0
- package/src/framer/cache/streamer.ts +391 -0
- package/src/framer/cache/transform.ts +31 -0
- package/src/framer/cache/unary.ts +108 -0
- package/src/framer/client.ts +71 -43
- package/src/framer/codec.ts +55 -18
- package/src/framer/deleter.ts +4 -6
- package/src/framer/external.ts +10 -0
- package/src/framer/feed.ts +108 -0
- package/src/framer/frame.ts +13 -23
- package/src/framer/hardened.ts +283 -0
- package/src/framer/iterator.ts +31 -42
- package/src/framer/reader.ts +11 -11
- package/src/framer/streamer.ts +18 -178
- package/src/framer/writer.ts +39 -59
- package/src/group/client.ts +158 -23
- package/src/http/external.ts +10 -0
- package/src/{cluster → http}/index.ts +1 -1
- package/src/http/types.gen.ts +245 -0
- package/src/imex/client.ts +125 -0
- package/src/imex/index.ts +10 -0
- package/src/index.ts +19 -6
- package/src/label/client.ts +193 -54
- package/src/label/external.ts +2 -0
- package/src/label/payload.ts +4 -9
- package/src/label/store.ts +28 -0
- package/src/label/types.gen.ts +31 -0
- package/src/labjack/external.ts +10 -0
- package/src/labjack/index.ts +10 -0
- package/src/labjack/types.gen.ts +251 -0
- package/src/lineplot/actions.gen.ts +880 -0
- package/src/lineplot/actions.ts +535 -0
- package/src/lineplot/client.ts +224 -52
- package/src/lineplot/external.ts +3 -0
- package/src/lineplot/line.ts +80 -0
- package/src/lineplot/types.gen.ts +225 -12
- package/src/log/actions.gen.ts +474 -0
- package/src/log/actions.ts +242 -0
- package/src/log/client.ts +223 -52
- package/src/log/external.ts +2 -0
- package/src/log/types.gen.ts +45 -14
- package/src/modbus/external.ts +10 -0
- package/src/modbus/index.ts +10 -0
- package/src/modbus/types.gen.ts +185 -0
- package/src/ni/external.ts +10 -0
- package/src/ni/index.ts +10 -0
- package/src/ni/types.gen.ts +1632 -0
- package/src/node/index.ts +10 -0
- package/src/{cluster → node}/types.gen.ts +2 -2
- package/src/ontology/client.ts +408 -99
- package/src/ontology/external.ts +7 -0
- package/src/ontology/payload.ts +48 -7
- package/src/ontology/store.ts +83 -0
- package/src/ontology/types.gen.ts +2 -1
- package/src/ontology/writer.ts +1 -0
- package/src/opcua/external.ts +10 -0
- package/src/opcua/index.ts +10 -0
- package/src/opcua/types.gen.ts +65 -0
- package/src/pagerduty/external.ts +10 -0
- package/src/pagerduty/index.ts +10 -0
- package/src/pagerduty/types.gen.ts +41 -0
- package/src/panel/actions.gen.ts +267 -0
- package/src/panel/actions.ts +357 -0
- package/src/panel/client.ts +327 -0
- package/src/panel/external.ts +14 -0
- package/src/panel/index.ts +10 -0
- package/src/panel/tree.ts +163 -0
- package/src/panel/types.gen.ts +164 -0
- package/src/project/client.ts +273 -0
- package/src/project/external.ts +11 -0
- package/src/project/index.ts +10 -0
- package/src/project/types.gen.ts +40 -0
- package/src/query/cache.ts +326 -0
- package/src/query/deleted.ts +38 -0
- package/src/query/derived.ts +101 -0
- package/src/query/external.ts +51 -0
- package/src/query/index.ts +10 -0
- package/src/query/query.ts +865 -0
- package/src/query/retriever.ts +308 -0
- package/src/query/streamer.ts +207 -0
- package/src/query/table.ts +625 -0
- package/src/query/types.ts +54 -0
- package/src/query/write.ts +42 -0
- package/src/rack/client.ts +233 -45
- package/src/rack/types.gen.ts +15 -16
- package/src/range/alias/types.gen.ts +2 -3
- package/src/ranger/client.ts +581 -70
- package/src/ranger/kv/client.ts +52 -21
- package/src/ranger/payload.ts +3 -0
- package/src/ranger/types.gen.ts +21 -23
- package/src/ranger/writer.ts +4 -8
- package/src/schematic/actions.gen.ts +62 -53
- package/src/schematic/actions.ts +44 -42
- package/src/schematic/client.ts +226 -70
- package/src/schematic/symbol/client.ts +277 -48
- package/src/schematic/symbol/types.gen.ts +22 -34
- package/src/schematic/types.gen.ts +22 -29
- package/src/status/client.ts +321 -44
- package/src/status/external.ts +2 -0
- package/src/status/payload.ts +1 -23
- package/src/status/status.ts +241 -0
- package/src/status/types.gen.ts +108 -0
- package/src/table/actions.gen.ts +96 -63
- package/src/table/actions.ts +44 -19
- package/src/table/client.ts +220 -56
- package/src/table/types.gen.ts +24 -31
- package/src/task/client.ts +580 -101
- package/src/task/types.gen.ts +68 -75
- package/src/testutil/access.ts +102 -6
- package/src/testutil/channels.ts +29 -0
- package/src/testutil/client.ts +27 -2
- package/src/testutil/connection.ts +47 -0
- package/src/testutil/index.ts +17 -0
- package/src/testutil/panels.ts +26 -0
- package/src/testutil/proxy.ts +106 -0
- package/src/testutil/query.ts +28 -0
- package/src/testutil/telem.ts +17 -1
- package/src/transport.ts +18 -7
- package/src/user/client.ts +165 -64
- package/src/user/external.ts +1 -1
- package/src/user/types.gen.ts +5 -5
- package/src/util/retrieve.ts +4 -4
- package/src/util/telem.ts +0 -1
- package/src/view/client.ts +120 -37
- package/src/view/types.gen.ts +8 -11
- package/.turbo/turbo-build.log +0 -20
- package/.vscode/settings.json +0 -3
- package/CONTRIBUTING.md +0 -47
- package/dist/client.cjs +0 -118
- package/dist/eslint.config.d.ts +0 -4
- package/dist/eslint.config.d.ts.map +0 -1
- package/dist/src/access/enforce.spec.d.ts +0 -2
- package/dist/src/access/enforce.spec.d.ts.map +0 -1
- package/dist/src/access/policy/access.spec.d.ts +0 -2
- package/dist/src/access/policy/access.spec.d.ts.map +0 -1
- package/dist/src/access/role/role.spec.d.ts +0 -2
- package/dist/src/access/role/role.spec.d.ts.map +0 -1
- package/dist/src/actions/actions.spec.d.ts +0 -2
- package/dist/src/actions/actions.spec.d.ts.map +0 -1
- package/dist/src/arc/access.spec.d.ts +0 -2
- package/dist/src/arc/access.spec.d.ts.map +0 -1
- package/dist/src/arc/arc.spec.d.ts +0 -2
- package/dist/src/arc/arc.spec.d.ts.map +0 -1
- package/dist/src/arc/lsp.spec.d.ts +0 -2
- package/dist/src/arc/lsp.spec.d.ts.map +0 -1
- package/dist/src/auth/auth.spec.d.ts +0 -2
- package/dist/src/auth/auth.spec.d.ts.map +0 -1
- package/dist/src/channel/access.spec.d.ts +0 -2
- package/dist/src/channel/access.spec.d.ts.map +0 -1
- package/dist/src/channel/batchRetriever.spec.d.ts +0 -2
- package/dist/src/channel/batchRetriever.spec.d.ts.map +0 -1
- package/dist/src/channel/channel.spec.d.ts +0 -2
- package/dist/src/channel/channel.spec.d.ts.map +0 -1
- package/dist/src/channel/payload.spec.d.ts +0 -2
- package/dist/src/channel/payload.spec.d.ts.map +0 -1
- package/dist/src/channel/retriever.d.ts +0 -64
- package/dist/src/channel/retriever.d.ts.map +0 -1
- package/dist/src/cluster/index.d.ts +0 -2
- package/dist/src/cluster/index.d.ts.map +0 -1
- package/dist/src/cluster/types.gen.d.ts +0 -4
- package/dist/src/cluster/types.gen.d.ts.map +0 -1
- package/dist/src/connection/checker.d.ts +0 -86
- package/dist/src/connection/checker.d.ts.map +0 -1
- package/dist/src/connection/connection.spec.d.ts +0 -2
- package/dist/src/connection/connection.spec.d.ts.map +0 -1
- package/dist/src/connection.spec.d.ts +0 -2
- package/dist/src/connection.spec.d.ts.map +0 -1
- package/dist/src/control/state.spec.d.ts +0 -2
- package/dist/src/control/state.spec.d.ts.map +0 -1
- package/dist/src/device/access.spec.d.ts +0 -2
- package/dist/src/device/access.spec.d.ts.map +0 -1
- package/dist/src/device/device.spec.d.ts +0 -2
- package/dist/src/device/device.spec.d.ts.map +0 -1
- package/dist/src/device/payload.spec.d.ts +0 -2
- package/dist/src/device/payload.spec.d.ts.map +0 -1
- package/dist/src/errors.spec.d.ts +0 -2
- package/dist/src/errors.spec.d.ts.map +0 -1
- package/dist/src/framer/adapter.spec.d.ts +0 -2
- package/dist/src/framer/adapter.spec.d.ts.map +0 -1
- package/dist/src/framer/client.spec.d.ts +0 -2
- package/dist/src/framer/client.spec.d.ts.map +0 -1
- package/dist/src/framer/codec.spec.d.ts +0 -2
- package/dist/src/framer/codec.spec.d.ts.map +0 -1
- package/dist/src/framer/deleter.spec.d.ts +0 -2
- package/dist/src/framer/deleter.spec.d.ts.map +0 -1
- package/dist/src/framer/frame.spec.d.ts +0 -2
- package/dist/src/framer/frame.spec.d.ts.map +0 -1
- package/dist/src/framer/iterator.spec.d.ts +0 -2
- package/dist/src/framer/iterator.spec.d.ts.map +0 -1
- package/dist/src/framer/reader.spec.d.ts +0 -2
- package/dist/src/framer/reader.spec.d.ts.map +0 -1
- package/dist/src/framer/streamer.spec.d.ts +0 -2
- package/dist/src/framer/streamer.spec.d.ts.map +0 -1
- package/dist/src/framer/writer.spec.d.ts +0 -2
- package/dist/src/framer/writer.spec.d.ts.map +0 -1
- package/dist/src/group/access.spec.d.ts +0 -2
- package/dist/src/group/access.spec.d.ts.map +0 -1
- package/dist/src/group/group.spec.d.ts +0 -2
- package/dist/src/group/group.spec.d.ts.map +0 -1
- package/dist/src/label/access.spec.d.ts +0 -2
- package/dist/src/label/access.spec.d.ts.map +0 -1
- package/dist/src/label/label.spec.d.ts +0 -2
- package/dist/src/label/label.spec.d.ts.map +0 -1
- package/dist/src/lineplot/access.spec.d.ts +0 -2
- package/dist/src/lineplot/access.spec.d.ts.map +0 -1
- package/dist/src/lineplot/lineplot.spec.d.ts +0 -2
- package/dist/src/lineplot/lineplot.spec.d.ts.map +0 -1
- package/dist/src/log/access.spec.d.ts +0 -2
- package/dist/src/log/access.spec.d.ts.map +0 -1
- package/dist/src/log/log.spec.d.ts +0 -2
- package/dist/src/log/log.spec.d.ts.map +0 -1
- package/dist/src/ontology/ontology.spec.d.ts +0 -2
- package/dist/src/ontology/ontology.spec.d.ts.map +0 -1
- package/dist/src/rack/access.spec.d.ts +0 -2
- package/dist/src/rack/access.spec.d.ts.map +0 -1
- package/dist/src/rack/rack.spec.d.ts +0 -2
- package/dist/src/rack/rack.spec.d.ts.map +0 -1
- package/dist/src/ranger/access.spec.d.ts +0 -2
- package/dist/src/ranger/access.spec.d.ts.map +0 -1
- package/dist/src/ranger/alias/payload.spec.d.ts +0 -2
- package/dist/src/ranger/alias/payload.spec.d.ts.map +0 -1
- package/dist/src/ranger/ranger.spec.d.ts +0 -2
- package/dist/src/ranger/ranger.spec.d.ts.map +0 -1
- package/dist/src/schematic/access.spec.d.ts +0 -2
- package/dist/src/schematic/access.spec.d.ts.map +0 -1
- package/dist/src/schematic/actions.spec.d.ts +0 -2
- package/dist/src/schematic/actions.spec.d.ts.map +0 -1
- package/dist/src/schematic/schematic.spec.d.ts +0 -2
- package/dist/src/schematic/schematic.spec.d.ts.map +0 -1
- package/dist/src/schematic/symbol/access.spec.d.ts +0 -2
- package/dist/src/schematic/symbol/access.spec.d.ts.map +0 -1
- package/dist/src/schematic/symbol/client.spec.d.ts +0 -2
- package/dist/src/schematic/symbol/client.spec.d.ts.map +0 -1
- package/dist/src/status/access.spec.d.ts +0 -2
- package/dist/src/status/access.spec.d.ts.map +0 -1
- package/dist/src/status/status.spec.d.ts +0 -2
- package/dist/src/status/status.spec.d.ts.map +0 -1
- package/dist/src/table/access.spec.d.ts +0 -2
- package/dist/src/table/access.spec.d.ts.map +0 -1
- package/dist/src/table/table.spec.d.ts +0 -2
- package/dist/src/table/table.spec.d.ts.map +0 -1
- package/dist/src/task/access.spec.d.ts +0 -2
- package/dist/src/task/access.spec.d.ts.map +0 -1
- package/dist/src/task/payload.spec.d.ts +0 -2
- package/dist/src/task/payload.spec.d.ts.map +0 -1
- package/dist/src/task/task.spec.d.ts +0 -2
- package/dist/src/task/task.spec.d.ts.map +0 -1
- package/dist/src/user/access.spec.d.ts +0 -2
- package/dist/src/user/access.spec.d.ts.map +0 -1
- package/dist/src/user/user.spec.d.ts +0 -2
- package/dist/src/user/user.spec.d.ts.map +0 -1
- package/dist/src/util/retrieve.spec.d.ts +0 -2
- package/dist/src/util/retrieve.spec.d.ts.map +0 -1
- package/dist/src/view/view.spec.d.ts +0 -2
- package/dist/src/view/view.spec.d.ts.map +0 -1
- package/dist/src/workspace/access.spec.d.ts +0 -2
- package/dist/src/workspace/access.spec.d.ts.map +0 -1
- package/dist/src/workspace/client.d.ts +0 -36
- package/dist/src/workspace/client.d.ts.map +0 -1
- package/dist/src/workspace/external.d.ts.map +0 -1
- package/dist/src/workspace/index.d.ts +0 -2
- package/dist/src/workspace/index.d.ts.map +0 -1
- package/dist/src/workspace/types.gen.d.ts +0 -34
- package/dist/src/workspace/types.gen.d.ts.map +0 -1
- package/dist/src/workspace/workspace.spec.d.ts +0 -2
- package/dist/src/workspace/workspace.spec.d.ts.map +0 -1
- package/examples/node/basicReadWrite.js +0 -86
- package/examples/node/createChannels.js +0 -50
- package/examples/node/createRange.js +0 -67
- package/examples/node/package-lock.json +0 -133
- package/examples/node/package.json +0 -17
- package/examples/node/readLatest.js +0 -76
- package/examples/node/seriesAndFrames.js +0 -173
- package/examples/node/streamRead.js +0 -50
- package/examples/node/streamWrite.js +0 -87
- package/src/access/enforce.spec.ts +0 -188
- package/src/access/policy/access.spec.ts +0 -147
- package/src/access/role/role.spec.ts +0 -95
- package/src/actions/actions.spec.ts +0 -229
- package/src/arc/access.spec.ts +0 -149
- package/src/arc/arc.spec.ts +0 -44
- package/src/arc/lsp.spec.ts +0 -717
- package/src/auth/auth.spec.ts +0 -101
- package/src/channel/access.spec.ts +0 -116
- package/src/channel/batchRetriever.spec.ts +0 -115
- package/src/channel/channel.spec.ts +0 -352
- package/src/channel/payload.spec.ts +0 -117
- package/src/channel/retriever.ts +0 -252
- package/src/connection/checker.ts +0 -203
- package/src/connection/connection.spec.ts +0 -152
- package/src/connection.spec.ts +0 -145
- package/src/control/state.spec.ts +0 -22
- package/src/device/access.spec.ts +0 -159
- package/src/device/device.spec.ts +0 -461
- package/src/device/payload.spec.ts +0 -142
- package/src/errors.spec.ts +0 -71
- package/src/framer/adapter.spec.ts +0 -620
- package/src/framer/client.spec.ts +0 -180
- package/src/framer/codec.spec.ts +0 -383
- package/src/framer/deleter.spec.ts +0 -103
- package/src/framer/frame.spec.ts +0 -973
- package/src/framer/iterator.spec.ts +0 -169
- package/src/framer/reader.spec.ts +0 -865
- package/src/framer/streamer.spec.ts +0 -871
- package/src/framer/writer.spec.ts +0 -486
- package/src/group/access.spec.ts +0 -77
- package/src/group/group.spec.ts +0 -65
- package/src/label/access.spec.ts +0 -109
- package/src/label/label.spec.ts +0 -83
- package/src/lineplot/access.spec.ts +0 -134
- package/src/lineplot/lineplot.spec.ts +0 -120
- package/src/log/access.spec.ts +0 -132
- package/src/log/log.spec.ts +0 -106
- package/src/ontology/ontology.spec.ts +0 -521
- package/src/rack/access.spec.ts +0 -102
- package/src/rack/rack.spec.ts +0 -171
- package/src/ranger/access.spec.ts +0 -115
- package/src/ranger/alias/payload.spec.ts +0 -52
- package/src/ranger/ranger.spec.ts +0 -343
- package/src/schematic/access.spec.ts +0 -134
- package/src/schematic/actions.spec.ts +0 -699
- package/src/schematic/schematic.spec.ts +0 -340
- package/src/schematic/symbol/access.spec.ts +0 -172
- package/src/schematic/symbol/client.spec.ts +0 -160
- package/src/status/access.spec.ts +0 -129
- package/src/status/status.spec.ts +0 -448
- package/src/table/access.spec.ts +0 -128
- package/src/table/table.spec.ts +0 -651
- package/src/task/access.spec.ts +0 -131
- package/src/task/payload.spec.ts +0 -113
- package/src/task/task.spec.ts +0 -657
- package/src/user/access.spec.ts +0 -107
- package/src/user/user.spec.ts +0 -290
- package/src/util/retrieve.spec.ts +0 -49
- package/src/view/view.spec.ts +0 -165
- package/src/workspace/access.spec.ts +0 -108
- package/src/workspace/client.ts +0 -112
- package/src/workspace/types.gen.ts +0 -46
- package/src/workspace/workspace.spec.ts +0 -111
- package/tsconfig.json +0 -5
- package/tsconfig.vite.json +0 -4
- package/vite.config.ts +0 -29
- /package/dist/src/{workspace → project}/external.d.ts +0 -0
package/src/ranger/kv/client.ts
CHANGED
|
@@ -11,21 +11,25 @@ import { type UnaryClient } from "@synnaxlabs/freighter";
|
|
|
11
11
|
import { array } from "@synnaxlabs/x";
|
|
12
12
|
import { z } from "zod";
|
|
13
13
|
|
|
14
|
+
import { query } from "@/query";
|
|
15
|
+
import { createPairKey } from "@/ranger/kv/payload";
|
|
14
16
|
import { type Pair, pairZ } from "@/ranger/kv/types.gen";
|
|
15
17
|
import { type Key, keyZ } from "@/ranger/types.gen";
|
|
16
18
|
|
|
17
19
|
const getReqZ = z.object({ range: keyZ, keys: z.string().array() });
|
|
18
|
-
const getResZ = z.object({ pairs: array.
|
|
20
|
+
const getResZ = z.object({ pairs: pairZ.array().default(() => []) });
|
|
19
21
|
const setReqZ = z.object({ range: keyZ, pairs: pairZ.array() });
|
|
20
22
|
const deleteReqZ = z.object({ range: keyZ, keys: z.string().array() });
|
|
21
23
|
|
|
22
24
|
export class Client {
|
|
23
25
|
private readonly rangeKey: Key;
|
|
24
26
|
private readonly client: UnaryClient;
|
|
27
|
+
private readonly pairs: query.Table<string, Pair>;
|
|
25
28
|
|
|
26
|
-
constructor(rng: Key, client: UnaryClient) {
|
|
29
|
+
constructor(rng: Key, client: UnaryClient, pairs: query.Table<string, Pair>) {
|
|
27
30
|
this.rangeKey = rng;
|
|
28
31
|
this.client = client;
|
|
32
|
+
this.pairs = pairs;
|
|
29
33
|
}
|
|
30
34
|
|
|
31
35
|
async get(key: string): Promise<string>;
|
|
@@ -45,32 +49,59 @@ export class Client {
|
|
|
45
49
|
return await this.get([]);
|
|
46
50
|
}
|
|
47
51
|
|
|
48
|
-
async set(key: string, value: string): Promise<void>;
|
|
49
|
-
async set(kv: Record<string, string
|
|
50
|
-
async set(
|
|
52
|
+
async set(key: string, value: string, opts?: query.WriteOptions): Promise<void>;
|
|
53
|
+
async set(kv: Record<string, string>, opts?: query.WriteOptions): Promise<void>;
|
|
54
|
+
async set(
|
|
55
|
+
key: string | Record<string, string>,
|
|
56
|
+
valueOrOpts: string | query.WriteOptions = "",
|
|
57
|
+
opts: query.WriteOptions = {},
|
|
58
|
+
): Promise<void> {
|
|
51
59
|
let pairs: Pair[];
|
|
52
|
-
if (typeof key
|
|
53
|
-
|
|
60
|
+
if (typeof key === "string")
|
|
61
|
+
pairs = [{ range: this.rangeKey, key, value: valueOrOpts as string }];
|
|
62
|
+
else {
|
|
54
63
|
pairs = Object.entries(key).map(([k, v]) => ({
|
|
55
64
|
range: this.rangeKey,
|
|
56
65
|
key: k,
|
|
57
66
|
value: v,
|
|
58
67
|
}));
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
if (typeof valueOrOpts === "object") opts = valueOrOpts;
|
|
69
|
+
}
|
|
70
|
+
// Pair.key is the bare key; the table is keyed by createPairKey, so keyed-object
|
|
71
|
+
// set would mis-key entries.
|
|
72
|
+
const apply = () => pairs.map((p) => this.pairs.set(createPairKey(p), p));
|
|
73
|
+
await query.optimistic({
|
|
74
|
+
rollbacks: apply(),
|
|
75
|
+
onOptimistic: opts.onOptimistic,
|
|
76
|
+
commit: async () =>
|
|
77
|
+
await this.client.send(
|
|
78
|
+
"/range/kv/set",
|
|
79
|
+
{ range: this.rangeKey, pairs },
|
|
80
|
+
setReqZ,
|
|
81
|
+
z.unknown(),
|
|
82
|
+
),
|
|
83
|
+
});
|
|
84
|
+
apply();
|
|
66
85
|
}
|
|
67
86
|
|
|
68
|
-
async delete(key: string | string[]): Promise<void> {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
87
|
+
async delete(key: string | string[], opts: query.WriteOptions = {}): Promise<void> {
|
|
88
|
+
const keys = array.toArray(key);
|
|
89
|
+
const drop = () => [
|
|
90
|
+
this.pairs.delete(
|
|
91
|
+
keys.map((k) => createPairKey({ range: this.rangeKey, key: k })),
|
|
92
|
+
),
|
|
93
|
+
];
|
|
94
|
+
await query.optimistic({
|
|
95
|
+
rollbacks: drop(),
|
|
96
|
+
onOptimistic: opts.onOptimistic,
|
|
97
|
+
commit: async () =>
|
|
98
|
+
await this.client.send(
|
|
99
|
+
"/range/kv/delete",
|
|
100
|
+
{ range: this.rangeKey, keys },
|
|
101
|
+
deleteReqZ,
|
|
102
|
+
z.unknown(),
|
|
103
|
+
),
|
|
104
|
+
});
|
|
105
|
+
drop();
|
|
75
106
|
}
|
|
76
107
|
}
|
package/src/ranger/payload.ts
CHANGED
|
@@ -11,6 +11,9 @@ import { z } from "zod";
|
|
|
11
11
|
|
|
12
12
|
import { type Key } from "@/ranger/types.gen";
|
|
13
13
|
|
|
14
|
+
/** Zod schema for {@link Name}. A range name cannot be empty. */
|
|
14
15
|
export const nameZ = z.string().min(1);
|
|
16
|
+
/** A range's display name. */
|
|
15
17
|
export type Name = z.infer<typeof nameZ>;
|
|
18
|
+
/** One or many ranges, named by key or by name. */
|
|
16
19
|
export type Params = Key | Name | Key[] | Name[];
|
package/src/ranger/types.gen.ts
CHANGED
|
@@ -9,20 +9,20 @@
|
|
|
9
9
|
|
|
10
10
|
// Code generated by Oracle. DO NOT EDIT.
|
|
11
11
|
|
|
12
|
-
import { color,
|
|
12
|
+
import { color, telem, zod } from "@synnaxlabs/x";
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
|
|
15
|
+
import { label } from "@/label";
|
|
15
16
|
import { ontology } from "@/ontology";
|
|
16
17
|
|
|
17
18
|
export const keyZ = z.uuid();
|
|
18
19
|
export type Key = z.infer<typeof keyZ>;
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
|
-
*
|
|
22
|
-
* method for labeling and categorizing telemetry data within specific time
|
|
23
|
-
* periods.
|
|
22
|
+
* Payload is a user-defined region of time in the Synnax cluster. Ranges act as a
|
|
23
|
+
* method for labeling and categorizing telemetry data within specific time periods.
|
|
24
24
|
*/
|
|
25
|
-
export const
|
|
25
|
+
export const payloadZ = z.object({
|
|
26
26
|
/** key is the unique identifier for this range. */
|
|
27
27
|
key: keyZ,
|
|
28
28
|
/** name is a human-readable name for the range. */
|
|
@@ -31,35 +31,33 @@ export const baseZ = z.object({
|
|
|
31
31
|
* timeRange is the temporal extent of the range, defining its start and end
|
|
32
32
|
* timestamps.
|
|
33
33
|
*/
|
|
34
|
-
timeRange: telem.
|
|
34
|
+
timeRange: telem.timeRangeBoundedZ,
|
|
35
35
|
/**
|
|
36
|
-
* color is an optional display color for visual identification of the range
|
|
37
|
-
*
|
|
36
|
+
* color is an optional display color for visual identification of the range in user
|
|
37
|
+
* interfaces.
|
|
38
38
|
*/
|
|
39
39
|
color: color.colorZ.optional(),
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
labels: zod.nullToUndefined(label.labelZ.array()),
|
|
45
|
-
get parent(): z.ZodOptional<typeof apiRangeZ> {
|
|
46
|
-
return apiRangeZ.optional();
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
export interface APIRange extends z.infer<typeof apiRangeZ> {}
|
|
50
|
-
|
|
51
|
-
export const payloadZ = baseZ.omit({ timeRange: true }).extend({
|
|
40
|
+
/**
|
|
41
|
+
* labels contains optional labels attached to this range for categorization and
|
|
42
|
+
* filtering.
|
|
43
|
+
*/
|
|
52
44
|
labels: zod.nullToUndefined(label.labelZ.array()),
|
|
45
|
+
/**
|
|
46
|
+
* parent is an optional parent range for hierarchical organization. Ranges can be
|
|
47
|
+
* nested within other ranges.
|
|
48
|
+
*/
|
|
53
49
|
get parent(): z.ZodOptional<typeof payloadZ> {
|
|
54
50
|
return payloadZ.optional();
|
|
55
51
|
},
|
|
56
|
-
timeRange: telem.timeRangeBoundedZ,
|
|
57
52
|
});
|
|
58
53
|
export interface Payload extends z.infer<typeof payloadZ> {}
|
|
59
54
|
|
|
60
55
|
export const newZ = payloadZ
|
|
61
|
-
.omit({
|
|
62
|
-
.partial({ key: true })
|
|
56
|
+
.omit({ labels: true, parent: true })
|
|
57
|
+
.partial({ key: true })
|
|
58
|
+
.extend({
|
|
59
|
+
parent: payloadZ.pick({ key: true }).optional(),
|
|
60
|
+
});
|
|
63
61
|
export interface New extends z.input<typeof newZ> {}
|
|
64
62
|
|
|
65
63
|
export const ontologyID = ontology.createIDFactory<Key>("range");
|
package/src/ranger/writer.ts
CHANGED
|
@@ -10,23 +10,19 @@
|
|
|
10
10
|
import { type UnaryClient } from "@synnaxlabs/freighter";
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
|
|
13
|
-
import { ontology } from "@/ontology";
|
|
14
13
|
import { nameZ } from "@/ranger/payload";
|
|
15
14
|
import { keyZ, type New, newZ, type Payload, payloadZ } from "@/ranger/types.gen";
|
|
16
15
|
|
|
16
|
+
const createReqZ = z.object({ ranges: newZ.array() });
|
|
17
17
|
const createResZ = z.object({ ranges: payloadZ.array() });
|
|
18
18
|
|
|
19
|
-
const createReqZ = z.object({ parent: ontology.idZ.optional(), ranges: newZ.array() });
|
|
20
|
-
|
|
21
|
-
interface CreateRequest extends z.infer<typeof createReqZ> {}
|
|
22
|
-
export interface CreateOptions extends Pick<CreateRequest, "parent"> {}
|
|
23
|
-
|
|
24
19
|
const deleteReqZ = z.object({ keys: keyZ.array() });
|
|
25
20
|
const deleteResZ = z.object({});
|
|
26
21
|
|
|
27
22
|
const renameReqZ = z.object({ key: keyZ, name: nameZ });
|
|
28
23
|
const renameResZ = z.object({});
|
|
29
24
|
|
|
25
|
+
/** Creates, renames, and deletes ranges. Reach it through `client.ranges`. */
|
|
30
26
|
export class Writer {
|
|
31
27
|
client: UnaryClient;
|
|
32
28
|
|
|
@@ -38,10 +34,10 @@ export class Writer {
|
|
|
38
34
|
await this.client.send("/range/rename", { key, name }, renameReqZ, renameResZ);
|
|
39
35
|
}
|
|
40
36
|
|
|
41
|
-
async create(ranges: New[]
|
|
37
|
+
async create(ranges: New[]): Promise<Payload[]> {
|
|
42
38
|
const res = await this.client.send(
|
|
43
39
|
"/range/create",
|
|
44
|
-
{ ranges
|
|
40
|
+
{ ranges },
|
|
45
41
|
createReqZ,
|
|
46
42
|
createResZ,
|
|
47
43
|
);
|
|
@@ -13,7 +13,17 @@ import { type Draft } from "immer";
|
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
|
|
15
15
|
import { actions } from "@/actions";
|
|
16
|
-
import { edgeZ, keyZ, nodeZ, type Schematic } from "@/schematic/types.gen";
|
|
16
|
+
import { edgeZ, keyZ, nodeZ, type Schematic, schematicZ } from "@/schematic/types.gen";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Create replaces the document with the given created state. Emitted by the Core on
|
|
20
|
+
* create so remote caches ingest new documents; clients never dispatch it.
|
|
21
|
+
*/
|
|
22
|
+
export const createPayloadZ = z.object({
|
|
23
|
+
schematic: schematicZ,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export type CreatePayload = z.infer<typeof createPayloadZ>;
|
|
17
27
|
|
|
18
28
|
/** Rename renames the schematic. */
|
|
19
29
|
export const renamePayloadZ = z.object({
|
|
@@ -31,21 +41,9 @@ export const setNodePositionPayloadZ = z.object({
|
|
|
31
41
|
export type SetNodePositionPayload = z.infer<typeof setNodePositionPayloadZ>;
|
|
32
42
|
|
|
33
43
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*/
|
|
38
|
-
export const setNodeMeasuredPayloadZ = z.object({
|
|
39
|
-
key: z.string(),
|
|
40
|
-
measured: spatial.dimensionsZ,
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
export type SetNodeMeasuredPayload = z.infer<typeof setNodeMeasuredPayloadZ>;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* SetNode inserts the node if no node with the same key exists, otherwise
|
|
47
|
-
* replaces the existing node in place. If config is non-empty it is
|
|
48
|
-
* stored under the node's key in the schematic configs map.
|
|
44
|
+
* SetNode inserts the node if no node with the same key exists, otherwise replaces the
|
|
45
|
+
* existing node in place. If config is non-empty it is stored under the node's key in
|
|
46
|
+
* the schematic configs map.
|
|
49
47
|
*/
|
|
50
48
|
export const setNodePayloadZ = z.object({
|
|
51
49
|
node: nodeZ,
|
|
@@ -62,8 +60,8 @@ export const removeNodePayloadZ = z.object({
|
|
|
62
60
|
export type RemoveNodePayload = z.infer<typeof removeNodePayloadZ>;
|
|
63
61
|
|
|
64
62
|
/**
|
|
65
|
-
* AddEdge appends the edge to the schematic. No-op when an edge with the
|
|
66
|
-
*
|
|
63
|
+
* AddEdge appends the edge to the schematic. No-op when an edge with the same key
|
|
64
|
+
* already exists.
|
|
67
65
|
*/
|
|
68
66
|
export const addEdgePayloadZ = z.object({
|
|
69
67
|
edge: edgeZ,
|
|
@@ -79,30 +77,26 @@ export const removeEdgePayloadZ = z.object({
|
|
|
79
77
|
export type RemoveEdgePayload = z.infer<typeof removeEdgePayloadZ>;
|
|
80
78
|
|
|
81
79
|
/**
|
|
82
|
-
* SetConfig merges the given config fields into the existing config entry for
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* whose source node carries a color, the source color overrides
|
|
80
|
+
* SetConfig merges the given config fields into the existing config entry for the given
|
|
81
|
+
* node or edge key. Top-level fields present in the payload overwrite existing fields;
|
|
82
|
+
* fields absent from the payload are preserved. When no entry exists yet and the key
|
|
83
|
+
* matches an edge whose source node carries a color, the source color overrides
|
|
87
84
|
* whatever color (if any) was in the payload.
|
|
88
85
|
*/
|
|
89
86
|
export const setConfigPayloadZ = z.object({
|
|
90
87
|
key: z.string(),
|
|
91
|
-
config: caseconv.preserveCase(record.
|
|
88
|
+
config: caseconv.preserveCase(record.unknownZ().default(() => ({}))),
|
|
92
89
|
});
|
|
93
90
|
|
|
94
91
|
export type SetConfigPayload = z.infer<typeof setConfigPayloadZ>;
|
|
95
92
|
|
|
96
93
|
export const actionZ = z.discriminatedUnion("type", [
|
|
94
|
+
z.object({ type: z.literal("create"), create: createPayloadZ }),
|
|
97
95
|
z.object({ type: z.literal("rename"), rename: renamePayloadZ }),
|
|
98
96
|
z.object({
|
|
99
97
|
type: z.literal("set_node_position"),
|
|
100
98
|
setNodePosition: setNodePositionPayloadZ,
|
|
101
99
|
}),
|
|
102
|
-
z.object({
|
|
103
|
-
type: z.literal("set_node_measured"),
|
|
104
|
-
setNodeMeasured: setNodeMeasuredPayloadZ,
|
|
105
|
-
}),
|
|
106
100
|
z.object({ type: z.literal("set_node"), setNode: setNodePayloadZ }),
|
|
107
101
|
z.object({ type: z.literal("remove_node"), removeNode: removeNodePayloadZ }),
|
|
108
102
|
z.object({ type: z.literal("add_edge"), addEdge: addEdgePayloadZ }),
|
|
@@ -112,44 +106,62 @@ export const actionZ = z.discriminatedUnion("type", [
|
|
|
112
106
|
|
|
113
107
|
export type Action = z.infer<typeof actionZ>;
|
|
114
108
|
|
|
115
|
-
export const
|
|
116
|
-
type: "
|
|
117
|
-
|
|
109
|
+
export const create = (payload: z.input<typeof createPayloadZ>): Action => ({
|
|
110
|
+
type: "create",
|
|
111
|
+
create: zod.parse(createPayloadZ, payload, {
|
|
112
|
+
label: "schematic create action payload",
|
|
113
|
+
}),
|
|
118
114
|
});
|
|
119
115
|
|
|
120
|
-
export const
|
|
121
|
-
type: "
|
|
122
|
-
|
|
116
|
+
export const rename = (payload: z.input<typeof renamePayloadZ>): Action => ({
|
|
117
|
+
type: "rename",
|
|
118
|
+
rename: zod.parse(renamePayloadZ, payload, {
|
|
119
|
+
label: "schematic rename action payload",
|
|
120
|
+
}),
|
|
123
121
|
});
|
|
124
122
|
|
|
125
|
-
export const
|
|
126
|
-
|
|
127
|
-
|
|
123
|
+
export const setNodePosition = (
|
|
124
|
+
payload: z.input<typeof setNodePositionPayloadZ>,
|
|
125
|
+
): Action => ({
|
|
126
|
+
type: "set_node_position",
|
|
127
|
+
setNodePosition: zod.parse(setNodePositionPayloadZ, payload, {
|
|
128
|
+
label: "schematic set_node_position action payload",
|
|
129
|
+
}),
|
|
128
130
|
});
|
|
129
131
|
|
|
130
|
-
export const setNode = (payload:
|
|
132
|
+
export const setNode = (payload: z.input<typeof setNodePayloadZ>): Action => ({
|
|
131
133
|
type: "set_node",
|
|
132
|
-
setNode: payload,
|
|
134
|
+
setNode: zod.parse(setNodePayloadZ, payload, {
|
|
135
|
+
label: "schematic set_node action payload",
|
|
136
|
+
}),
|
|
133
137
|
});
|
|
134
138
|
|
|
135
|
-
export const removeNode = (payload:
|
|
139
|
+
export const removeNode = (payload: z.input<typeof removeNodePayloadZ>): Action => ({
|
|
136
140
|
type: "remove_node",
|
|
137
|
-
removeNode: payload,
|
|
141
|
+
removeNode: zod.parse(removeNodePayloadZ, payload, {
|
|
142
|
+
label: "schematic remove_node action payload",
|
|
143
|
+
}),
|
|
138
144
|
});
|
|
139
145
|
|
|
140
|
-
export const addEdge = (payload:
|
|
146
|
+
export const addEdge = (payload: z.input<typeof addEdgePayloadZ>): Action => ({
|
|
141
147
|
type: "add_edge",
|
|
142
|
-
addEdge: payload,
|
|
148
|
+
addEdge: zod.parse(addEdgePayloadZ, payload, {
|
|
149
|
+
label: "schematic add_edge action payload",
|
|
150
|
+
}),
|
|
143
151
|
});
|
|
144
152
|
|
|
145
|
-
export const removeEdge = (payload:
|
|
153
|
+
export const removeEdge = (payload: z.input<typeof removeEdgePayloadZ>): Action => ({
|
|
146
154
|
type: "remove_edge",
|
|
147
|
-
removeEdge: payload,
|
|
155
|
+
removeEdge: zod.parse(removeEdgePayloadZ, payload, {
|
|
156
|
+
label: "schematic remove_edge action payload",
|
|
157
|
+
}),
|
|
148
158
|
});
|
|
149
159
|
|
|
150
|
-
export const setConfig = (payload:
|
|
160
|
+
export const setConfig = (payload: z.input<typeof setConfigPayloadZ>): Action => ({
|
|
151
161
|
type: "set_config",
|
|
152
|
-
setConfig: payload,
|
|
162
|
+
setConfig: zod.parse(setConfigPayloadZ, payload, {
|
|
163
|
+
label: "schematic set_config action payload",
|
|
164
|
+
}),
|
|
153
165
|
});
|
|
154
166
|
|
|
155
167
|
export type HandlerResult = actions.HandlerResult<Action>;
|
|
@@ -157,15 +169,12 @@ export type HandlerResult = actions.HandlerResult<Action>;
|
|
|
157
169
|
export type ReduceAllResult = actions.ReduceAllResult<Schematic, Action>;
|
|
158
170
|
|
|
159
171
|
export interface Handlers {
|
|
172
|
+
create: (state: Draft<Schematic>, payload: CreatePayload) => HandlerResult;
|
|
160
173
|
rename: (state: Draft<Schematic>, payload: RenamePayload) => HandlerResult;
|
|
161
174
|
setNodePosition: (
|
|
162
175
|
state: Draft<Schematic>,
|
|
163
176
|
payload: SetNodePositionPayload,
|
|
164
177
|
) => HandlerResult;
|
|
165
|
-
setNodeMeasured: (
|
|
166
|
-
state: Draft<Schematic>,
|
|
167
|
-
payload: SetNodeMeasuredPayload,
|
|
168
|
-
) => HandlerResult;
|
|
169
178
|
setNode: (state: Draft<Schematic>, payload: SetNodePayload) => HandlerResult;
|
|
170
179
|
removeNode: (state: Draft<Schematic>, payload: RemoveNodePayload) => HandlerResult;
|
|
171
180
|
addEdge: (state: Draft<Schematic>, payload: AddEdgePayload) => HandlerResult;
|
|
@@ -176,12 +185,12 @@ export interface Handlers {
|
|
|
176
185
|
export const createReduceAll = (handlers: Handlers) =>
|
|
177
186
|
actions.createReduceAll<Schematic, Action>((state, action) => {
|
|
178
187
|
switch (action.type) {
|
|
188
|
+
case "create":
|
|
189
|
+
return handlers.create(state, action.create);
|
|
179
190
|
case "rename":
|
|
180
191
|
return handlers.rename(state, action.rename);
|
|
181
192
|
case "set_node_position":
|
|
182
193
|
return handlers.setNodePosition(state, action.setNodePosition);
|
|
183
|
-
case "set_node_measured":
|
|
184
|
-
return handlers.setNodeMeasured(state, action.setNodeMeasured);
|
|
185
194
|
case "set_node":
|
|
186
195
|
return handlers.setNode(state, action.setNode);
|
|
187
196
|
case "remove_node":
|
package/src/schematic/actions.ts
CHANGED
|
@@ -8,13 +8,12 @@
|
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
10
|
import { color, type record } from "@synnaxlabs/x";
|
|
11
|
-
import { current, type Draft, isDraft } from "immer";
|
|
12
11
|
|
|
12
|
+
import { actions } from "@/actions";
|
|
13
13
|
import {
|
|
14
14
|
type Action,
|
|
15
15
|
addEdge,
|
|
16
16
|
createReduceAll,
|
|
17
|
-
type HandlerResult,
|
|
18
17
|
type Handlers,
|
|
19
18
|
removeEdge,
|
|
20
19
|
removeNode,
|
|
@@ -24,16 +23,12 @@ import {
|
|
|
24
23
|
setNodePosition,
|
|
25
24
|
} from "@/schematic/actions.gen";
|
|
26
25
|
|
|
27
|
-
const NO_OP: HandlerResult = { inverse: [], targets: [] };
|
|
28
|
-
|
|
29
|
-
// Snapshots a value out of an Immer draft so the result is safe to embed in an
|
|
30
|
-
// action stored on the undo stack. When reduceAll applies multiple actions in
|
|
31
|
-
// one produce(), an earlier action's wholesale assignment (e.g. state.configs[k]
|
|
32
|
-
// = {...existing, ...payload.config}) leaves the slot as a plain object — the
|
|
33
|
-
// next action would crash if it called current() unconditionally.
|
|
34
|
-
const snapshot = <T>(v: T): T => (isDraft(v) ? current(v as Draft<T>) : v);
|
|
35
|
-
|
|
36
26
|
const handlers: Handlers = {
|
|
27
|
+
create: (state, payload) => {
|
|
28
|
+
Object.assign(state, payload.schematic);
|
|
29
|
+
return { inverse: [], targets: [payload.schematic.key] };
|
|
30
|
+
},
|
|
31
|
+
|
|
37
32
|
rename: (state, payload) => {
|
|
38
33
|
const oldName = state.name;
|
|
39
34
|
state.name = payload.name;
|
|
@@ -44,7 +39,7 @@ const handlers: Handlers = {
|
|
|
44
39
|
},
|
|
45
40
|
setNodePosition: (state, payload) => {
|
|
46
41
|
const node = state.nodes.find((n) => n.key === payload.key);
|
|
47
|
-
if (node == null) return
|
|
42
|
+
if (node == null) return actions.NO_OP_RESULT;
|
|
48
43
|
const oldPosition = { x: node.position.x, y: node.position.y };
|
|
49
44
|
node.position = payload.position;
|
|
50
45
|
return {
|
|
@@ -52,17 +47,6 @@ const handlers: Handlers = {
|
|
|
52
47
|
targets: [payload.key],
|
|
53
48
|
};
|
|
54
49
|
},
|
|
55
|
-
|
|
56
|
-
// set_node_measured carries layout-derived dimensions, not user intent.
|
|
57
|
-
// Both the inverse and the target list are empty so it neither contributes
|
|
58
|
-
// to the undo stack nor invalidates undoables targeting the same node when
|
|
59
|
-
// a remote session emits it.
|
|
60
|
-
setNodeMeasured: (state, payload) => {
|
|
61
|
-
const node = state.nodes.find((n) => n.key === payload.key);
|
|
62
|
-
if (node == null) return NO_OP;
|
|
63
|
-
node.measured = payload.measured;
|
|
64
|
-
return { inverse: [], targets: [] };
|
|
65
|
-
},
|
|
66
50
|
setNode: (state, payload) => {
|
|
67
51
|
const idx = state.nodes.findIndex((n) => n.key === payload.node.key);
|
|
68
52
|
if (idx === -1) {
|
|
@@ -73,9 +57,10 @@ const handlers: Handlers = {
|
|
|
73
57
|
targets: [payload.node.key],
|
|
74
58
|
};
|
|
75
59
|
}
|
|
76
|
-
const oldNode =
|
|
60
|
+
const oldNode = actions.snapshotDraft(state.nodes[idx]);
|
|
77
61
|
const oldConfigRaw = state.configs[payload.node.key];
|
|
78
|
-
const oldConfig =
|
|
62
|
+
const oldConfig =
|
|
63
|
+
oldConfigRaw != null ? actions.snapshotDraft(oldConfigRaw) : undefined;
|
|
79
64
|
state.nodes[idx] = payload.node;
|
|
80
65
|
if (payload.config != null) state.configs[payload.node.key] = payload.config;
|
|
81
66
|
return {
|
|
@@ -91,10 +76,11 @@ const handlers: Handlers = {
|
|
|
91
76
|
},
|
|
92
77
|
removeNode: (state, payload) => {
|
|
93
78
|
const idx = state.nodes.findIndex((n) => n.key === payload.key);
|
|
94
|
-
if (idx === -1) return
|
|
95
|
-
const oldNode =
|
|
79
|
+
if (idx === -1) return actions.NO_OP_RESULT;
|
|
80
|
+
const oldNode = actions.snapshotDraft(state.nodes[idx]);
|
|
96
81
|
const oldConfigRaw = state.configs[payload.key];
|
|
97
|
-
const oldConfig =
|
|
82
|
+
const oldConfig =
|
|
83
|
+
oldConfigRaw != null ? actions.snapshotDraft(oldConfigRaw) : undefined;
|
|
98
84
|
state.nodes.splice(idx, 1);
|
|
99
85
|
delete state.configs[payload.key];
|
|
100
86
|
return {
|
|
@@ -109,7 +95,8 @@ const handlers: Handlers = {
|
|
|
109
95
|
};
|
|
110
96
|
},
|
|
111
97
|
addEdge: (state, payload) => {
|
|
112
|
-
if (state.edges.some((e) => e.key === payload.edge.key))
|
|
98
|
+
if (state.edges.some((e) => e.key === payload.edge.key))
|
|
99
|
+
return actions.NO_OP_RESULT;
|
|
113
100
|
state.edges.push(payload.edge);
|
|
114
101
|
return {
|
|
115
102
|
inverse: [removeEdge({ key: payload.edge.key })],
|
|
@@ -119,24 +106,23 @@ const handlers: Handlers = {
|
|
|
119
106
|
|
|
120
107
|
removeEdge: (state, payload) => {
|
|
121
108
|
const idx = state.edges.findIndex((e) => e.key === payload.key);
|
|
122
|
-
if (idx === -1) return
|
|
123
|
-
const oldEdge =
|
|
109
|
+
if (idx === -1) return actions.NO_OP_RESULT;
|
|
110
|
+
const oldEdge = actions.snapshotDraft(state.edges[idx]);
|
|
124
111
|
state.edges.splice(idx, 1);
|
|
125
112
|
return {
|
|
126
113
|
inverse: [addEdge({ edge: oldEdge })],
|
|
127
114
|
targets: [payload.key],
|
|
128
115
|
};
|
|
129
116
|
},
|
|
130
|
-
// The inverse of SetConfig is imperfect for keys the action newly
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
// enabling wholesale replacement.
|
|
117
|
+
// The inverse of SetConfig is imperfect for keys the action newly introduces:
|
|
118
|
+
// SetConfig only merges, so it cannot remove keys that did not previously exist. The
|
|
119
|
+
// inverse here restores values for keys that DID exist before the merge; keys added
|
|
120
|
+
// by the action remain on undo as phantom fields. A future ReplaceConfig action can
|
|
121
|
+
// close the gap by enabling wholesale replacement.
|
|
136
122
|
setConfig: (state, payload) => {
|
|
137
123
|
const existingRaw = state.configs[payload.key];
|
|
138
124
|
if (existingRaw != null) {
|
|
139
|
-
const existing =
|
|
125
|
+
const existing = actions.snapshotDraft(existingRaw);
|
|
140
126
|
const restoreFields: record.Unknown = {};
|
|
141
127
|
for (const k of Object.keys(payload.config))
|
|
142
128
|
if (existing[k] !== undefined) restoreFields[k] = existing[k];
|
|
@@ -152,8 +138,7 @@ const handlers: Handlers = {
|
|
|
152
138
|
const edge = state.edges.find((e) => e.key === payload.key);
|
|
153
139
|
if (edge != null) {
|
|
154
140
|
const srcCfg = state.configs[edge.source.node] as
|
|
155
|
-
|
|
156
|
-
| undefined;
|
|
141
|
+
{ color?: color.Crude } | undefined;
|
|
157
142
|
if (srcCfg?.color != null && !color.isZero(srcCfg.color))
|
|
158
143
|
cfg = { ...cfg, color: srcCfg.color };
|
|
159
144
|
}
|
|
@@ -164,5 +149,22 @@ const handlers: Handlers = {
|
|
|
164
149
|
|
|
165
150
|
export const reduceAll = createReduceAll(handlers);
|
|
166
151
|
|
|
167
|
-
|
|
168
|
-
|
|
152
|
+
// createOf hands the dispatch controller the document carried by a create
|
|
153
|
+
// action so frames for never-cached documents ingest instead of drop.
|
|
154
|
+
export const createOf = (action: Action) =>
|
|
155
|
+
action.type === "create" ? action.create.schematic : undefined;
|
|
156
|
+
|
|
157
|
+
export const kindOf = (actions: Action[]): string => {
|
|
158
|
+
if (actions.length === 0) return "default";
|
|
159
|
+
// A drag dispatches a stream of `set_node_position` per frame, plus `set_config`
|
|
160
|
+
// companions synthesized by augmentWithEdgeSegments for any affected edges. Both
|
|
161
|
+
// shapes are part of one user gesture and must coalesce together; classify them all
|
|
162
|
+
// as "move" so the per-kind coalesce window collapses them into a single undoable.
|
|
163
|
+
const hasMove = actions.some((a) => a.type === "set_node_position");
|
|
164
|
+
const onlyMoveOrSegment = actions.every(
|
|
165
|
+
(a) => a.type === "set_node_position" || a.type === "set_config",
|
|
166
|
+
);
|
|
167
|
+
if (hasMove && onlyMoveOrSegment) return "move";
|
|
168
|
+
if (actions.length === 1) return actions[0].type;
|
|
169
|
+
return "transaction";
|
|
170
|
+
};
|