@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.
- package/dist/generated/rpc.d.ts +47 -0
- package/dist/generated/rpc.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/invite/invite-api.d.ts +4 -5
- package/dist/invite/invite-api.d.ts.map +1 -1
- package/dist/local-peers.d.ts +31 -0
- package/dist/local-peers.d.ts.map +1 -1
- package/dist/mapeo-manager.d.ts +30 -22
- package/dist/mapeo-manager.d.ts.map +1 -1
- package/dist/mapeo-project.d.ts +39 -1
- package/dist/mapeo-project.d.ts.map +1 -1
- package/dist/member-api.d.ts +15 -1
- package/dist/member-api.d.ts.map +1 -1
- package/dist/schema/client.d.ts +26 -3
- package/dist/schema/client.d.ts.map +1 -1
- package/dist/sync/sync-api.d.ts +4 -1
- package/dist/sync/sync-api.d.ts.map +1 -1
- package/drizzle/client/0002_brief_demogoblin.sql +2 -0
- package/drizzle/client/meta/0002_snapshot.json +220 -0
- package/drizzle/client/meta/_journal.json +7 -0
- package/package.json +3 -3
- package/src/generated/rpc.d.ts +47 -0
- package/src/generated/rpc.js +241 -3
- package/src/generated/rpc.ts +280 -1
- package/src/invite/invite-api.js +15 -3
- package/src/local-peers.js +194 -0
- package/src/mapeo-manager.js +60 -20
- package/src/mapeo-project.js +21 -3
- package/src/member-api.js +67 -10
- package/src/schema/client.js +3 -2
- package/src/sync/sync-api.js +6 -2
package/src/generated/rpc.ts
CHANGED
|
@@ -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
|
};
|
package/src/invite/invite-api.js
CHANGED
|
@@ -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:
|
|
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 {
|
|
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({
|
|
159
|
+
return this.#addProject({
|
|
160
|
+
...projectDetails,
|
|
161
|
+
projectName,
|
|
162
|
+
projectColor,
|
|
163
|
+
projectDescription,
|
|
164
|
+
})
|
|
153
165
|
}),
|
|
154
166
|
},
|
|
155
167
|
guards: {
|