@comapeo/core 5.3.0 → 5.4.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.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/mapeo-manager.d.ts +11 -0
- package/dist/mapeo-manager.d.ts.map +1 -1
- package/dist/roles.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.js +1 -0
- package/src/mapeo-manager.js +46 -16
- package/src/roles.js +13 -8
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export namespace roles {
|
|
|
7
7
|
export { COORDINATOR_ROLE_ID };
|
|
8
8
|
export { MEMBER_ROLE_ID };
|
|
9
9
|
}
|
|
10
|
+
export type MapShare = import("./mapeo-project.js").MapShare;
|
|
10
11
|
export type MapeoProject = import("./mapeo-project.js").MapeoProject;
|
|
11
12
|
export type EditableProjectSettings = import("./mapeo-project.js").EditableProjectSettings;
|
|
12
13
|
export namespace IconApi {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;;AAiDO,0CARI,YAAY,uBACZ,CACV,OAAW,GACX,OAAW,QAAQ,EAAE,MAAM,GAC3B,OAAW,SAAS,EAAE,MAAM,CACzB,GACS,OAAO,YAAY,EAAE,iBAAiB,CAGF;;;;;;uBAvCnC,OAAO,oBAAoB,EAAE,QAAQ;2BACrC,OAAO,oBAAoB,EAAE,YAAY;sCACzC,OAAO,oBAAoB,EAAE,uBAAuB;;sBAGrD,OAAO,eAAe,EAAE,UAAU;mBAClC,OAAO,eAAe,EAAE,OAAO;;;kBAI/B,OAAO,YAAY,EAAE,MAAM;oBAC3B,OAAO,eAAe,EAAE,QAAQ;qBAIA,SAAS,SAAzC,OAAQ,YAAY,EAAE,QAAS,IAC/B,OAAO,YAAY,EAAE,WAAW,CAAC,SAAS,CAAC;;;kBAI3C,OAAO,wBAAwB,EAAE,MAAM;;;sBAIvC,OAAO,iBAAiB,EAAE,UAAU;kBACpC,OAAO,YAAY,EAAE,MAAM;8BAC3B,OAAO,YAAY,EAAE,kBAAkB;oCACvC,OAAO,YAAY,EAAE,wBAAwB;;gCAlCnD,YAAY;oCAAZ,YAAY;+BAAZ,YAAY"}
|
package/dist/mapeo-manager.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export const DEFAULT_IS_ARCHIVE_DEVICE: true;
|
|
|
7
7
|
/**
|
|
8
8
|
* @typedef {object} MapeoManagerEvents
|
|
9
9
|
* @property {(peers: PublicPeerInfo[]) => void} local-peers Emitted when the list of connected peers changes (new ones added, or connection status changes)
|
|
10
|
+
* @property {(mapShare: import('./mapeo-project.js').MapShare) => void} map-share Emitted when a project has recieved a map share request
|
|
11
|
+
* @property {(e: Error, mapShare: MapShareExtension) => void} map-share-error - Emitted when an incoming map share fails to be recieved due to formatting issues
|
|
10
12
|
*/
|
|
11
13
|
/**
|
|
12
14
|
* @extends {TypedEmitter<MapeoManagerEvents>}
|
|
@@ -189,6 +191,14 @@ export type MapeoManagerEvents = {
|
|
|
189
191
|
* Emitted when the list of connected peers changes (new ones added, or connection status changes)
|
|
190
192
|
*/
|
|
191
193
|
"local-peers": (peers: PublicPeerInfo[]) => void;
|
|
194
|
+
/**
|
|
195
|
+
* Emitted when a project has recieved a map share request
|
|
196
|
+
*/
|
|
197
|
+
"map-share": (mapShare: import("./mapeo-project.js").MapShare) => void;
|
|
198
|
+
/**
|
|
199
|
+
* - Emitted when an incoming map share fails to be recieved due to formatting issues
|
|
200
|
+
*/
|
|
201
|
+
"map-share-error": (e: Error, mapShare: MapShareExtension) => void;
|
|
192
202
|
};
|
|
193
203
|
import { TypedEmitter } from 'tiny-typed-emitter';
|
|
194
204
|
import { MapeoProject } from './mapeo-project.js';
|
|
@@ -201,4 +211,5 @@ import type { SetNonNullable } from 'type-fest';
|
|
|
201
211
|
import type { ProjectJoinDetails } from './generated/rpc.js';
|
|
202
212
|
import type { ProjectSettings } from '@comapeo/schema';
|
|
203
213
|
import type { ProjectInfo } from './schema/client.js';
|
|
214
|
+
import type { MapShareExtension } from './generated/extensions.js';
|
|
204
215
|
//# sourceMappingURL=mapeo-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapeo-manager.d.ts","sourceRoot":"","sources":["../src/mapeo-manager.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mapeo-manager.d.ts","sourceRoot":"","sources":["../src/mapeo-manager.js"],"names":[],"mappings":"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"}
|
package/dist/roles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../src/roles.js"],"names":[],"mappings":"AAMA,8CAA8C;AAG9C,iDAAiD;AACjD,qDAAqD;AACrD,gDAAgD;AAChD,iDAAiD;AACjD,8CAA8C;AAC9C,4CAA4C;AAE5C,gDAIC;AAwBD,6HAAmE;AAMnE,mIAA+E;AAa/E;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,2BAFU,IAAI,CAAC,OAAO,eAAe,CAAC,CAmBrC;AA6BD;;;;;;;;;GASG;AACH,sBAFU,IAAI,CAAC,OAAO,UAAU,CAAC,CAmBhC;AAED,yCAAyC;AACzC,oBADW,GAAG,CAAW,IAAN,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAE,CAgEpC;AAED;;;GAGG;AAEH;;GAEG;AACH;IAOE,yCAAwB;IAExB;;;;;;;;;;;;;;OAcG;IACH,6EAZG;QAMQ,QAAQ,EANR,OAAO,qBAAqB,EAAE,QAAQ,CAChD,OAAW,sBAAsB,EAAE,SAAS,CAAC,MAAM,CAAC,EACpD,cAAkB,qBAAqB,EAAE,SAAS,EAClD,MAAU,EACV,OAAW,iBAAiB,EAAE,IAAI,EAClC,OAAW,iBAAiB,EAAE,SAAS,CACpC;QACyD,aAAa,EAA/D,OAAO,qBAAqB,EAAE,aAAa;QACS,WAAW,EAA/D,OAAO,yBAAyB,EAAE,WAAW;QAChC,UAAU,EAAvB,MAAM;QACO,SAAS,EAAtB,MAAM;KAChB,EASA;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAuBzB;IAED;;;;;OAKG;IACH,wBAHW,MAAM,GACJ,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAOvC;IAED;;;;;;;OAOG;IACH,UAFa,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAsCtC;IAED;;;;;;;;;;OAUG;IACH,qBALW,MAAM,UACN,wBAAwB;gBAExB,MAAM;
|
|
1
|
+
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../src/roles.js"],"names":[],"mappings":"AAMA,8CAA8C;AAG9C,iDAAiD;AACjD,qDAAqD;AACrD,gDAAgD;AAChD,iDAAiD;AACjD,8CAA8C;AAC9C,4CAA4C;AAE5C,gDAIC;AAwBD,6HAAmE;AAMnE,mIAA+E;AAa/E;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,2BAFU,IAAI,CAAC,OAAO,eAAe,CAAC,CAmBrC;AA6BD;;;;;;;;;GASG;AACH,sBAFU,IAAI,CAAC,OAAO,UAAU,CAAC,CAmBhC;AAED,yCAAyC;AACzC,oBADW,GAAG,CAAW,IAAN,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAE,CAgEpC;AAED;;;GAGG;AAEH;;GAEG;AACH;IAOE,yCAAwB;IAExB;;;;;;;;;;;;;;OAcG;IACH,6EAZG;QAMQ,QAAQ,EANR,OAAO,qBAAqB,EAAE,QAAQ,CAChD,OAAW,sBAAsB,EAAE,SAAS,CAAC,MAAM,CAAC,EACpD,cAAkB,qBAAqB,EAAE,SAAS,EAClD,MAAU,EACV,OAAW,iBAAiB,EAAE,IAAI,EAClC,OAAW,iBAAiB,EAAE,SAAS,CACpC;QACyD,aAAa,EAA/D,OAAO,qBAAqB,EAAE,aAAa;QACS,WAAW,EAA/D,OAAO,yBAAyB,EAAE,WAAW;QAChC,UAAU,EAAvB,MAAM;QACO,SAAS,EAAtB,MAAM;KAChB,EASA;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAuBzB;IAED;;;;;OAKG;IACH,wBAHW,MAAM,GACJ,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAOvC;IAED;;;;;;;OAOG;IACH,UAFa,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAsCtC;IAED;;;;;;;;;;OAUG;IACH,qBALW,MAAM,UACN,wBAAwB;gBAExB,MAAM;kCAoEhB;;CAQF;sBApaY,CAAC,IADD,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;qBAItC,SAAS,CAAC,OAAO,QAAQ,CAAC;iCAa1B,SAAS,CAAC,OAAO,uBAAuB,CAAC;uCAMzC,SAAS,CAAC,OAAO,6BAA6B,CAAC;uCAM/C,SAAS,CAAC,OAAO,6BAA6B,CAAC;;;;;aAa/C,OAAO;;;;cACP,OAAO;;;;gBACP,OAAO;;;;iBACP,OAAO;;iBAIE,CAAC,SAAV,MAAO;YAEP,CAAC;UACD,MAAM;UACN,MAAM,CAAC,OAAO,iBAAiB,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;oBACvE,wBAAwB,EAAE;UAC1B,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;;;;;;YAyJxC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;;6BAlOd,oBAAoB;AAiBjD;;;GAGG;AAEH,mDAAmD;AACnD,yJASC;AAGD,8EAA8E;AAC9E,yGAEC;AAGD,0FAA0F;AAC1F,+GAEC;AAGD,0FAA0F;AAC1F,oIAOC;+BAtD8B,YAAY"}
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export { FastifyController } from './fastify-controller.js'
|
|
|
9
9
|
export { MapeoManager } from './mapeo-manager.js'
|
|
10
10
|
|
|
11
11
|
// Type exports
|
|
12
|
+
/** @typedef {import('./mapeo-project.js').MapShare} MapShare */
|
|
12
13
|
/** @typedef {import('./mapeo-project.js').MapeoProject} MapeoProject */
|
|
13
14
|
/** @typedef {import('./mapeo-project.js').EditableProjectSettings} EditableProjectSettings */
|
|
14
15
|
/**
|
package/src/mapeo-manager.js
CHANGED
|
@@ -54,6 +54,7 @@ import { WebSocket } from 'ws'
|
|
|
54
54
|
import { excludeKeys } from 'filter-obj'
|
|
55
55
|
import { migrate } from './lib/drizzle-helpers.js'
|
|
56
56
|
|
|
57
|
+
/** @import { MapShareExtension } from './generated/extensions.js' */
|
|
57
58
|
/** @import NoiseSecretStream from '@hyperswarm/secret-stream' */
|
|
58
59
|
/** @import { SetNonNullable } from 'type-fest' */
|
|
59
60
|
/** @import { ProjectJoinDetails, } from './generated/rpc.js' */
|
|
@@ -99,6 +100,8 @@ export const DEFAULT_IS_ARCHIVE_DEVICE = true
|
|
|
99
100
|
/**
|
|
100
101
|
* @typedef {object} MapeoManagerEvents
|
|
101
102
|
* @property {(peers: PublicPeerInfo[]) => void} local-peers Emitted when the list of connected peers changes (new ones added, or connection status changes)
|
|
103
|
+
* @property {(mapShare: import('./mapeo-project.js').MapShare) => void} map-share Emitted when a project has recieved a map share request
|
|
104
|
+
* @property {(e: Error, mapShare: MapShareExtension) => void} map-share-error - Emitted when an incoming map share fails to be recieved due to formatting issues
|
|
102
105
|
*/
|
|
103
106
|
|
|
104
107
|
/**
|
|
@@ -465,10 +468,6 @@ export class MapeoManager extends TypedEmitter {
|
|
|
465
468
|
projectSecretKey: projectKeypair.secretKey,
|
|
466
469
|
})
|
|
467
470
|
|
|
468
|
-
project.once('close', () => {
|
|
469
|
-
this.#activeProjects.delete(projectPublicId)
|
|
470
|
-
})
|
|
471
|
-
|
|
472
471
|
// 5. Write project settings to project instance
|
|
473
472
|
await project.$setProjectSettings({
|
|
474
473
|
name,
|
|
@@ -545,10 +544,6 @@ export class MapeoManager extends TypedEmitter {
|
|
|
545
544
|
await project[kClearData]()
|
|
546
545
|
}
|
|
547
546
|
|
|
548
|
-
project.once('close', () => {
|
|
549
|
-
this.#activeProjects.delete(projectPublicId)
|
|
550
|
-
})
|
|
551
|
-
|
|
552
547
|
// 3. Keep track of project instance as we know it's a properly existing project
|
|
553
548
|
this.#activeProjects.set(projectPublicId, project)
|
|
554
549
|
|
|
@@ -580,6 +575,35 @@ export class MapeoManager extends TypedEmitter {
|
|
|
580
575
|
.get()?.projectInfo
|
|
581
576
|
},
|
|
582
577
|
})
|
|
578
|
+
|
|
579
|
+
const projectPublicId = projectKeyToPublicId(projectKeys.projectKey)
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* @param {import('./mapeo-project.js').MapShare} mapShare
|
|
583
|
+
*/
|
|
584
|
+
const onMapShare = (mapShare) => {
|
|
585
|
+
this.emit('map-share', mapShare)
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
/**
|
|
589
|
+
*
|
|
590
|
+
* @param {Error} err
|
|
591
|
+
* @param {MapShareExtension} mapShareExtension
|
|
592
|
+
*/
|
|
593
|
+
const onMapShareError = (err, mapShareExtension) => {
|
|
594
|
+
this.emit('map-share-error', err, mapShareExtension)
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
project.once('close', () => {
|
|
598
|
+
this.#activeProjects.delete(projectPublicId)
|
|
599
|
+
project.removeListener('map-share', onMapShare)
|
|
600
|
+
project.removeListener('map-share-error', onMapShareError)
|
|
601
|
+
})
|
|
602
|
+
|
|
603
|
+
project.on('map-share', onMapShare)
|
|
604
|
+
|
|
605
|
+
project.on('map-share-error', onMapShareError)
|
|
606
|
+
|
|
583
607
|
return project
|
|
584
608
|
}
|
|
585
609
|
|
|
@@ -681,19 +705,16 @@ export class MapeoManager extends TypedEmitter {
|
|
|
681
705
|
// If it does, that means the project has already been either created or added before
|
|
682
706
|
const projectId = projectKeyToId(projectKey)
|
|
683
707
|
const projectInviteId = projectKeyToProjectInviteId(projectKey)
|
|
708
|
+
/** @type {ProjectKeys['projectSecretKey']} */
|
|
709
|
+
let projectSecretKey = undefined
|
|
684
710
|
|
|
685
|
-
const
|
|
711
|
+
const existingProject = this.#db
|
|
686
712
|
.select()
|
|
687
713
|
.from(projectKeysTable)
|
|
688
|
-
.where(
|
|
689
|
-
and(
|
|
690
|
-
eq(projectKeysTable.projectId, projectId),
|
|
691
|
-
eq(projectKeysTable.hasLeftProject, false)
|
|
692
|
-
)
|
|
693
|
-
)
|
|
714
|
+
.where(and(eq(projectKeysTable.projectId, projectId)))
|
|
694
715
|
.get()
|
|
695
716
|
|
|
696
|
-
if (
|
|
717
|
+
if (existingProject && existingProject.hasLeftProject !== true) {
|
|
697
718
|
throw new Error(`Project with ID ${projectPublicId} already exists`)
|
|
698
719
|
}
|
|
699
720
|
|
|
@@ -707,6 +728,14 @@ export class MapeoManager extends TypedEmitter {
|
|
|
707
728
|
await activeProject.close()
|
|
708
729
|
}
|
|
709
730
|
|
|
731
|
+
if (existingProject) {
|
|
732
|
+
const projectKeys = this.#decodeProjectKeysCipher(
|
|
733
|
+
existingProject.keysCipher,
|
|
734
|
+
projectId
|
|
735
|
+
)
|
|
736
|
+
projectSecretKey = projectKeys.projectSecretKey
|
|
737
|
+
}
|
|
738
|
+
|
|
710
739
|
// No awaits here - need to update table in same tick as the projectExists check
|
|
711
740
|
|
|
712
741
|
// 3. Update the project keys table
|
|
@@ -716,6 +745,7 @@ export class MapeoManager extends TypedEmitter {
|
|
|
716
745
|
projectInviteId,
|
|
717
746
|
projectKeys: {
|
|
718
747
|
projectKey,
|
|
748
|
+
projectSecretKey,
|
|
719
749
|
encryptionKeys,
|
|
720
750
|
},
|
|
721
751
|
projectInfo: {
|
package/src/roles.js
CHANGED
|
@@ -389,14 +389,6 @@ export class Roles extends TypedEmitter {
|
|
|
389
389
|
// device that has not yet synced (so we do not yet have a replica of
|
|
390
390
|
// their authCore). In this case we want fromIndex to be 0
|
|
391
391
|
}
|
|
392
|
-
const isAssigningProjectCreatorRole =
|
|
393
|
-
authCoreId === this.#projectCreatorAuthCoreId
|
|
394
|
-
if (isAssigningProjectCreatorRole && !this.#isProjectCreator()) {
|
|
395
|
-
throw new Error(
|
|
396
|
-
"Only the project creator can assign the project creator's role"
|
|
397
|
-
)
|
|
398
|
-
}
|
|
399
|
-
|
|
400
392
|
if (roleId === LEFT_ROLE_ID) {
|
|
401
393
|
if (deviceId !== this.#ownDeviceId) {
|
|
402
394
|
throw new Error('Cannot assign LEFT role to another device')
|
|
@@ -423,6 +415,19 @@ export class Roles extends TypedEmitter {
|
|
|
423
415
|
}
|
|
424
416
|
)
|
|
425
417
|
} else {
|
|
418
|
+
const isAssigningProjectCreatorRole =
|
|
419
|
+
authCoreId === this.#projectCreatorAuthCoreId
|
|
420
|
+
const isAssigningSelf = deviceId === this.#ownDeviceId
|
|
421
|
+
if (
|
|
422
|
+
!isAssigningSelf &&
|
|
423
|
+
isAssigningProjectCreatorRole &&
|
|
424
|
+
roleId !== BLOCKED_ROLE_ID
|
|
425
|
+
) {
|
|
426
|
+
throw new Error(
|
|
427
|
+
'Project creators can only be assigned the blocked role'
|
|
428
|
+
)
|
|
429
|
+
}
|
|
430
|
+
|
|
426
431
|
await this.#dataType[kCreateWithDocId](deviceId, {
|
|
427
432
|
schemaName: 'role',
|
|
428
433
|
roleId,
|