@comapeo/core 3.0.0 → 3.1.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.
@@ -9,6 +9,8 @@ export interface Invite {
9
9
  roleName?: string | undefined;
10
10
  roleDescription?: string | undefined;
11
11
  invitorName: string;
12
+ projectColor?: string | undefined;
13
+ projectDescription?: string | undefined;
12
14
  }
13
15
 
14
16
  export interface InviteCancel {
@@ -76,6 +78,7 @@ export interface ProjectJoinDetails {
76
78
  export interface DeviceInfo {
77
79
  name: string;
78
80
  deviceType?: DeviceInfo_DeviceType | undefined;
81
+ features: DeviceInfo_RPCFeatures[];
79
82
  }
80
83
 
81
84
  export const DeviceInfo_DeviceType = {
@@ -125,6 +128,57 @@ export function deviceInfo_DeviceTypeToNumber(object: DeviceInfo_DeviceType): nu
125
128
  }
126
129
  }
127
130
 
131
+ export const DeviceInfo_RPCFeatures = {
132
+ features_unspecified: "features_unspecified",
133
+ ack: "ack",
134
+ UNRECOGNIZED: "UNRECOGNIZED",
135
+ } as const;
136
+
137
+ export type DeviceInfo_RPCFeatures = typeof DeviceInfo_RPCFeatures[keyof typeof DeviceInfo_RPCFeatures];
138
+
139
+ export function deviceInfo_RPCFeaturesFromJSON(object: any): DeviceInfo_RPCFeatures {
140
+ switch (object) {
141
+ case 0:
142
+ case "features_unspecified":
143
+ return DeviceInfo_RPCFeatures.features_unspecified;
144
+ case 1:
145
+ case "ack":
146
+ return DeviceInfo_RPCFeatures.ack;
147
+ case -1:
148
+ case "UNRECOGNIZED":
149
+ default:
150
+ return DeviceInfo_RPCFeatures.UNRECOGNIZED;
151
+ }
152
+ }
153
+
154
+ export function deviceInfo_RPCFeaturesToNumber(object: DeviceInfo_RPCFeatures): number {
155
+ switch (object) {
156
+ case DeviceInfo_RPCFeatures.features_unspecified:
157
+ return 0;
158
+ case DeviceInfo_RPCFeatures.ack:
159
+ return 1;
160
+ case DeviceInfo_RPCFeatures.UNRECOGNIZED:
161
+ default:
162
+ return -1;
163
+ }
164
+ }
165
+
166
+ export interface InviteAck {
167
+ inviteId: Buffer;
168
+ }
169
+
170
+ export interface InviteCancelAck {
171
+ inviteId: Buffer;
172
+ }
173
+
174
+ export interface InviteResponseAck {
175
+ inviteId: Buffer;
176
+ }
177
+
178
+ export interface ProjectJoinDetailsAck {
179
+ inviteId: Buffer;
180
+ }
181
+
128
182
  function createBaseInvite(): Invite {
129
183
  return { inviteId: Buffer.alloc(0), projectInviteId: Buffer.alloc(0), projectName: "", invitorName: "" };
130
184
  }
@@ -149,6 +203,12 @@ export const Invite = {
149
203
  if (message.invitorName !== "") {
150
204
  writer.uint32(50).string(message.invitorName);
151
205
  }
206
+ if (message.projectColor !== undefined) {
207
+ writer.uint32(58).string(message.projectColor);
208
+ }
209
+ if (message.projectDescription !== undefined) {
210
+ writer.uint32(66).string(message.projectDescription);
211
+ }
152
212
  return writer;
153
213
  },
154
214
 
@@ -201,6 +261,20 @@ export const Invite = {
201
261
 
202
262
  message.invitorName = reader.string();
203
263
  continue;
264
+ case 7:
265
+ if (tag !== 58) {
266
+ break;
267
+ }
268
+
269
+ message.projectColor = reader.string();
270
+ continue;
271
+ case 8:
272
+ if (tag !== 66) {
273
+ break;
274
+ }
275
+
276
+ message.projectDescription = reader.string();
277
+ continue;
204
278
  }
205
279
  if ((tag & 7) === 4 || tag === 0) {
206
280
  break;
@@ -221,6 +295,8 @@ export const Invite = {
221
295
  message.roleName = object.roleName ?? undefined;
222
296
  message.roleDescription = object.roleDescription ?? undefined;
223
297
  message.invitorName = object.invitorName ?? "";
298
+ message.projectColor = object.projectColor ?? undefined;
299
+ message.projectDescription = object.projectDescription ?? undefined;
224
300
  return message;
225
301
  },
226
302
  };
@@ -396,7 +472,7 @@ export const ProjectJoinDetails = {
396
472
  };
397
473
 
398
474
  function createBaseDeviceInfo(): DeviceInfo {
399
- return { name: "" };
475
+ return { name: "", features: [] };
400
476
  }
401
477
 
402
478
  export const DeviceInfo = {
@@ -407,6 +483,11 @@ export const DeviceInfo = {
407
483
  if (message.deviceType !== undefined) {
408
484
  writer.uint32(16).int32(deviceInfo_DeviceTypeToNumber(message.deviceType));
409
485
  }
486
+ writer.uint32(26).fork();
487
+ for (const v of message.features) {
488
+ writer.int32(deviceInfo_RPCFeaturesToNumber(v));
489
+ }
490
+ writer.ldelim();
410
491
  return writer;
411
492
  },
412
493
 
@@ -431,6 +512,23 @@ export const DeviceInfo = {
431
512
 
432
513
  message.deviceType = deviceInfo_DeviceTypeFromJSON(reader.int32());
433
514
  continue;
515
+ case 3:
516
+ if (tag === 24) {
517
+ message.features.push(deviceInfo_RPCFeaturesFromJSON(reader.int32()));
518
+
519
+ continue;
520
+ }
521
+
522
+ if (tag === 26) {
523
+ const end2 = reader.uint32() + reader.pos;
524
+ while (reader.pos < end2) {
525
+ message.features.push(deviceInfo_RPCFeaturesFromJSON(reader.int32()));
526
+ }
527
+
528
+ continue;
529
+ }
530
+
531
+ break;
434
532
  }
435
533
  if ((tag & 7) === 4 || tag === 0) {
436
534
  break;
@@ -447,6 +545,187 @@ export const DeviceInfo = {
447
545
  const message = createBaseDeviceInfo();
448
546
  message.name = object.name ?? "";
449
547
  message.deviceType = object.deviceType ?? undefined;
548
+ message.features = object.features?.map((e) => e) || [];
549
+ return message;
550
+ },
551
+ };
552
+
553
+ function createBaseInviteAck(): InviteAck {
554
+ return { inviteId: Buffer.alloc(0) };
555
+ }
556
+
557
+ export const InviteAck = {
558
+ encode(message: InviteAck, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
559
+ if (message.inviteId.length !== 0) {
560
+ writer.uint32(10).bytes(message.inviteId);
561
+ }
562
+ return writer;
563
+ },
564
+
565
+ decode(input: _m0.Reader | Uint8Array, length?: number): InviteAck {
566
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
567
+ let end = length === undefined ? reader.len : reader.pos + length;
568
+ const message = createBaseInviteAck();
569
+ while (reader.pos < end) {
570
+ const tag = reader.uint32();
571
+ switch (tag >>> 3) {
572
+ case 1:
573
+ if (tag !== 10) {
574
+ break;
575
+ }
576
+
577
+ message.inviteId = reader.bytes() as Buffer;
578
+ continue;
579
+ }
580
+ if ((tag & 7) === 4 || tag === 0) {
581
+ break;
582
+ }
583
+ reader.skipType(tag & 7);
584
+ }
585
+ return message;
586
+ },
587
+
588
+ create<I extends Exact<DeepPartial<InviteAck>, I>>(base?: I): InviteAck {
589
+ return InviteAck.fromPartial(base ?? ({} as any));
590
+ },
591
+ fromPartial<I extends Exact<DeepPartial<InviteAck>, I>>(object: I): InviteAck {
592
+ const message = createBaseInviteAck();
593
+ message.inviteId = object.inviteId ?? Buffer.alloc(0);
594
+ return message;
595
+ },
596
+ };
597
+
598
+ function createBaseInviteCancelAck(): InviteCancelAck {
599
+ return { inviteId: Buffer.alloc(0) };
600
+ }
601
+
602
+ export const InviteCancelAck = {
603
+ encode(message: InviteCancelAck, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
604
+ if (message.inviteId.length !== 0) {
605
+ writer.uint32(10).bytes(message.inviteId);
606
+ }
607
+ return writer;
608
+ },
609
+
610
+ decode(input: _m0.Reader | Uint8Array, length?: number): InviteCancelAck {
611
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
612
+ let end = length === undefined ? reader.len : reader.pos + length;
613
+ const message = createBaseInviteCancelAck();
614
+ while (reader.pos < end) {
615
+ const tag = reader.uint32();
616
+ switch (tag >>> 3) {
617
+ case 1:
618
+ if (tag !== 10) {
619
+ break;
620
+ }
621
+
622
+ message.inviteId = reader.bytes() as Buffer;
623
+ continue;
624
+ }
625
+ if ((tag & 7) === 4 || tag === 0) {
626
+ break;
627
+ }
628
+ reader.skipType(tag & 7);
629
+ }
630
+ return message;
631
+ },
632
+
633
+ create<I extends Exact<DeepPartial<InviteCancelAck>, I>>(base?: I): InviteCancelAck {
634
+ return InviteCancelAck.fromPartial(base ?? ({} as any));
635
+ },
636
+ fromPartial<I extends Exact<DeepPartial<InviteCancelAck>, I>>(object: I): InviteCancelAck {
637
+ const message = createBaseInviteCancelAck();
638
+ message.inviteId = object.inviteId ?? Buffer.alloc(0);
639
+ return message;
640
+ },
641
+ };
642
+
643
+ function createBaseInviteResponseAck(): InviteResponseAck {
644
+ return { inviteId: Buffer.alloc(0) };
645
+ }
646
+
647
+ export const InviteResponseAck = {
648
+ encode(message: InviteResponseAck, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
649
+ if (message.inviteId.length !== 0) {
650
+ writer.uint32(10).bytes(message.inviteId);
651
+ }
652
+ return writer;
653
+ },
654
+
655
+ decode(input: _m0.Reader | Uint8Array, length?: number): InviteResponseAck {
656
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
657
+ let end = length === undefined ? reader.len : reader.pos + length;
658
+ const message = createBaseInviteResponseAck();
659
+ while (reader.pos < end) {
660
+ const tag = reader.uint32();
661
+ switch (tag >>> 3) {
662
+ case 1:
663
+ if (tag !== 10) {
664
+ break;
665
+ }
666
+
667
+ message.inviteId = reader.bytes() as Buffer;
668
+ continue;
669
+ }
670
+ if ((tag & 7) === 4 || tag === 0) {
671
+ break;
672
+ }
673
+ reader.skipType(tag & 7);
674
+ }
675
+ return message;
676
+ },
677
+
678
+ create<I extends Exact<DeepPartial<InviteResponseAck>, I>>(base?: I): InviteResponseAck {
679
+ return InviteResponseAck.fromPartial(base ?? ({} as any));
680
+ },
681
+ fromPartial<I extends Exact<DeepPartial<InviteResponseAck>, I>>(object: I): InviteResponseAck {
682
+ const message = createBaseInviteResponseAck();
683
+ message.inviteId = object.inviteId ?? Buffer.alloc(0);
684
+ return message;
685
+ },
686
+ };
687
+
688
+ function createBaseProjectJoinDetailsAck(): ProjectJoinDetailsAck {
689
+ return { inviteId: Buffer.alloc(0) };
690
+ }
691
+
692
+ export const ProjectJoinDetailsAck = {
693
+ encode(message: ProjectJoinDetailsAck, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
694
+ if (message.inviteId.length !== 0) {
695
+ writer.uint32(10).bytes(message.inviteId);
696
+ }
697
+ return writer;
698
+ },
699
+
700
+ decode(input: _m0.Reader | Uint8Array, length?: number): ProjectJoinDetailsAck {
701
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
702
+ let end = length === undefined ? reader.len : reader.pos + length;
703
+ const message = createBaseProjectJoinDetailsAck();
704
+ while (reader.pos < end) {
705
+ const tag = reader.uint32();
706
+ switch (tag >>> 3) {
707
+ case 1:
708
+ if (tag !== 10) {
709
+ break;
710
+ }
711
+
712
+ message.inviteId = reader.bytes() as Buffer;
713
+ continue;
714
+ }
715
+ if ((tag & 7) === 4 || tag === 0) {
716
+ break;
717
+ }
718
+ reader.skipType(tag & 7);
719
+ }
720
+ return message;
721
+ },
722
+
723
+ create<I extends Exact<DeepPartial<ProjectJoinDetailsAck>, I>>(base?: I): ProjectJoinDetailsAck {
724
+ return ProjectJoinDetailsAck.fromPartial(base ?? ({} as any));
725
+ },
726
+ fromPartial<I extends Exact<DeepPartial<ProjectJoinDetailsAck>, I>>(object: I): ProjectJoinDetailsAck {
727
+ const message = createBaseProjectJoinDetailsAck();
728
+ message.inviteId = object.inviteId ?? Buffer.alloc(0);
450
729
  return message;
451
730
  },
452
731
  };
@@ -12,6 +12,7 @@ import {
12
12
  InviteSendError,
13
13
  } from '../errors.js'
14
14
 
15
+ /** @import { ProjectToAddDetails } from '../mapeo-manager.js' */
15
16
  /** @import { MapBuffers } from '../types.js' */
16
17
  /**
17
18
  * @import {
@@ -45,7 +46,7 @@ import {
45
46
  */
46
47
 
47
48
  /**
48
- * @typedef {(projectDetails: Pick<ProjectJoinDetails, 'projectKey' | 'encryptionKeys'> & { projectName: string }) => Promise<string>} AddProjectQuery
49
+ * @typedef {(projectDetails: ProjectToAddDetails) => Promise<string>} AddProjectQuery
49
50
  */
50
51
 
51
52
  /**
@@ -119,7 +120,13 @@ export class InviteApi extends TypedEmitter {
119
120
  * @param {InviteRpcMessage} inviteRpcMessage
120
121
  */
121
122
  #handleNewInvite(peerId, inviteRpcMessage) {
122
- const { inviteId, projectInviteId, projectName } = inviteRpcMessage
123
+ const {
124
+ inviteId,
125
+ projectInviteId,
126
+ projectName,
127
+ projectColor,
128
+ projectDescription,
129
+ } = inviteRpcMessage
123
130
  const invite = { ...inviteRpcMessage, receivedAt: Date.now() }
124
131
 
125
132
  this.#l.log('Received invite %h from %S', inviteId, peerId)
@@ -149,7 +156,12 @@ export class InviteApi extends TypedEmitter {
149
156
  return this.rpc.sendInviteResponse(peerId, { decision, inviteId })
150
157
  }),
151
158
  addProject: fromPromise(async ({ input: projectDetails }) => {
152
- return this.#addProject({ ...projectDetails, projectName })
159
+ return this.#addProject({
160
+ ...projectDetails,
161
+ projectName,
162
+ projectColor,
163
+ projectDescription,
164
+ })
153
165
  }),
154
166
  },
155
167
  guards: {