@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
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { destructor, record } from '@synnaxlabs/x';
|
|
2
|
+
import { default as z } from 'zod';
|
|
3
|
+
import { Cache } from './cache';
|
|
4
|
+
import { Cached, ChangeHandler, Retrieves, Watch } from './query';
|
|
5
|
+
import { Keyed, Table } from './table';
|
|
6
|
+
import { Data, FetchOptions, Params } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Request schema arm reading a bare key list as `{ keys }`. Union it onto a
|
|
9
|
+
* domain's request schema to opt that domain into the shorthand:
|
|
10
|
+
* `retrieveRequestZ.or(keyListZ(keyZ))`.
|
|
11
|
+
*/
|
|
12
|
+
export declare const keyListZ: <K extends z.ZodType<record.Key>>(key: K) => z.ZodPipe<z.ZodArray<K>, z.ZodTransform<{
|
|
13
|
+
keys: z.core.output<K>[];
|
|
14
|
+
}, z.core.output<K>[]>>;
|
|
15
|
+
interface ComposeProp<V, D> {
|
|
16
|
+
/**
|
|
17
|
+
* Per-record enrichment applied to every answer, receiving the normalized
|
|
18
|
+
* query the record answers. Defaults to identity.
|
|
19
|
+
*/
|
|
20
|
+
compose: (record: V, query: Params) => D;
|
|
21
|
+
}
|
|
22
|
+
/** Optional only when a record is a valid answer as-is (V assignable to D):
|
|
23
|
+
* the identity default is unsound for any narrower D. */
|
|
24
|
+
type ComposeParam<V, D> = [V] extends [D] ? Partial<ComposeProp<V, D>> : ComposeProp<V, D>;
|
|
25
|
+
/**
|
|
26
|
+
* Declaration of a domain client's read surface. The single space is derived
|
|
27
|
+
* from the table and its fetch: `{ key }` params resolve one record, with
|
|
28
|
+
* deletion flipping the answer to deleted. Declare `single` only when the
|
|
29
|
+
* domain's single query is richer than a key.
|
|
30
|
+
*/
|
|
31
|
+
export type RetrieverParams<Z extends z.ZodType<Params>, K extends record.Key, V extends Keyed<K>, D extends Data = V, SingleInput = {
|
|
32
|
+
key: K;
|
|
33
|
+
}, SingleQuery extends Params = K> = ComposeParam<V, D> & {
|
|
34
|
+
/** Resource name used in error messages, e.g. "range". */
|
|
35
|
+
name: string;
|
|
36
|
+
/** The table owning this domain's record content. */
|
|
37
|
+
table: Table<K, V>;
|
|
38
|
+
/** The space answering every non-single query shape. */
|
|
39
|
+
request: {
|
|
40
|
+
/**
|
|
41
|
+
* Parses and canonicalizes request params so equivalent queries hash
|
|
42
|
+
* identically; its output type is the space's query type.
|
|
43
|
+
*/
|
|
44
|
+
schema: Z;
|
|
45
|
+
/**
|
|
46
|
+
* Fetches matching records from the cluster. Keys-only requests never
|
|
47
|
+
* reach it; they resolve through the table's fetch. Results hydrate the
|
|
48
|
+
* table under its declared mode.
|
|
49
|
+
*/
|
|
50
|
+
fetch: (query: z.output<Z>, options?: FetchOptions) => Promise<V[]>;
|
|
51
|
+
/** Rule 2: whether a record satisfies the query. Pure; no network. */
|
|
52
|
+
matches?: (record: V, query: z.output<Z>) => boolean;
|
|
53
|
+
/** Overrides {@link DEFAULT_SERVER_FIELDS} for this request shape. */
|
|
54
|
+
serverFields?: readonly string[];
|
|
55
|
+
/** Foreign tables whose events affect this space's answers. */
|
|
56
|
+
watch?: Array<Watch<z.output<Z>, K>>;
|
|
57
|
+
};
|
|
58
|
+
/** Custom single space for domains whose single query is richer than a key. */
|
|
59
|
+
single?: {
|
|
60
|
+
/**
|
|
61
|
+
* Discriminates and canonicalizes single params: parse success routes the
|
|
62
|
+
* query to the single space, and the output is the space's query. Object
|
|
63
|
+
* schemas must reject unknown keys so request params fall through. Union
|
|
64
|
+
* in a bare-key arm to accept `retrieve(key)`.
|
|
65
|
+
*/
|
|
66
|
+
schema: z.ZodType<SingleQuery, SingleInput | record.Key>;
|
|
67
|
+
/** The space answering single queries, built via the cache. */
|
|
68
|
+
space: Retrieves<SingleQuery, D>;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* A domain client's cached read surface, routing each query to the single or
|
|
73
|
+
* request answer space. The arity of the result follows the query: params
|
|
74
|
+
* addressing one record yield a record, every other shape yields an array.
|
|
75
|
+
*
|
|
76
|
+
* Extend it and call `super(cache, { ... })`:
|
|
77
|
+
*
|
|
78
|
+
* ```ts
|
|
79
|
+
* export class Client extends query.Retriever<typeof requestZ, Key, Label> {
|
|
80
|
+
* constructor(client: UnaryClient, cache: query.Cache) {
|
|
81
|
+
* const store = cache.createTable({ ... });
|
|
82
|
+
* super(cache, { name: "label", table: store, request: { ... } });
|
|
83
|
+
* }
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* Anything evaluated eagerly inside `super` must come from a local, since
|
|
88
|
+
* `this` is unavailable until it returns. Closures may reference `this`: an
|
|
89
|
+
* arrow captures it lexically and does not read it until called.
|
|
90
|
+
*
|
|
91
|
+
* The read surface is not designed for overriding: a domain with more query
|
|
92
|
+
* kinds exposes them as named {@link Retrieves} members instead.
|
|
93
|
+
*/
|
|
94
|
+
export declare abstract class Retriever<Z extends z.ZodType<Params>, K extends record.Key, V extends Keyed<K>, D extends Data = V, SingleInput = {
|
|
95
|
+
key: K;
|
|
96
|
+
}, SingleQuery extends Params = K> {
|
|
97
|
+
private readonly singleSpace;
|
|
98
|
+
private readonly requestSpace;
|
|
99
|
+
private readonly trySingle;
|
|
100
|
+
private readonly normalizeRequest;
|
|
101
|
+
private readonly routes;
|
|
102
|
+
constructor(cache: Cache, params: RetrieverParams<Z, K, V, D, SingleInput, SingleQuery>);
|
|
103
|
+
/**
|
|
104
|
+
* Routes params to their answer space, memoized per params object identity.
|
|
105
|
+
* {@link Params} is readonly, so a given object always routes identically;
|
|
106
|
+
* repeat reads of the same object skip schema validation entirely.
|
|
107
|
+
*/
|
|
108
|
+
private route;
|
|
109
|
+
/**
|
|
110
|
+
* Reads the record the params address, or every record matching them.
|
|
111
|
+
* Serves the cache when the answer is fresh, fetching otherwise. A bare key
|
|
112
|
+
* is shorthand for `{ key }`; a bare key list is accepted by domains whose
|
|
113
|
+
* request schema unions in {@link keyListZ}.
|
|
114
|
+
* @throws {NotFoundError} if a single-record query matches nothing or the
|
|
115
|
+
* record was deleted.
|
|
116
|
+
* @throws {ValidationError} if params contain `key` (or are a bare key)
|
|
117
|
+
* but fail the single-query schema.
|
|
118
|
+
*/
|
|
119
|
+
retrieve(params: K | SingleInput, options?: FetchOptions): Promise<D>;
|
|
120
|
+
retrieve(params: K[] | z.input<Z>, options?: FetchOptions): Promise<D[]>;
|
|
121
|
+
/**
|
|
122
|
+
* Subscribes to changes in the cached answer to the given query. The handler
|
|
123
|
+
* fires on every change or deletion. Returns a destructor that unsubscribes.
|
|
124
|
+
*/
|
|
125
|
+
onChange(params: K | SingleInput, handler: ChangeHandler<D>): destructor.Destructor;
|
|
126
|
+
onChange(params: K[] | z.input<Z>, handler: ChangeHandler<D[]>): destructor.Destructor;
|
|
127
|
+
/**
|
|
128
|
+
* Returns the cached answer to the given query without touching the network, or
|
|
129
|
+
* undefined when nothing is cached. May be stale for unsubscribed queries.
|
|
130
|
+
*/
|
|
131
|
+
getCached(params: K | SingleInput): Cached<D> | undefined;
|
|
132
|
+
getCached(params: K[] | z.input<Z>): Cached<D[]> | undefined;
|
|
133
|
+
}
|
|
134
|
+
export {};
|
|
135
|
+
//# sourceMappingURL=retriever.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retriever.d.ts","sourceRoot":"","sources":["../../../src/query/retriever.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { breaker } from '@synnaxlabs/x';
|
|
2
|
+
import { default as z } from 'zod';
|
|
3
|
+
import { framer } from '../framer';
|
|
4
|
+
/**
|
|
5
|
+
* A raw channel reaction: parses frames from the channel with the schema and invokes
|
|
6
|
+
* onChange once per frame with every parsed value, in order. Mirror listeners bind to
|
|
7
|
+
* this shape internally; domains register reactions via the cache's listen.
|
|
8
|
+
*/
|
|
9
|
+
export interface Listener<Z extends z.ZodType = z.ZodType> {
|
|
10
|
+
/** The name of the Synnax channel to listen to */
|
|
11
|
+
channel: string;
|
|
12
|
+
/** Zod schema for parsing and validating channel data */
|
|
13
|
+
schema: Z;
|
|
14
|
+
/** Receives the frame's parsed values for the channel as one batch. */
|
|
15
|
+
onChange(this: void, changed: z.output<Z>[]): Promise<unknown> | unknown;
|
|
16
|
+
}
|
|
17
|
+
/** Arguments for opening a cache streamer. */
|
|
18
|
+
export interface StreamerParams {
|
|
19
|
+
/** Receives frame-handling and listener errors. */
|
|
20
|
+
onError: (error: Error) => void;
|
|
21
|
+
/** The channel listeners to drive with streamed changes. */
|
|
22
|
+
listeners: Listener[];
|
|
23
|
+
/** Opens the raw frame stream; hardening is applied internally. */
|
|
24
|
+
openStreamer: framer.StreamOpener;
|
|
25
|
+
/** Retry behavior for stream reconnect attempts. */
|
|
26
|
+
breaker?: breaker.Config;
|
|
27
|
+
/** Called once when the stream first opens, before any frame is processed. */
|
|
28
|
+
onOpen?: () => void;
|
|
29
|
+
/**
|
|
30
|
+
* Called after every successful reconnect of the underlying stream (not the
|
|
31
|
+
* initial open). Changes may have been missed while disconnected.
|
|
32
|
+
*/
|
|
33
|
+
onReopen?: () => void;
|
|
34
|
+
/**
|
|
35
|
+
* Called whenever the stream goes live: after the initial open and before every
|
|
36
|
+
* onReopen, so reconciliation fetches never race a stale liveness verdict.
|
|
37
|
+
*/
|
|
38
|
+
onLive?: () => void;
|
|
39
|
+
/** Called when the underlying stream fails and reconnection begins. */
|
|
40
|
+
onDrop?: (error: Error) => void;
|
|
41
|
+
/**
|
|
42
|
+
* Called when the stream ends on a failure it cannot recover from. The next
|
|
43
|
+
* demand opens a new stream.
|
|
44
|
+
*/
|
|
45
|
+
onDead?: (error: Error) => void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A lazily-opened change stream over the channels named in a table config.
|
|
49
|
+
* Construction is synchronous and network-free; the underlying stream opens
|
|
50
|
+
* on the first {@link Streamer.demand} call.
|
|
51
|
+
*/
|
|
52
|
+
export interface Streamer {
|
|
53
|
+
/**
|
|
54
|
+
* Ensures the underlying stream is open, opening it on first call. Resolves
|
|
55
|
+
* once streaming is live. Safe to call concurrently and repeatedly.
|
|
56
|
+
*/
|
|
57
|
+
demand: () => Promise<void>;
|
|
58
|
+
/** Closes the stream. A no-op when the stream was never demanded. */
|
|
59
|
+
close: () => Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates a lazy streamer that, once demanded, listens to configured channels and
|
|
63
|
+
* invokes the appropriate listeners when data changes.
|
|
64
|
+
* @returns The lazy streamer handle
|
|
65
|
+
*/
|
|
66
|
+
export declare const createStreamer: ({ openStreamer, breaker: breakerConfig, listeners: allListeners, onError, onOpen, onReopen, onLive, onDrop, onDead, }: StreamerParams) => Streamer;
|
|
67
|
+
//# sourceMappingURL=streamer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamer.d.ts","sourceRoot":"","sources":["../../../src/query/streamer.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAGvC;;;;GAIG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IACvD,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,EAAE,CAAC,CAAC;IACV,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC1E;AAgBD,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,4DAA4D;IAC5D,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC;IAClC,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IACzB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,qEAAqE;IACrE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,uHAU5B,cAAc,KAAG,QAoGnB,CAAC"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { CrudeTimeSpan, destructor, record, state } from '@synnaxlabs/x';
|
|
2
|
+
import { default as z } from 'zod';
|
|
3
|
+
import { Deleted } from './deleted';
|
|
4
|
+
import { Listener } from './streamer';
|
|
5
|
+
/**
|
|
6
|
+
* Presence of a key in a table: "present" when a live entry exists, "tombstoned"
|
|
7
|
+
* when the entry was deleted and its corpse is retained, "unknown" when the
|
|
8
|
+
* table has never seen the key or the corpse was cleared.
|
|
9
|
+
*/
|
|
10
|
+
export type EntryStatus = "present" | "tombstoned" | "unknown";
|
|
11
|
+
/** A change to a single entry of a {@link Table}. */
|
|
12
|
+
export type TableEvent<Key extends record.Key = record.Key, Value extends state.State = state.State> = {
|
|
13
|
+
variant: "set";
|
|
14
|
+
key: Key;
|
|
15
|
+
value: Value;
|
|
16
|
+
} | {
|
|
17
|
+
variant: "delete";
|
|
18
|
+
key: Key;
|
|
19
|
+
};
|
|
20
|
+
/** Receives {@link TableEvent}s. Must be synchronous; thrown errors are
|
|
21
|
+
* reported to the table's error sink and do not stop delivery. */
|
|
22
|
+
export interface TableSubscriber<Key extends record.Key = record.Key, Value extends state.State = state.State> {
|
|
23
|
+
(event: TableEvent<Key, Value>): void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Receives every event of a batched write as one call, in event order. A single write
|
|
27
|
+
* delivers a batch of one. Same synchrony and error contract as
|
|
28
|
+
* {@link TableSubscriber}.
|
|
29
|
+
*/
|
|
30
|
+
export interface BatchSubscriber<Key extends record.Key = record.Key, Value extends state.State = state.State> {
|
|
31
|
+
(events: TableEvent<Key, Value>[]): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* How fetched records hydrate a table: "set" overwrites entries, "if-absent"
|
|
35
|
+
* preserves existing entries.
|
|
36
|
+
*/
|
|
37
|
+
export type HydrateMode = "set" | "if-absent";
|
|
38
|
+
/** A table value carrying its entry key, so batch writes and fetches can derive
|
|
39
|
+
* each entry's key from the record itself. */
|
|
40
|
+
export type Keyed<Key extends record.Key = record.Key, Value extends state.State = state.State> = Value & record.Keyed<Key>;
|
|
41
|
+
/** Construction arguments for a {@link Table}. */
|
|
42
|
+
export interface TableParams<Key extends record.Key = record.Key, Value extends state.State = state.State> {
|
|
43
|
+
/** Receives subscriber and fetch errors that have no caller to throw to. */
|
|
44
|
+
onError: (error: Error) => void;
|
|
45
|
+
/** Overrides the deep-equality default used to silence redundant sets. */
|
|
46
|
+
equal?: (a: Value, b: Value, key: Key) => boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Fetches the current records for the given keys from the cluster,
|
|
49
|
+
* returning only the entries that still exist. Powers {@link Table.retrieve},
|
|
50
|
+
* key-announce listeners, and reconciliation. Omit for tables with no
|
|
51
|
+
* server backing (they are skipped by all three).
|
|
52
|
+
*/
|
|
53
|
+
fetch?: (keys: Key[]) => Promise<Array<Keyed<Key, Value>>>;
|
|
54
|
+
/**
|
|
55
|
+
* Hydration mode, "set" by default. Dispatch-backed document tables use
|
|
56
|
+
* "if-absent" so fetches never clobber locally replayed edits.
|
|
57
|
+
*/
|
|
58
|
+
hydrate?: HydrateMode;
|
|
59
|
+
/**
|
|
60
|
+
* Window for coalescing concurrent miss fetches into one fetch call.
|
|
61
|
+
* @default TimeSpan.milliseconds(10)
|
|
62
|
+
*/
|
|
63
|
+
fetchDebounce?: CrudeTimeSpan;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The sole owner of one resource's record content and tombstones. Everything else in
|
|
67
|
+
* the cache holds keys into it: answers store key lists, dispatch bookkeeping rides
|
|
68
|
+
* entry deletion, and consumers assemble content at read time. An equal-value set
|
|
69
|
+
* announces nothing: writers echoing state the table already holds (server echoes of
|
|
70
|
+
* optimistic writes, idempotent backfills) are silenced by the equality check rather
|
|
71
|
+
* than by writer identity.
|
|
72
|
+
*/
|
|
73
|
+
export declare class Table<Key extends record.Key = record.Key, Value extends state.State = state.State> {
|
|
74
|
+
private readonly entries;
|
|
75
|
+
private readonly tombstones;
|
|
76
|
+
private readonly broadSubscribers;
|
|
77
|
+
private readonly batchSubscribers;
|
|
78
|
+
private readonly keyedSubscribers;
|
|
79
|
+
private batching;
|
|
80
|
+
private readonly onError;
|
|
81
|
+
private readonly equal;
|
|
82
|
+
private readonly fetchEntries?;
|
|
83
|
+
private readonly hydrateMode;
|
|
84
|
+
private readonly fetchBatcher;
|
|
85
|
+
private gen;
|
|
86
|
+
constructor({ onError, equal, fetch, hydrate, fetchDebounce, }: TableParams<Key, Value>);
|
|
87
|
+
private setOne;
|
|
88
|
+
/**
|
|
89
|
+
* Sets the value for the given key, or applies a setter to the previous value. A
|
|
90
|
+
* setter producing null/undefined, or a value equal to the current one, is a no-op.
|
|
91
|
+
* @returns A rollback that undoes the set.
|
|
92
|
+
*/
|
|
93
|
+
set(key: Key, value: state.SetArg<Value | undefined>): destructor.Destructor;
|
|
94
|
+
/**
|
|
95
|
+
* Sets every given keyed value, keying each entry by its key property.
|
|
96
|
+
* @returns A rollback that undoes the inserted values in reverse order.
|
|
97
|
+
*/
|
|
98
|
+
set(values: Keyed<Key, Value> | Array<Keyed<Key, Value>>): destructor.Destructor;
|
|
99
|
+
private setIfAbsent;
|
|
100
|
+
/**
|
|
101
|
+
* Writes fetched records into the table under its declared hydrate mode:
|
|
102
|
+
* "set" overwrites entries, "if-absent" leaves existing entries untouched.
|
|
103
|
+
* @returns A rollback that undoes the entries this call wrote.
|
|
104
|
+
*/
|
|
105
|
+
ingest(values: Keyed<Key, Value> | Array<Keyed<Key, Value>>): destructor.Destructor;
|
|
106
|
+
/** Returns every entry in the table. */
|
|
107
|
+
get(): Value[];
|
|
108
|
+
get(key: Key): Value | undefined;
|
|
109
|
+
get(keys: Key[]): Value[];
|
|
110
|
+
get(filter: (value: Value) => boolean): Value[];
|
|
111
|
+
has(key: Key): boolean;
|
|
112
|
+
/** Returns the key of every live entry. */
|
|
113
|
+
keys(): Key[];
|
|
114
|
+
/**
|
|
115
|
+
* Returns the presence of the given key: present, tombstoned, or unknown.
|
|
116
|
+
* Cache-internal surface: consumed by the query machinery, not domain code.
|
|
117
|
+
*/
|
|
118
|
+
status(key: Key): EntryStatus;
|
|
119
|
+
/**
|
|
120
|
+
* Returns the tombstone for the given key, or undefined if none exists.
|
|
121
|
+
* Cache-internal surface: consumed by the query machinery, not domain code.
|
|
122
|
+
*/
|
|
123
|
+
getTombstone(key: Key): Deleted<Value> | undefined;
|
|
124
|
+
/**
|
|
125
|
+
* Resolves the given keys to records: serves cached entries and fetches the misses
|
|
126
|
+
* through the table's fetch, hydrating results under the declared mode. With refresh,
|
|
127
|
+
* every key is fetched regardless of presence. Returns the table's entries for the
|
|
128
|
+
* found keys in input order, deduplicated; keys the cluster no longer has are
|
|
129
|
+
* omitted. Tables without a fetch serve cached entries only.
|
|
130
|
+
*/
|
|
131
|
+
retrieve(keys: Key[], opts?: {
|
|
132
|
+
refresh?: boolean;
|
|
133
|
+
}): Promise<Value[]>;
|
|
134
|
+
/**
|
|
135
|
+
* Deletes entries and notifies subscribers. Deleted values are retained as
|
|
136
|
+
* tombstones until a subsequent set for the key.
|
|
137
|
+
* @param key - The key(s) to delete or a filter function
|
|
138
|
+
* @returns A rollback that restores the deleted entries
|
|
139
|
+
*/
|
|
140
|
+
delete(key: Key | Key[] | ((value: Value, key: Key) => boolean)): destructor.Destructor;
|
|
141
|
+
/**
|
|
142
|
+
* Removes entries and notifies subscribers, retaining no corpses: the undo of a write
|
|
143
|
+
* the record never survived, not a deletion. A reader finds the key unknown rather
|
|
144
|
+
* than deleted.
|
|
145
|
+
* @returns A rollback that restores the removed entries
|
|
146
|
+
*/
|
|
147
|
+
evict(key: Key | Key[]): destructor.Destructor;
|
|
148
|
+
private remove;
|
|
149
|
+
/**
|
|
150
|
+
* Re-checks every cached entry against the cluster through the table's
|
|
151
|
+
* fetch: refreshes entries that still exist and tombstones entries that
|
|
152
|
+
* vanished. A no-op for empty tables and tables without a fetch.
|
|
153
|
+
*/
|
|
154
|
+
reconcile(): Promise<void>;
|
|
155
|
+
/**
|
|
156
|
+
* Discards every entry and tombstone without notifying subscribers. Called
|
|
157
|
+
* only by the cache's reset, which resets the answer spaces itself:
|
|
158
|
+
* per-entry delete events would masquerade as deletions of live records.
|
|
159
|
+
* Fetches in flight when the reset runs discard their results.
|
|
160
|
+
*/
|
|
161
|
+
reset(): void;
|
|
162
|
+
/**
|
|
163
|
+
* Subscribes to entry changes delivered per batched write: one call carrying every
|
|
164
|
+
* event of the batch, in order, after all of the batch's entries have applied.
|
|
165
|
+
* Cache-internal surface: consumed by the query machinery, not domain code;
|
|
166
|
+
* per-record consumers use {@link subscribe}.
|
|
167
|
+
* @returns A destructor that unsubscribes.
|
|
168
|
+
*/
|
|
169
|
+
subscribeBatch(subscriber: BatchSubscriber<Key, Value>): destructor.Destructor;
|
|
170
|
+
/**
|
|
171
|
+
* Subscribes to entry changes. With a key, only changes to that entry fire.
|
|
172
|
+
* @returns A destructor that unsubscribes.
|
|
173
|
+
*/
|
|
174
|
+
subscribe(subscriber: TableSubscriber<Key, Value>, key?: Key): destructor.Destructor;
|
|
175
|
+
/**
|
|
176
|
+
* Runs fn with event delivery deferred: writes apply to entries immediately, and
|
|
177
|
+
* every event they produce is delivered as one batch when the outermost batch
|
|
178
|
+
* exits. Delivery stays synchronous, inside this call. Nested batches join the
|
|
179
|
+
* outermost one. Events flush even when fn throws, since the entries they describe
|
|
180
|
+
* were already applied.
|
|
181
|
+
*/
|
|
182
|
+
batch<T>(fn: () => T): T;
|
|
183
|
+
private notify;
|
|
184
|
+
private flush;
|
|
185
|
+
private deliver;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* A mirror listener declaration: keeps the owning table current from one stream
|
|
189
|
+
* channel. Built with {@link createSetListener}, {@link createDeleteListener}, or
|
|
190
|
+
* {@link createFetchListener}; bound to its table by the cache.
|
|
191
|
+
*/
|
|
192
|
+
export interface ListenerSpec<Key extends record.Key = record.Key, Value extends state.State = state.State> {
|
|
193
|
+
/** Binds the declaration to the owning table as a raw channel listener. */
|
|
194
|
+
bind: (table: Table<Key, Value>) => Listener;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Declares that the channel broadcasts records to mirror into the table.
|
|
198
|
+
* By default the parsed record keys itself (`changed.key`) and is stored
|
|
199
|
+
* as-is; `key` derives the entry key, `value` transforms the record and may
|
|
200
|
+
* merge with the previous entry (return null/undefined to skip the write).
|
|
201
|
+
*/
|
|
202
|
+
export declare const createSetListener: <Z extends z.ZodType, Key extends record.Key = record.Key, Value extends state.State = state.State>(channel: string, schema: Z, opts?: {
|
|
203
|
+
key?: (changed: z.output<Z>) => Key;
|
|
204
|
+
value?: (changed: z.output<Z>, prev: Value | undefined) => Value | null | undefined;
|
|
205
|
+
}) => ListenerSpec<Key, Value>;
|
|
206
|
+
/**
|
|
207
|
+
* Declares that the channel broadcasts deletions to mirror into the table.
|
|
208
|
+
* By default the parsed value is the entry key; `key` derives it instead.
|
|
209
|
+
*/
|
|
210
|
+
export declare const createDeleteListener: <Z extends z.ZodType, Key extends record.Key = record.Key, Value extends state.State = state.State>(channel: string, schema: Z, opts?: {
|
|
211
|
+
key?: (changed: z.output<Z>) => Key;
|
|
212
|
+
}) => ListenerSpec<Key, Value>;
|
|
213
|
+
/**
|
|
214
|
+
* Declares that the channel announces keys whose records changed. Announced
|
|
215
|
+
* keys are refetched through the table's fetch and overwrite their entries.
|
|
216
|
+
*/
|
|
217
|
+
export declare const createFetchListener: <Z extends z.ZodType<Key | Key[]>, Key extends record.Key = record.Key, Value extends state.State = state.State>(channel: string, schema: Z) => ListenerSpec<Key, Value>;
|
|
218
|
+
export declare const partialUpdate: <Key extends record.Key, Value extends object>(table: Table<Key, Value>, key: Key, value: Partial<Value>) => destructor.Destructor;
|
|
219
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/query/table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { primitive, state } from '@synnaxlabs/x';
|
|
2
|
+
/** Options to control async operations. */
|
|
3
|
+
export interface FetchOptions {
|
|
4
|
+
/** Optional AbortSignal to cancel the operation */
|
|
5
|
+
signal?: AbortSignal;
|
|
6
|
+
}
|
|
7
|
+
/** Options for write methods that apply the change locally before the send. */
|
|
8
|
+
export interface WriteOptions<T = void> {
|
|
9
|
+
/**
|
|
10
|
+
* Called after the optimistic cache apply and before the network send, with
|
|
11
|
+
* the optimistically applied value. UI layers use it to react to a write
|
|
12
|
+
* (e.g. open a tab) without waiting on the server.
|
|
13
|
+
*/
|
|
14
|
+
onOptimistic?: (value: T) => Promise<void> | void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Plain-data shape used to address a record in the cache query system. Queries are
|
|
18
|
+
* hashed by {@link hash} to produce stable cache keys, so they must be primitives,
|
|
19
|
+
* arrays of queries, plain string-keyed objects of queries, or class instances
|
|
20
|
+
* implementing {@link primitive.Hashable}. Maps, Sets, Dates, and non-Hashable class
|
|
21
|
+
* instances are rejected at compile time because their fields don't recursively reduce
|
|
22
|
+
* to {@link Params}. Consumer query types must be declared with `type` aliases, not
|
|
23
|
+
* `interface`, because TypeScript interfaces lack an implicit string index signature
|
|
24
|
+
* and fail the `{ readonly [k: string]: Params }` branch.
|
|
25
|
+
*/
|
|
26
|
+
export type Params = string | number | bigint | boolean | null | undefined | primitive.Hashable | readonly Params[] | {
|
|
27
|
+
readonly [key: string]: Params;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Shape of values returned and stored by the cache query system. Unlike
|
|
31
|
+
* {@link Params}, data values do not need to be hashable — they may carry
|
|
32
|
+
* arbitrary state including class instances or non-serializable references.
|
|
33
|
+
*/
|
|
34
|
+
export type Data = state.State;
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/query/types.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3D,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,IAAI;IACpC;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACnD;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,MAAM,GACd,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,SAAS,CAAC,QAAQ,GAClB,SAAS,MAAM,EAAE,GACjB;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAEvC;;;;GAIG;AACH,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { destructor } from '@synnaxlabs/x';
|
|
2
|
+
export interface OptimisticParams<R> {
|
|
3
|
+
/**
|
|
4
|
+
* Rollbacks for the already-applied optimistic cache changes, run in
|
|
5
|
+
* reverse order when commit fails.
|
|
6
|
+
*/
|
|
7
|
+
rollbacks: destructor.Destructor[];
|
|
8
|
+
/**
|
|
9
|
+
* Notified after the rollbacks are captured and before commit runs. Value-bearing
|
|
10
|
+
* writes close over their optimistic value: `() => opts.onOptimistic?.(value)`.
|
|
11
|
+
*/
|
|
12
|
+
onOptimistic?: () => Promise<void> | void;
|
|
13
|
+
/** The network send. Its result is returned when it succeeds. */
|
|
14
|
+
commit: () => Promise<R>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Runs an optimistic write. When commit or `onOptimistic` fails the rollbacks
|
|
18
|
+
* run and the error rethrows; on success the cache keeps the optimistic state.
|
|
19
|
+
*/
|
|
20
|
+
export declare const optimistic: <R>({ rollbacks, onOptimistic, commit, }: OptimisticParams<R>) => Promise<R>;
|
|
21
|
+
//# sourceMappingURL=write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/query/write.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC;;;OAGG;IACH,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;IACnC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1C,iEAAiE;IACjE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,sCAIjC,gBAAgB,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAOjC,CAAC"}
|
|
@@ -1,27 +1,42 @@
|
|
|
1
1
|
import { UnaryClient } from '@synnaxlabs/freighter';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
+
import { ontology } from '../ontology';
|
|
4
|
+
import { query } from '../query';
|
|
3
5
|
import { Key, New, Payload, Status } from './types.gen';
|
|
6
|
+
import { status } from '../status';
|
|
4
7
|
import { task } from '../task';
|
|
5
8
|
export declare const SET_CHANNEL_NAME = "sy_rack_set";
|
|
6
9
|
export declare const DELETE_CHANNEL_NAME = "sy_rack_delete";
|
|
10
|
+
declare const retrieveMultiParamsZ: z.ZodUnion<[z.ZodObject<{
|
|
11
|
+
keys: z.ZodOptional<z.ZodArray<z.ZodUInt32>>;
|
|
12
|
+
names: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13
|
+
integration: z.ZodOptional<z.ZodString>;
|
|
14
|
+
searchTerm: z.ZodOptional<z.ZodString>;
|
|
15
|
+
embedded: z.ZodOptional<z.ZodBoolean>;
|
|
16
|
+
hostIsNode: z.ZodOptional<z.ZodBoolean>;
|
|
17
|
+
limit: z.ZodOptional<z.ZodInt>;
|
|
18
|
+
offset: z.ZodOptional<z.ZodInt>;
|
|
19
|
+
includeStatus: z.ZodOptional<z.ZodBoolean>;
|
|
20
|
+
}, z.core.$strip>, z.ZodPipe<z.ZodArray<z.ZodUInt32>, z.ZodTransform<{
|
|
21
|
+
keys: number[];
|
|
22
|
+
}, number[]>>]>;
|
|
7
23
|
export declare const rackZ: z.ZodObject<{
|
|
8
24
|
key: z.ZodUInt32;
|
|
9
25
|
name: z.ZodString;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
status: z.ZodOptional<import('@synnaxlabs/x/dist/src/status/types.gen').StatusZodObject<z.ZodObject<{
|
|
26
|
+
embedded: z.ZodDefault<z.ZodBoolean>;
|
|
27
|
+
status: z.ZodOptional<status.StatusZodObject<z.ZodObject<{
|
|
13
28
|
rack: z.ZodUInt32;
|
|
14
29
|
}, z.core.$strip>, z.ZodEnum<{
|
|
15
|
-
success: "success";
|
|
16
30
|
error: "error";
|
|
31
|
+
success: "success";
|
|
17
32
|
info: "info";
|
|
18
33
|
warning: "warning";
|
|
19
34
|
loading: "loading";
|
|
20
35
|
disabled: "disabled";
|
|
21
36
|
}>>>;
|
|
22
|
-
integrations: z.
|
|
37
|
+
integrations: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
23
38
|
}, z.core.$strip>;
|
|
24
|
-
declare const
|
|
39
|
+
declare const singleRetrieveParamsZ: z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
|
|
25
40
|
key: z.ZodUInt32;
|
|
26
41
|
includeStatus: z.ZodOptional<z.ZodBoolean>;
|
|
27
42
|
}, z.core.$strip>, z.ZodTransform<{
|
|
@@ -40,8 +55,8 @@ declare const singleRetrieveArgsZ: z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
|
|
|
40
55
|
name: string;
|
|
41
56
|
includeStatus?: boolean | undefined;
|
|
42
57
|
}>>]>;
|
|
43
|
-
export type RetrieveSingleParams = z.input<typeof
|
|
44
|
-
declare const
|
|
58
|
+
export type RetrieveSingleParams = z.input<typeof singleRetrieveParamsZ>;
|
|
59
|
+
declare const multiRetrieveParamsZ: z.ZodObject<{
|
|
45
60
|
keys: z.ZodOptional<z.ZodArray<z.ZodUInt32>>;
|
|
46
61
|
names: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
47
62
|
integration: z.ZodOptional<z.ZodString>;
|
|
@@ -52,8 +67,8 @@ declare const multiRetrieveArgsZ: z.ZodObject<{
|
|
|
52
67
|
offset: z.ZodOptional<z.ZodInt>;
|
|
53
68
|
includeStatus: z.ZodOptional<z.ZodBoolean>;
|
|
54
69
|
}, z.core.$strip>;
|
|
55
|
-
export type RetrieveMultipleParams = z.input<typeof
|
|
56
|
-
declare const
|
|
70
|
+
export type RetrieveMultipleParams = z.input<typeof multiRetrieveParamsZ>;
|
|
71
|
+
declare const retrieveParamsZ: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
|
|
57
72
|
key: z.ZodUInt32;
|
|
58
73
|
includeStatus: z.ZodOptional<z.ZodBoolean>;
|
|
59
74
|
}, z.core.$strip>, z.ZodTransform<{
|
|
@@ -82,26 +97,49 @@ declare const retrieveArgsZ: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodPipe
|
|
|
82
97
|
offset: z.ZodOptional<z.ZodInt>;
|
|
83
98
|
includeStatus: z.ZodOptional<z.ZodBoolean>;
|
|
84
99
|
}, z.core.$strip>]>;
|
|
85
|
-
export type
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
100
|
+
export type RetrieveParams = z.input<typeof retrieveParamsZ>;
|
|
101
|
+
type SingleQuery = {
|
|
102
|
+
key: Key;
|
|
103
|
+
includeStatus?: boolean;
|
|
104
|
+
} | {
|
|
105
|
+
name: string;
|
|
106
|
+
includeStatus?: boolean;
|
|
107
|
+
};
|
|
108
|
+
export interface ClientConfig {
|
|
109
|
+
unary: UnaryClient;
|
|
110
|
+
tasks: task.Client;
|
|
111
|
+
cache: query.Cache;
|
|
112
|
+
statusStore: query.Table<status.Key, status.Status>;
|
|
113
|
+
ontology: ontology.Client;
|
|
114
|
+
}
|
|
115
|
+
export declare class Client extends query.Retriever<typeof retrieveMultiParamsZ, Key, Omit<Payload, "status">, Rack, RetrieveSingleParams, SingleQuery> {
|
|
116
|
+
private readonly cfg;
|
|
117
|
+
private readonly store;
|
|
118
|
+
constructor(cfg: ClientConfig);
|
|
119
|
+
delete(keys: Key | Key[], opts?: query.WriteOptions): Promise<void>;
|
|
120
|
+
rename(key: Key, name: string, opts?: query.WriteOptions): Promise<void>;
|
|
91
121
|
create(rack: New): Promise<Rack>;
|
|
92
122
|
create(racks: New[]): Promise<Rack[]>;
|
|
93
|
-
retrieve(args: RetrieveSingleParams): Promise<Rack>;
|
|
94
|
-
retrieve(args: RetrieveMultipleParams): Promise<Rack[]>;
|
|
95
123
|
sugar(payload: Payload): Rack;
|
|
96
124
|
sugar(payloads: Payload[]): Rack[];
|
|
125
|
+
/** Rebuilds a cached rack, attaching its cached status when requested. */
|
|
126
|
+
private compose;
|
|
127
|
+
private statusOf;
|
|
128
|
+
/** Writes fetched racks and their included statuses. */
|
|
129
|
+
private writeThrough;
|
|
130
|
+
private execRetrieve;
|
|
131
|
+
/** Fetches racks and writes their included statuses through the caches. */
|
|
132
|
+
private fetchThrough;
|
|
133
|
+
private fetchSingle;
|
|
97
134
|
}
|
|
98
135
|
export declare class Rack {
|
|
99
136
|
key: Key;
|
|
100
137
|
name: string;
|
|
101
138
|
status?: Status;
|
|
102
|
-
integrations
|
|
139
|
+
integrations: string[];
|
|
140
|
+
embedded: boolean;
|
|
103
141
|
private readonly tasks;
|
|
104
|
-
constructor(key: Key, name: string, taskClient: task.Client, status?: Status, integrations?: string[]);
|
|
142
|
+
constructor(key: Key, name: string, taskClient: task.Client, status?: Status, integrations?: string[], embedded?: boolean);
|
|
105
143
|
listTasks(): Promise<task.Task[]>;
|
|
106
144
|
createTask(task: task.New): Promise<task.Task>;
|
|
107
145
|
createTask<Schemas extends task.Schemas = task.Schemas>(task: task.New<Schemas>, schemas: Schemas): Promise<task.Task<Schemas>>;
|