@synnaxlabs/client 0.56.1 → 0.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client-B08VDLSA.js +14463 -0
- package/dist/client-B08VDLSA.js.map +1 -0
- package/dist/client.js +1128 -14876
- package/dist/client.js.map +1 -0
- package/dist/src/access/client.d.ts +10 -1
- package/dist/src/access/client.d.ts.map +1 -1
- package/dist/src/access/enforce.d.ts.map +1 -1
- package/dist/src/access/external.d.ts +1 -0
- package/dist/src/access/external.d.ts.map +1 -1
- package/dist/src/access/granted.d.ts +39 -0
- package/dist/src/access/granted.d.ts.map +1 -0
- package/dist/src/access/policy/client.d.ts +136 -147
- package/dist/src/access/policy/client.d.ts.map +1 -1
- package/dist/src/access/policy/types.gen.d.ts +15 -68
- package/dist/src/access/policy/types.gen.d.ts.map +1 -1
- package/dist/src/access/role/client.d.ts +77 -58
- package/dist/src/access/role/client.d.ts.map +1 -1
- package/dist/src/access/role/types.gen.d.ts +8 -14
- package/dist/src/access/role/types.gen.d.ts.map +1 -1
- package/dist/src/actions/actions.d.ts +5 -6
- package/dist/src/actions/actions.d.ts.map +1 -1
- package/dist/src/actions/controller.d.ts +194 -0
- package/dist/src/actions/controller.d.ts.map +1 -0
- package/dist/src/actions/external.d.ts +1 -0
- package/dist/src/actions/external.d.ts.map +1 -1
- package/dist/src/arc/actions.d.ts +575 -0
- package/dist/src/arc/actions.d.ts.map +1 -0
- package/dist/src/arc/actions.gen.d.ts +1439 -0
- package/dist/src/arc/actions.gen.d.ts.map +1 -0
- package/dist/src/arc/client.d.ts +97 -13
- package/dist/src/arc/client.d.ts.map +1 -1
- package/dist/src/arc/compiler/types.gen.d.ts +3 -3
- package/dist/src/arc/compiler/types.gen.d.ts.map +1 -1
- package/dist/src/arc/external.d.ts +2 -0
- package/dist/src/arc/external.d.ts.map +1 -1
- package/dist/src/arc/graph/types.gen.d.ts +45 -597
- package/dist/src/arc/graph/types.gen.d.ts.map +1 -1
- package/dist/src/arc/ir/index.d.ts +1 -1
- package/dist/src/arc/ir/index.d.ts.map +1 -1
- package/dist/src/arc/ir/ir.d.ts +2 -0
- package/dist/src/arc/ir/ir.d.ts.map +1 -0
- package/dist/src/arc/ir/types.gen.d.ts +58 -2807
- package/dist/src/arc/ir/types.gen.d.ts.map +1 -1
- package/dist/src/arc/module/types.gen.d.ts +18 -1090
- package/dist/src/arc/module/types.gen.d.ts.map +1 -1
- package/dist/src/arc/program/types.gen.d.ts +18 -1090
- package/dist/src/arc/program/types.gen.d.ts.map +1 -1
- package/dist/src/arc/text/types.gen.d.ts +54 -1
- package/dist/src/arc/text/types.gen.d.ts.map +1 -1
- package/dist/src/arc/types/types.gen.d.ts +35 -153
- package/dist/src/arc/types/types.gen.d.ts.map +1 -1
- package/dist/src/arc/types.gen.d.ts +98 -2278
- package/dist/src/arc/types.gen.d.ts.map +1 -1
- package/dist/src/auth/auth.d.ts +14 -2
- package/dist/src/auth/auth.d.ts.map +1 -1
- package/dist/src/channel/client.d.ts +113 -75
- package/dist/src/channel/client.d.ts.map +1 -1
- package/dist/src/channel/external.d.ts +0 -1
- package/dist/src/channel/external.d.ts.map +1 -1
- package/dist/src/channel/payload.d.ts +65 -56
- package/dist/src/channel/payload.d.ts.map +1 -1
- package/dist/src/channel/types.gen.d.ts +26 -73
- package/dist/src/channel/types.gen.d.ts.map +1 -1
- package/dist/src/channel/writer.d.ts +1 -3
- package/dist/src/channel/writer.d.ts.map +1 -1
- package/dist/src/client.d.ts +55 -27
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/connection/client.d.ts +146 -0
- package/dist/src/connection/client.d.ts.map +1 -0
- package/dist/src/connection/external.d.ts +3 -0
- package/dist/src/connection/external.d.ts.map +1 -0
- package/dist/src/connection/index.d.ts +1 -1
- package/dist/src/connection/index.d.ts.map +1 -1
- package/dist/src/connection/status.d.ts +252 -0
- package/dist/src/connection/status.d.ts.map +1 -0
- package/dist/src/control/client.d.ts +31 -7
- package/dist/src/control/client.d.ts.map +1 -1
- package/dist/src/control/state.d.ts +47 -16
- package/dist/src/control/state.d.ts.map +1 -1
- package/dist/src/device/client.d.ts +59 -17
- package/dist/src/device/client.d.ts.map +1 -1
- package/dist/src/device/types.gen.d.ts +17 -67
- package/dist/src/device/types.gen.d.ts.map +1 -1
- package/dist/src/errors.d.ts +17 -20
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/ethercat/external.d.ts +2 -0
- package/dist/src/ethercat/external.d.ts.map +1 -0
- package/dist/src/ethercat/index.d.ts +2 -0
- package/dist/src/ethercat/index.d.ts.map +1 -0
- package/dist/src/ethercat/types.gen.d.ts +243 -0
- package/dist/src/ethercat/types.gen.d.ts.map +1 -0
- package/dist/src/framer/adapter.d.ts +8 -5
- package/dist/src/framer/adapter.d.ts.map +1 -1
- package/dist/src/framer/benchutil.d.ts +19 -0
- package/dist/src/framer/benchutil.d.ts.map +1 -0
- package/dist/src/framer/cache/cache.d.ts +38 -0
- package/dist/src/framer/cache/cache.d.ts.map +1 -0
- package/dist/src/framer/cache/dynamic.d.ts +71 -0
- package/dist/src/framer/cache/dynamic.d.ts.map +1 -0
- package/dist/src/framer/cache/reader.d.ts +43 -0
- package/dist/src/framer/cache/reader.d.ts.map +1 -0
- package/dist/src/framer/cache/static.d.ts +66 -0
- package/dist/src/framer/cache/static.d.ts.map +1 -0
- package/dist/src/framer/cache/streamer.d.ts +86 -0
- package/dist/src/framer/cache/streamer.d.ts.map +1 -0
- package/dist/src/framer/cache/transform.d.ts +18 -0
- package/dist/src/framer/cache/transform.d.ts.map +1 -0
- package/dist/src/framer/cache/unary.d.ts +37 -0
- package/dist/src/framer/cache/unary.d.ts.map +1 -0
- package/dist/src/framer/client.d.ts +35 -14
- package/dist/src/framer/client.d.ts.map +1 -1
- package/dist/src/framer/codec.d.ts.map +1 -1
- package/dist/src/framer/deleter.d.ts +3 -2
- package/dist/src/framer/deleter.d.ts.map +1 -1
- package/dist/src/framer/external.d.ts +6 -0
- package/dist/src/framer/external.d.ts.map +1 -1
- package/dist/src/framer/feed.d.ts +40 -0
- package/dist/src/framer/feed.d.ts.map +1 -0
- package/dist/src/framer/frame.d.ts +16 -20
- package/dist/src/framer/frame.d.ts.map +1 -1
- package/dist/src/framer/hardened.d.ts +70 -0
- package/dist/src/framer/hardened.d.ts.map +1 -0
- package/dist/src/framer/iterator.d.ts +36 -43
- package/dist/src/framer/iterator.d.ts.map +1 -1
- package/dist/src/framer/reader.d.ts +3 -2
- package/dist/src/framer/reader.d.ts.map +1 -1
- package/dist/src/framer/streamer.d.ts +132 -205
- package/dist/src/framer/streamer.d.ts.map +1 -1
- package/dist/src/framer/writer.d.ts +130 -161
- package/dist/src/framer/writer.d.ts.map +1 -1
- package/dist/src/group/client.d.ts +66 -9
- package/dist/src/group/client.d.ts.map +1 -1
- package/dist/src/group/types.gen.d.ts +2 -2
- package/dist/src/http/external.d.ts +2 -0
- package/dist/src/http/external.d.ts.map +1 -0
- package/dist/src/http/index.d.ts +2 -0
- package/dist/src/http/index.d.ts.map +1 -0
- package/dist/src/http/types.gen.d.ts +451 -0
- package/dist/src/http/types.gen.d.ts.map +1 -0
- package/dist/src/imex/client.d.ts +88 -0
- package/dist/src/imex/client.d.ts.map +1 -0
- package/dist/src/imex/index.d.ts +2 -0
- package/dist/src/imex/index.d.ts.map +1 -0
- package/dist/src/index.d.ts +18 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/label/client.d.ts +55 -36
- package/dist/src/label/client.d.ts.map +1 -1
- package/dist/src/label/external.d.ts +2 -0
- package/dist/src/label/external.d.ts.map +1 -1
- package/dist/src/label/payload.d.ts +4 -46
- package/dist/src/label/payload.d.ts.map +1 -1
- package/dist/src/label/store.d.ts +8 -0
- package/dist/src/label/store.d.ts.map +1 -0
- package/dist/src/label/types.gen.d.ts +45 -0
- package/dist/src/label/types.gen.d.ts.map +1 -0
- package/dist/src/labjack/external.d.ts +2 -0
- package/dist/src/labjack/external.d.ts.map +1 -0
- package/dist/src/labjack/index.d.ts +2 -0
- package/dist/src/labjack/index.d.ts.map +1 -0
- package/dist/src/labjack/types.gen.d.ts +442 -0
- package/dist/src/labjack/types.gen.d.ts.map +1 -0
- package/dist/src/lineplot/actions.d.ts +914 -0
- package/dist/src/lineplot/actions.d.ts.map +1 -0
- package/dist/src/lineplot/actions.gen.d.ts +4208 -0
- package/dist/src/lineplot/actions.gen.d.ts.map +1 -0
- package/dist/src/lineplot/client.d.ts +66 -16
- package/dist/src/lineplot/client.d.ts.map +1 -1
- package/dist/src/lineplot/external.d.ts +3 -0
- package/dist/src/lineplot/external.d.ts.map +1 -1
- package/dist/src/lineplot/line.d.ts +16 -0
- package/dist/src/lineplot/line.d.ts.map +1 -0
- package/dist/src/lineplot/types.gen.d.ts +837 -14
- package/dist/src/lineplot/types.gen.d.ts.map +1 -1
- package/dist/src/log/actions.d.ts +271 -0
- package/dist/src/log/actions.d.ts.map +1 -0
- package/dist/src/log/actions.gen.d.ts +1529 -0
- package/dist/src/log/actions.gen.d.ts.map +1 -0
- package/dist/src/log/client.d.ts +66 -16
- package/dist/src/log/client.d.ts.map +1 -1
- package/dist/src/log/external.d.ts +2 -0
- package/dist/src/log/external.d.ts.map +1 -1
- package/dist/src/log/types.gen.d.ts +139 -14
- package/dist/src/log/types.gen.d.ts.map +1 -1
- package/dist/src/modbus/external.d.ts +2 -0
- package/dist/src/modbus/external.d.ts.map +1 -0
- package/dist/src/modbus/index.d.ts +2 -0
- package/dist/src/modbus/index.d.ts.map +1 -0
- package/dist/src/modbus/types.gen.d.ts +280 -0
- package/dist/src/modbus/types.gen.d.ts.map +1 -0
- package/dist/src/ni/external.d.ts +2 -0
- package/dist/src/ni/external.d.ts.map +1 -0
- package/dist/src/ni/index.d.ts +2 -0
- package/dist/src/ni/index.d.ts.map +1 -0
- package/dist/src/ni/types.gen.d.ts +21029 -0
- package/dist/src/ni/types.gen.d.ts.map +1 -0
- package/dist/src/node/index.d.ts +2 -0
- package/dist/src/node/index.d.ts.map +1 -0
- package/dist/src/node/types.gen.d.ts +4 -0
- package/dist/src/node/types.gen.d.ts.map +1 -0
- package/dist/src/ontology/client.d.ts +314 -67
- package/dist/src/ontology/client.d.ts.map +1 -1
- package/dist/src/ontology/external.d.ts +1 -0
- package/dist/src/ontology/external.d.ts.map +1 -1
- package/dist/src/ontology/payload.d.ts +60 -18
- package/dist/src/ontology/payload.d.ts.map +1 -1
- package/dist/src/ontology/store.d.ts +32 -0
- package/dist/src/ontology/store.d.ts.map +1 -0
- package/dist/src/ontology/types.gen.d.ts +3 -2
- package/dist/src/ontology/types.gen.d.ts.map +1 -1
- package/dist/src/ontology/writer.d.ts +16 -10
- package/dist/src/ontology/writer.d.ts.map +1 -1
- package/dist/src/opcua/external.d.ts +2 -0
- package/dist/src/opcua/external.d.ts.map +1 -0
- package/dist/src/opcua/index.d.ts +2 -0
- package/dist/src/opcua/index.d.ts.map +1 -0
- package/dist/src/opcua/types.gen.d.ts +82 -0
- package/dist/src/opcua/types.gen.d.ts.map +1 -0
- package/dist/src/pagerduty/external.d.ts +2 -0
- package/dist/src/pagerduty/external.d.ts.map +1 -0
- package/dist/src/pagerduty/index.d.ts +2 -0
- package/dist/src/pagerduty/index.d.ts.map +1 -0
- package/dist/src/pagerduty/types.gen.d.ts +30 -0
- package/dist/src/pagerduty/types.gen.d.ts.map +1 -0
- package/dist/src/panel/actions.d.ts +273 -0
- package/dist/src/panel/actions.d.ts.map +1 -0
- package/dist/src/panel/actions.gen.d.ts +1255 -0
- package/dist/src/panel/actions.gen.d.ts.map +1 -0
- package/dist/src/panel/client.d.ts +148 -0
- package/dist/src/panel/client.d.ts.map +1 -0
- package/dist/src/panel/external.d.ts +6 -0
- package/dist/src/panel/external.d.ts.map +1 -0
- package/dist/src/panel/index.d.ts +2 -0
- package/dist/src/panel/index.d.ts.map +1 -0
- package/dist/src/panel/tree.d.ts +50 -0
- package/dist/src/panel/tree.d.ts.map +1 -0
- package/dist/src/panel/types.gen.d.ts +370 -0
- package/dist/src/panel/types.gen.d.ts.map +1 -0
- package/dist/src/project/client.d.ts +89 -0
- package/dist/src/project/client.d.ts.map +1 -0
- package/dist/src/project/external.d.ts.map +1 -0
- package/dist/src/project/index.d.ts +2 -0
- package/dist/src/project/index.d.ts.map +1 -0
- package/dist/src/project/types.gen.d.ts +27 -0
- package/dist/src/project/types.gen.d.ts.map +1 -0
- package/dist/src/query/cache.d.ts +132 -0
- package/dist/src/query/cache.d.ts.map +1 -0
- package/dist/src/query/deleted.d.ts +20 -0
- package/dist/src/query/deleted.d.ts.map +1 -0
- package/dist/src/query/derived.d.ts +33 -0
- package/dist/src/query/derived.d.ts.map +1 -0
- package/dist/src/query/external.d.ts +10 -0
- package/dist/src/query/external.d.ts.map +1 -0
- package/dist/src/query/index.d.ts +2 -0
- package/dist/src/query/index.d.ts.map +1 -0
- package/dist/src/query/query.d.ts +235 -0
- package/dist/src/query/query.d.ts.map +1 -0
- package/dist/src/query/retriever.d.ts +135 -0
- package/dist/src/query/retriever.d.ts.map +1 -0
- package/dist/src/query/streamer.d.ts +67 -0
- package/dist/src/query/streamer.d.ts.map +1 -0
- package/dist/src/query/table.d.ts +219 -0
- package/dist/src/query/table.d.ts.map +1 -0
- package/dist/src/query/types.d.ts +35 -0
- package/dist/src/query/types.d.ts.map +1 -0
- package/dist/src/query/write.d.ts +21 -0
- package/dist/src/query/write.d.ts.map +1 -0
- package/dist/src/rack/client.d.ts +58 -20
- package/dist/src/rack/client.d.ts.map +1 -1
- package/dist/src/rack/types.gen.d.ts +11 -12
- package/dist/src/rack/types.gen.d.ts.map +1 -1
- package/dist/src/range/alias/types.gen.d.ts +2 -3
- package/dist/src/range/alias/types.gen.d.ts.map +1 -1
- package/dist/src/ranger/client.d.ts +138 -27
- package/dist/src/ranger/client.d.ts.map +1 -1
- package/dist/src/ranger/kv/client.d.ts +7 -4
- package/dist/src/ranger/kv/client.d.ts.map +1 -1
- package/dist/src/ranger/payload.d.ts +3 -0
- package/dist/src/ranger/payload.d.ts.map +1 -1
- package/dist/src/ranger/types.gen.d.ts +45 -101
- package/dist/src/ranger/types.gen.d.ts.map +1 -1
- package/dist/src/ranger/writer.d.ts +2 -74
- package/dist/src/ranger/writer.d.ts.map +1 -1
- package/dist/src/schematic/actions.d.ts +90 -33
- package/dist/src/schematic/actions.d.ts.map +1 -1
- package/dist/src/schematic/actions.gen.d.ts +207 -114
- package/dist/src/schematic/actions.gen.d.ts.map +1 -1
- package/dist/src/schematic/client.d.ts +70 -68
- package/dist/src/schematic/client.d.ts.map +1 -1
- package/dist/src/schematic/symbol/client.d.ts +133 -27
- package/dist/src/schematic/symbol/client.d.ts.map +1 -1
- package/dist/src/schematic/symbol/types.gen.d.ts +258 -153
- package/dist/src/schematic/symbol/types.gen.d.ts.map +1 -1
- package/dist/src/schematic/types.gen.d.ts +17 -96
- package/dist/src/schematic/types.gen.d.ts.map +1 -1
- package/dist/src/status/client.d.ts +69 -14
- package/dist/src/status/client.d.ts.map +1 -1
- package/dist/src/status/external.d.ts +2 -0
- package/dist/src/status/external.d.ts.map +1 -1
- package/dist/src/status/payload.d.ts +2 -36
- package/dist/src/status/payload.d.ts.map +1 -1
- package/dist/src/status/status.d.ts +65 -0
- package/dist/src/status/status.d.ts.map +1 -0
- package/dist/src/status/types.gen.d.ts +58 -0
- package/dist/src/status/types.gen.d.ts.map +1 -0
- package/dist/src/table/actions.d.ts +72 -13
- package/dist/src/table/actions.d.ts.map +1 -1
- package/dist/src/table/actions.gen.d.ts +221 -137
- package/dist/src/table/actions.gen.d.ts.map +1 -1
- package/dist/src/table/client.d.ts +64 -40
- package/dist/src/table/client.d.ts.map +1 -1
- package/dist/src/table/types.gen.d.ts +20 -55
- package/dist/src/table/types.gen.d.ts.map +1 -1
- package/dist/src/task/client.d.ts +149 -28
- package/dist/src/task/client.d.ts.map +1 -1
- package/dist/src/task/types.gen.d.ts +71 -89
- package/dist/src/task/types.gen.d.ts.map +1 -1
- package/dist/src/testutil/access.d.ts +27 -1
- package/dist/src/testutil/access.d.ts.map +1 -1
- package/dist/src/testutil/channels.d.ts +2 -0
- package/dist/src/testutil/channels.d.ts.map +1 -1
- package/dist/src/testutil/client.d.ts +5 -0
- package/dist/src/testutil/client.d.ts.map +1 -1
- package/dist/src/testutil/connection.d.ts +10 -0
- package/dist/src/testutil/connection.d.ts.map +1 -0
- package/dist/src/testutil/index.d.ts +9 -0
- package/dist/src/testutil/index.d.ts.map +1 -0
- package/dist/src/testutil/panels.d.ts +8 -0
- package/dist/src/testutil/panels.d.ts.map +1 -0
- package/dist/src/testutil/proxy.d.ts +29 -0
- package/dist/src/testutil/proxy.d.ts.map +1 -0
- package/dist/src/testutil/query.d.ts +7 -0
- package/dist/src/testutil/query.d.ts.map +1 -0
- package/dist/src/testutil/telem.d.ts +4 -0
- package/dist/src/testutil/telem.d.ts.map +1 -1
- package/dist/src/transport.d.ts +10 -4
- package/dist/src/transport.d.ts.map +1 -1
- package/dist/src/user/client.d.ts +29 -28
- package/dist/src/user/client.d.ts.map +1 -1
- package/dist/src/user/external.d.ts +1 -1
- package/dist/src/user/external.d.ts.map +1 -1
- package/dist/src/user/types.gen.d.ts +4 -4
- package/dist/src/util/retrieve.d.ts +2 -2
- package/dist/src/util/retrieve.d.ts.map +1 -1
- package/dist/src/util/telem.d.ts.map +1 -1
- package/dist/src/view/client.d.ts +30 -14
- package/dist/src/view/client.d.ts.map +1 -1
- package/dist/src/view/types.gen.d.ts +7 -15
- package/dist/src/view/types.gen.d.ts.map +1 -1
- package/dist/testutil.js +189 -0
- package/dist/testutil.js.map +1 -0
- package/package.json +40 -17
- package/src/access/client.ts +14 -3
- package/src/access/enforce.ts +0 -3
- package/src/access/external.ts +1 -0
- package/src/access/granted.ts +114 -0
- package/src/access/policy/client.ts +135 -43
- package/src/access/policy/types.gen.ts +9 -11
- package/src/access/role/client.ts +160 -38
- package/src/access/role/types.gen.ts +8 -12
- package/src/actions/actions.ts +5 -6
- package/src/actions/controller.ts +626 -0
- package/src/actions/external.ts +11 -0
- package/src/arc/actions.gen.ts +313 -0
- package/src/arc/actions.ts +192 -0
- package/src/arc/client.ts +424 -41
- package/src/arc/compiler/types.gen.ts +5 -6
- package/src/arc/external.ts +2 -0
- package/src/arc/graph/types.gen.ts +24 -22
- package/src/arc/ir/index.ts +1 -1
- package/{eslint.config.ts → src/arc/ir/ir.ts} +1 -4
- package/src/arc/ir/types.gen.ts +42 -41
- package/src/arc/text/types.gen.ts +21 -2
- package/src/arc/types/types.gen.ts +40 -32
- package/src/arc/types.gen.ts +31 -29
- package/src/auth/auth.ts +40 -8
- package/src/channel/client.ts +529 -132
- package/src/channel/external.ts +0 -1
- package/src/channel/payload.ts +30 -3
- package/src/channel/types.gen.ts +37 -48
- package/src/channel/writer.ts +2 -11
- package/src/client.ts +215 -91
- package/src/connection/client.ts +495 -0
- package/src/connection/external.ts +34 -0
- package/src/connection/index.ts +1 -1
- package/src/connection/status.ts +442 -0
- package/src/control/client.ts +84 -12
- package/src/control/state.ts +17 -36
- package/src/device/client.ts +293 -41
- package/src/device/types.gen.ts +15 -26
- package/src/errors.ts +45 -22
- package/src/{workspace → ethercat}/external.ts +1 -2
- package/src/{workspace → ethercat}/index.ts +1 -1
- package/src/ethercat/types.gen.ts +151 -0
- package/src/framer/adapter.ts +60 -37
- package/src/framer/benchutil.ts +67 -0
- package/src/framer/cache/cache.ts +115 -0
- package/src/framer/cache/dynamic.ts +279 -0
- package/src/framer/cache/reader.ts +160 -0
- package/src/framer/cache/static.ts +215 -0
- package/src/framer/cache/streamer.ts +391 -0
- package/src/framer/cache/transform.ts +31 -0
- package/src/framer/cache/unary.ts +104 -0
- package/src/framer/client.ts +71 -43
- package/src/framer/codec.ts +55 -18
- package/src/framer/deleter.ts +4 -6
- package/src/framer/external.ts +10 -0
- package/src/framer/feed.ts +108 -0
- package/src/framer/frame.ts +13 -23
- package/src/framer/hardened.ts +283 -0
- package/src/framer/iterator.ts +31 -42
- package/src/framer/reader.ts +11 -11
- package/src/framer/streamer.ts +18 -178
- package/src/framer/writer.ts +39 -59
- package/src/group/client.ts +158 -23
- package/src/http/external.ts +10 -0
- package/src/{cluster → http}/index.ts +1 -1
- package/src/http/types.gen.ts +245 -0
- package/src/imex/client.ts +125 -0
- package/src/imex/index.ts +10 -0
- package/src/index.ts +18 -6
- package/src/label/client.ts +193 -54
- package/src/label/external.ts +2 -0
- package/src/label/payload.ts +4 -9
- package/src/label/store.ts +28 -0
- package/src/label/types.gen.ts +31 -0
- package/src/labjack/external.ts +10 -0
- package/src/labjack/index.ts +10 -0
- package/src/labjack/types.gen.ts +251 -0
- package/src/lineplot/actions.gen.ts +880 -0
- package/src/lineplot/actions.ts +535 -0
- package/src/lineplot/client.ts +224 -52
- package/src/lineplot/external.ts +3 -0
- package/src/lineplot/line.ts +80 -0
- package/src/lineplot/types.gen.ts +225 -12
- package/src/log/actions.gen.ts +474 -0
- package/src/log/actions.ts +242 -0
- package/src/log/client.ts +223 -52
- package/src/log/external.ts +2 -0
- package/src/log/types.gen.ts +45 -14
- package/src/modbus/external.ts +10 -0
- package/src/modbus/index.ts +10 -0
- package/src/modbus/types.gen.ts +185 -0
- package/src/ni/external.ts +10 -0
- package/src/ni/index.ts +10 -0
- package/src/ni/types.gen.ts +1632 -0
- package/src/node/index.ts +10 -0
- package/src/{cluster → node}/types.gen.ts +2 -2
- package/src/ontology/client.ts +408 -99
- package/src/ontology/external.ts +7 -0
- package/src/ontology/payload.ts +48 -7
- package/src/ontology/store.ts +83 -0
- package/src/ontology/types.gen.ts +2 -1
- package/src/ontology/writer.ts +1 -0
- package/src/opcua/external.ts +10 -0
- package/src/opcua/index.ts +10 -0
- package/src/opcua/types.gen.ts +65 -0
- package/src/pagerduty/external.ts +10 -0
- package/src/pagerduty/index.ts +10 -0
- package/src/pagerduty/types.gen.ts +41 -0
- package/src/panel/actions.gen.ts +267 -0
- package/src/panel/actions.ts +357 -0
- package/src/panel/client.ts +327 -0
- package/src/panel/external.ts +14 -0
- package/src/panel/index.ts +10 -0
- package/src/panel/tree.ts +163 -0
- package/src/panel/types.gen.ts +164 -0
- package/src/project/client.ts +273 -0
- package/src/project/external.ts +11 -0
- package/src/project/index.ts +10 -0
- package/src/project/types.gen.ts +40 -0
- package/src/query/cache.ts +326 -0
- package/src/query/deleted.ts +38 -0
- package/src/query/derived.ts +101 -0
- package/src/query/external.ts +51 -0
- package/src/query/index.ts +10 -0
- package/src/query/query.ts +865 -0
- package/src/query/retriever.ts +308 -0
- package/src/query/streamer.ts +207 -0
- package/src/query/table.ts +625 -0
- package/src/query/types.ts +54 -0
- package/src/query/write.ts +42 -0
- package/src/rack/client.ts +233 -45
- package/src/rack/types.gen.ts +15 -16
- package/src/range/alias/types.gen.ts +2 -3
- package/src/ranger/client.ts +581 -70
- package/src/ranger/kv/client.ts +52 -21
- package/src/ranger/payload.ts +3 -0
- package/src/ranger/types.gen.ts +21 -23
- package/src/ranger/writer.ts +4 -8
- package/src/schematic/actions.gen.ts +62 -53
- package/src/schematic/actions.ts +44 -42
- package/src/schematic/client.ts +226 -70
- package/src/schematic/symbol/client.ts +277 -48
- package/src/schematic/symbol/types.gen.ts +22 -34
- package/src/schematic/types.gen.ts +22 -29
- package/src/status/client.ts +321 -44
- package/src/status/external.ts +2 -0
- package/src/status/payload.ts +1 -23
- package/src/status/status.ts +241 -0
- package/src/status/types.gen.ts +108 -0
- package/src/table/actions.gen.ts +96 -63
- package/src/table/actions.ts +44 -19
- package/src/table/client.ts +220 -56
- package/src/table/types.gen.ts +24 -31
- package/src/task/client.ts +580 -101
- package/src/task/types.gen.ts +68 -75
- package/src/testutil/access.ts +102 -6
- package/src/testutil/channels.ts +29 -0
- package/src/testutil/client.ts +27 -2
- package/src/testutil/connection.ts +47 -0
- package/src/testutil/index.ts +17 -0
- package/src/testutil/panels.ts +26 -0
- package/src/testutil/proxy.ts +106 -0
- package/src/testutil/query.ts +28 -0
- package/src/testutil/telem.ts +17 -1
- package/src/transport.ts +18 -7
- package/src/user/client.ts +165 -64
- package/src/user/external.ts +1 -1
- package/src/user/types.gen.ts +5 -5
- package/src/util/retrieve.ts +4 -4
- package/src/util/telem.ts +0 -1
- package/src/view/client.ts +120 -37
- package/src/view/types.gen.ts +8 -11
- package/.turbo/turbo-build.log +0 -20
- package/.vscode/settings.json +0 -3
- package/CONTRIBUTING.md +0 -47
- package/dist/client.cjs +0 -118
- package/dist/eslint.config.d.ts +0 -4
- package/dist/eslint.config.d.ts.map +0 -1
- package/dist/src/access/enforce.spec.d.ts +0 -2
- package/dist/src/access/enforce.spec.d.ts.map +0 -1
- package/dist/src/access/policy/access.spec.d.ts +0 -2
- package/dist/src/access/policy/access.spec.d.ts.map +0 -1
- package/dist/src/access/role/role.spec.d.ts +0 -2
- package/dist/src/access/role/role.spec.d.ts.map +0 -1
- package/dist/src/actions/actions.spec.d.ts +0 -2
- package/dist/src/actions/actions.spec.d.ts.map +0 -1
- package/dist/src/arc/access.spec.d.ts +0 -2
- package/dist/src/arc/access.spec.d.ts.map +0 -1
- package/dist/src/arc/arc.spec.d.ts +0 -2
- package/dist/src/arc/arc.spec.d.ts.map +0 -1
- package/dist/src/arc/lsp.spec.d.ts +0 -2
- package/dist/src/arc/lsp.spec.d.ts.map +0 -1
- package/dist/src/auth/auth.spec.d.ts +0 -2
- package/dist/src/auth/auth.spec.d.ts.map +0 -1
- package/dist/src/channel/access.spec.d.ts +0 -2
- package/dist/src/channel/access.spec.d.ts.map +0 -1
- package/dist/src/channel/batchRetriever.spec.d.ts +0 -2
- package/dist/src/channel/batchRetriever.spec.d.ts.map +0 -1
- package/dist/src/channel/channel.spec.d.ts +0 -2
- package/dist/src/channel/channel.spec.d.ts.map +0 -1
- package/dist/src/channel/payload.spec.d.ts +0 -2
- package/dist/src/channel/payload.spec.d.ts.map +0 -1
- package/dist/src/channel/retriever.d.ts +0 -64
- package/dist/src/channel/retriever.d.ts.map +0 -1
- package/dist/src/cluster/index.d.ts +0 -2
- package/dist/src/cluster/index.d.ts.map +0 -1
- package/dist/src/cluster/types.gen.d.ts +0 -4
- package/dist/src/cluster/types.gen.d.ts.map +0 -1
- package/dist/src/connection/checker.d.ts +0 -86
- package/dist/src/connection/checker.d.ts.map +0 -1
- package/dist/src/connection/connection.spec.d.ts +0 -2
- package/dist/src/connection/connection.spec.d.ts.map +0 -1
- package/dist/src/connection.spec.d.ts +0 -2
- package/dist/src/connection.spec.d.ts.map +0 -1
- package/dist/src/control/state.spec.d.ts +0 -2
- package/dist/src/control/state.spec.d.ts.map +0 -1
- package/dist/src/device/access.spec.d.ts +0 -2
- package/dist/src/device/access.spec.d.ts.map +0 -1
- package/dist/src/device/device.spec.d.ts +0 -2
- package/dist/src/device/device.spec.d.ts.map +0 -1
- package/dist/src/device/payload.spec.d.ts +0 -2
- package/dist/src/device/payload.spec.d.ts.map +0 -1
- package/dist/src/errors.spec.d.ts +0 -2
- package/dist/src/errors.spec.d.ts.map +0 -1
- package/dist/src/framer/adapter.spec.d.ts +0 -2
- package/dist/src/framer/adapter.spec.d.ts.map +0 -1
- package/dist/src/framer/client.spec.d.ts +0 -2
- package/dist/src/framer/client.spec.d.ts.map +0 -1
- package/dist/src/framer/codec.spec.d.ts +0 -2
- package/dist/src/framer/codec.spec.d.ts.map +0 -1
- package/dist/src/framer/deleter.spec.d.ts +0 -2
- package/dist/src/framer/deleter.spec.d.ts.map +0 -1
- package/dist/src/framer/frame.spec.d.ts +0 -2
- package/dist/src/framer/frame.spec.d.ts.map +0 -1
- package/dist/src/framer/iterator.spec.d.ts +0 -2
- package/dist/src/framer/iterator.spec.d.ts.map +0 -1
- package/dist/src/framer/reader.spec.d.ts +0 -2
- package/dist/src/framer/reader.spec.d.ts.map +0 -1
- package/dist/src/framer/streamer.spec.d.ts +0 -2
- package/dist/src/framer/streamer.spec.d.ts.map +0 -1
- package/dist/src/framer/writer.spec.d.ts +0 -2
- package/dist/src/framer/writer.spec.d.ts.map +0 -1
- package/dist/src/group/access.spec.d.ts +0 -2
- package/dist/src/group/access.spec.d.ts.map +0 -1
- package/dist/src/group/group.spec.d.ts +0 -2
- package/dist/src/group/group.spec.d.ts.map +0 -1
- package/dist/src/label/access.spec.d.ts +0 -2
- package/dist/src/label/access.spec.d.ts.map +0 -1
- package/dist/src/label/label.spec.d.ts +0 -2
- package/dist/src/label/label.spec.d.ts.map +0 -1
- package/dist/src/lineplot/access.spec.d.ts +0 -2
- package/dist/src/lineplot/access.spec.d.ts.map +0 -1
- package/dist/src/lineplot/lineplot.spec.d.ts +0 -2
- package/dist/src/lineplot/lineplot.spec.d.ts.map +0 -1
- package/dist/src/log/access.spec.d.ts +0 -2
- package/dist/src/log/access.spec.d.ts.map +0 -1
- package/dist/src/log/log.spec.d.ts +0 -2
- package/dist/src/log/log.spec.d.ts.map +0 -1
- package/dist/src/ontology/ontology.spec.d.ts +0 -2
- package/dist/src/ontology/ontology.spec.d.ts.map +0 -1
- package/dist/src/rack/access.spec.d.ts +0 -2
- package/dist/src/rack/access.spec.d.ts.map +0 -1
- package/dist/src/rack/rack.spec.d.ts +0 -2
- package/dist/src/rack/rack.spec.d.ts.map +0 -1
- package/dist/src/ranger/access.spec.d.ts +0 -2
- package/dist/src/ranger/access.spec.d.ts.map +0 -1
- package/dist/src/ranger/alias/payload.spec.d.ts +0 -2
- package/dist/src/ranger/alias/payload.spec.d.ts.map +0 -1
- package/dist/src/ranger/ranger.spec.d.ts +0 -2
- package/dist/src/ranger/ranger.spec.d.ts.map +0 -1
- package/dist/src/schematic/access.spec.d.ts +0 -2
- package/dist/src/schematic/access.spec.d.ts.map +0 -1
- package/dist/src/schematic/actions.spec.d.ts +0 -2
- package/dist/src/schematic/actions.spec.d.ts.map +0 -1
- package/dist/src/schematic/schematic.spec.d.ts +0 -2
- package/dist/src/schematic/schematic.spec.d.ts.map +0 -1
- package/dist/src/schematic/symbol/access.spec.d.ts +0 -2
- package/dist/src/schematic/symbol/access.spec.d.ts.map +0 -1
- package/dist/src/schematic/symbol/client.spec.d.ts +0 -2
- package/dist/src/schematic/symbol/client.spec.d.ts.map +0 -1
- package/dist/src/status/access.spec.d.ts +0 -2
- package/dist/src/status/access.spec.d.ts.map +0 -1
- package/dist/src/status/status.spec.d.ts +0 -2
- package/dist/src/status/status.spec.d.ts.map +0 -1
- package/dist/src/table/access.spec.d.ts +0 -2
- package/dist/src/table/access.spec.d.ts.map +0 -1
- package/dist/src/table/table.spec.d.ts +0 -2
- package/dist/src/table/table.spec.d.ts.map +0 -1
- package/dist/src/task/access.spec.d.ts +0 -2
- package/dist/src/task/access.spec.d.ts.map +0 -1
- package/dist/src/task/payload.spec.d.ts +0 -2
- package/dist/src/task/payload.spec.d.ts.map +0 -1
- package/dist/src/task/task.spec.d.ts +0 -2
- package/dist/src/task/task.spec.d.ts.map +0 -1
- package/dist/src/user/access.spec.d.ts +0 -2
- package/dist/src/user/access.spec.d.ts.map +0 -1
- package/dist/src/user/user.spec.d.ts +0 -2
- package/dist/src/user/user.spec.d.ts.map +0 -1
- package/dist/src/util/retrieve.spec.d.ts +0 -2
- package/dist/src/util/retrieve.spec.d.ts.map +0 -1
- package/dist/src/view/view.spec.d.ts +0 -2
- package/dist/src/view/view.spec.d.ts.map +0 -1
- package/dist/src/workspace/access.spec.d.ts +0 -2
- package/dist/src/workspace/access.spec.d.ts.map +0 -1
- package/dist/src/workspace/client.d.ts +0 -36
- package/dist/src/workspace/client.d.ts.map +0 -1
- package/dist/src/workspace/external.d.ts.map +0 -1
- package/dist/src/workspace/index.d.ts +0 -2
- package/dist/src/workspace/index.d.ts.map +0 -1
- package/dist/src/workspace/types.gen.d.ts +0 -34
- package/dist/src/workspace/types.gen.d.ts.map +0 -1
- package/dist/src/workspace/workspace.spec.d.ts +0 -2
- package/dist/src/workspace/workspace.spec.d.ts.map +0 -1
- package/examples/node/basicReadWrite.js +0 -86
- package/examples/node/createChannels.js +0 -50
- package/examples/node/createRange.js +0 -67
- package/examples/node/package-lock.json +0 -133
- package/examples/node/package.json +0 -17
- package/examples/node/readLatest.js +0 -76
- package/examples/node/seriesAndFrames.js +0 -173
- package/examples/node/streamRead.js +0 -50
- package/examples/node/streamWrite.js +0 -87
- package/src/access/enforce.spec.ts +0 -188
- package/src/access/policy/access.spec.ts +0 -147
- package/src/access/role/role.spec.ts +0 -95
- package/src/actions/actions.spec.ts +0 -229
- package/src/arc/access.spec.ts +0 -149
- package/src/arc/arc.spec.ts +0 -44
- package/src/arc/lsp.spec.ts +0 -717
- package/src/auth/auth.spec.ts +0 -101
- package/src/channel/access.spec.ts +0 -116
- package/src/channel/batchRetriever.spec.ts +0 -115
- package/src/channel/channel.spec.ts +0 -352
- package/src/channel/payload.spec.ts +0 -117
- package/src/channel/retriever.ts +0 -252
- package/src/connection/checker.ts +0 -203
- package/src/connection/connection.spec.ts +0 -152
- package/src/connection.spec.ts +0 -145
- package/src/control/state.spec.ts +0 -22
- package/src/device/access.spec.ts +0 -159
- package/src/device/device.spec.ts +0 -461
- package/src/device/payload.spec.ts +0 -142
- package/src/errors.spec.ts +0 -71
- package/src/framer/adapter.spec.ts +0 -620
- package/src/framer/client.spec.ts +0 -180
- package/src/framer/codec.spec.ts +0 -383
- package/src/framer/deleter.spec.ts +0 -103
- package/src/framer/frame.spec.ts +0 -973
- package/src/framer/iterator.spec.ts +0 -169
- package/src/framer/reader.spec.ts +0 -865
- package/src/framer/streamer.spec.ts +0 -871
- package/src/framer/writer.spec.ts +0 -486
- package/src/group/access.spec.ts +0 -77
- package/src/group/group.spec.ts +0 -65
- package/src/label/access.spec.ts +0 -109
- package/src/label/label.spec.ts +0 -83
- package/src/lineplot/access.spec.ts +0 -134
- package/src/lineplot/lineplot.spec.ts +0 -120
- package/src/log/access.spec.ts +0 -132
- package/src/log/log.spec.ts +0 -106
- package/src/ontology/ontology.spec.ts +0 -521
- package/src/rack/access.spec.ts +0 -102
- package/src/rack/rack.spec.ts +0 -171
- package/src/ranger/access.spec.ts +0 -115
- package/src/ranger/alias/payload.spec.ts +0 -52
- package/src/ranger/ranger.spec.ts +0 -343
- package/src/schematic/access.spec.ts +0 -134
- package/src/schematic/actions.spec.ts +0 -699
- package/src/schematic/schematic.spec.ts +0 -340
- package/src/schematic/symbol/access.spec.ts +0 -172
- package/src/schematic/symbol/client.spec.ts +0 -160
- package/src/status/access.spec.ts +0 -129
- package/src/status/status.spec.ts +0 -448
- package/src/table/access.spec.ts +0 -128
- package/src/table/table.spec.ts +0 -651
- package/src/task/access.spec.ts +0 -131
- package/src/task/payload.spec.ts +0 -113
- package/src/task/task.spec.ts +0 -657
- package/src/user/access.spec.ts +0 -107
- package/src/user/user.spec.ts +0 -290
- package/src/util/retrieve.spec.ts +0 -49
- package/src/view/view.spec.ts +0 -165
- package/src/workspace/access.spec.ts +0 -108
- package/src/workspace/client.ts +0 -112
- package/src/workspace/types.gen.ts +0 -46
- package/src/workspace/workspace.spec.ts +0 -111
- package/tsconfig.json +0 -5
- package/tsconfig.vite.json +0 -4
- package/vite.config.ts +0 -29
- /package/dist/src/{workspace → project}/external.d.ts +0 -0
package/src/actions/external.ts
CHANGED
|
@@ -8,3 +8,14 @@
|
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
10
|
export * from "@/actions/actions";
|
|
11
|
+
export {
|
|
12
|
+
Controller,
|
|
13
|
+
type ControllerParams,
|
|
14
|
+
type Domain,
|
|
15
|
+
type Options,
|
|
16
|
+
type Preprocess,
|
|
17
|
+
type Reducer,
|
|
18
|
+
type SendDispatch,
|
|
19
|
+
type StackEntry,
|
|
20
|
+
type Transaction,
|
|
21
|
+
} from "@/actions/controller";
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
// Copyright 2026 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
10
|
+
// Code generated by Oracle. DO NOT EDIT.
|
|
11
|
+
import { caseconv, crdt, record, spatial, zod } from "@synnaxlabs/x";
|
|
12
|
+
import { type Draft } from "immer";
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
|
|
15
|
+
import { actions } from "@/actions";
|
|
16
|
+
import { graph } from "@/arc/graph";
|
|
17
|
+
import { ir } from "@/arc/ir";
|
|
18
|
+
import { type Arc, arcZ, keyZ } from "@/arc/types.gen";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Create replaces the document with the given created state. Emitted by the Core on
|
|
22
|
+
* create so remote caches ingest new documents; clients never dispatch it.
|
|
23
|
+
*/
|
|
24
|
+
export const createPayloadZ = z.object({
|
|
25
|
+
arc: arcZ,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
export type CreatePayload = z.infer<typeof createPayloadZ>;
|
|
29
|
+
|
|
30
|
+
/** Rename renames the Arc module. */
|
|
31
|
+
export const renamePayloadZ = z.object({
|
|
32
|
+
name: z.string(),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export type RenamePayload = z.infer<typeof renamePayloadZ>;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* SetNode inserts the node if no node with the same key exists, otherwise replaces the
|
|
39
|
+
* existing node in place. Operates only on the node's position; the node's function
|
|
40
|
+
* type and inputs are set separately via SetNodeInputs.
|
|
41
|
+
*/
|
|
42
|
+
export const setNodePayloadZ = z.object({
|
|
43
|
+
node: graph.nodeZ,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export type SetNodePayload = z.infer<typeof setNodePayloadZ>;
|
|
47
|
+
|
|
48
|
+
/** SetNodePosition moves a graph node to a new canvas position. */
|
|
49
|
+
export const setNodePositionPayloadZ = z.object({
|
|
50
|
+
key: z.string(),
|
|
51
|
+
position: spatial.xyZ,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
export type SetNodePositionPayload = z.infer<typeof setNodePositionPayloadZ>;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* SetNodeInputs merges the given inputs into the entry for the given key in the graph
|
|
58
|
+
* inputs map. Top-level fields present in the payload overwrite existing fields; fields
|
|
59
|
+
* absent from the payload are preserved. The node's function type is held under "type".
|
|
60
|
+
*/
|
|
61
|
+
export const setNodeInputsPayloadZ = z.object({
|
|
62
|
+
key: z.string(),
|
|
63
|
+
inputs: caseconv.preserveCase(record.unknownZ().default(() => ({}))),
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export type SetNodeInputsPayload = z.infer<typeof setNodeInputsPayloadZ>;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* RemoveNode removes the node with the given key along with its inputs entry and any
|
|
70
|
+
* edges connected to it.
|
|
71
|
+
*/
|
|
72
|
+
export const removeNodePayloadZ = z.object({
|
|
73
|
+
key: z.string(),
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
export type RemoveNodePayload = z.infer<typeof removeNodePayloadZ>;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* AddEdge appends the edge to the graph. No-op when an edge with the same source and
|
|
80
|
+
* target handles already exists, so concurrent additions of the same connection
|
|
81
|
+
* converge regardless of differing keys.
|
|
82
|
+
*/
|
|
83
|
+
export const addEdgePayloadZ = z.object({
|
|
84
|
+
edge: graph.edgeZ,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
export type AddEdgePayload = z.infer<typeof addEdgePayloadZ>;
|
|
88
|
+
|
|
89
|
+
/** RemoveEdge removes the edge with the given key, if present. */
|
|
90
|
+
export const removeEdgePayloadZ = z.object({
|
|
91
|
+
key: z.string(),
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
export type RemoveEdgePayload = z.infer<typeof removeEdgePayloadZ>;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* ReconnectEdge rewrites the endpoints of the edge with the given key, preserving its
|
|
98
|
+
* key and kind. No-op when no edge with the key exists.
|
|
99
|
+
*/
|
|
100
|
+
export const reconnectEdgePayloadZ = z.object({
|
|
101
|
+
key: z.string(),
|
|
102
|
+
source: ir.handleZ,
|
|
103
|
+
target: ir.handleZ,
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
export type ReconnectEdgePayload = z.infer<typeof reconnectEdgePayloadZ>;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* InsertChar carries a single collaborative-edit character insertion against the
|
|
110
|
+
* module's text. The payload is a sequence CRDT operation; the server relays it to the
|
|
111
|
+
* other editors of the module without interpreting it.
|
|
112
|
+
*/
|
|
113
|
+
export const insertCharPayloadZ = z.object({
|
|
114
|
+
id: crdt.idZ,
|
|
115
|
+
origin: crdt.idZ,
|
|
116
|
+
side: spatial.xLocationZ,
|
|
117
|
+
char: z.int32(),
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
export type InsertCharPayload = z.infer<typeof insertCharPayloadZ>;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* DeleteChar carries a single collaborative-edit character deletion against the
|
|
124
|
+
* module's text. The payload is a sequence CRDT operation; the server relays it to the
|
|
125
|
+
* other editors of the module without interpreting it.
|
|
126
|
+
*/
|
|
127
|
+
export const deleteCharPayloadZ = z.object({
|
|
128
|
+
id: crdt.idZ,
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
export type DeleteCharPayload = z.infer<typeof deleteCharPayloadZ>;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* ForgetChars removes the given already-deleted characters from the module's text
|
|
135
|
+
* document, dropping both their insert and delete operations from the replicated
|
|
136
|
+
* op-log. The server emits it after a quiet editing period to reclaim the space held by
|
|
137
|
+
* tombstoned characters. Because the characters are already deleted, and thus
|
|
138
|
+
* invisible, applying it never changes the materialized text.
|
|
139
|
+
*/
|
|
140
|
+
export const forgetCharsPayloadZ = z.object({
|
|
141
|
+
ids: crdt.idZ.array().default(() => []),
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
export type ForgetCharsPayload = z.infer<typeof forgetCharsPayloadZ>;
|
|
145
|
+
|
|
146
|
+
export const actionZ = z.discriminatedUnion("type", [
|
|
147
|
+
z.object({ type: z.literal("create"), create: createPayloadZ }),
|
|
148
|
+
z.object({ type: z.literal("rename"), rename: renamePayloadZ }),
|
|
149
|
+
z.object({ type: z.literal("set_node"), setNode: setNodePayloadZ }),
|
|
150
|
+
z.object({
|
|
151
|
+
type: z.literal("set_node_position"),
|
|
152
|
+
setNodePosition: setNodePositionPayloadZ,
|
|
153
|
+
}),
|
|
154
|
+
z.object({
|
|
155
|
+
type: z.literal("set_node_inputs"),
|
|
156
|
+
setNodeInputs: setNodeInputsPayloadZ,
|
|
157
|
+
}),
|
|
158
|
+
z.object({ type: z.literal("remove_node"), removeNode: removeNodePayloadZ }),
|
|
159
|
+
z.object({ type: z.literal("add_edge"), addEdge: addEdgePayloadZ }),
|
|
160
|
+
z.object({ type: z.literal("remove_edge"), removeEdge: removeEdgePayloadZ }),
|
|
161
|
+
z.object({ type: z.literal("reconnect_edge"), reconnectEdge: reconnectEdgePayloadZ }),
|
|
162
|
+
z.object({ type: z.literal("insert_char"), insertChar: insertCharPayloadZ }),
|
|
163
|
+
z.object({ type: z.literal("delete_char"), deleteChar: deleteCharPayloadZ }),
|
|
164
|
+
z.object({ type: z.literal("forget_chars"), forgetChars: forgetCharsPayloadZ }),
|
|
165
|
+
]);
|
|
166
|
+
|
|
167
|
+
export type Action = z.infer<typeof actionZ>;
|
|
168
|
+
|
|
169
|
+
export const create = (payload: z.input<typeof createPayloadZ>): Action => ({
|
|
170
|
+
type: "create",
|
|
171
|
+
create: zod.parse(createPayloadZ, payload, {
|
|
172
|
+
label: "Arc create action payload",
|
|
173
|
+
}),
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
export const rename = (payload: z.input<typeof renamePayloadZ>): Action => ({
|
|
177
|
+
type: "rename",
|
|
178
|
+
rename: zod.parse(renamePayloadZ, payload, {
|
|
179
|
+
label: "Arc rename action payload",
|
|
180
|
+
}),
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
export const setNode = (payload: z.input<typeof setNodePayloadZ>): Action => ({
|
|
184
|
+
type: "set_node",
|
|
185
|
+
setNode: zod.parse(setNodePayloadZ, payload, {
|
|
186
|
+
label: "Arc set_node action payload",
|
|
187
|
+
}),
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
export const setNodePosition = (
|
|
191
|
+
payload: z.input<typeof setNodePositionPayloadZ>,
|
|
192
|
+
): Action => ({
|
|
193
|
+
type: "set_node_position",
|
|
194
|
+
setNodePosition: zod.parse(setNodePositionPayloadZ, payload, {
|
|
195
|
+
label: "Arc set_node_position action payload",
|
|
196
|
+
}),
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
export const setNodeInputs = (
|
|
200
|
+
payload: z.input<typeof setNodeInputsPayloadZ>,
|
|
201
|
+
): Action => ({
|
|
202
|
+
type: "set_node_inputs",
|
|
203
|
+
setNodeInputs: zod.parse(setNodeInputsPayloadZ, payload, {
|
|
204
|
+
label: "Arc set_node_inputs action payload",
|
|
205
|
+
}),
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
export const removeNode = (payload: z.input<typeof removeNodePayloadZ>): Action => ({
|
|
209
|
+
type: "remove_node",
|
|
210
|
+
removeNode: zod.parse(removeNodePayloadZ, payload, {
|
|
211
|
+
label: "Arc remove_node action payload",
|
|
212
|
+
}),
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
export const addEdge = (payload: z.input<typeof addEdgePayloadZ>): Action => ({
|
|
216
|
+
type: "add_edge",
|
|
217
|
+
addEdge: zod.parse(addEdgePayloadZ, payload, {
|
|
218
|
+
label: "Arc add_edge action payload",
|
|
219
|
+
}),
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
export const removeEdge = (payload: z.input<typeof removeEdgePayloadZ>): Action => ({
|
|
223
|
+
type: "remove_edge",
|
|
224
|
+
removeEdge: zod.parse(removeEdgePayloadZ, payload, {
|
|
225
|
+
label: "Arc remove_edge action payload",
|
|
226
|
+
}),
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
export const reconnectEdge = (
|
|
230
|
+
payload: z.input<typeof reconnectEdgePayloadZ>,
|
|
231
|
+
): Action => ({
|
|
232
|
+
type: "reconnect_edge",
|
|
233
|
+
reconnectEdge: zod.parse(reconnectEdgePayloadZ, payload, {
|
|
234
|
+
label: "Arc reconnect_edge action payload",
|
|
235
|
+
}),
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
export const insertChar = (payload: z.input<typeof insertCharPayloadZ>): Action => ({
|
|
239
|
+
type: "insert_char",
|
|
240
|
+
insertChar: zod.parse(insertCharPayloadZ, payload, {
|
|
241
|
+
label: "Arc insert_char action payload",
|
|
242
|
+
}),
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
export const deleteChar = (payload: z.input<typeof deleteCharPayloadZ>): Action => ({
|
|
246
|
+
type: "delete_char",
|
|
247
|
+
deleteChar: zod.parse(deleteCharPayloadZ, payload, {
|
|
248
|
+
label: "Arc delete_char action payload",
|
|
249
|
+
}),
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
export const forgetChars = (payload: z.input<typeof forgetCharsPayloadZ>): Action => ({
|
|
253
|
+
type: "forget_chars",
|
|
254
|
+
forgetChars: zod.parse(forgetCharsPayloadZ, payload, {
|
|
255
|
+
label: "Arc forget_chars action payload",
|
|
256
|
+
}),
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
export type HandlerResult = actions.HandlerResult<Action>;
|
|
260
|
+
|
|
261
|
+
export type ReduceAllResult = actions.ReduceAllResult<Arc, Action>;
|
|
262
|
+
|
|
263
|
+
export interface Handlers {
|
|
264
|
+
create: (state: Draft<Arc>, payload: CreatePayload) => HandlerResult;
|
|
265
|
+
rename: (state: Draft<Arc>, payload: RenamePayload) => HandlerResult;
|
|
266
|
+
setNode: (state: Draft<Arc>, payload: SetNodePayload) => HandlerResult;
|
|
267
|
+
setNodePosition: (
|
|
268
|
+
state: Draft<Arc>,
|
|
269
|
+
payload: SetNodePositionPayload,
|
|
270
|
+
) => HandlerResult;
|
|
271
|
+
setNodeInputs: (state: Draft<Arc>, payload: SetNodeInputsPayload) => HandlerResult;
|
|
272
|
+
removeNode: (state: Draft<Arc>, payload: RemoveNodePayload) => HandlerResult;
|
|
273
|
+
addEdge: (state: Draft<Arc>, payload: AddEdgePayload) => HandlerResult;
|
|
274
|
+
removeEdge: (state: Draft<Arc>, payload: RemoveEdgePayload) => HandlerResult;
|
|
275
|
+
reconnectEdge: (state: Draft<Arc>, payload: ReconnectEdgePayload) => HandlerResult;
|
|
276
|
+
insertChar: (state: Draft<Arc>, payload: InsertCharPayload) => HandlerResult;
|
|
277
|
+
deleteChar: (state: Draft<Arc>, payload: DeleteCharPayload) => HandlerResult;
|
|
278
|
+
forgetChars: (state: Draft<Arc>, payload: ForgetCharsPayload) => HandlerResult;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export const createReduceAll = (handlers: Handlers) =>
|
|
282
|
+
actions.createReduceAll<Arc, Action>((state, action) => {
|
|
283
|
+
switch (action.type) {
|
|
284
|
+
case "create":
|
|
285
|
+
return handlers.create(state, action.create);
|
|
286
|
+
case "rename":
|
|
287
|
+
return handlers.rename(state, action.rename);
|
|
288
|
+
case "set_node":
|
|
289
|
+
return handlers.setNode(state, action.setNode);
|
|
290
|
+
case "set_node_position":
|
|
291
|
+
return handlers.setNodePosition(state, action.setNodePosition);
|
|
292
|
+
case "set_node_inputs":
|
|
293
|
+
return handlers.setNodeInputs(state, action.setNodeInputs);
|
|
294
|
+
case "remove_node":
|
|
295
|
+
return handlers.removeNode(state, action.removeNode);
|
|
296
|
+
case "add_edge":
|
|
297
|
+
return handlers.addEdge(state, action.addEdge);
|
|
298
|
+
case "remove_edge":
|
|
299
|
+
return handlers.removeEdge(state, action.removeEdge);
|
|
300
|
+
case "reconnect_edge":
|
|
301
|
+
return handlers.reconnectEdge(state, action.reconnectEdge);
|
|
302
|
+
case "insert_char":
|
|
303
|
+
return handlers.insertChar(state, action.insertChar);
|
|
304
|
+
case "delete_char":
|
|
305
|
+
return handlers.deleteChar(state, action.deleteChar);
|
|
306
|
+
case "forget_chars":
|
|
307
|
+
return handlers.forgetChars(state, action.forgetChars);
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
export const scopedActionZ = actions.scopedZ(keyZ, actionZ);
|
|
312
|
+
|
|
313
|
+
export const dispatchReqZ = actions.dispatchReqZ(keyZ, actionZ);
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
// Copyright 2026 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
10
|
+
import { type crdt, type record } from "@synnaxlabs/x";
|
|
11
|
+
|
|
12
|
+
import { actions } from "@/actions";
|
|
13
|
+
import {
|
|
14
|
+
type Action,
|
|
15
|
+
addEdge,
|
|
16
|
+
createReduceAll,
|
|
17
|
+
type Handlers,
|
|
18
|
+
reconnectEdge,
|
|
19
|
+
removeEdge,
|
|
20
|
+
removeNode,
|
|
21
|
+
rename,
|
|
22
|
+
setNode,
|
|
23
|
+
setNodeInputs,
|
|
24
|
+
setNodePosition,
|
|
25
|
+
} from "@/arc/actions.gen";
|
|
26
|
+
import { type ir } from "@/arc/ir";
|
|
27
|
+
|
|
28
|
+
const idToString = (id: crdt.ID): string => `${id.replica}:${id.counter}`;
|
|
29
|
+
|
|
30
|
+
const sameEndpoints = (a: ir.Edge, source: ir.Handle, target: ir.Handle): boolean =>
|
|
31
|
+
a.source.node === source.node &&
|
|
32
|
+
a.source.param === source.param &&
|
|
33
|
+
a.target.node === target.node &&
|
|
34
|
+
a.target.param === target.param;
|
|
35
|
+
|
|
36
|
+
const handlers: Handlers = {
|
|
37
|
+
create: (state, payload) => {
|
|
38
|
+
Object.assign(state, payload.arc);
|
|
39
|
+
return { inverse: [], targets: [payload.arc.key] };
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
rename: (state, payload) => {
|
|
43
|
+
const oldName = state.name;
|
|
44
|
+
state.name = payload.name;
|
|
45
|
+
return { inverse: [rename({ name: oldName })], targets: [state.key] };
|
|
46
|
+
},
|
|
47
|
+
setNode: (state, payload) => {
|
|
48
|
+
const idx = state.graph.nodes.findIndex((n) => n.key === payload.node.key);
|
|
49
|
+
if (idx === -1) {
|
|
50
|
+
state.graph.nodes.push(payload.node);
|
|
51
|
+
return {
|
|
52
|
+
inverse: [removeNode({ key: payload.node.key })],
|
|
53
|
+
targets: [payload.node.key],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const oldNode = actions.snapshotDraft(state.graph.nodes[idx]);
|
|
57
|
+
state.graph.nodes[idx] = payload.node;
|
|
58
|
+
return { inverse: [setNode({ node: oldNode })], targets: [payload.node.key] };
|
|
59
|
+
},
|
|
60
|
+
setNodePosition: (state, payload) => {
|
|
61
|
+
const node = state.graph.nodes.find((n) => n.key === payload.key);
|
|
62
|
+
if (node == null) return actions.NO_OP_RESULT;
|
|
63
|
+
const oldPosition = { x: node.position.x, y: node.position.y };
|
|
64
|
+
node.position = payload.position;
|
|
65
|
+
return {
|
|
66
|
+
inverse: [setNodePosition({ key: payload.key, position: oldPosition })],
|
|
67
|
+
targets: [payload.key],
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
// The inverse of SetNodeInputs is imperfect for keys the action newly introduces:
|
|
71
|
+
// SetNodeInputs only merges, so it cannot remove keys that did not previously exist.
|
|
72
|
+
// The inverse here restores values for keys that DID exist before the merge; keys
|
|
73
|
+
// added by the action remain on undo as phantom fields. A future ReplaceNodeInputs
|
|
74
|
+
// action can close the gap by enabling wholesale replacement.
|
|
75
|
+
setNodeInputs: (state, payload) => {
|
|
76
|
+
const existingRaw = state.graph.inputs[payload.key];
|
|
77
|
+
if (existingRaw == null) {
|
|
78
|
+
state.graph.inputs[payload.key] = payload.inputs;
|
|
79
|
+
return { inverse: [], targets: [payload.key] };
|
|
80
|
+
}
|
|
81
|
+
const existing = actions.snapshotDraft(existingRaw);
|
|
82
|
+
const restoreFields: record.Unknown = {};
|
|
83
|
+
for (const k of Object.keys(payload.inputs))
|
|
84
|
+
if (existing[k] !== undefined) restoreFields[k] = existing[k];
|
|
85
|
+
state.graph.inputs[payload.key] = { ...existing, ...payload.inputs };
|
|
86
|
+
if (Object.keys(restoreFields).length === 0)
|
|
87
|
+
return { inverse: [], targets: [payload.key] };
|
|
88
|
+
return {
|
|
89
|
+
inverse: [setNodeInputs({ key: payload.key, inputs: restoreFields })],
|
|
90
|
+
targets: [payload.key],
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
removeNode: (state, payload) => {
|
|
94
|
+
const idx = state.graph.nodes.findIndex((n) => n.key === payload.key);
|
|
95
|
+
if (idx === -1) return actions.NO_OP_RESULT;
|
|
96
|
+
const oldNode = actions.snapshotDraft(state.graph.nodes[idx]);
|
|
97
|
+
const oldInputs = actions.snapshotDraft(state.graph.inputs[payload.key]);
|
|
98
|
+
const removedEdges = state.graph.edges
|
|
99
|
+
.filter((e) => e.source.node === payload.key || e.target.node === payload.key)
|
|
100
|
+
.map((e) => actions.snapshotDraft(e));
|
|
101
|
+
state.graph.nodes.splice(idx, 1);
|
|
102
|
+
delete state.graph.inputs[payload.key];
|
|
103
|
+
state.graph.edges = state.graph.edges.filter(
|
|
104
|
+
(e) => e.source.node !== payload.key && e.target.node !== payload.key,
|
|
105
|
+
);
|
|
106
|
+
const inverse: Action[] = [setNode({ node: oldNode })];
|
|
107
|
+
if (oldInputs != null)
|
|
108
|
+
inverse.push(setNodeInputs({ key: payload.key, inputs: oldInputs }));
|
|
109
|
+
inverse.push(...removedEdges.map((e) => addEdge({ edge: e })));
|
|
110
|
+
return { inverse, targets: [payload.key] };
|
|
111
|
+
},
|
|
112
|
+
addEdge: (state, payload) => {
|
|
113
|
+
const { edge } = payload;
|
|
114
|
+
if (state.graph.edges.some((e) => sameEndpoints(e, edge.source, edge.target)))
|
|
115
|
+
return actions.NO_OP_RESULT;
|
|
116
|
+
state.graph.edges.push(edge);
|
|
117
|
+
return { inverse: [removeEdge({ key: edge.key })], targets: [edge.key] };
|
|
118
|
+
},
|
|
119
|
+
removeEdge: (state, payload) => {
|
|
120
|
+
const idx = state.graph.edges.findIndex((e) => e.key === payload.key);
|
|
121
|
+
if (idx === -1) return actions.NO_OP_RESULT;
|
|
122
|
+
const oldEdge = actions.snapshotDraft(state.graph.edges[idx]);
|
|
123
|
+
state.graph.edges.splice(idx, 1);
|
|
124
|
+
return { inverse: [addEdge({ edge: oldEdge })], targets: [payload.key] };
|
|
125
|
+
},
|
|
126
|
+
reconnectEdge: (state, payload) => {
|
|
127
|
+
const edge = state.graph.edges.find((e) => e.key === payload.key);
|
|
128
|
+
if (edge == null) return actions.NO_OP_RESULT;
|
|
129
|
+
const oldSource = actions.snapshotDraft(edge.source);
|
|
130
|
+
const oldTarget = actions.snapshotDraft(edge.target);
|
|
131
|
+
edge.source = payload.source;
|
|
132
|
+
edge.target = payload.target;
|
|
133
|
+
return {
|
|
134
|
+
inverse: [
|
|
135
|
+
reconnectEdge({ key: payload.key, source: oldSource, target: oldTarget }),
|
|
136
|
+
],
|
|
137
|
+
targets: [payload.key],
|
|
138
|
+
};
|
|
139
|
+
},
|
|
140
|
+
// Undo/redo is handled the editor, which emits the corresponding
|
|
141
|
+
// insertChar, deleteChar actions.
|
|
142
|
+
insertChar: (state, payload) => {
|
|
143
|
+
state.text.doc.inserts.push(payload);
|
|
144
|
+
return { inverse: [], targets: [] };
|
|
145
|
+
},
|
|
146
|
+
deleteChar: (state, payload) => {
|
|
147
|
+
state.text.doc.deletes.push(payload);
|
|
148
|
+
return { inverse: [], targets: [] };
|
|
149
|
+
},
|
|
150
|
+
// Server-emitted maintenance: drop the insert and delete ops of already-deleted
|
|
151
|
+
// characters. The characters are tombstoned and invisible, so removing their ops does
|
|
152
|
+
// not change the materialized text.
|
|
153
|
+
forgetChars: (state, payload) => {
|
|
154
|
+
if (payload.ids.length === 0) return { inverse: [], targets: [] };
|
|
155
|
+
const forget = new Set(payload.ids.map(idToString));
|
|
156
|
+
state.text.doc.inserts = state.text.doc.inserts.filter(
|
|
157
|
+
(i) => !forget.has(idToString(i.id)),
|
|
158
|
+
);
|
|
159
|
+
state.text.doc.deletes = state.text.doc.deletes.filter(
|
|
160
|
+
(d) => !forget.has(idToString(d.id)),
|
|
161
|
+
);
|
|
162
|
+
return { inverse: [], targets: [] };
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
export const reduceAll = createReduceAll(handlers);
|
|
167
|
+
|
|
168
|
+
// createOf hands the dispatch controller the document carried by a create
|
|
169
|
+
// action so frames for never-cached documents ingest instead of drop.
|
|
170
|
+
export const createOf = (action: Action) =>
|
|
171
|
+
action.type === "create" ? action.create.arc : undefined;
|
|
172
|
+
|
|
173
|
+
// isUndoable reports whether an action should push onto the undo stack. Graph mutations
|
|
174
|
+
// are user-driven and undoable; collaborative text edits are not (they carry no inverse
|
|
175
|
+
// and belong to the CRDT, not the graph undo stack), nor is the server's tombstone
|
|
176
|
+
// reclamation.
|
|
177
|
+
export const isUndoable = (action: Action): boolean =>
|
|
178
|
+
action.type !== "insert_char" &&
|
|
179
|
+
action.type !== "delete_char" &&
|
|
180
|
+
action.type !== "forget_chars";
|
|
181
|
+
|
|
182
|
+
// kindOf classifies an action batch for the undo coalesce window. A
|
|
183
|
+
// node drag dispatches a stream of set_node_position actions for a single
|
|
184
|
+
// gesture; classifying them all as "move" collapses them into one undoable.
|
|
185
|
+
export const kindOf = (actions: Action[]): string => {
|
|
186
|
+
if (actions.length === 0) return "default";
|
|
187
|
+
const hasMove = actions.some((a) => a.type === "set_node_position");
|
|
188
|
+
const onlyMove = actions.every((a) => a.type === "set_node_position");
|
|
189
|
+
if (hasMove && onlyMove) return "move";
|
|
190
|
+
if (actions.length === 1) return actions[0].type;
|
|
191
|
+
return "transaction";
|
|
192
|
+
};
|