signalk-p2p-plugin 0.3.0 → 0.4.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/CHANGELOG.md +20 -0
- package/README.md +41 -14
- package/deploy/README.md +20 -2
- package/deploy/policy.json +30 -0
- package/dist/advanced-config.d.ts +11 -0
- package/dist/advanced-config.d.ts.map +1 -0
- package/dist/advanced-config.js +40 -0
- package/dist/advanced-config.js.map +1 -0
- package/dist/api.d.ts +14 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +41 -3
- package/dist/api.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -273
- package/dist/config.js.map +1 -1
- package/dist/data/envelope.d.ts.map +1 -1
- package/dist/data/envelope.js +2 -0
- package/dist/data/envelope.js.map +1 -1
- package/dist/data/types.d.ts +1 -1
- package/dist/data/types.d.ts.map +1 -1
- package/dist/groups/control.d.ts +8 -0
- package/dist/groups/control.d.ts.map +1 -1
- package/dist/groups/control.js +30 -0
- package/dist/groups/control.js.map +1 -1
- package/dist/groups/manager.d.ts +2 -0
- package/dist/groups/manager.d.ts.map +1 -1
- package/dist/groups/manager.js +28 -1
- package/dist/groups/manager.js.map +1 -1
- package/dist/groups/types.d.ts +12 -0
- package/dist/groups/types.d.ts.map +1 -1
- package/dist/groups/types.js +23 -0
- package/dist/groups/types.js.map +1 -1
- package/dist/live/relay.d.ts +3 -0
- package/dist/live/relay.d.ts.map +1 -1
- package/dist/live/relay.js +11 -0
- package/dist/live/relay.js.map +1 -1
- package/dist/peer/cli.js +16 -0
- package/dist/peer/cli.js.map +1 -1
- package/dist/peer/config.d.ts +3 -0
- package/dist/peer/config.d.ts.map +1 -1
- package/dist/peer/config.js +5 -0
- package/dist/peer/config.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +136 -46
- package/dist/plugin.js.map +1 -1
- package/dist/policy/operator.d.ts +13 -0
- package/dist/policy/operator.d.ts.map +1 -0
- package/dist/policy/operator.js +53 -0
- package/dist/policy/operator.js.map +1 -0
- package/dist/policy/policy.d.ts +49 -0
- package/dist/policy/policy.d.ts.map +1 -0
- package/dist/policy/policy.js +147 -0
- package/dist/policy/policy.js.map +1 -0
- package/docs/plans/README.md +2 -2
- package/docs/plans/architecture.md +2 -2
- package/docs/plans/networks.md +35 -7
- package/docs/plans/peer-node.md +7 -2
- package/docs/plans/shared-data.md +4 -3
- package/package.json +3 -2
- package/policy/default.json +30 -0
- package/policy/operator.pub +2 -0
- package/public/index.html +268 -68
package/dist/config.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_OPERATOR_PUBLIC_KEY } from "./policy/operator.js";
|
|
1
2
|
export const DATA_SETS = [
|
|
2
3
|
{
|
|
3
4
|
id: "identity",
|
|
@@ -111,6 +112,7 @@ function defaultSharing() {
|
|
|
111
112
|
export function defaultConfig() {
|
|
112
113
|
return {
|
|
113
114
|
identity: { keyFile: "auto" },
|
|
115
|
+
policy: { operatorKeys: [DEFAULT_OPERATOR_PUBLIC_KEY] },
|
|
114
116
|
sharding: {
|
|
115
117
|
maxVesselsPerShard: 500,
|
|
116
118
|
maxVesselsPerInstance: 1000,
|
|
@@ -137,9 +139,9 @@ export function defaultConfig() {
|
|
|
137
139
|
},
|
|
138
140
|
sharing: defaultSharing(),
|
|
139
141
|
ais: {
|
|
140
|
-
public:
|
|
142
|
+
public: false,
|
|
141
143
|
groups: [],
|
|
142
|
-
mode: "
|
|
144
|
+
mode: "subscribe",
|
|
143
145
|
maxTargets: 100,
|
|
144
146
|
rateHz: 0.02,
|
|
145
147
|
},
|
|
@@ -148,7 +150,7 @@ export function defaultConfig() {
|
|
|
148
150
|
id: "all-vessels",
|
|
149
151
|
kind: "public",
|
|
150
152
|
enabled: true,
|
|
151
|
-
consent: "
|
|
153
|
+
consent: "receive-only",
|
|
152
154
|
rateHzUnderway: 0.05,
|
|
153
155
|
rateHzMoored: 0.01,
|
|
154
156
|
},
|
|
@@ -173,6 +175,7 @@ export function resolveConfig(partial) {
|
|
|
173
175
|
}
|
|
174
176
|
return {
|
|
175
177
|
identity: { ...defaults.identity, ...partial.identity },
|
|
178
|
+
policy: { ...defaults.policy, ...partial.policy },
|
|
176
179
|
sharding: { ...defaults.sharding, ...partial.sharding },
|
|
177
180
|
bootstrapPeers: partial.bootstrapPeers ?? defaults.bootstrapPeers,
|
|
178
181
|
election: { ...defaults.election, ...partial.election },
|
|
@@ -184,296 +187,32 @@ export function resolveConfig(partial) {
|
|
|
184
187
|
};
|
|
185
188
|
}
|
|
186
189
|
export function schema() {
|
|
187
|
-
const audience = (title, description, publicDefault, groupsDefault) => ({
|
|
188
|
-
type: "object",
|
|
189
|
-
title,
|
|
190
|
-
description,
|
|
191
|
-
properties: {
|
|
192
|
-
public: {
|
|
193
|
-
type: "boolean",
|
|
194
|
-
title: "Share publicly",
|
|
195
|
-
description: "Publish this data set on the global all-vessels network.",
|
|
196
|
-
default: publicDefault,
|
|
197
|
-
},
|
|
198
|
-
groups: {
|
|
199
|
-
title: "Share with groups",
|
|
200
|
-
description: "Publish this data set to every group, or only to the selected groups.",
|
|
201
|
-
oneOf: [
|
|
202
|
-
{ enum: ["all"], title: "All groups" },
|
|
203
|
-
{
|
|
204
|
-
type: "array",
|
|
205
|
-
title: "Selected groups",
|
|
206
|
-
items: { type: "string", title: "Group id" },
|
|
207
|
-
},
|
|
208
|
-
],
|
|
209
|
-
default: groupsDefault === "all" ? "all" : [],
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
additionalProperties: false,
|
|
213
|
-
});
|
|
214
|
-
const sharingProperties = Object.fromEntries(DATA_SETS.map((dataSet) => [
|
|
215
|
-
dataSet.id,
|
|
216
|
-
audience(dataSet.title, dataSet.description, dataSet.publicDefault, dataSet.groupsDefault),
|
|
217
|
-
]));
|
|
218
190
|
return {
|
|
219
191
|
type: "object",
|
|
220
192
|
title: "Signal K P2P",
|
|
221
193
|
properties: {
|
|
222
|
-
identity: {
|
|
223
|
-
type: "object",
|
|
224
|
-
title: "Identity",
|
|
225
|
-
properties: {
|
|
226
|
-
keyFile: {
|
|
227
|
-
type: "string",
|
|
228
|
-
title: "Identity key file",
|
|
229
|
-
description: "Where the instance Ed25519 key is stored. 'auto' keeps it in the plugin data directory.",
|
|
230
|
-
default: "auto",
|
|
231
|
-
},
|
|
232
|
-
},
|
|
233
|
-
},
|
|
234
|
-
sharding: {
|
|
235
|
-
type: "object",
|
|
236
|
-
title: "Public network sharding",
|
|
237
|
-
properties: {
|
|
238
|
-
maxVesselsPerShard: {
|
|
239
|
-
type: "number",
|
|
240
|
-
title: "Maximum vessels per shard",
|
|
241
|
-
default: 500,
|
|
242
|
-
minimum: 100,
|
|
243
|
-
},
|
|
244
|
-
maxVesselsPerInstance: {
|
|
245
|
-
type: "number",
|
|
246
|
-
title: "Maximum vessels injected per instance",
|
|
247
|
-
default: 1000,
|
|
248
|
-
minimum: 100,
|
|
249
|
-
},
|
|
250
|
-
lookAheadKm: {
|
|
251
|
-
type: "number",
|
|
252
|
-
title: "Look-ahead radius (km)",
|
|
253
|
-
default: 50,
|
|
254
|
-
minimum: 0,
|
|
255
|
-
},
|
|
256
|
-
splitSettleMinutes: {
|
|
257
|
-
type: "number",
|
|
258
|
-
title: "Split settle time (minutes)",
|
|
259
|
-
default: 10,
|
|
260
|
-
minimum: 1,
|
|
261
|
-
},
|
|
262
|
-
mergeSettleMinutes: {
|
|
263
|
-
type: "number",
|
|
264
|
-
title: "Merge settle time (minutes)",
|
|
265
|
-
default: 60,
|
|
266
|
-
minimum: 1,
|
|
267
|
-
},
|
|
268
|
-
mergeBelowRatio: {
|
|
269
|
-
type: "number",
|
|
270
|
-
title: "Merge below this fraction of the maximum",
|
|
271
|
-
default: 0.25,
|
|
272
|
-
minimum: 0,
|
|
273
|
-
maximum: 1,
|
|
274
|
-
},
|
|
275
|
-
boundaryHysteresisMeters: {
|
|
276
|
-
type: "number",
|
|
277
|
-
title: "Shard boundary hysteresis (m)",
|
|
278
|
-
default: 1000,
|
|
279
|
-
minimum: 0,
|
|
280
|
-
},
|
|
281
|
-
},
|
|
282
|
-
},
|
|
283
|
-
bootstrapPeers: {
|
|
284
|
-
type: "array",
|
|
285
|
-
title: "Bootstrap peers",
|
|
286
|
-
description: "Optional always-on peers used to reach the mesh or bridge CGNAT. " +
|
|
287
|
-
"They are ordinary peers, not required relays; leave empty for an " +
|
|
288
|
-
"open, peer-elected mesh.",
|
|
289
|
-
items: { type: "string" },
|
|
290
|
-
default: [],
|
|
291
|
-
},
|
|
292
194
|
election: {
|
|
293
195
|
type: "object",
|
|
294
|
-
title: "
|
|
196
|
+
title: "Relay",
|
|
295
197
|
properties: {
|
|
296
|
-
enabled: {
|
|
297
|
-
type: "boolean",
|
|
298
|
-
title: "Elect a relay/aggregator per shard",
|
|
299
|
-
default: true,
|
|
300
|
-
},
|
|
301
|
-
epochMinutes: {
|
|
302
|
-
type: "number",
|
|
303
|
-
title: "Election epoch (minutes)",
|
|
304
|
-
default: 10,
|
|
305
|
-
minimum: 1,
|
|
306
|
-
},
|
|
307
|
-
minUptimeMinutes: {
|
|
308
|
-
type: "number",
|
|
309
|
-
title: "Minimum uptime to be eligible (minutes)",
|
|
310
|
-
default: 10,
|
|
311
|
-
minimum: 0,
|
|
312
|
-
},
|
|
313
198
|
relayConsent: {
|
|
314
199
|
type: "boolean",
|
|
315
|
-
title: "
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
reachable: {
|
|
319
|
-
type: "boolean",
|
|
320
|
-
title: "Advertise as publicly reachable",
|
|
321
|
-
default: false,
|
|
322
|
-
},
|
|
323
|
-
unmetered: {
|
|
324
|
-
type: "boolean",
|
|
325
|
-
title: "Advertise an unmetered link",
|
|
326
|
-
default: false,
|
|
327
|
-
},
|
|
328
|
-
capacity: {
|
|
329
|
-
type: "number",
|
|
330
|
-
title: "Relative relay capacity",
|
|
331
|
-
default: 1,
|
|
332
|
-
minimum: 1,
|
|
333
|
-
maximum: 16,
|
|
334
|
-
},
|
|
335
|
-
},
|
|
336
|
-
},
|
|
337
|
-
security: {
|
|
338
|
-
type: "object",
|
|
339
|
-
title: "Security",
|
|
340
|
-
properties: {
|
|
341
|
-
publicAttestors: {
|
|
342
|
-
type: "array",
|
|
343
|
-
title: "Public attestors",
|
|
344
|
-
description: "Keys allowed to attest public MMSI claims. Empty means TOFU only.",
|
|
345
|
-
items: { type: "string" },
|
|
346
|
-
default: [],
|
|
347
|
-
},
|
|
348
|
-
requireAttestation: {
|
|
349
|
-
type: "boolean",
|
|
350
|
-
title: "Require attestation for public members",
|
|
200
|
+
title: "Help relay nearby vessels",
|
|
201
|
+
description: "Offer this instance as a relay when the network elects it. " +
|
|
202
|
+
"Topology and rate limits come from the signed network policy.",
|
|
351
203
|
default: false,
|
|
352
204
|
},
|
|
353
|
-
attestationThreshold: {
|
|
354
|
-
type: "number",
|
|
355
|
-
title: "Attestations required",
|
|
356
|
-
default: 1,
|
|
357
|
-
minimum: 1,
|
|
358
|
-
},
|
|
359
|
-
},
|
|
360
|
-
},
|
|
361
|
-
sharing: {
|
|
362
|
-
type: "object",
|
|
363
|
-
title: "Shared data",
|
|
364
|
-
description: "Choose who receives each data set. Public means the all-vessels network.",
|
|
365
|
-
properties: sharingProperties,
|
|
366
|
-
},
|
|
367
|
-
ais: {
|
|
368
|
-
type: "object",
|
|
369
|
-
title: "AIS vessels",
|
|
370
|
-
properties: {
|
|
371
|
-
public: { type: "boolean", title: "Share publicly", default: true },
|
|
372
|
-
groups: {
|
|
373
|
-
title: "Share with groups",
|
|
374
|
-
oneOf: [
|
|
375
|
-
{ enum: ["all"], title: "All groups" },
|
|
376
|
-
{
|
|
377
|
-
type: "array",
|
|
378
|
-
title: "Selected groups",
|
|
379
|
-
items: { type: "string" },
|
|
380
|
-
},
|
|
381
|
-
],
|
|
382
|
-
default: [],
|
|
383
|
-
},
|
|
384
|
-
mode: {
|
|
385
|
-
type: "string",
|
|
386
|
-
title: "AIS direction",
|
|
387
|
-
enum: ["both", "publish", "subscribe", "off"],
|
|
388
|
-
enumNames: [
|
|
389
|
-
"Send and receive",
|
|
390
|
-
"Send our AIS vessels",
|
|
391
|
-
"Receive AIS vessels only",
|
|
392
|
-
"No AIS over P2P",
|
|
393
|
-
],
|
|
394
|
-
default: "both",
|
|
395
|
-
},
|
|
396
|
-
maxTargets: {
|
|
397
|
-
type: "number",
|
|
398
|
-
title: "Maximum AIS targets per snapshot",
|
|
399
|
-
default: 100,
|
|
400
|
-
minimum: 0,
|
|
401
|
-
},
|
|
402
|
-
rateHz: {
|
|
403
|
-
type: "number",
|
|
404
|
-
title: "AIS snapshot rate (Hz)",
|
|
405
|
-
default: 0.02,
|
|
406
|
-
minimum: 0,
|
|
407
|
-
},
|
|
408
|
-
},
|
|
409
|
-
},
|
|
410
|
-
networks: {
|
|
411
|
-
type: "array",
|
|
412
|
-
title: "Networks",
|
|
413
|
-
items: {
|
|
414
|
-
type: "object",
|
|
415
|
-
properties: {
|
|
416
|
-
id: { type: "string", title: "Id" },
|
|
417
|
-
kind: {
|
|
418
|
-
type: "string",
|
|
419
|
-
title: "Kind",
|
|
420
|
-
enum: ["public", "group"],
|
|
421
|
-
},
|
|
422
|
-
name: { type: "string", title: "Name" },
|
|
423
|
-
enabled: { type: "boolean", title: "Enabled", default: true },
|
|
424
|
-
consent: {
|
|
425
|
-
type: "string",
|
|
426
|
-
title: "Consent",
|
|
427
|
-
enum: [
|
|
428
|
-
"opt-out",
|
|
429
|
-
"underway-gated",
|
|
430
|
-
"receive-only",
|
|
431
|
-
"coarse-position",
|
|
432
|
-
],
|
|
433
|
-
enumNames: [
|
|
434
|
-
"Publish everything",
|
|
435
|
-
"Publish only while underway",
|
|
436
|
-
"Receive only",
|
|
437
|
-
"Publish a coarse position",
|
|
438
|
-
],
|
|
439
|
-
default: "opt-out",
|
|
440
|
-
},
|
|
441
|
-
rateHzUnderway: {
|
|
442
|
-
type: "number",
|
|
443
|
-
title: "Snapshot rate underway (Hz)",
|
|
444
|
-
default: 0.05,
|
|
445
|
-
minimum: 0,
|
|
446
|
-
},
|
|
447
|
-
rateHzMoored: {
|
|
448
|
-
type: "number",
|
|
449
|
-
title: "Snapshot rate moored (Hz)",
|
|
450
|
-
default: 0.01,
|
|
451
|
-
minimum: 0,
|
|
452
|
-
},
|
|
453
|
-
invite: { type: "string", title: "Group invite" },
|
|
454
|
-
},
|
|
455
205
|
},
|
|
456
206
|
},
|
|
457
207
|
inject: {
|
|
458
208
|
type: "object",
|
|
459
|
-
title: "
|
|
209
|
+
title: "Other vessels",
|
|
460
210
|
properties: {
|
|
461
211
|
enabled: {
|
|
462
212
|
type: "boolean",
|
|
463
|
-
title: "
|
|
213
|
+
title: "Show vessels received from the network",
|
|
464
214
|
default: true,
|
|
465
215
|
},
|
|
466
|
-
history: {
|
|
467
|
-
type: "boolean",
|
|
468
|
-
title: "Allow injected vessels in history",
|
|
469
|
-
default: false,
|
|
470
|
-
},
|
|
471
|
-
maxAgeSeconds: {
|
|
472
|
-
type: "number",
|
|
473
|
-
title: "Maximum age (seconds)",
|
|
474
|
-
default: 900,
|
|
475
|
-
minimum: 60,
|
|
476
|
-
},
|
|
477
216
|
},
|
|
478
217
|
},
|
|
479
218
|
},
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,iDAAiD;QAC9D,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;KACrB;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,mDAAmD;QAChE,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;KACrB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,iEAAiE;QACnE,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;KACrB;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,8CAA8C;QAC3D,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;KACrB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,qCAAqC;QAClD,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,KAAK;KACrB;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,yBAAyB;QACtC,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,KAAK;KACrB;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,kCAAkC;QACzC,WAAW,EAAE,6DAA6D;QAC1E,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,KAAK;KACrB;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,cAAc;QAC3B,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,MAAM;KACtB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,oBAAoB;QACjC,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,MAAM;KACtB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,2CAA2C;QACxD,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,MAAM;KACtB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,qDAAqD;QAClE,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,MAAM;KACtB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,4DAA4D;QACzE,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,KAAK;KACrB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,yCAAyC;QACtD,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,MAAM;KACtB;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,0CAA0C;QACvD,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,MAAM;KACtB;CACO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/data/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,gBAAgB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/data/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,gBAAgB,IAAI,CAAC;AA4ClC,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOxE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAiBrD"}
|
package/dist/data/envelope.js
CHANGED
|
@@ -7,6 +7,7 @@ const WIRE_TYPES = {
|
|
|
7
7
|
"ais-static": 5 /* WireRecordType.AisStatic */,
|
|
8
8
|
claim: 6 /* WireRecordType.Claim */,
|
|
9
9
|
capability: 7 /* WireRecordType.Capability */,
|
|
10
|
+
policy: 11 /* WireRecordType.Policy */,
|
|
10
11
|
"group-roster": 8 /* WireRecordType.GroupRoster */,
|
|
11
12
|
"group-join": 9 /* WireRecordType.GroupJoin */,
|
|
12
13
|
"group-roster-request": 10 /* WireRecordType.GroupRosterRequest */,
|
|
@@ -19,6 +20,7 @@ const WIRE_TYPE_NAMES = {
|
|
|
19
20
|
[5 /* WireRecordType.AisStatic */]: "ais-static",
|
|
20
21
|
[6 /* WireRecordType.Claim */]: "claim",
|
|
21
22
|
[7 /* WireRecordType.Capability */]: "capability",
|
|
23
|
+
[11 /* WireRecordType.Policy */]: "policy",
|
|
22
24
|
[8 /* WireRecordType.GroupRoster */]: "group-roster",
|
|
23
25
|
[9 /* WireRecordType.GroupJoin */]: "group-join",
|
|
24
26
|
[10 /* WireRecordType.GroupRosterRequest */]: "group-roster-request",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/data/envelope.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/data/envelope.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAgBlC,MAAM,UAAU,GAAuC;IACrD,QAAQ,iCAAyB;IACjC,MAAM,+BAAuB;IAC7B,MAAM,+BAAuB;IAC7B,cAAc,oCAA4B;IAC1C,YAAY,kCAA0B;IACtC,KAAK,8BAAsB;IAC3B,UAAU,mCAA2B;IACrC,MAAM,gCAAuB;IAC7B,cAAc,oCAA4B;IAC1C,YAAY,kCAA0B;IACtC,sBAAsB,4CAAmC;CAC1D,CAAC;AAEF,MAAM,eAAe,GAA+B;IAClD,iCAAyB,EAAE,UAAU;IACrC,+BAAuB,EAAE,QAAQ;IACjC,+BAAuB,EAAE,QAAQ;IACjC,oCAA4B,EAAE,cAAc;IAC5C,kCAA0B,EAAE,YAAY;IACxC,8BAAsB,EAAE,OAAO;IAC/B,mCAA2B,EAAE,YAAY;IACzC,gCAAuB,EAAE,QAAQ;IACjC,oCAA4B,EAAE,cAAc;IAC5C,kCAA0B,EAAE,YAAY;IACxC,4CAAmC,EAAE,sBAAsB;CAC5D,CAAC;AAQF,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,UAAU,cAAc,CAAC,IAAgB,EAAE,OAAe;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,GAAG,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAChC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,GAAG,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,sBAAsB,MAAM,uBAAuB,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE,CAChF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;AACjE,CAAC"}
|
package/dist/data/types.d.ts
CHANGED
|
@@ -72,5 +72,5 @@ export interface StaticInfo {
|
|
|
72
72
|
}
|
|
73
73
|
/** A generic map of canonical Signal K paths to native values. */
|
|
74
74
|
export type Values = Record<string, unknown>;
|
|
75
|
-
export type RecordType = "snapshot" | "static" | "values" | "ais-snapshot" | "ais-static" | "claim" | "capability" | "group-roster" | "group-join" | "group-roster-request";
|
|
75
|
+
export type RecordType = "snapshot" | "static" | "values" | "ais-snapshot" | "ais-static" | "claim" | "capability" | "policy" | "group-roster" | "group-join" | "group-roster-request";
|
|
76
76
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/data/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"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"}
|
package/dist/groups/control.d.ts
CHANGED
|
@@ -39,6 +39,14 @@ export interface GroupControl {
|
|
|
39
39
|
leaveGroup(input: {
|
|
40
40
|
groupId?: unknown;
|
|
41
41
|
}): Promise<GroupResult>;
|
|
42
|
+
setRate(input: {
|
|
43
|
+
groupId?: unknown;
|
|
44
|
+
rateHz?: unknown;
|
|
45
|
+
}): Promise<GroupResult>;
|
|
46
|
+
setRateCap(input: {
|
|
47
|
+
groupId?: unknown;
|
|
48
|
+
rateHz?: unknown;
|
|
49
|
+
}): Promise<GroupResult>;
|
|
42
50
|
groupProposals(groupId?: string): ProposalInfo[];
|
|
43
51
|
approveProposal(input: {
|
|
44
52
|
groupId?: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/groups/control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EACV,SAAS,EAET,cAAc,EACd,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,IAAI,SAAS,EAAE,CAAC;IACtB,WAAW,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7D,YAAY,CAAC,KAAK,EAAE;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,GAAG,WAAW,CAAC;IAChB,SAAS,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5E,aAAa,IAAI,cAAc,EAAE,CAAC;IAClC,aAAa,CAAC,KAAK,EAAE;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,YAAY,CAAC,KAAK,EAAE;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,aAAa,CAAC,KAAK,EAAE;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,UAAU,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/D,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IACjD,eAAe,CAAC,KAAK,EAAE;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,YAAY,CAAC,KAAK,EAAE;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/groups/control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EACV,SAAS,EAET,cAAc,EACd,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,IAAI,SAAS,EAAE,CAAC;IACtB,WAAW,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7D,YAAY,CAAC,KAAK,EAAE;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,GAAG,WAAW,CAAC;IAChB,SAAS,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5E,aAAa,IAAI,cAAc,EAAE,CAAC;IAClC,aAAa,CAAC,KAAK,EAAE;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,YAAY,CAAC,KAAK,EAAE;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,aAAa,CAAC,KAAK,EAAE;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,UAAU,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9E,UAAU,CAAC,KAAK,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IACjD,eAAe,CAAC,KAAK,EAAE;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,YAAY,CAAC,KAAK,EAAE;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC1B;AA6CD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,YAAY,GAAG,SAAS,GACzC,YAAY,CAsKd"}
|
package/dist/groups/control.js
CHANGED
|
@@ -22,6 +22,12 @@ function roleField(value) {
|
|
|
22
22
|
}
|
|
23
23
|
return value;
|
|
24
24
|
}
|
|
25
|
+
function rateField(value) {
|
|
26
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
27
|
+
throw new Error("rateHz must be a number");
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
25
31
|
function numberField(value) {
|
|
26
32
|
if (value === undefined)
|
|
27
33
|
return undefined;
|
|
@@ -146,6 +152,30 @@ export function createGroupControl(getManager) {
|
|
|
146
152
|
return failure(error);
|
|
147
153
|
}
|
|
148
154
|
},
|
|
155
|
+
setRate: async (input) => {
|
|
156
|
+
try {
|
|
157
|
+
const groupId = stringField(input.groupId, "groupId");
|
|
158
|
+
return {
|
|
159
|
+
ok: true,
|
|
160
|
+
group: await requireManager().setPublishRate(groupId, rateField(input.rateHz)),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
return failure(error);
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
setRateCap: async (input) => {
|
|
168
|
+
try {
|
|
169
|
+
const groupId = stringField(input.groupId, "groupId");
|
|
170
|
+
return {
|
|
171
|
+
ok: true,
|
|
172
|
+
group: await requireManager().setRateCap(groupId, rateField(input.rateHz)),
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
return failure(error);
|
|
177
|
+
}
|
|
178
|
+
},
|
|
149
179
|
leaveGroup: async (input) => {
|
|
150
180
|
try {
|
|
151
181
|
const groupId = stringField(input.groupId, "groupId");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/groups/control.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/groups/control.ts"],"names":[],"mappings":"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"}
|
package/dist/groups/manager.d.ts
CHANGED
|
@@ -47,6 +47,8 @@ export declare class GroupManager {
|
|
|
47
47
|
removeMember(groupId: string, selfId: string): Promise<GroupInfo>;
|
|
48
48
|
promoteMember(groupId: string, selfId: string, role: GroupRole): Promise<GroupInfo>;
|
|
49
49
|
setAdminThreshold(groupId: string, threshold: number): Promise<GroupInfo>;
|
|
50
|
+
setRateCap(groupId: string, rateHz: number): Promise<GroupInfo>;
|
|
51
|
+
setPublishRate(groupId: string, rateHz: number): Promise<GroupInfo>;
|
|
50
52
|
approveProposal(groupId: string, hash: string): Promise<GroupInfo>;
|
|
51
53
|
exportProposal(groupId: string, hash: string): SignedRoster | undefined;
|
|
52
54
|
exportRoster(groupId: string): SignedRoster;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/groups/manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUtD,OAAO,EAUL,KAAK,SAAS,EAId,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/groups/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/groups/manager.js
CHANGED
|
@@ -4,7 +4,7 @@ import { dirname, join } from "node:path";
|
|
|
4
4
|
import { decodeEnvelope, encodeEnvelope } from "../data/envelope.js";
|
|
5
5
|
import { LiveClient } from "../live/client.js";
|
|
6
6
|
import { decryptRecord, deriveDataKey, encryptRecord, groupDataTopic, groupRosterTopic, openEpochKey, sealEpochKey, } from "./crypto.js";
|
|
7
|
-
import { addApproval, approvalCount, proposalHash, signInvite, signJoinRequest, signRoster, verifyInvite, verifyJoinRequest, verifyRoster, } from "./types.js";
|
|
7
|
+
import { addApproval, approvalCount, proposalHash, signInvite, signJoinRequest, signRoster, verifyInvite, verifyJoinRequest, verifyRoster, DEFAULT_GROUP_RATE_CAP_HZ, clampGroupRate, groupPublishRate, groupRateCap, } from "./types.js";
|
|
8
8
|
const ROLES = ["owner", "admin", "member", "viewer"];
|
|
9
9
|
/**
|
|
10
10
|
* Private group state and transport.
|
|
@@ -108,6 +108,7 @@ export class GroupManager {
|
|
|
108
108
|
name: name.trim(),
|
|
109
109
|
version: 1,
|
|
110
110
|
epoch: 1,
|
|
111
|
+
rateCapHz: DEFAULT_GROUP_RATE_CAP_HZ,
|
|
111
112
|
adminThreshold: 1,
|
|
112
113
|
members: [this.selfMember("owner")],
|
|
113
114
|
wrappedKeys: [this.wrap(epochKey, this.identity.boxPublicKey)],
|
|
@@ -304,6 +305,28 @@ export class GroupManager {
|
|
|
304
305
|
await this.propose(state, candidate);
|
|
305
306
|
return this.info(state);
|
|
306
307
|
}
|
|
308
|
+
async setRateCap(groupId, rateHz) {
|
|
309
|
+
const state = this.requireGroup(groupId);
|
|
310
|
+
if (!this.isAdmin(state)) {
|
|
311
|
+
throw new Error("only an owner or admin can change the rate cap");
|
|
312
|
+
}
|
|
313
|
+
const candidate = structuredClone(state.roster);
|
|
314
|
+
candidate.rateCapHz = clampGroupRate(rateHz);
|
|
315
|
+
candidate.version += 1;
|
|
316
|
+
candidate.updatedAt = this.now();
|
|
317
|
+
await this.propose(state, candidate);
|
|
318
|
+
return this.info(state);
|
|
319
|
+
}
|
|
320
|
+
async setPublishRate(groupId, rateHz) {
|
|
321
|
+
const state = this.requireGroup(groupId);
|
|
322
|
+
if (!this.canPublish(groupId)) {
|
|
323
|
+
throw new Error("this member cannot publish to the group");
|
|
324
|
+
}
|
|
325
|
+
const cap = groupRateCap(state.roster);
|
|
326
|
+
state.publishRateHz = Math.min(clampGroupRate(rateHz), cap);
|
|
327
|
+
await this.save();
|
|
328
|
+
return this.info(state);
|
|
329
|
+
}
|
|
307
330
|
async approveProposal(groupId, hash) {
|
|
308
331
|
const state = this.requireGroup(groupId);
|
|
309
332
|
if (!this.isAdmin(state)) {
|
|
@@ -430,6 +453,7 @@ export class GroupManager {
|
|
|
430
453
|
state.dataTopic = groupDataTopic(epochKey).toString("hex");
|
|
431
454
|
state.role = me.role;
|
|
432
455
|
state.removed = false;
|
|
456
|
+
state.publishRateHz = Math.min(state.publishRateHz ?? groupRateCap(roster), groupRateCap(roster));
|
|
433
457
|
await this.save();
|
|
434
458
|
this.broadcastRoster({ roster, approvals });
|
|
435
459
|
if (state.dataTopic !== previousTopic) {
|
|
@@ -636,6 +660,7 @@ export class GroupManager {
|
|
|
636
660
|
dataTopic: groupDataTopic(epochKey).toString("hex"),
|
|
637
661
|
rosterTopic: groupRosterTopic(Buffer.from(roster.groupId, "hex")).toString("hex"),
|
|
638
662
|
role,
|
|
663
|
+
publishRateHz: groupRateCap(roster),
|
|
639
664
|
};
|
|
640
665
|
}
|
|
641
666
|
info(state) {
|
|
@@ -647,6 +672,8 @@ export class GroupManager {
|
|
|
647
672
|
members: state.roster.members.length,
|
|
648
673
|
removed: Boolean(state.removed),
|
|
649
674
|
pendingProposals: this.proposals.get(state.roster.groupId)?.size ?? 0,
|
|
675
|
+
rateCapHz: groupRateCap(state.roster),
|
|
676
|
+
publishRateHz: groupPublishRate(state),
|
|
650
677
|
};
|
|
651
678
|
}
|
|
652
679
|
requireGroup(groupId) {
|