@synnaxlabs/client 0.16.4 → 0.17.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 +5 -5
- package/dist/auth/auth.d.ts +2 -2
- package/dist/client.cjs +11 -11
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.ts +14 -4
- package/dist/client.js +5437 -5436
- package/dist/client.js.map +1 -1
- package/dist/framer/frame.d.ts +280 -24
- package/dist/framer/writer.d.ts +203 -15
- package/dist/hardware/rack/client.d.ts +1 -1
- package/dist/hardware/task/payload.d.ts +5 -5
- package/dist/ontology/retriever.d.ts +1 -1
- package/dist/ranger/active.d.ts +1 -1
- package/dist/ranger/payload.d.ts +308 -20
- package/dist/workspace/client.d.ts +2 -2
- package/dist/workspace/lineplot/client.d.ts +2 -2
- package/dist/workspace/lineplot/payload.d.ts +3 -16
- package/dist/workspace/lineplot/retriever.d.ts +0 -1
- package/dist/workspace/lineplot/writer.d.ts +9 -14
- package/dist/workspace/payload.d.ts +3 -3
- package/dist/workspace/pid/client.d.ts +2 -2
- package/dist/workspace/pid/payload.d.ts +3 -3
- package/dist/workspace/pid/retriever.d.ts +0 -1
- package/dist/workspace/pid/writer.d.ts +12 -18
- package/dist/workspace/writer.d.ts +14 -6
- package/examples/node/basicReadWriter.js +34 -5
- package/examples/node/package-lock.json +23 -23
- package/examples/node/package.json +1 -1
- package/package.json +3 -3
- package/src/auth/auth.ts +5 -4
- package/src/channel/client.ts +0 -1
- package/src/channel/creator.ts +1 -0
- package/src/channel/retriever.ts +2 -2
- package/src/client.ts +2 -2
- package/src/connection/checker.ts +1 -1
- package/src/framer/client.ts +1 -1
- package/src/framer/frame.ts +4 -4
- package/src/hardware/device/retriever.ts +3 -3
- package/src/hardware/device/writer.ts +3 -1
- package/src/hardware/rack/client.ts +3 -4
- package/src/hardware/rack/retriever.ts +3 -0
- package/src/hardware/rack/writer.ts +2 -0
- package/src/hardware/task/payload.ts +5 -4
- package/src/hardware/task/retriever.ts +10 -7
- package/src/hardware/task/writer.ts +3 -1
- package/src/label/retriever.ts +1 -0
- package/src/label/writer.ts +4 -0
- package/src/ontology/group/writer.ts +18 -5
- package/src/ontology/retriever.ts +9 -9
- package/src/ontology/writer.ts +25 -11
- package/src/ranger/active.ts +26 -8
- package/src/ranger/alias.ts +9 -13
- package/src/ranger/client.ts +0 -1
- package/src/ranger/kv.ts +4 -1
- package/src/ranger/retriever.ts +1 -1
- package/src/ranger/writer.ts +3 -0
- package/src/workspace/client.ts +3 -3
- package/src/workspace/lineplot/client.ts +2 -2
- package/src/workspace/lineplot/payload.ts +1 -7
- package/src/workspace/lineplot/retriever.ts +10 -11
- package/src/workspace/lineplot/writer.ts +13 -8
- package/src/workspace/payload.ts +1 -1
- package/src/workspace/pid/client.ts +2 -2
- package/src/workspace/pid/payload.ts +1 -1
- package/src/workspace/pid/retriever.ts +8 -10
- package/src/workspace/pid/writer.ts +12 -5
- package/src/workspace/retriever.ts +2 -4
- package/src/workspace/workspace.spec.ts +4 -4
- package/src/workspace/writer.ts +12 -10
|
@@ -2,43 +2,37 @@ import { type UnaryClient } from "@synnaxlabs/freighter";
|
|
|
2
2
|
import { type UnknownRecord } from "@synnaxlabs/x";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { type PID, type Params, type Key } from './payload';
|
|
5
|
-
export declare const
|
|
5
|
+
export declare const newPIDZ: z.ZodEffects<z.ZodObject<{
|
|
6
6
|
name: z.ZodString;
|
|
7
7
|
key: z.ZodOptional<z.ZodString>;
|
|
8
|
-
data: z.ZodRecord<z.ZodUnion<[z.ZodNumber, z.ZodString, z.ZodSymbol]>, z.ZodUnknown>;
|
|
9
|
-
snapshot: z.ZodBoolean
|
|
8
|
+
data: z.ZodUnion<[z.ZodRecord<z.ZodUnion<[z.ZodNumber, z.ZodString, z.ZodSymbol]>, z.ZodUnknown>, z.ZodEffects<z.ZodString, UnknownRecord, string>]>;
|
|
9
|
+
snapshot: z.ZodOptional<z.ZodBoolean>;
|
|
10
10
|
}, "strip", z.ZodTypeAny, {
|
|
11
11
|
name: string;
|
|
12
|
-
data: Record<string | number | symbol, unknown
|
|
13
|
-
snapshot: boolean;
|
|
12
|
+
data: (UnknownRecord | Record<string | number | symbol, unknown>) & (UnknownRecord | Record<string | number | symbol, unknown> | undefined);
|
|
14
13
|
key?: string | undefined;
|
|
14
|
+
snapshot?: boolean | undefined;
|
|
15
15
|
}, {
|
|
16
16
|
name: string;
|
|
17
|
-
data: Record<string | number | symbol, unknown
|
|
18
|
-
snapshot: boolean;
|
|
17
|
+
data: (string | Record<string | number | symbol, unknown>) & (string | Record<string | number | symbol, unknown> | undefined);
|
|
19
18
|
key?: string | undefined;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
key: z.ZodOptional<z.ZodString>;
|
|
24
|
-
data: z.ZodEffects<z.ZodString, UnknownRecord, string>;
|
|
25
|
-
snapshot: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
-
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
snapshot?: boolean | undefined;
|
|
20
|
+
}>, {
|
|
21
|
+
data: string;
|
|
27
22
|
name: string;
|
|
28
|
-
data: UnknownRecord;
|
|
29
23
|
key?: string | undefined;
|
|
30
24
|
snapshot?: boolean | undefined;
|
|
31
25
|
}, {
|
|
32
26
|
name: string;
|
|
33
|
-
data: string;
|
|
27
|
+
data: (string | Record<string | number | symbol, unknown>) & (string | Record<string | number | symbol, unknown> | undefined);
|
|
34
28
|
key?: string | undefined;
|
|
35
29
|
snapshot?: boolean | undefined;
|
|
36
30
|
}>;
|
|
37
|
-
export type
|
|
31
|
+
export type NewPID = z.input<typeof newPIDZ>;
|
|
38
32
|
export declare class Writer {
|
|
39
33
|
private readonly client;
|
|
40
34
|
constructor(client: UnaryClient);
|
|
41
|
-
create(workspace: string, pid:
|
|
35
|
+
create(workspace: string, pid: NewPID): Promise<PID>;
|
|
42
36
|
copy(key: Key, name: string, snapshot: boolean): Promise<PID>;
|
|
43
37
|
delete(params: Params): Promise<void>;
|
|
44
38
|
rename(pid: Key, name: string): Promise<void>;
|
|
@@ -2,20 +2,28 @@ import { type UnaryClient } from "@synnaxlabs/freighter";
|
|
|
2
2
|
import { type UnknownRecord } from "@synnaxlabs/x";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { type Workspace } from "./payload";
|
|
5
|
-
declare const
|
|
5
|
+
declare const newWorkspaceZ: z.ZodEffects<z.ZodObject<{
|
|
6
6
|
name: z.ZodString;
|
|
7
7
|
key: z.ZodOptional<z.ZodString>;
|
|
8
|
-
layout: z.ZodRecord<z.ZodUnion<[z.ZodNumber, z.ZodString, z.ZodSymbol]>, z.ZodUnknown>;
|
|
8
|
+
layout: z.ZodUnion<[z.ZodRecord<z.ZodUnion<[z.ZodNumber, z.ZodString, z.ZodSymbol]>, z.ZodUnknown>, z.ZodEffects<z.ZodString, UnknownRecord, string>]>;
|
|
9
9
|
}, "strip", z.ZodTypeAny, {
|
|
10
10
|
name: string;
|
|
11
|
-
layout: Record<string | number | symbol, unknown
|
|
11
|
+
layout: (UnknownRecord | Record<string | number | symbol, unknown>) & (UnknownRecord | Record<string | number | symbol, unknown> | undefined);
|
|
12
12
|
key?: string | undefined;
|
|
13
13
|
}, {
|
|
14
14
|
name: string;
|
|
15
|
-
layout: Record<string | number | symbol, unknown
|
|
15
|
+
layout: (string | Record<string | number | symbol, unknown>) & (string | Record<string | number | symbol, unknown> | undefined);
|
|
16
|
+
key?: string | undefined;
|
|
17
|
+
}>, {
|
|
18
|
+
layout: string;
|
|
19
|
+
name: string;
|
|
20
|
+
key?: string | undefined;
|
|
21
|
+
}, {
|
|
22
|
+
name: string;
|
|
23
|
+
layout: (string | Record<string | number | symbol, unknown>) & (string | Record<string | number | symbol, unknown> | undefined);
|
|
16
24
|
key?: string | undefined;
|
|
17
25
|
}>;
|
|
18
|
-
export type
|
|
26
|
+
export type NewWorkspace = z.input<typeof newWorkspaceZ>;
|
|
19
27
|
declare const createResZ: z.ZodObject<{
|
|
20
28
|
workspaces: z.ZodArray<z.ZodObject<{
|
|
21
29
|
name: z.ZodString;
|
|
@@ -47,7 +55,7 @@ export type CreateResponse = z.infer<typeof createResZ>;
|
|
|
47
55
|
export declare class Writer {
|
|
48
56
|
private readonly client;
|
|
49
57
|
constructor(client: UnaryClient);
|
|
50
|
-
create(workspaces:
|
|
58
|
+
create(workspaces: NewWorkspace | NewWorkspace[]): Promise<Workspace[]>;
|
|
51
59
|
delete(keys: string | string[]): Promise<void>;
|
|
52
60
|
rename(key: string, name: string): Promise<void>;
|
|
53
61
|
setLayout(key: string, layout: UnknownRecord): Promise<void>;
|
|
@@ -25,13 +25,42 @@ const N_SAMPLES = 500;
|
|
|
25
25
|
|
|
26
26
|
const start = TimeStamp.now();
|
|
27
27
|
|
|
28
|
+
console.log(BigInt(start.valueOf().toString()) - BigInt(start.bigInt.toString()))
|
|
29
|
+
|
|
28
30
|
const data = Float32Array.from({ length: N_SAMPLES }, (_, i) => Math.sin(i / 100));
|
|
29
|
-
const time = BigInt64Array.from({ length: N_SAMPLES }, (_, i) => start.add(TimeSpan.milliseconds(i)).
|
|
31
|
+
const time = BigInt64Array.from({ length: N_SAMPLES }, (_, i) => BigInt(start.add(TimeSpan.milliseconds(i)).valueOf()));
|
|
32
|
+
console.log(time[0], start, Number(time[0]) - start.valueOf())
|
|
30
33
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
//
|
|
34
|
+
console.log(time_channel.key, data_channel.key)
|
|
35
|
+
|
|
36
|
+
// await client.telem.write(time_channel.key, start, time);
|
|
37
|
+
// await client.telem.write(data_channel.key, start, data);
|
|
38
|
+
|
|
39
|
+
const w1 = await client.telem.newWriter({
|
|
40
|
+
start,
|
|
41
|
+
channels: time_channel.key,
|
|
42
|
+
});
|
|
43
|
+
try {
|
|
44
|
+
await w1.write(time_channel.key, time);
|
|
45
|
+
console.log(await w1.commit());
|
|
46
|
+
} finally {
|
|
47
|
+
await w1.close();
|
|
48
|
+
}
|
|
34
49
|
|
|
35
|
-
|
|
50
|
+
const w = await client.telem.newWriter({
|
|
51
|
+
start,
|
|
52
|
+
channels: data_channel.key,
|
|
53
|
+
});
|
|
54
|
+
try {
|
|
55
|
+
await w.write(data_channel.key, data);
|
|
56
|
+
console.log(await w.commit());
|
|
57
|
+
} finally {
|
|
58
|
+
await w.close();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
// await client.telem.write(data_channel.key, start, data);
|
|
63
|
+
|
|
64
|
+
// console.log("HERE")
|
|
36
65
|
|
|
37
66
|
client.close();
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"version": "1.0.0",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@synnaxlabs/client": "^0.16.
|
|
12
|
+
"@synnaxlabs/client": "^0.16.4"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"node_modules/@grpc/grpc-js": {
|
|
@@ -3623,15 +3623,15 @@
|
|
|
3623
3623
|
"integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ=="
|
|
3624
3624
|
},
|
|
3625
3625
|
"node_modules/@synnaxlabs/alamos": {
|
|
3626
|
-
"version": "0.
|
|
3627
|
-
"resolved": "https://registry.npmjs.org/@synnaxlabs/alamos/-/alamos-0.
|
|
3628
|
-
"integrity": "sha512-
|
|
3626
|
+
"version": "0.3.0",
|
|
3627
|
+
"resolved": "https://registry.npmjs.org/@synnaxlabs/alamos/-/alamos-0.3.0.tgz",
|
|
3628
|
+
"integrity": "sha512-UcCjXobj1KadClfWvuO2hRzklnHiUnJvfxR8as48OXI6Incs2Fpk9OcWDbH9pHfAGByNeW29OrOcDNO6AIAzZQ==",
|
|
3629
3629
|
"dependencies": {
|
|
3630
3630
|
"@opentelemetry/api": "^1.6.0",
|
|
3631
3631
|
"@opentelemetry/context-zone": "^1.17.1",
|
|
3632
3632
|
"@opentelemetry/instrumentation-document-load": "^0.33.2",
|
|
3633
3633
|
"@opentelemetry/sdk-trace-web": "^1.17.1",
|
|
3634
|
-
"@synnaxlabs/x": "0.
|
|
3634
|
+
"@synnaxlabs/x": "0.13.0",
|
|
3635
3635
|
"@uptrace/node": "^1.17.0",
|
|
3636
3636
|
"@uptrace/web": "^1.11.1"
|
|
3637
3637
|
},
|
|
@@ -3640,23 +3640,23 @@
|
|
|
3640
3640
|
}
|
|
3641
3641
|
},
|
|
3642
3642
|
"node_modules/@synnaxlabs/client": {
|
|
3643
|
-
"version": "0.16.
|
|
3644
|
-
"resolved": "https://registry.npmjs.org/@synnaxlabs/client/-/client-0.16.
|
|
3645
|
-
"integrity": "sha512-
|
|
3643
|
+
"version": "0.16.4",
|
|
3644
|
+
"resolved": "https://registry.npmjs.org/@synnaxlabs/client/-/client-0.16.4.tgz",
|
|
3645
|
+
"integrity": "sha512-vOj3AZivCv1QUZI4fuZPhm+8bEaXaEMrN8q3dPSTTZmih4WXxl4wApP0CNdNHdr9qQb6xIa+SKSoxQYN5ZfvXw==",
|
|
3646
3646
|
"dependencies": {
|
|
3647
|
-
"@synnaxlabs/freighter": "0.
|
|
3648
|
-
"@synnaxlabs/x": "0.
|
|
3647
|
+
"@synnaxlabs/freighter": "0.8.1",
|
|
3648
|
+
"@synnaxlabs/x": "0.13.0",
|
|
3649
3649
|
"async-mutex": "^0.4.0",
|
|
3650
3650
|
"zod": "3.22.4"
|
|
3651
3651
|
}
|
|
3652
3652
|
},
|
|
3653
3653
|
"node_modules/@synnaxlabs/freighter": {
|
|
3654
|
-
"version": "0.
|
|
3655
|
-
"resolved": "https://registry.npmjs.org/@synnaxlabs/freighter/-/freighter-0.
|
|
3656
|
-
"integrity": "sha512-
|
|
3654
|
+
"version": "0.8.1",
|
|
3655
|
+
"resolved": "https://registry.npmjs.org/@synnaxlabs/freighter/-/freighter-0.8.1.tgz",
|
|
3656
|
+
"integrity": "sha512-Ujd3Ls15eTRFOCgM8sWrHuu9QKFh5/xM+K+sPCgu1s6Tl9IrBYdhEzJFvGHUZnvfXegblABacGS3ErMvtdtq7A==",
|
|
3657
3657
|
"dependencies": {
|
|
3658
|
-
"@synnaxlabs/alamos": "0.
|
|
3659
|
-
"@synnaxlabs/x": "0.
|
|
3658
|
+
"@synnaxlabs/alamos": "0.3.0",
|
|
3659
|
+
"@synnaxlabs/x": "0.13.0",
|
|
3660
3660
|
"js-convert-case": "^4.2.0",
|
|
3661
3661
|
"msgpackr": "^1.10.0",
|
|
3662
3662
|
"node-fetch": "2.6.11",
|
|
@@ -3668,9 +3668,9 @@
|
|
|
3668
3668
|
}
|
|
3669
3669
|
},
|
|
3670
3670
|
"node_modules/@synnaxlabs/x": {
|
|
3671
|
-
"version": "0.
|
|
3672
|
-
"resolved": "https://registry.npmjs.org/@synnaxlabs/x/-/x-0.
|
|
3673
|
-
"integrity": "sha512-
|
|
3671
|
+
"version": "0.13.0",
|
|
3672
|
+
"resolved": "https://registry.npmjs.org/@synnaxlabs/x/-/x-0.13.0.tgz",
|
|
3673
|
+
"integrity": "sha512-9Sh5Io7/Ywegk/axxwHA2wDsmdYL28RQYKUo+gkXtzM6+uj1JSpFvyZFVRSx21uP3p6ABE9MwFCZcCY2/N1iWw==",
|
|
3674
3674
|
"dependencies": {
|
|
3675
3675
|
"async-mutex": "^0.4.0",
|
|
3676
3676
|
"js-convert-case": "^4.2.0",
|
|
@@ -3919,13 +3919,13 @@
|
|
|
3919
3919
|
}
|
|
3920
3920
|
},
|
|
3921
3921
|
"node_modules/@types/serve-static": {
|
|
3922
|
-
"version": "1.15.
|
|
3923
|
-
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.
|
|
3924
|
-
"integrity": "sha512-
|
|
3922
|
+
"version": "1.15.6",
|
|
3923
|
+
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.6.tgz",
|
|
3924
|
+
"integrity": "sha512-xkChxykiNb1X2YBevPIhQhNU9m9M7h9e2gDsmePAP2kNqhOvpKOrZWOCzq2ERQqfNFzlzHG2bdM0u3z5x+gQgg==",
|
|
3925
3925
|
"dependencies": {
|
|
3926
3926
|
"@types/http-errors": "*",
|
|
3927
|
-
"@types/
|
|
3928
|
-
"@types/
|
|
3927
|
+
"@types/node": "*",
|
|
3928
|
+
"@types/send": "*"
|
|
3929
3929
|
}
|
|
3930
3930
|
},
|
|
3931
3931
|
"node_modules/@types/shimmer": {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synnaxlabs/client",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.17.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "The Client Library for Synnax",
|
|
7
7
|
"repository": "https://github.com/synnaxlabs/synnax/tree/main/client/ts",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"async-mutex": "^0.4.0",
|
|
20
20
|
"zod": "3.22.4",
|
|
21
|
-
"@synnaxlabs/freighter": "0.
|
|
22
|
-
"@synnaxlabs/x": "0.
|
|
21
|
+
"@synnaxlabs/freighter": "0.9.1",
|
|
22
|
+
"@synnaxlabs/x": "0.14.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "^20.10.5",
|
package/src/auth/auth.ts
CHANGED
|
@@ -47,18 +47,19 @@ export class Client {
|
|
|
47
47
|
authenticated: boolean;
|
|
48
48
|
user: user.Payload | undefined;
|
|
49
49
|
|
|
50
|
-
constructor(client: UnaryClient,
|
|
50
|
+
constructor(client: UnaryClient, credentials: InsecureCredentials) {
|
|
51
51
|
this.client = client;
|
|
52
52
|
this.authenticated = false;
|
|
53
|
-
this.authenticate(
|
|
53
|
+
this.authenticate(credentials);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
authenticate(
|
|
56
|
+
authenticate(credentials: InsecureCredentials): void {
|
|
57
57
|
this.authenticating = new Promise((resolve, reject) => {
|
|
58
58
|
this.client
|
|
59
59
|
.send<typeof insecureCredentialsZ, typeof tokenResponseZ>(
|
|
60
60
|
LOGIN_ENDPOINT,
|
|
61
|
-
|
|
61
|
+
credentials,
|
|
62
|
+
insecureCredentialsZ,
|
|
62
63
|
tokenResponseZ,
|
|
63
64
|
)
|
|
64
65
|
.then(([res, err]) => {
|
package/src/channel/client.ts
CHANGED
|
@@ -244,7 +244,6 @@ export class Client implements AsyncTermSearcher<string, Key, Channel> {
|
|
|
244
244
|
async create(channels: NewPayload[]): Promise<Channel[]>;
|
|
245
245
|
|
|
246
246
|
async create(channels: NewPayload | NewPayload[]): Promise<Channel | Channel[]> {
|
|
247
|
-
console.log("ABC");
|
|
248
247
|
const single = !Array.isArray(channels);
|
|
249
248
|
const payloads = await this.creator.create(toArray(channels));
|
|
250
249
|
const res = this.sugar(payloads);
|
package/src/channel/creator.ts
CHANGED
package/src/channel/retriever.ts
CHANGED
|
@@ -33,7 +33,7 @@ const reqZ = z.object({
|
|
|
33
33
|
offset: z.number().optional(),
|
|
34
34
|
});
|
|
35
35
|
|
|
36
|
-
type Request = z.
|
|
36
|
+
type Request = z.input<typeof reqZ>;
|
|
37
37
|
|
|
38
38
|
const resZ = z.object({
|
|
39
39
|
channels: payload.array(),
|
|
@@ -67,7 +67,7 @@ export class ClusterRetriever implements Retriever {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
private async execute(request: Request): Promise<Payload[]> {
|
|
70
|
-
const [res, err] = await this.client.send(ClusterRetriever.ENDPOINT, request, resZ);
|
|
70
|
+
const [res, err] = await this.client.send(ClusterRetriever.ENDPOINT, request, reqZ, resZ);
|
|
71
71
|
if (err != null) throw err;
|
|
72
72
|
return res.channels;
|
|
73
73
|
}
|
package/src/client.ts
CHANGED
|
@@ -48,19 +48,19 @@ export type ParsedSynnaxProps = z.output<typeof synnaxPropsZ>;
|
|
|
48
48
|
*/
|
|
49
49
|
// eslint-disable-next-line import/no-default-export
|
|
50
50
|
export default class Synnax {
|
|
51
|
-
private readonly transport: Transport;
|
|
52
51
|
readonly createdAt: TimeStamp;
|
|
52
|
+
readonly props: ParsedSynnaxProps;
|
|
53
53
|
readonly telem: framer.Client;
|
|
54
54
|
readonly ranges: ranger.Client;
|
|
55
55
|
readonly channels: channel.Client;
|
|
56
56
|
readonly auth: auth.Client | undefined;
|
|
57
57
|
readonly connectivity: connection.Checker;
|
|
58
58
|
readonly ontology: ontology.Client;
|
|
59
|
-
readonly props: ParsedSynnaxProps;
|
|
60
59
|
readonly workspaces: workspace.Client;
|
|
61
60
|
readonly labels: label.Client;
|
|
62
61
|
readonly hardware: hardware.Client;
|
|
63
62
|
static readonly connectivity = connection.Checker;
|
|
63
|
+
private readonly transport: Transport;
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
66
|
* @param props.host - Hostname of a node in the cluster.
|
|
@@ -77,7 +77,7 @@ export class Checker {
|
|
|
77
77
|
async check(): Promise<State> {
|
|
78
78
|
const prevStatus = this._state.status;
|
|
79
79
|
try {
|
|
80
|
-
const [res, err] = await this.client.send(Checker.ENDPOINT,
|
|
80
|
+
const [res, err] = await this.client.send(Checker.ENDPOINT, {}, z.object({}), responseZ);
|
|
81
81
|
if (err != null) throw err;
|
|
82
82
|
this._state.status = "connected";
|
|
83
83
|
this._state.message = `Connected to ${this.name ?? "cluster"}`;
|
package/src/framer/client.ts
CHANGED
package/src/framer/frame.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
import { Size, Series, TimeRange, toArray, DataType, unique } from "@synnaxlabs/x";
|
|
10
|
+
import { Size, Series, TimeRange, toArray, DataType, unique, TimeStamp } from "@synnaxlabs/x";
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
|
|
13
13
|
import {
|
|
@@ -222,7 +222,7 @@ export class Frame {
|
|
|
222
222
|
* @returns true if the frame is weakly aligned. A frame is weakly aligned if it meets
|
|
223
223
|
* the time range occupied by all arrays of a particular channel is the same for all
|
|
224
224
|
* channels in the frame. This means that the arrays for a particular channel can have
|
|
225
|
-
* gaps
|
|
225
|
+
* gaps between them.
|
|
226
226
|
*/
|
|
227
227
|
get isWeaklyAligned(): boolean {
|
|
228
228
|
if (this.columns.length <= 1) return true;
|
|
@@ -233,8 +233,8 @@ export class Frame {
|
|
|
233
233
|
timeRange(col?: KeyOrName): TimeRange {
|
|
234
234
|
if (col == null) {
|
|
235
235
|
if (this.columns.length === 0) return TimeRange.ZERO;
|
|
236
|
-
const start =
|
|
237
|
-
const end =
|
|
236
|
+
const start = TimeStamp.min(...this.series.map((a) => a.timeRange.start));
|
|
237
|
+
const end = TimeStamp.max(...this.series.map((a) => a.timeRange.end));
|
|
238
238
|
return new TimeRange(start, end);
|
|
239
239
|
}
|
|
240
240
|
const group = this.get(col);
|
|
@@ -37,7 +37,7 @@ export class Retriever {
|
|
|
37
37
|
const res = await sendRequired<
|
|
38
38
|
typeof retrieveDeviceReqZ,
|
|
39
39
|
typeof retrieveDeviceResZ
|
|
40
|
-
>(this.client, RETRIEVE_ENDPOINT, { keys: [term] }, retrieveDeviceResZ);
|
|
40
|
+
>(this.client, RETRIEVE_ENDPOINT, { keys: [term] }, retrieveDeviceReqZ, retrieveDeviceResZ);
|
|
41
41
|
return res.devices;
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -45,7 +45,7 @@ export class Retriever {
|
|
|
45
45
|
const res = await sendRequired<
|
|
46
46
|
typeof retrieveDeviceReqZ,
|
|
47
47
|
typeof retrieveDeviceResZ
|
|
48
|
-
>(this.client, RETRIEVE_ENDPOINT, { offset, limit }, retrieveDeviceResZ);
|
|
48
|
+
>(this.client, RETRIEVE_ENDPOINT, { offset, limit }, retrieveDeviceReqZ, retrieveDeviceResZ);
|
|
49
49
|
return res.devices;
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -54,7 +54,7 @@ export class Retriever {
|
|
|
54
54
|
const res = await sendRequired<
|
|
55
55
|
typeof retrieveDeviceReqZ,
|
|
56
56
|
typeof retrieveDeviceResZ
|
|
57
|
-
>(this.client, RETRIEVE_ENDPOINT, { keys }, retrieveDeviceResZ);
|
|
57
|
+
>(this.client, RETRIEVE_ENDPOINT, { keys }, retrieveDeviceReqZ, retrieveDeviceResZ);
|
|
58
58
|
return res.devices;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -40,7 +40,8 @@ export class Writer {
|
|
|
40
40
|
const res = await sendRequired<typeof createReqZ, typeof createResZ>(
|
|
41
41
|
this.client,
|
|
42
42
|
CREATE_ENDPOINT,
|
|
43
|
-
|
|
43
|
+
{ devices },
|
|
44
|
+
createReqZ,
|
|
44
45
|
createResZ,
|
|
45
46
|
);
|
|
46
47
|
return res.devices;
|
|
@@ -51,6 +52,7 @@ export class Writer {
|
|
|
51
52
|
this.client,
|
|
52
53
|
DELETE_ENDPOINT,
|
|
53
54
|
{ keys },
|
|
55
|
+
deleteReqZ,
|
|
54
56
|
deleteResZ,
|
|
55
57
|
);
|
|
56
58
|
}
|
|
@@ -74,7 +74,7 @@ export class Rack {
|
|
|
74
74
|
key: number;
|
|
75
75
|
name: string;
|
|
76
76
|
private readonly writer: TaskWriter;
|
|
77
|
-
private readonly
|
|
77
|
+
private readonly tasks: TaskRetriever;
|
|
78
78
|
|
|
79
79
|
constructor(
|
|
80
80
|
key: number,
|
|
@@ -85,11 +85,11 @@ export class Rack {
|
|
|
85
85
|
this.key = key;
|
|
86
86
|
this.name = name;
|
|
87
87
|
this.writer = _writer;
|
|
88
|
-
this.
|
|
88
|
+
this.tasks = _retriever;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
async listTasks(): Promise<Task[]> {
|
|
92
|
-
return await this.
|
|
92
|
+
return await this.tasks.retrieve({ rack: this.key });
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
async retrieveTasks(): Promise<Task[]> {
|
|
@@ -97,7 +97,6 @@ export class Rack {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
async createTask(task: NewTask): Promise<Task> {
|
|
100
|
-
// @ts-expect-error
|
|
101
100
|
task.key = (
|
|
102
101
|
(BigInt(this.key) << 32n) +
|
|
103
102
|
(BigInt(task.key ?? 0) & 0xffffffffn)
|
|
@@ -38,6 +38,7 @@ export class Retriever {
|
|
|
38
38
|
this.client,
|
|
39
39
|
RETRIEVE_ENDPOINT,
|
|
40
40
|
{ offset, limit },
|
|
41
|
+
retrieveRackReqZ,
|
|
41
42
|
retrieveRackResZ,
|
|
42
43
|
);
|
|
43
44
|
return res.racks;
|
|
@@ -48,6 +49,7 @@ export class Retriever {
|
|
|
48
49
|
this.client,
|
|
49
50
|
RETRIEVE_ENDPOINT,
|
|
50
51
|
{ search: term },
|
|
52
|
+
retrieveRackReqZ,
|
|
51
53
|
retrieveRackResZ,
|
|
52
54
|
);
|
|
53
55
|
return res.racks;
|
|
@@ -58,6 +60,7 @@ export class Retriever {
|
|
|
58
60
|
this.client,
|
|
59
61
|
RETRIEVE_ENDPOINT,
|
|
60
62
|
{ keys },
|
|
63
|
+
retrieveRackReqZ,
|
|
61
64
|
retrieveRackResZ,
|
|
62
65
|
);
|
|
63
66
|
return res.racks;
|
|
@@ -40,6 +40,7 @@ export class Writer {
|
|
|
40
40
|
this.client,
|
|
41
41
|
CREATE_RACK_ENDPOINT,
|
|
42
42
|
{ racks },
|
|
43
|
+
createReqZ,
|
|
43
44
|
createResZ,
|
|
44
45
|
);
|
|
45
46
|
return res.racks;
|
|
@@ -50,6 +51,7 @@ export class Writer {
|
|
|
50
51
|
this.client,
|
|
51
52
|
DELETE_RACK_ENDPOINT,
|
|
52
53
|
{ keys },
|
|
54
|
+
deleteReqZ,
|
|
53
55
|
deleteResZ,
|
|
54
56
|
);
|
|
55
57
|
}
|
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
import { type UnknownRecord } from "@synnaxlabs/x";
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
|
|
13
|
-
export const taskKeyZ = z
|
|
14
|
-
.
|
|
15
|
-
.
|
|
16
|
-
.transform((k) => k.toString())
|
|
13
|
+
export const taskKeyZ = z.union([
|
|
14
|
+
z.string(),
|
|
15
|
+
z.bigint().transform((k) => k.toString()),
|
|
16
|
+
z.number().transform((k) => k.toString()),
|
|
17
|
+
])
|
|
17
18
|
|
|
18
19
|
export type TaskKey = z.infer<typeof taskKeyZ>;
|
|
19
20
|
|
|
@@ -20,7 +20,7 @@ const retrieveReqZ = z.object({
|
|
|
20
20
|
limit: z.number().optional(),
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
const
|
|
23
|
+
const retrieveResZ = z.object({
|
|
24
24
|
tasks: z.union([taskZ.array(), z.null().transform(() => [])]),
|
|
25
25
|
});
|
|
26
26
|
|
|
@@ -36,31 +36,34 @@ export class Retriever {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
async retrieve(params: RetrieveRequest): Promise<Task[]> {
|
|
39
|
-
const res = await sendRequired<typeof retrieveReqZ, typeof
|
|
39
|
+
const res = await sendRequired<typeof retrieveReqZ, typeof retrieveResZ>(
|
|
40
40
|
this.client,
|
|
41
41
|
RETRIEVE_ENDPOINT,
|
|
42
42
|
params,
|
|
43
|
-
|
|
43
|
+
retrieveReqZ,
|
|
44
|
+
retrieveResZ,
|
|
44
45
|
);
|
|
45
46
|
return res.tasks;
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
async search(term: string): Promise<Task[]> {
|
|
49
|
-
const res = await sendRequired<typeof retrieveReqZ, typeof
|
|
50
|
+
const res = await sendRequired<typeof retrieveReqZ, typeof retrieveResZ>(
|
|
50
51
|
this.client,
|
|
51
52
|
RETRIEVE_ENDPOINT,
|
|
52
53
|
{ keys: [term] },
|
|
53
|
-
|
|
54
|
+
retrieveReqZ,
|
|
55
|
+
retrieveResZ,
|
|
54
56
|
);
|
|
55
57
|
return res.tasks;
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
async page(offset: number, limit: number): Promise<Task[]> {
|
|
59
|
-
const res = await sendRequired<typeof retrieveReqZ, typeof
|
|
61
|
+
const res = await sendRequired<typeof retrieveReqZ, typeof retrieveResZ>(
|
|
60
62
|
this.client,
|
|
61
63
|
RETRIEVE_ENDPOINT,
|
|
62
64
|
{ offset, limit },
|
|
63
|
-
|
|
65
|
+
retrieveReqZ,
|
|
66
|
+
retrieveResZ,
|
|
64
67
|
);
|
|
65
68
|
return res.tasks;
|
|
66
69
|
}
|
|
@@ -46,7 +46,8 @@ export class Writer {
|
|
|
46
46
|
const res = await sendRequired<typeof createReqZ, typeof createResZ>(
|
|
47
47
|
this.client,
|
|
48
48
|
CREATE_ENDPOINT,
|
|
49
|
-
{ tasks
|
|
49
|
+
{ tasks },
|
|
50
|
+
createReqZ,
|
|
50
51
|
createResZ,
|
|
51
52
|
);
|
|
52
53
|
return res.tasks;
|
|
@@ -57,6 +58,7 @@ export class Writer {
|
|
|
57
58
|
this.client,
|
|
58
59
|
DELETE_ENDPOINT,
|
|
59
60
|
{ keys },
|
|
61
|
+
deleteReqZ,
|
|
60
62
|
deleteResZ,
|
|
61
63
|
);
|
|
62
64
|
}
|
package/src/label/retriever.ts
CHANGED
package/src/label/writer.ts
CHANGED
|
@@ -56,6 +56,7 @@ export class Writer {
|
|
|
56
56
|
this.client,
|
|
57
57
|
CREATE_ENDPOINT,
|
|
58
58
|
{ labels: toArray(labels) },
|
|
59
|
+
createReqZ,
|
|
59
60
|
createResZ,
|
|
60
61
|
);
|
|
61
62
|
return res.labels;
|
|
@@ -66,6 +67,7 @@ export class Writer {
|
|
|
66
67
|
this.client,
|
|
67
68
|
DELETE_ENDPOINT,
|
|
68
69
|
{ keys: toArray(keys) },
|
|
70
|
+
deleteReqZ,
|
|
69
71
|
emptyResZ,
|
|
70
72
|
);
|
|
71
73
|
}
|
|
@@ -75,6 +77,7 @@ export class Writer {
|
|
|
75
77
|
this.client,
|
|
76
78
|
SET_ENDPOINT,
|
|
77
79
|
{ id, labels },
|
|
80
|
+
setReqZ,
|
|
78
81
|
emptyResZ,
|
|
79
82
|
);
|
|
80
83
|
}
|
|
@@ -84,6 +87,7 @@ export class Writer {
|
|
|
84
87
|
this.client,
|
|
85
88
|
REMOVE_ENDPOINT,
|
|
86
89
|
{ id, labels },
|
|
90
|
+
removeReqZ,
|
|
87
91
|
emptyResZ,
|
|
88
92
|
);
|
|
89
93
|
}
|