@synnaxlabs/client 0.38.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +7 -7
- package/dist/access/payload.d.ts +6 -6
- package/dist/access/payload.d.ts.map +1 -1
- package/dist/access/policy/client.d.ts +5 -3
- package/dist/access/policy/client.d.ts.map +1 -1
- package/dist/access/policy/external.d.ts +1 -0
- package/dist/access/policy/external.d.ts.map +1 -1
- package/dist/access/policy/ontology.d.ts +5 -0
- package/dist/access/policy/ontology.d.ts.map +1 -0
- package/dist/access/policy/payload.d.ts +86 -89
- package/dist/access/policy/payload.d.ts.map +1 -1
- package/dist/access/policy/retriever.d.ts +7 -6
- package/dist/access/policy/retriever.d.ts.map +1 -1
- package/dist/access/policy/writer.d.ts +2 -2
- package/dist/access/policy/writer.d.ts.map +1 -1
- package/dist/auth/auth.d.ts +2 -1
- package/dist/auth/auth.d.ts.map +1 -1
- package/dist/channel/client.d.ts +8 -7
- package/dist/channel/client.d.ts.map +1 -1
- package/dist/channel/payload.d.ts +13 -11
- package/dist/channel/payload.d.ts.map +1 -1
- package/dist/channel/retriever.d.ts +9 -6
- package/dist/channel/retriever.d.ts.map +1 -1
- package/dist/channel/writer.d.ts +6 -4
- package/dist/channel/writer.d.ts.map +1 -1
- package/dist/client.cjs +30 -30
- package/dist/client.d.ts +4 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3488 -3500
- package/dist/connection/checker.d.ts +5 -4
- package/dist/connection/checker.d.ts.map +1 -1
- package/dist/control/state.d.ts +10 -8
- package/dist/control/state.d.ts.map +1 -1
- package/dist/errors.d.ts +5 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/framer/adapter.d.ts +14 -15
- package/dist/framer/adapter.d.ts.map +1 -1
- package/dist/framer/client.d.ts +13 -15
- package/dist/framer/client.d.ts.map +1 -1
- package/dist/framer/deleter.d.ts +3 -2
- package/dist/framer/deleter.d.ts.map +1 -1
- package/dist/framer/frame.d.ts +31 -27
- package/dist/framer/frame.d.ts.map +1 -1
- package/dist/framer/iterator.d.ts +4 -5
- package/dist/framer/iterator.d.ts.map +1 -1
- package/dist/framer/streamer.d.ts +5 -6
- package/dist/framer/streamer.d.ts.map +1 -1
- package/dist/framer/writer.d.ts +42 -39
- package/dist/framer/writer.d.ts.map +1 -1
- package/dist/hardware/device/client.d.ts +17 -12
- package/dist/hardware/device/client.d.ts.map +1 -1
- package/dist/hardware/device/payload.d.ts +19 -16
- package/dist/hardware/device/payload.d.ts.map +1 -1
- package/dist/hardware/rack/client.d.ts +15 -15
- package/dist/hardware/rack/client.d.ts.map +1 -1
- package/dist/hardware/rack/payload.d.ts +9 -8
- package/dist/hardware/rack/payload.d.ts.map +1 -1
- package/dist/hardware/task/client.d.ts +38 -29
- package/dist/hardware/task/client.d.ts.map +1 -1
- package/dist/hardware/task/payload.d.ts +58 -53
- package/dist/hardware/task/payload.d.ts.map +1 -1
- package/dist/label/client.d.ts +4 -3
- package/dist/label/client.d.ts.map +1 -1
- package/dist/label/payload.d.ts +4 -4
- package/dist/label/payload.d.ts.map +1 -1
- package/dist/label/retriever.d.ts.map +1 -1
- package/dist/label/writer.d.ts +13 -10
- package/dist/label/writer.d.ts.map +1 -1
- package/dist/ontology/client.d.ts +12 -10
- package/dist/ontology/client.d.ts.map +1 -1
- package/dist/ontology/group/client.d.ts +5 -4
- package/dist/ontology/group/client.d.ts.map +1 -1
- package/dist/ontology/group/group.d.ts +7 -5
- package/dist/ontology/group/group.d.ts.map +1 -1
- package/dist/ontology/group/payload.d.ts +6 -5
- package/dist/ontology/group/payload.d.ts.map +1 -1
- package/dist/ontology/group/writer.d.ts +8 -8
- package/dist/ontology/group/writer.d.ts.map +1 -1
- package/dist/ontology/payload.d.ts +72 -62
- package/dist/ontology/payload.d.ts.map +1 -1
- package/dist/ontology/writer.d.ts.map +1 -1
- package/dist/ranger/alias.d.ts +9 -10
- package/dist/ranger/alias.d.ts.map +1 -1
- package/dist/ranger/client.d.ts +18 -18
- package/dist/ranger/client.d.ts.map +1 -1
- package/dist/ranger/external.d.ts +1 -1
- package/dist/ranger/external.d.ts.map +1 -1
- package/dist/ranger/kv.d.ts +18 -14
- package/dist/ranger/kv.d.ts.map +1 -1
- package/dist/ranger/payload.d.ts +13 -13
- package/dist/ranger/payload.d.ts.map +1 -1
- package/dist/ranger/writer.d.ts +14 -14
- package/dist/ranger/writer.d.ts.map +1 -1
- package/dist/setupspecs.d.ts.map +1 -1
- package/dist/signals/observable.d.ts +3 -1
- package/dist/signals/observable.d.ts.map +1 -1
- package/dist/user/client.d.ts +5 -3
- package/dist/user/client.d.ts.map +1 -1
- package/dist/user/payload.d.ts +7 -6
- package/dist/user/payload.d.ts.map +1 -1
- package/dist/user/retriever.d.ts +2 -1
- package/dist/user/retriever.d.ts.map +1 -1
- package/dist/user/writer.d.ts +2 -2
- package/dist/user/writer.d.ts.map +1 -1
- package/dist/util/decodeJSONString.d.ts +3 -0
- package/dist/util/decodeJSONString.d.ts.map +1 -0
- package/dist/util/parseWithoutKeyConversion.d.ts +3 -0
- package/dist/util/parseWithoutKeyConversion.d.ts.map +1 -0
- package/dist/util/retrieve.d.ts +1 -1
- package/dist/util/retrieve.d.ts.map +1 -1
- package/dist/util/telem.d.ts.map +1 -1
- package/dist/util/zod.d.ts.map +1 -1
- package/dist/workspace/client.d.ts +6 -60
- package/dist/workspace/client.d.ts.map +1 -1
- package/dist/workspace/external.d.ts +3 -0
- package/dist/workspace/external.d.ts.map +1 -0
- package/dist/workspace/index.d.ts +1 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/lineplot/client.d.ts +5 -44
- package/dist/workspace/lineplot/client.d.ts.map +1 -1
- package/dist/workspace/lineplot/external.d.ts +3 -0
- package/dist/workspace/lineplot/external.d.ts.map +1 -0
- package/dist/workspace/lineplot/index.d.ts +1 -1
- package/dist/workspace/lineplot/index.d.ts.map +1 -1
- package/dist/workspace/lineplot/payload.d.ts +45 -0
- package/dist/workspace/lineplot/payload.d.ts.map +1 -0
- package/dist/workspace/log/client.d.ts +5 -44
- package/dist/workspace/log/client.d.ts.map +1 -1
- package/dist/workspace/log/external.d.ts +3 -0
- package/dist/workspace/log/external.d.ts.map +1 -0
- package/dist/workspace/log/index.d.ts +1 -1
- package/dist/workspace/log/index.d.ts.map +1 -1
- package/dist/workspace/log/payload.d.ts +45 -0
- package/dist/workspace/log/payload.d.ts.map +1 -0
- package/dist/workspace/payload.d.ts +60 -0
- package/dist/workspace/payload.d.ts.map +1 -0
- package/dist/workspace/schematic/client.d.ts +5 -68
- package/dist/workspace/schematic/client.d.ts.map +1 -1
- package/dist/workspace/schematic/external.d.ts +3 -0
- package/dist/workspace/schematic/external.d.ts.map +1 -0
- package/dist/workspace/schematic/index.d.ts +1 -1
- package/dist/workspace/schematic/index.d.ts.map +1 -1
- package/dist/workspace/schematic/payload.d.ts +71 -0
- package/dist/workspace/schematic/payload.d.ts.map +1 -0
- package/dist/workspace/table/client.d.ts +5 -57
- package/dist/workspace/table/client.d.ts.map +1 -1
- package/dist/workspace/table/external.d.ts +3 -0
- package/dist/workspace/table/external.d.ts.map +1 -0
- package/dist/workspace/table/index.d.ts +1 -1
- package/dist/workspace/table/index.d.ts.map +1 -1
- package/dist/workspace/table/payload.d.ts +60 -0
- package/dist/workspace/table/payload.d.ts.map +1 -0
- package/eslint.config.js +1 -1
- package/examples/node/basicReadWrite.js +27 -27
- package/examples/node/liveStream.js +16 -16
- package/examples/node/seriesAndFrames.js +39 -39
- package/examples/node/streamWrite.js +48 -46
- package/package.json +14 -12
- package/src/access/client.ts +1 -1
- package/src/access/external.ts +1 -1
- package/src/access/index.ts +1 -1
- package/src/access/payload.ts +13 -13
- package/src/access/policy/client.ts +14 -13
- package/src/access/policy/external.ts +2 -1
- package/src/access/policy/index.ts +1 -1
- package/src/access/policy/ontology.ts +17 -0
- package/src/access/policy/payload.ts +8 -20
- package/src/access/policy/policy.spec.ts +17 -17
- package/src/access/policy/retriever.ts +3 -2
- package/src/access/policy/writer.ts +5 -5
- package/src/auth/auth.spec.ts +28 -24
- package/src/auth/auth.ts +8 -12
- package/src/auth/index.ts +1 -1
- package/src/channel/batchRetriever.spec.ts +26 -23
- package/src/channel/channel.spec.ts +1 -1
- package/src/channel/client.ts +24 -24
- package/src/channel/external.ts +1 -1
- package/src/channel/index.ts +1 -1
- package/src/channel/payload.ts +17 -21
- package/src/channel/retriever.ts +21 -22
- package/src/channel/writer.ts +12 -14
- package/src/client.ts +7 -17
- package/src/connection/checker.ts +10 -12
- package/src/connection/connection.spec.ts +18 -6
- package/src/connection/index.ts +1 -1
- package/src/control/client.ts +1 -1
- package/src/control/external.ts +1 -1
- package/src/control/index.ts +1 -1
- package/src/control/state.spec.ts +1 -1
- package/src/control/state.ts +9 -10
- package/src/errors.spec.ts +2 -2
- package/src/errors.ts +9 -1
- package/src/framer/adapter.spec.ts +29 -24
- package/src/framer/adapter.ts +38 -42
- package/src/framer/client.spec.ts +6 -12
- package/src/framer/client.ts +35 -39
- package/src/framer/deleter.spec.ts +1 -1
- package/src/framer/deleter.ts +6 -7
- package/src/framer/external.ts +1 -1
- package/src/framer/frame.spec.ts +1 -1
- package/src/framer/frame.ts +63 -51
- package/src/framer/index.ts +1 -1
- package/src/framer/iterator.spec.ts +1 -1
- package/src/framer/iterator.ts +12 -17
- package/src/framer/streamProxy.ts +2 -2
- package/src/framer/streamer.spec.ts +3 -11
- package/src/framer/streamer.ts +16 -20
- package/src/framer/writer.spec.ts +49 -8
- package/src/framer/writer.ts +40 -32
- package/src/hardware/client.ts +1 -1
- package/src/hardware/device/client.ts +65 -40
- package/src/hardware/device/device.spec.ts +50 -34
- package/src/hardware/device/external.ts +1 -1
- package/src/hardware/device/index.ts +1 -1
- package/src/hardware/device/payload.ts +30 -30
- package/src/hardware/external.ts +1 -1
- package/src/hardware/index.ts +1 -1
- package/src/hardware/rack/client.ts +53 -66
- package/src/hardware/rack/external.ts +1 -1
- package/src/hardware/rack/index.ts +1 -1
- package/src/hardware/rack/payload.ts +10 -19
- package/src/hardware/rack/rack.spec.ts +13 -1
- package/src/hardware/task/client.ts +161 -132
- package/src/hardware/task/external.ts +1 -1
- package/src/hardware/task/index.ts +1 -1
- package/src/hardware/task/payload.ts +50 -69
- package/src/hardware/task/task.spec.ts +99 -82
- package/src/index.ts +1 -1
- package/src/label/client.ts +13 -16
- package/src/label/external.ts +1 -1
- package/src/label/index.ts +1 -1
- package/src/label/label.spec.ts +1 -1
- package/src/label/payload.ts +4 -10
- package/src/label/retriever.ts +4 -8
- package/src/label/writer.ts +9 -16
- package/src/ontology/client.ts +31 -29
- package/src/ontology/external.ts +1 -1
- package/src/ontology/group/client.ts +6 -6
- package/src/ontology/group/external.ts +1 -1
- package/src/ontology/group/group.spec.ts +5 -5
- package/src/ontology/group/group.ts +11 -8
- package/src/ontology/group/index.ts +1 -1
- package/src/ontology/group/payload.ts +12 -36
- package/src/ontology/group/writer.ts +23 -27
- package/src/ontology/index.ts +1 -1
- package/src/ontology/ontology.spec.ts +16 -16
- package/src/ontology/payload.ts +68 -44
- package/src/ontology/writer.ts +17 -24
- package/src/ranger/alias.ts +26 -43
- package/src/ranger/client.ts +34 -41
- package/src/ranger/external.ts +2 -2
- package/src/ranger/index.ts +1 -1
- package/src/ranger/kv.ts +10 -33
- package/src/ranger/payload.ts +15 -37
- package/src/ranger/ranger.spec.ts +2 -3
- package/src/ranger/writer.ts +9 -27
- package/src/setupspecs.ts +1 -1
- package/src/signals/external.ts +1 -1
- package/src/signals/index.ts +1 -1
- package/src/signals/observable.ts +4 -5
- package/src/transport.ts +1 -1
- package/src/user/client.ts +9 -5
- package/src/user/external.ts +1 -1
- package/src/user/index.ts +1 -1
- package/src/user/payload.ts +6 -10
- package/src/user/retriever.ts +2 -2
- package/src/user/user.spec.ts +18 -16
- package/src/user/writer.ts +4 -11
- package/src/util/decodeJSONString.ts +13 -0
- package/src/util/parseWithoutKeyConversion.ts +19 -0
- package/src/util/retrieve.spec.ts +4 -14
- package/src/util/retrieve.ts +3 -13
- package/src/util/telem.ts +2 -2
- package/src/util/zod.ts +1 -1
- package/src/vite-env.d.ts +2 -1
- package/src/workspace/client.ts +39 -57
- package/src/workspace/external.ts +11 -0
- package/src/workspace/index.ts +2 -2
- package/src/workspace/lineplot/client.ts +31 -36
- package/src/workspace/lineplot/external.ts +11 -0
- package/src/workspace/lineplot/index.ts +2 -2
- package/src/workspace/lineplot/linePlot.spec.ts +2 -3
- package/src/workspace/lineplot/payload.ts +32 -0
- package/src/workspace/log/client.ts +34 -39
- package/src/workspace/log/external.ts +11 -0
- package/src/workspace/log/index.ts +2 -2
- package/src/workspace/log/log.spec.ts +6 -19
- package/src/workspace/log/payload.ts +32 -0
- package/src/workspace/payload.ts +36 -0
- package/src/workspace/schematic/client.ts +39 -56
- package/src/workspace/schematic/external.ts +11 -0
- package/src/workspace/schematic/index.ts +2 -2
- package/src/workspace/schematic/payload.ts +37 -0
- package/src/workspace/schematic/schematic.spec.ts +16 -7
- package/src/workspace/table/client.ts +36 -50
- package/src/workspace/table/external.ts +11 -0
- package/src/workspace/table/index.ts +2 -2
- package/src/workspace/table/payload.ts +36 -0
- package/src/workspace/table/table.spec.ts +1 -1
- package/src/workspace/workspace.spec.ts +2 -3
- package/vite.config.ts +1 -1
- package/dist/channel/creator.d.ts +0 -9
- package/dist/channel/creator.d.ts.map +0 -1
- package/src/channel/creator.ts +0 -37
|
@@ -1,35 +1,30 @@
|
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
1
10
|
import { sendRequired, type UnaryClient } from "@synnaxlabs/freighter";
|
|
2
11
|
import { toArray, type UnknownRecord } from "@synnaxlabs/x";
|
|
3
|
-
import { unknownRecordZ } from "@synnaxlabs/x/record";
|
|
4
12
|
import { z } from "zod";
|
|
5
13
|
|
|
6
14
|
import { ontology } from "@/ontology";
|
|
7
15
|
import { nullableArrayZ } from "@/util/zod";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export const schematicRemoteZ = z.object({
|
|
21
|
-
key: z.string(),
|
|
22
|
-
name: z.string(),
|
|
23
|
-
snapshot: z.boolean(),
|
|
24
|
-
data: z.string().transform((s) => JSON.parse(s) as UnknownRecord),
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
export type Schematic = z.infer<typeof schematicZ>;
|
|
28
|
-
|
|
29
|
-
export const ONTOLOGY_TYPE: ontology.ResourceType = "schematic";
|
|
30
|
-
|
|
31
|
-
export const ontologyID = (key: Key): ontology.ID =>
|
|
32
|
-
new ontology.ID({ type: ONTOLOGY_TYPE, key });
|
|
16
|
+
import { type Key as WorkspaceKey, keyZ as workspaceKeyZ } from "@/workspace/payload";
|
|
17
|
+
import {
|
|
18
|
+
type Key,
|
|
19
|
+
keyZ,
|
|
20
|
+
type New,
|
|
21
|
+
newZ,
|
|
22
|
+
ONTOLOGY_TYPE,
|
|
23
|
+
type Params,
|
|
24
|
+
remoteZ,
|
|
25
|
+
type Schematic,
|
|
26
|
+
schematicZ,
|
|
27
|
+
} from "@/workspace/schematic/payload";
|
|
33
28
|
|
|
34
29
|
const RETRIEVE_ENDPOINT = "/workspace/schematic/retrieve";
|
|
35
30
|
const CREATE_ENDPOINT = "/workspace/schematic/create";
|
|
@@ -38,27 +33,15 @@ const SET_DATA_ENDPOINT = "/workspace/schematic/set-data";
|
|
|
38
33
|
const DELETE_ENDPOINT = "/workspace/schematic/delete";
|
|
39
34
|
const COPY_ENDPOINT = "/workspace/schematic/copy";
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
export type NewSchematic = z.input<typeof newSchematicZ>;
|
|
49
|
-
|
|
50
|
-
const retrieveReqZ = z.object({ keys: z.string().array() });
|
|
51
|
-
const createReqZ = z.object({
|
|
52
|
-
workspace: z.string(),
|
|
53
|
-
schematics: newSchematicZ.array(),
|
|
54
|
-
});
|
|
55
|
-
const renameReqZ = z.object({ key: z.string(), name: z.string() });
|
|
56
|
-
const setDataReqZ = z.object({ key: z.string(), data: z.string() });
|
|
57
|
-
const deleteReqZ = z.object({ keys: z.string().array() });
|
|
58
|
-
const copyReqZ = z.object({ key: z.string(), name: z.string(), snapshot: z.boolean() });
|
|
36
|
+
const retrieveReqZ = z.object({ keys: keyZ.array() });
|
|
37
|
+
const createReqZ = z.object({ workspace: workspaceKeyZ, schematics: newZ.array() });
|
|
38
|
+
const renameReqZ = z.object({ key: keyZ, name: z.string() });
|
|
39
|
+
const setDataReqZ = z.object({ key: keyZ, data: z.string() });
|
|
40
|
+
const deleteReqZ = z.object({ keys: keyZ.array() });
|
|
41
|
+
const copyReqZ = z.object({ key: keyZ, name: z.string(), snapshot: z.boolean() });
|
|
59
42
|
|
|
60
|
-
const retrieveResZ = z.object({ schematics: nullableArrayZ(
|
|
61
|
-
const createResZ = z.object({ schematics:
|
|
43
|
+
const retrieveResZ = z.object({ schematics: nullableArrayZ(remoteZ) });
|
|
44
|
+
const createResZ = z.object({ schematics: remoteZ.array() });
|
|
62
45
|
const copyResZ = z.object({ schematic: schematicZ });
|
|
63
46
|
const emptyResZ = z.object({});
|
|
64
47
|
|
|
@@ -69,18 +52,17 @@ export class Client {
|
|
|
69
52
|
this.client = client;
|
|
70
53
|
}
|
|
71
54
|
|
|
72
|
-
async create(workspace:
|
|
73
|
-
async create(workspace:
|
|
55
|
+
async create(workspace: WorkspaceKey, schematic: New): Promise<Schematic>;
|
|
56
|
+
async create(workspace: WorkspaceKey, schematics: New[]): Promise<Schematic[]>;
|
|
74
57
|
async create(
|
|
75
|
-
workspace:
|
|
76
|
-
schematics:
|
|
58
|
+
workspace: WorkspaceKey,
|
|
59
|
+
schematics: New | New[],
|
|
77
60
|
): Promise<Schematic | Schematic[]> {
|
|
78
61
|
const isMany = Array.isArray(schematics);
|
|
79
|
-
const normalized = toArray(schematics);
|
|
80
62
|
const res = await sendRequired(
|
|
81
63
|
this.client,
|
|
82
64
|
CREATE_ENDPOINT,
|
|
83
|
-
{ workspace, schematics:
|
|
65
|
+
{ workspace, schematics: toArray(schematics) },
|
|
84
66
|
createReqZ,
|
|
85
67
|
createResZ,
|
|
86
68
|
);
|
|
@@ -111,11 +93,10 @@ export class Client {
|
|
|
111
93
|
async retrieve(keys: Key[]): Promise<Schematic[]>;
|
|
112
94
|
async retrieve(keys: Params): Promise<Schematic | Schematic[]> {
|
|
113
95
|
const isMany = Array.isArray(keys);
|
|
114
|
-
const normalized = toArray(keys);
|
|
115
96
|
const res = await sendRequired(
|
|
116
97
|
this.client,
|
|
117
98
|
RETRIEVE_ENDPOINT,
|
|
118
|
-
{ keys:
|
|
99
|
+
{ keys: toArray(keys) },
|
|
119
100
|
retrieveReqZ,
|
|
120
101
|
retrieveResZ,
|
|
121
102
|
);
|
|
@@ -125,11 +106,10 @@ export class Client {
|
|
|
125
106
|
async delete(key: Key): Promise<void>;
|
|
126
107
|
async delete(keys: Key[]): Promise<void>;
|
|
127
108
|
async delete(keys: Params): Promise<void> {
|
|
128
|
-
const normalized = toArray(keys);
|
|
129
109
|
await sendRequired(
|
|
130
110
|
this.client,
|
|
131
111
|
DELETE_ENDPOINT,
|
|
132
|
-
{ keys:
|
|
112
|
+
{ keys: toArray(keys) },
|
|
133
113
|
deleteReqZ,
|
|
134
114
|
emptyResZ,
|
|
135
115
|
);
|
|
@@ -146,3 +126,6 @@ export class Client {
|
|
|
146
126
|
return res.schematic;
|
|
147
127
|
}
|
|
148
128
|
}
|
|
129
|
+
|
|
130
|
+
export const ontologyID = (key: Key): ontology.ID =>
|
|
131
|
+
new ontology.ID({ type: ONTOLOGY_TYPE, key });
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
10
|
+
export * from "@/workspace/schematic/client";
|
|
11
|
+
export * from "@/workspace/schematic/payload";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Use of this software is governed by the Business Source License included in the file
|
|
4
4
|
// licenses/BSL.txt.
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
export * as schematic from "@/workspace/schematic/
|
|
10
|
+
export * as schematic from "@/workspace/schematic/external";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
10
|
+
import { unknownRecordZ } from "@synnaxlabs/x/record";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
|
|
13
|
+
import { parseWithoutKeyConversion } from "@/util/parseWithoutKeyConversion";
|
|
14
|
+
|
|
15
|
+
export const keyZ = z.string().uuid();
|
|
16
|
+
export type Key = z.infer<typeof keyZ>;
|
|
17
|
+
export type Params = Key | Key[];
|
|
18
|
+
|
|
19
|
+
export const schematicZ = z.object({
|
|
20
|
+
key: keyZ,
|
|
21
|
+
name: z.string(),
|
|
22
|
+
data: unknownRecordZ.or(z.string().transform(parseWithoutKeyConversion)),
|
|
23
|
+
snapshot: z.boolean(),
|
|
24
|
+
});
|
|
25
|
+
export interface Schematic extends z.infer<typeof schematicZ> {}
|
|
26
|
+
|
|
27
|
+
export const newZ = schematicZ
|
|
28
|
+
.partial({ key: true, snapshot: true })
|
|
29
|
+
.transform((p) => ({ ...p, data: JSON.stringify(p.data) }));
|
|
30
|
+
export interface New extends z.input<typeof newZ> {}
|
|
31
|
+
|
|
32
|
+
export const remoteZ = schematicZ.extend({
|
|
33
|
+
data: z.string().transform(parseWithoutKeyConversion),
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export const ONTOLOGY_TYPE = "schematic";
|
|
37
|
+
export type OntologyType = typeof ONTOLOGY_TYPE;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Use of this software is governed by the Business Source License included in the file
|
|
4
4
|
// licenses/BSL.txt.
|
|
@@ -7,15 +7,14 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { NIL as ZERO_UUID } from "uuid";
|
|
11
|
+
import { describe, expect, it, test } from "vitest";
|
|
11
12
|
|
|
12
13
|
import { ValidationError } from "@/errors";
|
|
13
14
|
import { newClient } from "@/setupspecs";
|
|
14
15
|
|
|
15
16
|
const client = newClient();
|
|
16
17
|
|
|
17
|
-
const ZERO_UUID = "00000000-0000-0000-0000-000000000000";
|
|
18
|
-
|
|
19
18
|
describe("Schematic", () => {
|
|
20
19
|
describe("create", () => {
|
|
21
20
|
test("create one", async () => {
|
|
@@ -73,7 +72,9 @@ describe("Schematic", () => {
|
|
|
73
72
|
data: { one: 1 },
|
|
74
73
|
});
|
|
75
74
|
await client.workspaces.schematic.delete(schematic.key);
|
|
76
|
-
await expect(
|
|
75
|
+
await expect(
|
|
76
|
+
client.workspaces.schematic.retrieve(schematic.key),
|
|
77
|
+
).rejects.toThrow();
|
|
77
78
|
});
|
|
78
79
|
});
|
|
79
80
|
describe("copy", () => {
|
|
@@ -86,7 +87,11 @@ describe("Schematic", () => {
|
|
|
86
87
|
name: "Schematic",
|
|
87
88
|
data: { one: 1 },
|
|
88
89
|
});
|
|
89
|
-
const schematic2 = await client.workspaces.schematic.copy(
|
|
90
|
+
const schematic2 = await client.workspaces.schematic.copy(
|
|
91
|
+
schematic.key,
|
|
92
|
+
"Schematic2",
|
|
93
|
+
false,
|
|
94
|
+
);
|
|
90
95
|
expect(schematic2.name).toEqual("Schematic2");
|
|
91
96
|
expect(schematic2.key).not.toEqual(ZERO_UUID);
|
|
92
97
|
expect(schematic2.data.one).toEqual(1);
|
|
@@ -101,7 +106,11 @@ describe("Schematic", () => {
|
|
|
101
106
|
name: "Schematic",
|
|
102
107
|
data: { one: 1 },
|
|
103
108
|
});
|
|
104
|
-
const schematic2 = await client.workspaces.schematic.copy(
|
|
109
|
+
const schematic2 = await client.workspaces.schematic.copy(
|
|
110
|
+
schematic.key,
|
|
111
|
+
"Schematic2",
|
|
112
|
+
true,
|
|
113
|
+
);
|
|
105
114
|
await expect(
|
|
106
115
|
client.workspaces.schematic.setData(schematic2.key, { two: 2 }),
|
|
107
116
|
).rejects.toThrow(ValidationError);
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
1
10
|
import { sendRequired, type UnaryClient } from "@synnaxlabs/freighter";
|
|
2
11
|
import { toArray, type UnknownRecord } from "@synnaxlabs/x";
|
|
3
|
-
import { unknownRecordZ } from "@synnaxlabs/x/record";
|
|
4
12
|
import { z } from "zod";
|
|
5
13
|
|
|
6
14
|
import { ontology } from "@/ontology";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export type Table = z.infer<typeof tableZ>;
|
|
19
|
-
|
|
20
|
-
export const ONTOLOGY_TYPE: ontology.ResourceType = "table";
|
|
21
|
-
|
|
22
|
-
export const ontologyID = (key: Key): ontology.ID =>
|
|
23
|
-
new ontology.ID({ type: ONTOLOGY_TYPE, key });
|
|
15
|
+
import { type Key as WorkspaceKey, keyZ as workspaceKeyZ } from "@/workspace/payload";
|
|
16
|
+
import {
|
|
17
|
+
type Key,
|
|
18
|
+
keyZ,
|
|
19
|
+
type New,
|
|
20
|
+
newZ,
|
|
21
|
+
ONTOLOGY_TYPE,
|
|
22
|
+
type Params,
|
|
23
|
+
remoteZ,
|
|
24
|
+
type Table,
|
|
25
|
+
} from "@/workspace/table/payload";
|
|
24
26
|
|
|
25
27
|
const RETRIEVE_ENDPOINT = "/workspace/table/retrieve";
|
|
26
28
|
const CREATE_ENDPOINT = "/workspace/table/create";
|
|
@@ -28,27 +30,14 @@ const RENAME_ENDPOINT = "/workspace/table/rename";
|
|
|
28
30
|
const SET_DATA_ENDPOINT = "/workspace/table/set-data";
|
|
29
31
|
const DELETE_ENDPOINT = "/workspace/table/delete";
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
export type NewTable = z.input<typeof newTableZ>;
|
|
37
|
-
|
|
38
|
-
export const tableRemoteZ = z.object({
|
|
39
|
-
key: z.string(),
|
|
40
|
-
name: z.string(),
|
|
41
|
-
data: z.string().transform((s) => JSON.parse(s) as UnknownRecord),
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
const retrieveReqZ = z.object({ keys: z.string().array() });
|
|
45
|
-
const createReqZ = z.object({ workspace: z.string(), tables: newTableZ.array() });
|
|
46
|
-
const renameReqZ = z.object({ key: z.string(), name: z.string() });
|
|
47
|
-
const setDataReqZ = z.object({ key: z.string(), data: z.string() });
|
|
48
|
-
const deleteReqZ = z.object({ keys: z.string().array() });
|
|
33
|
+
const retrieveReqZ = z.object({ keys: keyZ.array() });
|
|
34
|
+
const createReqZ = z.object({ workspace: workspaceKeyZ, tables: newZ.array() });
|
|
35
|
+
const renameReqZ = z.object({ key: keyZ, name: z.string() });
|
|
36
|
+
const setDataReqZ = z.object({ key: keyZ, data: z.string() });
|
|
37
|
+
const deleteReqZ = z.object({ keys: keyZ.array() });
|
|
49
38
|
|
|
50
|
-
const retrieveResZ = z.object({ tables:
|
|
51
|
-
const createResZ = z.object({ tables:
|
|
39
|
+
const retrieveResZ = z.object({ tables: remoteZ.array() });
|
|
40
|
+
const createResZ = z.object({ tables: remoteZ.array() });
|
|
52
41
|
const emptyResZ = z.object({});
|
|
53
42
|
|
|
54
43
|
export class Client {
|
|
@@ -58,18 +47,14 @@ export class Client {
|
|
|
58
47
|
this.client = client;
|
|
59
48
|
}
|
|
60
49
|
|
|
61
|
-
async create(workspace:
|
|
62
|
-
async create(workspace:
|
|
63
|
-
async create(
|
|
64
|
-
workspace: string,
|
|
65
|
-
tables: NewTable | NewTable[],
|
|
66
|
-
): Promise<Table | Table[]> {
|
|
50
|
+
async create(workspace: WorkspaceKey, table: New): Promise<Table>;
|
|
51
|
+
async create(workspace: WorkspaceKey, tables: New[]): Promise<Table[]>;
|
|
52
|
+
async create(workspace: WorkspaceKey, tables: New | New[]): Promise<Table | Table[]> {
|
|
67
53
|
const isMany = Array.isArray(tables);
|
|
68
|
-
const normalized = toArray(tables);
|
|
69
54
|
const res = await sendRequired(
|
|
70
55
|
this.client,
|
|
71
56
|
CREATE_ENDPOINT,
|
|
72
|
-
{ workspace, tables:
|
|
57
|
+
{ workspace, tables: toArray(tables) },
|
|
73
58
|
createReqZ,
|
|
74
59
|
createResZ,
|
|
75
60
|
);
|
|
@@ -100,11 +85,10 @@ export class Client {
|
|
|
100
85
|
async retrieve(keys: Key[]): Promise<Table[]>;
|
|
101
86
|
async retrieve(keys: Params): Promise<Table | Table[]> {
|
|
102
87
|
const isMany = Array.isArray(keys);
|
|
103
|
-
const normalized = toArray(keys);
|
|
104
88
|
const res = await sendRequired(
|
|
105
89
|
this.client,
|
|
106
90
|
RETRIEVE_ENDPOINT,
|
|
107
|
-
{ keys:
|
|
91
|
+
{ keys: toArray(keys) },
|
|
108
92
|
retrieveReqZ,
|
|
109
93
|
retrieveResZ,
|
|
110
94
|
);
|
|
@@ -114,13 +98,15 @@ export class Client {
|
|
|
114
98
|
async delete(key: Key): Promise<void>;
|
|
115
99
|
async delete(keys: Key[]): Promise<void>;
|
|
116
100
|
async delete(keys: Params): Promise<void> {
|
|
117
|
-
const normalized = toArray(keys);
|
|
118
101
|
await sendRequired(
|
|
119
102
|
this.client,
|
|
120
103
|
DELETE_ENDPOINT,
|
|
121
|
-
{ keys:
|
|
104
|
+
{ keys: toArray(keys) },
|
|
122
105
|
deleteReqZ,
|
|
123
106
|
emptyResZ,
|
|
124
107
|
);
|
|
125
108
|
}
|
|
126
109
|
}
|
|
110
|
+
|
|
111
|
+
export const ontologyID = (key: Key): ontology.ID =>
|
|
112
|
+
new ontology.ID({ type: ONTOLOGY_TYPE, key });
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
10
|
+
export * from "@/workspace/table/client";
|
|
11
|
+
export * from "@/workspace/table/payload";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Use of this software is governed by the Business Source License included in the file
|
|
4
4
|
// licenses/BSL.txt.
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
export * as table from "@/workspace/table/
|
|
10
|
+
export * as table from "@/workspace/table/external";
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
10
|
+
import { unknownRecordZ } from "@synnaxlabs/x/record";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
|
|
13
|
+
import { parseWithoutKeyConversion } from "@/util/parseWithoutKeyConversion";
|
|
14
|
+
|
|
15
|
+
export const keyZ = z.string().uuid();
|
|
16
|
+
export type Key = z.infer<typeof keyZ>;
|
|
17
|
+
export type Params = Key | Key[];
|
|
18
|
+
|
|
19
|
+
export const tableZ = z.object({
|
|
20
|
+
key: keyZ,
|
|
21
|
+
name: z.string(),
|
|
22
|
+
data: unknownRecordZ.or(z.string().transform(parseWithoutKeyConversion)),
|
|
23
|
+
});
|
|
24
|
+
export interface Table extends z.infer<typeof tableZ> {}
|
|
25
|
+
|
|
26
|
+
export const newZ = tableZ
|
|
27
|
+
.partial({ key: true })
|
|
28
|
+
.transform((p) => ({ ...p, data: JSON.stringify(p.data) }));
|
|
29
|
+
export interface New extends z.input<typeof newZ> {}
|
|
30
|
+
|
|
31
|
+
export const remoteZ = tableZ.extend({
|
|
32
|
+
data: z.string().transform(parseWithoutKeyConversion),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export const ONTOLOGY_TYPE = "table";
|
|
36
|
+
export type OntologyType = typeof ONTOLOGY_TYPE;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 Synnax Labs, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Use of this software is governed by the Business Source License included in the file
|
|
4
4
|
// licenses/BSL.txt.
|
|
@@ -7,14 +7,13 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
+
import { NIL as ZERO_UUID } from "uuid";
|
|
10
11
|
import { describe, expect, test } from "vitest";
|
|
11
12
|
|
|
12
13
|
import { newClient } from "@/setupspecs";
|
|
13
14
|
|
|
14
15
|
const client = newClient();
|
|
15
16
|
|
|
16
|
-
const ZERO_UUID = "00000000-0000-0000-0000-000000000000";
|
|
17
|
-
|
|
18
17
|
describe("Workspace", () => {
|
|
19
18
|
describe("create", () => {
|
|
20
19
|
test("create one", async () => {
|
package/vite.config.ts
CHANGED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { UnaryClient } from '@synnaxlabs/freighter';
|
|
2
|
-
import { NewPayload, Payload } from './payload';
|
|
3
|
-
export declare class Creator {
|
|
4
|
-
private static readonly ENDPOINT;
|
|
5
|
-
private readonly client;
|
|
6
|
-
constructor(client: UnaryClient);
|
|
7
|
-
create(channels: NewPayload[]): Promise<Payload[]>;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=creator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"creator.d.ts","sourceRoot":"","sources":["../../src/channel/creator.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,KAAK,UAAU,EAAa,KAAK,OAAO,EAAW,MAAM,mBAAmB,CAAC;AAMtF,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,EAAE,WAAW;IAIzB,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAUzD"}
|
package/src/channel/creator.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// Copyright 2024 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 { UnaryClient } from "@synnaxlabs/freighter";
|
|
11
|
-
import { z } from "zod";
|
|
12
|
-
|
|
13
|
-
import { type NewPayload,newPayload, type Payload, payload } from "@/channel/payload";
|
|
14
|
-
|
|
15
|
-
const reqZ = z.object({ channels: newPayload.array() });
|
|
16
|
-
|
|
17
|
-
const resZ = z.object({ channels: payload.array() });
|
|
18
|
-
|
|
19
|
-
export class Creator {
|
|
20
|
-
private static readonly ENDPOINT = "/channel/create";
|
|
21
|
-
private readonly client: UnaryClient;
|
|
22
|
-
|
|
23
|
-
constructor(client: UnaryClient) {
|
|
24
|
-
this.client = client;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async create(channels: NewPayload[]): Promise<Payload[]> {
|
|
28
|
-
const [res, err] = await this.client.send<typeof reqZ, typeof resZ>(
|
|
29
|
-
Creator.ENDPOINT,
|
|
30
|
-
{ channels },
|
|
31
|
-
reqZ,
|
|
32
|
-
resZ,
|
|
33
|
-
);
|
|
34
|
-
if (err != null) throw err;
|
|
35
|
-
return res.channels;
|
|
36
|
-
}
|
|
37
|
-
}
|