@plexspaces/sdk 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,280 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ // Copyright (C) 2025 PlexSpaces Contributors
3
+ //
4
+ // Manual protobuf wire encoding/decoding for plexspaces.object_registry.v1
5
+ // request/response messages used by WIT host imports from WASM.
6
+ // Matches sdks/go/plexspaces/registry_proto_wire.go.
7
+ //
8
+ // Field numbers from proto/plexspaces/v1/registry/object_registry.proto.
9
+ import { appendVarint, appendLengthDelimited, concatBytes, readVarint, skipField } from './proto-wire-common.js';
10
+ const enc = new TextEncoder();
11
+ const dec = new TextDecoder();
12
+ function appendStringField(buf, fieldNum, s) {
13
+ if (!s)
14
+ return buf;
15
+ const encoded = enc.encode(s);
16
+ // Copy to an ArrayBuffer-backed Uint8Array to satisfy strict TS types.
17
+ const bytes = new Uint8Array(encoded.length);
18
+ bytes.set(encoded);
19
+ const tag = fieldNum << 3 | 2;
20
+ let b = appendVarint(buf, tag);
21
+ b = appendVarint(b, bytes.length);
22
+ return concatBytes(b, bytes);
23
+ }
24
+ function appendVarintField(buf, fieldNum, v) {
25
+ const tag = fieldNum << 3; // wire type 0
26
+ let b = appendVarint(buf, tag);
27
+ return appendVarint(b, v);
28
+ }
29
+ // ObjectType enum values
30
+ export const ObjectType = {
31
+ UNSPECIFIED: 0,
32
+ ACTOR: 1,
33
+ TUPLESPACE: 2,
34
+ SERVICE: 3,
35
+ VM: 4,
36
+ APPLICATION: 5,
37
+ WORKFLOW: 6,
38
+ NODE: 7,
39
+ PROCESS_GROUP: 8,
40
+ };
41
+ function objectTypeToString(n) {
42
+ switch (n) {
43
+ case 1: return 'actor';
44
+ case 2: return 'tuplespace';
45
+ case 3: return 'service';
46
+ case 4: return 'vm';
47
+ case 5: return 'application';
48
+ case 6: return 'workflow';
49
+ case 7: return 'node';
50
+ case 8: return 'process_group';
51
+ default: return '';
52
+ }
53
+ }
54
+ function objectTypeFromString(s) {
55
+ switch (s) {
56
+ case 'actor': return 1;
57
+ case 'tuplespace': return 2;
58
+ case 'service': return 3;
59
+ case 'vm': return 4;
60
+ case 'application': return 5;
61
+ case 'workflow': return 6;
62
+ case 'node': return 7;
63
+ case 'process_group': return 8;
64
+ default: return 0;
65
+ }
66
+ }
67
+ // ============================================================================
68
+ // ObjectRegistration encoder
69
+ // Field numbers: object_id=1, object_type=3, tenant_id=5, namespace=6,
70
+ // grpc_address=8, object_category=9, capabilities=10 (repeated),
71
+ // labels=13 (repeated), alias=18
72
+ // ============================================================================
73
+ function encodeObjectRegistration(reg) {
74
+ let b = new Uint8Array(0);
75
+ b = appendStringField(b, 1, reg.objectId);
76
+ const ot = objectTypeFromString(reg.objectType);
77
+ if (ot !== 0)
78
+ b = appendVarintField(b, 3, ot);
79
+ if (reg.grpcAddress)
80
+ b = appendStringField(b, 8, reg.grpcAddress);
81
+ if (reg.objectCategory)
82
+ b = appendStringField(b, 9, reg.objectCategory);
83
+ if (reg.tenantId)
84
+ b = appendStringField(b, 5, reg.tenantId);
85
+ if (reg.namespace)
86
+ b = appendStringField(b, 6, reg.namespace);
87
+ for (const cap of (reg.capabilities ?? []))
88
+ b = appendStringField(b, 10, cap);
89
+ for (const lbl of (reg.labels ?? []))
90
+ b = appendStringField(b, 13, lbl);
91
+ if (reg.alias)
92
+ b = appendStringField(b, 18, reg.alias);
93
+ return b;
94
+ }
95
+ // ============================================================================
96
+ // RegisterRequest: registration=1 (message)
97
+ // ============================================================================
98
+ export function encodeRegisterRequest(reg) {
99
+ const inner = encodeObjectRegistration(reg);
100
+ return appendLengthDelimited(new Uint8Array(0), 1, inner);
101
+ }
102
+ // ============================================================================
103
+ // UnregisterRequest: object_id=1, object_type=2, tenant_id=3, namespace=4
104
+ // ============================================================================
105
+ export function encodeUnregisterRequest(objectId, objectType, tenantId, namespace) {
106
+ let b = new Uint8Array(0);
107
+ b = appendStringField(b, 1, objectId);
108
+ if (objectType !== 0)
109
+ b = appendVarintField(b, 2, objectType);
110
+ if (tenantId)
111
+ b = appendStringField(b, 3, tenantId);
112
+ if (namespace)
113
+ b = appendStringField(b, 4, namespace);
114
+ return b;
115
+ }
116
+ // ============================================================================
117
+ // LookupRequest: object_id=1, object_type=2, tenant_id=3, namespace=4, alias=5
118
+ // ============================================================================
119
+ export function encodeLookupRequest(objectId, objectType, tenantId, namespace, alias) {
120
+ let b = new Uint8Array(0);
121
+ if (objectId)
122
+ b = appendStringField(b, 1, objectId);
123
+ if (objectType !== 0)
124
+ b = appendVarintField(b, 2, objectType);
125
+ if (tenantId)
126
+ b = appendStringField(b, 3, tenantId);
127
+ if (namespace)
128
+ b = appendStringField(b, 4, namespace);
129
+ if (alias)
130
+ b = appendStringField(b, 5, alias);
131
+ return b;
132
+ }
133
+ // ============================================================================
134
+ // DiscoverRequest: object_type=1, object_category=2, tenant_id=4, namespace=5,
135
+ // capabilities=6, labels=7, page_size=10
136
+ // ============================================================================
137
+ export function encodeDiscoverRequest(opts) {
138
+ let b = new Uint8Array(0);
139
+ if (opts.objectType)
140
+ b = appendVarintField(b, 1, opts.objectType);
141
+ if (opts.objectCategory)
142
+ b = appendStringField(b, 2, opts.objectCategory);
143
+ if (opts.tenantId)
144
+ b = appendStringField(b, 4, opts.tenantId);
145
+ if (opts.namespace)
146
+ b = appendStringField(b, 5, opts.namespace);
147
+ for (const cap of (opts.capabilities ?? []))
148
+ b = appendStringField(b, 6, cap);
149
+ for (const lbl of (opts.labels ?? []))
150
+ b = appendStringField(b, 7, lbl);
151
+ if (opts.pageSize && opts.pageSize > 0)
152
+ b = appendVarintField(b, 10, opts.pageSize);
153
+ return b;
154
+ }
155
+ // ============================================================================
156
+ // HeartbeatRequest: object_id=1, object_type=2, tenant_id=3, namespace=4
157
+ // ============================================================================
158
+ export function encodeHeartbeatRequest(objectId, objectType, tenantId, namespace) {
159
+ let b = new Uint8Array(0);
160
+ b = appendStringField(b, 1, objectId);
161
+ if (objectType !== 0)
162
+ b = appendVarintField(b, 2, objectType);
163
+ if (tenantId)
164
+ b = appendStringField(b, 3, tenantId);
165
+ if (namespace)
166
+ b = appendStringField(b, 4, namespace);
167
+ return b;
168
+ }
169
+ // ============================================================================
170
+ // ObjectRegistration decoder
171
+ // ============================================================================
172
+ function decodeObjectRegistration(data) {
173
+ const reg = { objectId: '', objectType: '' };
174
+ let pos = 0;
175
+ while (pos < data.length) {
176
+ const { value: tagVal, n } = readVarint(data, pos);
177
+ pos += n;
178
+ const fn_ = Number(tagVal >> 3n);
179
+ const wt = Number(tagVal & 7n);
180
+ if (wt === 2) {
181
+ const { value: ln, n: m } = readVarint(data, pos);
182
+ pos += m;
183
+ const end = pos + Number(ln);
184
+ const chunk = data.slice(pos, end);
185
+ pos = end;
186
+ const str = dec.decode(chunk);
187
+ switch (fn_) {
188
+ case 1:
189
+ reg.objectId = str;
190
+ break;
191
+ case 5:
192
+ reg.tenantId = str;
193
+ break;
194
+ case 6:
195
+ reg.namespace = str;
196
+ break;
197
+ case 8:
198
+ reg.grpcAddress = str;
199
+ break;
200
+ case 9:
201
+ reg.objectCategory = str;
202
+ break;
203
+ case 10:
204
+ (reg.capabilities ?? (reg.capabilities = [])).push(str);
205
+ break;
206
+ case 13:
207
+ (reg.labels ?? (reg.labels = [])).push(str);
208
+ break;
209
+ case 18:
210
+ reg.alias = str;
211
+ break;
212
+ }
213
+ }
214
+ else if (wt === 0) {
215
+ const { value: v, n: m } = readVarint(data, pos);
216
+ pos += m;
217
+ if (fn_ === 3)
218
+ reg.objectType = objectTypeToString(Number(v));
219
+ }
220
+ else {
221
+ pos = skipField(data, pos, wt);
222
+ }
223
+ }
224
+ return reg;
225
+ }
226
+ // ============================================================================
227
+ // LookupResponse decoder: registration=1 (message), found=2 (bool)
228
+ // ============================================================================
229
+ export function decodeLookupResponse(data) {
230
+ let pos = 0;
231
+ let regBytes = null;
232
+ let found = false;
233
+ while (pos < data.length) {
234
+ const { value: tagVal, n } = readVarint(data, pos);
235
+ pos += n;
236
+ const fn_ = Number(tagVal >> 3n);
237
+ const wt = Number(tagVal & 7n);
238
+ if (fn_ === 1 && wt === 2) {
239
+ const { value: ln, n: m } = readVarint(data, pos);
240
+ pos += m;
241
+ regBytes = data.slice(pos, pos + Number(ln));
242
+ pos += Number(ln);
243
+ }
244
+ else if (fn_ === 2 && wt === 0) {
245
+ const { value: v, n: m } = readVarint(data, pos);
246
+ pos += m;
247
+ found = v !== 0n;
248
+ }
249
+ else {
250
+ pos = skipField(data, pos, wt);
251
+ }
252
+ }
253
+ if (!found || !regBytes)
254
+ return null;
255
+ return decodeObjectRegistration(regBytes);
256
+ }
257
+ // ============================================================================
258
+ // DiscoverResponse decoder: registrations=1 (repeated message)
259
+ // ============================================================================
260
+ export function decodeDiscoverResponse(data) {
261
+ const results = [];
262
+ let pos = 0;
263
+ while (pos < data.length) {
264
+ const { value: tagVal, n } = readVarint(data, pos);
265
+ pos += n;
266
+ const fn_ = Number(tagVal >> 3n);
267
+ const wt = Number(tagVal & 7n);
268
+ if (fn_ === 1 && wt === 2) {
269
+ const { value: ln, n: m } = readVarint(data, pos);
270
+ pos += m;
271
+ const regBytes = data.slice(pos, pos + Number(ln));
272
+ pos += Number(ln);
273
+ results.push(decodeObjectRegistration(regBytes));
274
+ }
275
+ else {
276
+ pos = skipField(data, pos, wt);
277
+ }
278
+ }
279
+ return results;
280
+ }
@@ -0,0 +1,7 @@
1
+ export declare function encodeCreateShardGroupRequest(req: Record<string, unknown>): Uint8Array;
2
+ export declare function encodeScatterGatherRequest(req: Record<string, unknown>): Uint8Array;
3
+ export declare function decodeCreateShardGroupResponse(data: Uint8Array): Record<string, unknown>;
4
+ export declare function decodeScatterGatherResponse(data: Uint8Array): Record<string, unknown>;
5
+ export declare function decodeApplicationMetrics(data: Uint8Array): Record<string, unknown>;
6
+ export declare function decodeGetApplicationStatusResponse(data: Uint8Array): Record<string, unknown>;
7
+ export declare function encodeApplicationMetrics(metrics: Record<string, unknown>): Uint8Array;