@comapeo/core 5.1.1 → 5.1.3
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/blob-store/index.d.ts +7 -0
- package/dist/blob-store/index.d.ts.map +1 -1
- package/dist/core-manager/index.d.ts.map +1 -1
- package/dist/import-categories.d.ts.map +1 -1
- package/dist/invite/invite-api.d.ts +2 -1
- package/dist/invite/invite-api.d.ts.map +1 -1
- package/dist/mapeo-manager.d.ts +5 -0
- package/dist/mapeo-manager.d.ts.map +1 -1
- package/dist/mapeo-project.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/blob-store/index.js +26 -0
- package/src/core-manager/index.js +6 -0
- package/src/import-categories.js +3 -0
- package/src/invite/invite-api.js +10 -5
- package/src/mapeo-manager.js +32 -3
- package/src/mapeo-project.js +9 -0
|
@@ -80,6 +80,13 @@ export class BlobStore extends TypedEmitter<BlobStoreEvents> {
|
|
|
80
80
|
getEntryBlob(driveId: BlobId["driveId"], entry: import("hyperdrive").HyperdriveEntry, { length }?: {
|
|
81
81
|
length?: number | undefined;
|
|
82
82
|
} | undefined): Promise<Buffer | null>;
|
|
83
|
+
/**
|
|
84
|
+
* Check if all the blocks for a given blob entry have been downloaded
|
|
85
|
+
* @param {BlobId['driveId']} driveId Hyperdrive drive id
|
|
86
|
+
* @param {import('hyperdrive').HyperdriveEntry} entry Hyperdrive entry
|
|
87
|
+
* @returns {Promise<boolean>}
|
|
88
|
+
*/
|
|
89
|
+
hasDownloadedBlobEntry(driveId: BlobId["driveId"], entry: import("hyperdrive").HyperdriveEntry): Promise<boolean>;
|
|
83
90
|
/**
|
|
84
91
|
*
|
|
85
92
|
* @param {Omit<BlobId, 'driveId'>} blobId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blob-store/index.js"],"names":[],"mappings":"AA6DA,+CAA+C;AAC/C;IAoFE;;;;;OAKG;IACH,sDAJG;QAAgE,WAAW,EAAnE,OAAO,0BAA0B,EAAE,WAAW;QAC5B,eAAe;QACO,MAAM;KAAC,EAsBzD;IAED;;OAEG;IACH,4BAEC;IAED,+BAEC;IAED;;;OAGG;IACH,sBAHW,MAAM,GACJ,iBAAiB,GAAG,IAAI,CAIpC;IAED,uCAAuC;IACvC,oCADY,OAAO,iBAkBlB;IAYD;;;;;;OAMG;IACH,sCANW,MAAM,sBAEd;QAAqB,IAAI;QACJ,OAAO;KAC5B,GAAU,OAAO,CAAC,UAAU,CAAC,CAQ/B;IAED;;;;;;OAMG;IACH,mDANW,MAAM;;;oBAIJ,QAAQ,CAYpB;IAED;;;;;;;;OAQG;IACH,2CAJG;QAAuB,IAAI;QACkC,MAAM;KACnE,GAAU,sBAAsB,CAOlC;IAED;;;;;;;;OAQG;IACH,mCANW,MAAM,CAAC,SAAS,CAAC,SACjB,OAAO,YAAY,EAAE,eAAe;;oBAGlC,OAAO,CAAC,QAAQ,CAAC,CAa7B;IAED;;;;;;OAMG;IACH,sBANW,MAAM,CAAC,SAAS,CAAC,SACjB,OAAO,YAAY,EAAE,eAAe;;oBAGlC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAalC;IAED;;;;;;;OAOG;IACH,6BANW,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QACvB,MAAM;;oBAGJ,OAAO,CAAC,MAAM,CAAC,CAM3B;IAED;;;;;OAKG;IACH,2CALW,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;;oBAGrB,QAAQ,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAQ1C;IAED;;;;;;;OAOG;IACH,wCAPW,MAAM;;;;oBAKJ,OAAO,CAAC,OAAO,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC,CAWhE;IAED;;;;;OAKG;IACH,wCALW,MAAM;;oBAGL,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAO7C;IAED,cAMC;;CACF;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blob-store/index.js"],"names":[],"mappings":"AA6DA,+CAA+C;AAC/C;IAoFE;;;;;OAKG;IACH,sDAJG;QAAgE,WAAW,EAAnE,OAAO,0BAA0B,EAAE,WAAW;QAC5B,eAAe;QACO,MAAM;KAAC,EAsBzD;IAED;;OAEG;IACH,4BAEC;IAED,+BAEC;IAED;;;OAGG;IACH,sBAHW,MAAM,GACJ,iBAAiB,GAAG,IAAI,CAIpC;IAED,uCAAuC;IACvC,oCADY,OAAO,iBAkBlB;IAYD;;;;;;OAMG;IACH,sCANW,MAAM,sBAEd;QAAqB,IAAI;QACJ,OAAO;KAC5B,GAAU,OAAO,CAAC,UAAU,CAAC,CAQ/B;IAED;;;;;;OAMG;IACH,mDANW,MAAM;;;oBAIJ,QAAQ,CAYpB;IAED;;;;;;;;OAQG;IACH,2CAJG;QAAuB,IAAI;QACkC,MAAM;KACnE,GAAU,sBAAsB,CAOlC;IAED;;;;;;;;OAQG;IACH,mCANW,MAAM,CAAC,SAAS,CAAC,SACjB,OAAO,YAAY,EAAE,eAAe;;oBAGlC,OAAO,CAAC,QAAQ,CAAC,CAa7B;IAED;;;;;;OAMG;IACH,sBANW,MAAM,CAAC,SAAS,CAAC,SACjB,OAAO,YAAY,EAAE,eAAe;;oBAGlC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAalC;IAED;;;;;OAKG;IACH,gCAJW,MAAM,CAAC,SAAS,CAAC,SACjB,OAAO,YAAY,EAAE,eAAe,GAClC,OAAO,CAAC,OAAO,CAAC,CAoB5B;IAED;;;;;;;OAOG;IACH,6BANW,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QACvB,MAAM;;oBAGJ,OAAO,CAAC,MAAM,CAAC,CAM3B;IAED;;;;;OAKG;IACH,2CALW,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;;oBAGrB,QAAQ,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAQ1C;IAED;;;;;;;OAOG;IACH,wCAPW,MAAM;;;;oBAKJ,OAAO,CAAC,OAAO,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC,CAWhE;IAED;;;;;OAKG;IACH,wCALW,MAAM;;oBAGL,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAO7C;IAED,cAMC;;CACF;;mBArYS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI;uBAC9D,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,MAAM,CAAA;KACnB,KAAK,IAAI;WACH,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;;uBAKnB,YAAY,GAAG,eAAe;;;;;;6BAzBd,oBAAoB;uCASkC,aAAa;4BAAb,aAAa;4CAAb,aAAa;gCAHhE,WAAW;8BAEgB,SAAS;uBAN7C,cAAc;8CAKS,aAAa;iDACA,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core-manager/index.js"],"names":[],"mappings":"AAwBA,kDAAqE;AAErE,kDAAkD;AAClD,8EAA8E;AAC9E;;;;;GAKG;AAEH;;GAEG;AACH;IAiBE,kFAEC;IAED;;;;;;;;;;OAUG;IACH,8GATG;QAA4E,EAAE,EAAtE,OAAO,4BAA4B,EAAE,qBAAqB;QACd,UAAU,EAAtD,2CAAkC;QAClB,UAAU,EAA1B,MAAM;QACW,gBAAgB;QACY,cAAc;QACb,OAAO,EAArD,OAAO,WAAW,EAAE,gBAAgB;QAClB,YAAY;QACb,MAAM;KAAC,EAyHlC;IAED,uBAEC;IAED,wBAEC;IAED,oCAEC;IAED;;;;OAIG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;OAIG;IACH,yBAFW,SAAS,cAInB;IAED;;;;OAIG;IACH,oBAFW,SAAS,gBAInB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ,IAAI,GAAG,SAAS,CAK5B;IAED;;;;;OAKG;IACH,oCAHW,MAAM,GACJ,UAAU,GAAG,SAAS,CAOlC;IAED;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core-manager/index.js"],"names":[],"mappings":"AAwBA,kDAAqE;AAErE,kDAAkD;AAClD,8EAA8E;AAC9E;;;;;GAKG;AAEH;;GAEG;AACH;IAiBE,kFAEC;IAED;;;;;;;;;;OAUG;IACH,8GATG;QAA4E,EAAE,EAAtE,OAAO,4BAA4B,EAAE,qBAAqB;QACd,UAAU,EAAtD,2CAAkC;QAClB,UAAU,EAA1B,MAAM;QACW,gBAAgB;QACY,cAAc;QACb,OAAO,EAArD,OAAO,WAAW,EAAE,gBAAgB;QAClB,YAAY;QACb,MAAM;KAAC,EAyHlC;IAED,uBAEC;IAED,wBAEC;IAED,oCAEC;IAED;;;;OAIG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;OAIG;IACH,yBAFW,SAAS,cAInB;IAED;;;;OAIG;IACH,oBAFW,SAAS,gBAInB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ,IAAI,GAAG,SAAS,CAK5B;IAED;;;;;OAKG;IACH,oCAHW,MAAM,GACJ,UAAU,GAAG,SAAS,CAOlC;IAED;;;OAGG;IACH,uBAcC;IAED;;;;;;OAMG;IACH,aAJW,MAAM,aACN,SAAS,GACP,UAAU,CAItB;IAiJD;;;OAGG;IACH,gCAHW,UAAU,GAAG,IAAI,QACjB,aAAa,QAIvB;IAgDD;;;OAGG;IACH,4BAHW,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAhCD;;;;;;;;OAQG;IACH,gCAFW,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,qBAK/C;;CAqBF;mBA3da,UAAU,QAAQ,EAAE,MAAM,CAAC;yBAC3B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE;;gBAGjD,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI;iBAChC,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,WAAW,CAAA;KAAE,KAAK,IAAI;4BACtH,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI;;;kBAyd9D,MAAM;WACN,MAAM;cACN,WAAW;eACX,SAAS;;6BA5fM,oBAAoB;+BAoB4B,aAAa;gCAAb,aAAa;mCAAb,aAAa;sBAnBpE,WAAW;uBAUV,cAAc;2BAQV,WAAW;uCACuC,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-categories.d.ts","sourceRoot":"","sources":["../src/import-categories.js"],"names":[],"mappings":"AAqBA,uDAAuD;AACvD,0DAA0D;AAC1D;;;;;;GAMG;AACH,0CANW,YAAY,wBAEpB;IAAwB,QAAQ,EAAxB,MAAM;IACgC,MAAM,EAA5C,OAAO,aAAa,EAAE,MAAM;CACpC,GAAU,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"import-categories.d.ts","sourceRoot":"","sources":["../src/import-categories.js"],"names":[],"mappings":"AAqBA,uDAAuD;AACvD,0DAA0D;AAC1D;;;;;;GAMG;AACH,0CANW,YAAY,wBAEpB;IAAwB,QAAQ,EAAxB,MAAM;IACgC,MAAM,EAA5C,OAAO,aAAa,EAAE,MAAM;CACpC,GAAU,OAAO,CAAC,IAAI,CAAC,CA6RzB;kBAnSa;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;kCADlB,oBAAoB"}
|
|
@@ -32,7 +32,7 @@ export class InviteApi extends TypedEmitter<InviteApiEvents> {
|
|
|
32
32
|
* @param {Object} options
|
|
33
33
|
* @param {import('../local-peers.js').LocalPeers} options.rpc
|
|
34
34
|
* @param {object} options.queries
|
|
35
|
-
* @param {(projectInviteId: Readonly<Buffer>) => undefined | { projectPublicId: string }} options.queries.getProjectByInviteId
|
|
35
|
+
* @param {(projectInviteId: Readonly<Buffer>) => undefined | { projectPublicId: string, hasLeftProject: boolean }} options.queries.getProjectByInviteId
|
|
36
36
|
* @param {AddProjectQuery} options.queries.addProject
|
|
37
37
|
* @param {Logger} [options.logger]
|
|
38
38
|
*/
|
|
@@ -41,6 +41,7 @@ export class InviteApi extends TypedEmitter<InviteApiEvents> {
|
|
|
41
41
|
queries: {
|
|
42
42
|
getProjectByInviteId: (projectInviteId: Readonly<Buffer>) => undefined | {
|
|
43
43
|
projectPublicId: string;
|
|
44
|
+
hasLeftProject: boolean;
|
|
44
45
|
};
|
|
45
46
|
addProject: AddProjectQuery;
|
|
46
47
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invite-api.d.ts","sourceRoot":"","sources":["../../src/invite/invite-api.js"],"names":[],"mappings":"AAcA,iEAAiE;AACjE,gDAAgD;AAChD;;;;;;GAMG;AAQH;;;GAGG;AACH,4GAA4G;AAC5G,+LAA+L;AAE/L;;GAEG;AAEH;;;;GAIG;AAEH;;GAEG;AAEH;;GAEG;AACH;IAOE;;;;;;;OAOG;IACH,sCANG;QAAwD,GAAG,EAAnD,OAAO,mBAAmB,EAAE,UAAU;QACtB,OAAO,EAC/B;
|
|
1
|
+
{"version":3,"file":"invite-api.d.ts","sourceRoot":"","sources":["../../src/invite/invite-api.js"],"names":[],"mappings":"AAcA,iEAAiE;AACjE,gDAAgD;AAChD;;;;;;GAMG;AAQH;;;GAGG;AACH,4GAA4G;AAC5G,+LAA+L;AAE/L;;GAEG;AAEH;;;;GAIG;AAEH;;GAEG;AAEH;;GAEG;AACH;IAOE;;;;;;;OAOG;IACH,sCANG;QAAwD,GAAG,EAAnD,OAAO,mBAAmB,EAAE,UAAU;QACtB,OAAO,EAC/B;YAAiI,oBAAoB,EAA7I,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG;gBAAE,eAAe,EAAE,MAAM,CAAC;gBAAC,cAAc,EAAE,OAAO,CAAA;aAAE;YACtE,UAAU,EAA3C,eAAe;SACvB;QAAyB,MAAM;KAAC,EAkClC;IA3BC,4CAAc;IA4KhB;;;;OAIG;IACH,WAFa,KAAK,CAAC,MAAM,CAAC,CAUzB;IAED;;;;;OAKG;IACH,wBAHW,MAAM,GACJ,MAAM,CASlB;IAED;;;;;;;;;;;;OAYG;IACH,qCAHW,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GACtB,OAAO,CAAC,MAAM,CAAC,CAwC3B;IAED;;;OAGG;IACH,qCAHW,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GACtB,IAAI,CAWhB;;CACF;+BAmD0C,CAAC,SAA/B,OAAQ,QAAQ,EAAE,UAAW,IAC7B,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,OAAO,QAAQ,EAAE,aAAa,GAAG,MAAM,CAAC,GAAG,KAAK;6BA3WjF,gBAAgB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;0BAExC,kBAAkB,CAAC,OAAO,QAAQ,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAAC,CAAC;qBAC9E,OAAO,WAAW,EAAE,QAAQ,CAAC,WAAW,cAAc,CAAC,GAAG;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;;iBAGvK,OAAO,QAAQ,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC;;;uBAKvD,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;sBACxB,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;;8BAIzB,CAAC,cAAc,EAAE,mBAAmB,KAAK,OAAO,CAAC,MAAM,CAAC;6BAhDxC,oBAAoB;uBAK1B,cAAc;gDAgB3B,qBAAqB;mCAdI,2BAA2B;gCAQ9B,aAAa;yCADJ,qBAAqB"}
|
package/dist/mapeo-manager.d.ts
CHANGED
|
@@ -161,6 +161,11 @@ export class MapeoManager extends TypedEmitter<MapeoManagerEvents> {
|
|
|
161
161
|
*/
|
|
162
162
|
leaveProject(projectPublicId: string): Promise<void>;
|
|
163
163
|
getMapStyleJsonUrl(): Promise<string>;
|
|
164
|
+
/**
|
|
165
|
+
* Cleans up open resorces and closes open projects
|
|
166
|
+
* @returns {Promise<void>}
|
|
167
|
+
*/
|
|
168
|
+
close(): Promise<void>;
|
|
164
169
|
#private;
|
|
165
170
|
}
|
|
166
171
|
export type ValidatedProjectKeys = SetNonNullable<ProjectKeys, "encryptionKeys">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapeo-manager.d.ts","sourceRoot":"","sources":["../src/mapeo-manager.js"],"names":[],"mappings":"AAuFA,oDAEC;AAED,mFAC6C;AAE7C,6CAA6C;AAE7C;;GAEG;AAEH;;;GAGG;AAEH;;GAEG;AACH;
|
|
1
|
+
{"version":3,"file":"mapeo-manager.d.ts","sourceRoot":"","sources":["../src/mapeo-manager.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapeo-project.d.ts","sourceRoot":"","sources":["../src/mapeo-project.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mapeo-project.d.ts","sourceRoot":"","sources":["../src/mapeo-project.js"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA7BJ,CAAC;wBAGN,CAAA;iCAAsC,CAAA;gCAI3B,CAAC;gCAKc,CAAA;oCAGtB,CAAC;;oCAcG,CAAC;;;;;;;;;;;;;;;;;;;;;;;8BA7BJ,CAAC;wBAGN,CAAA;iCAAsC,CAAA;gCAI3B,CAAC;gCAKc,CAAA;oCAGtB,CAAC;;oCAcG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAybN;IAED,8BAEC;IAkND;;;;;;;;;;;OAWG;IACH,yCAPW,CACV,OAAW,GACX,OAAW,QAAQ,EAAE,MAAM,GAC3B,OAAW,SAAS,EAAE,MAAM,CACzB,GACS,iBAAiB,CAqB7B;IAED;;;OAGG;IACH,2BAHW,IAAI,CAAC,OAAO,iBAAiB,EAAE,eAAe,EAAE,MAAM,GAAG,YAAY,GAAG,yBAAyB,CAAC,GAChG,OAAO,CAAC,OAAO,iBAAiB,EAAE,UAAU,CAAC,CAwBzD;IAED,uCAAuC;IACvC,uCADY,OAAO,iBAGlB;IAED,yBAAyB;IACzB,kCAEC;IAsPD;;;;OAIG;IACH,iCAJW,OAAO,UACP,OAAO,GACL,OAAO,CAAC,MAAM,CAAC,CAY3B;IAoPD,iCAUC;IAED;;;OAGG;IACH,gBAFa,OAAO,CAAC,IAAI,CAAC,CA+BzB;;CAsCF;sCA90Ca,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC;6BACxC,oBAAoB,CAAC,gBAAgB,CAAC;8BACtC,GAAG,CAAC,MAAM,EAAC,UAAU,CAAC;;cAE1B,MAAM,GAAC,SAAS;YAChB,MAAM;;;aAIF,MAAM,EAAE;YACR,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;oBAIvB,MAAM;kBACN,KAAK;YACL,KAAK;aACL,KAAK;;;UAwBL,IAAI,GAAG;QAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC;;;;;;WAKnC,MAAM,IAAI;uBACV,CAAC,WAAW,EAAE,eAAe,KAAK,IAAI;;6BAjHvB,oBAAoB;wBAYzB,eAAe;0BAHb,sBAAsB;yBACL,qBAAqB;0BAuCtC,iBAAiB;wBAKpC,oBAAoB;2BAIA,sBAAsB;0BAOzB,YAAY;wBATZ,eAAe;4BAhDX,yBAAyB;8BAuB9C,qBAAqB;0BApBF,uBAAuB;uCAqD8H,YAAY;4BAnD/J,yBAAyB;iCAmD0H,YAAY;0BAJjK,IAAI;uBALP,aAAa;0CAQ0B,iBAAiB;gCACgG,YAAY;4BAAZ,YAAY"}
|
package/package.json
CHANGED
package/src/blob-store/index.js
CHANGED
|
@@ -313,6 +313,32 @@ export class BlobStore extends TypedEmitter {
|
|
|
313
313
|
return blobs.get(entry.value.blob, { wait: false, start: 0, length })
|
|
314
314
|
}
|
|
315
315
|
|
|
316
|
+
/**
|
|
317
|
+
* Check if all the blocks for a given blob entry have been downloaded
|
|
318
|
+
* @param {BlobId['driveId']} driveId Hyperdrive drive id
|
|
319
|
+
* @param {import('hyperdrive').HyperdriveEntry} entry Hyperdrive entry
|
|
320
|
+
* @returns {Promise<boolean>}
|
|
321
|
+
*/
|
|
322
|
+
async hasDownloadedBlobEntry(driveId, entry) {
|
|
323
|
+
const drive = this.#getDrive(driveId)
|
|
324
|
+
const blobs = await drive.getBlobs()
|
|
325
|
+
|
|
326
|
+
if (!blobs) {
|
|
327
|
+
return false
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
const { blockOffset, blockLength } = entry.value.blob
|
|
331
|
+
|
|
332
|
+
const core = blobs.core.session()
|
|
333
|
+
try {
|
|
334
|
+
const start = blockOffset
|
|
335
|
+
const end = blockOffset + blockLength
|
|
336
|
+
return core.has(start, end)
|
|
337
|
+
} catch {
|
|
338
|
+
return false
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
316
342
|
/**
|
|
317
343
|
*
|
|
318
344
|
* @param {Omit<BlobId, 'driveId'>} blobId
|
|
@@ -258,11 +258,17 @@ export class CoreManager extends TypedEmitter {
|
|
|
258
258
|
*/
|
|
259
259
|
async close() {
|
|
260
260
|
this.#state = 'closing'
|
|
261
|
+
|
|
262
|
+
// Closes all cores in the index
|
|
261
263
|
const promises = []
|
|
262
264
|
for (const { core } of this.#coreIndex) {
|
|
263
265
|
promises.push(core.close())
|
|
264
266
|
}
|
|
265
267
|
await Promise.all(promises)
|
|
268
|
+
|
|
269
|
+
// Closes sessions in the corestore
|
|
270
|
+
await this.#corestore.close()
|
|
271
|
+
|
|
266
272
|
this.#state = 'closed'
|
|
267
273
|
}
|
|
268
274
|
|
package/src/import-categories.js
CHANGED
|
@@ -188,6 +188,9 @@ export async function importCategories(project, { filePath, logger }) {
|
|
|
188
188
|
const { buildDateValue, ...readerMetadata } = await reader.metadata()
|
|
189
189
|
const fileVersion = await reader.fileVersion()
|
|
190
190
|
|
|
191
|
+
// Need to wait for all presets to be created so that we can read the refs for the translations
|
|
192
|
+
await queue.onIdle()
|
|
193
|
+
|
|
191
194
|
for await (const {
|
|
192
195
|
lang,
|
|
193
196
|
translations: translationsByDocType,
|
package/src/invite/invite-api.js
CHANGED
|
@@ -63,7 +63,7 @@ export class InviteApi extends TypedEmitter {
|
|
|
63
63
|
* @param {Object} options
|
|
64
64
|
* @param {import('../local-peers.js').LocalPeers} options.rpc
|
|
65
65
|
* @param {object} options.queries
|
|
66
|
-
* @param {(projectInviteId: Readonly<Buffer>) => undefined | { projectPublicId: string }} options.queries.getProjectByInviteId
|
|
66
|
+
* @param {(projectInviteId: Readonly<Buffer>) => undefined | { projectPublicId: string, hasLeftProject: boolean }} options.queries.getProjectByInviteId
|
|
67
67
|
* @param {AddProjectQuery} options.queries.addProject
|
|
68
68
|
* @param {Logger} [options.logger]
|
|
69
69
|
*/
|
|
@@ -138,7 +138,11 @@ export class InviteApi extends TypedEmitter {
|
|
|
138
138
|
return
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
const
|
|
141
|
+
const existingProject = this.#getProjectByInviteId(projectInviteId)
|
|
142
|
+
const isAlreadyMember = existingProject
|
|
143
|
+
? !existingProject.hasLeftProject
|
|
144
|
+
: false
|
|
145
|
+
|
|
142
146
|
if (isAlreadyMember) {
|
|
143
147
|
this.#l.log('Invite %h: already in project', inviteId)
|
|
144
148
|
this.rpc
|
|
@@ -169,9 +173,10 @@ export class InviteApi extends TypedEmitter {
|
|
|
169
173
|
guards: {
|
|
170
174
|
isNotAlreadyJoiningOrInProject: () => {
|
|
171
175
|
const isJoining = this.#isJoiningProject(projectInviteId)
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
176
|
+
const existingProject = this.#getProjectByInviteId(projectInviteId)
|
|
177
|
+
const isAlreadyMember = existingProject
|
|
178
|
+
? !existingProject.hasLeftProject
|
|
179
|
+
: false
|
|
175
180
|
return !isJoining && !isAlreadyMember
|
|
176
181
|
},
|
|
177
182
|
},
|
package/src/mapeo-manager.js
CHANGED
|
@@ -2,7 +2,7 @@ import { randomBytes } from 'crypto'
|
|
|
2
2
|
import path from 'path'
|
|
3
3
|
import { KeyManager } from '@mapeo/crypto'
|
|
4
4
|
import Database from 'better-sqlite3'
|
|
5
|
-
import { eq } from 'drizzle-orm'
|
|
5
|
+
import { eq, and } from 'drizzle-orm'
|
|
6
6
|
import { drizzle } from 'drizzle-orm/better-sqlite3'
|
|
7
7
|
import Hypercore from 'hypercore'
|
|
8
8
|
import { TypedEmitter } from 'tiny-typed-emitter'
|
|
@@ -110,6 +110,7 @@ export class MapeoManager extends TypedEmitter {
|
|
|
110
110
|
#keyManager
|
|
111
111
|
#projectSettingsIndexWriter
|
|
112
112
|
#db
|
|
113
|
+
#sqlite
|
|
113
114
|
// Maps project public id -> project instance
|
|
114
115
|
/** @type {Map<string, MapeoProject>} */
|
|
115
116
|
#activeProjects
|
|
@@ -182,6 +183,8 @@ export class MapeoManager extends TypedEmitter {
|
|
|
182
183
|
},
|
|
183
184
|
})
|
|
184
185
|
|
|
186
|
+
this.#sqlite = sqlite
|
|
187
|
+
|
|
185
188
|
this.#localPeers = new LocalPeers({ logger })
|
|
186
189
|
this.#localPeers.on('peers', (peers) => {
|
|
187
190
|
this.emit('local-peers', omitPeerProtomux(peers))
|
|
@@ -691,11 +694,15 @@ export class MapeoManager extends TypedEmitter {
|
|
|
691
694
|
const projectExists = this.#db
|
|
692
695
|
.select()
|
|
693
696
|
.from(projectKeysTable)
|
|
694
|
-
.where(
|
|
697
|
+
.where(
|
|
698
|
+
and(
|
|
699
|
+
eq(projectKeysTable.projectId, projectId),
|
|
700
|
+
eq(projectKeysTable.hasLeftProject, false)
|
|
701
|
+
)
|
|
702
|
+
)
|
|
695
703
|
.get()
|
|
696
704
|
|
|
697
705
|
if (projectExists) {
|
|
698
|
-
// TODO: Define behavior for adding a project that the user has left
|
|
699
706
|
throw new Error(`Project with ID ${projectPublicId} already exists`)
|
|
700
707
|
}
|
|
701
708
|
|
|
@@ -716,6 +723,7 @@ export class MapeoManager extends TypedEmitter {
|
|
|
716
723
|
projectDescription,
|
|
717
724
|
sendStats,
|
|
718
725
|
},
|
|
726
|
+
hasLeftProject: false,
|
|
719
727
|
})
|
|
720
728
|
|
|
721
729
|
// Any errors from here we need to remove project from db because it has not
|
|
@@ -734,6 +742,11 @@ export class MapeoManager extends TypedEmitter {
|
|
|
734
742
|
throw e
|
|
735
743
|
}
|
|
736
744
|
|
|
745
|
+
// Make sure to clean up when closed
|
|
746
|
+
project.once('close', () => {
|
|
747
|
+
this.#activeProjects.delete(projectPublicId)
|
|
748
|
+
})
|
|
749
|
+
|
|
737
750
|
try {
|
|
738
751
|
const deviceInfo = this.getDeviceInfo()
|
|
739
752
|
if (hasSavedDeviceInfo(deviceInfo)) {
|
|
@@ -1056,12 +1069,28 @@ export class MapeoManager extends TypedEmitter {
|
|
|
1056
1069
|
const project = await this.getProject(projectPublicId)
|
|
1057
1070
|
|
|
1058
1071
|
await project[kProjectLeave]()
|
|
1072
|
+
|
|
1073
|
+
// Sync any role changes from project leave
|
|
1074
|
+
await this.#waitForInitialSync(project)
|
|
1059
1075
|
}
|
|
1060
1076
|
|
|
1061
1077
|
async getMapStyleJsonUrl() {
|
|
1062
1078
|
await pTimeout(this.#fastify.ready(), { milliseconds: 1000 })
|
|
1063
1079
|
return (await this.#getMediaBaseUrl('maps')) + '/style.json'
|
|
1064
1080
|
}
|
|
1081
|
+
|
|
1082
|
+
/**
|
|
1083
|
+
* Cleans up open resorces and closes open projects
|
|
1084
|
+
* @returns {Promise<void>}
|
|
1085
|
+
*/
|
|
1086
|
+
async close() {
|
|
1087
|
+
// This added for workers PR
|
|
1088
|
+
// await this.#projectSettingsIndexWriter.close()
|
|
1089
|
+
await Promise.all(
|
|
1090
|
+
[...this.#activeProjects.values()].map((project) => project.close())
|
|
1091
|
+
)
|
|
1092
|
+
this.#sqlite.close()
|
|
1093
|
+
}
|
|
1065
1094
|
}
|
|
1066
1095
|
|
|
1067
1096
|
// We use the `protomux` property of connected peers internally, but we don't
|
package/src/mapeo-project.js
CHANGED
|
@@ -428,6 +428,8 @@ export class MapeoProject extends TypedEmitter {
|
|
|
428
428
|
})
|
|
429
429
|
|
|
430
430
|
this.#blobStore.on('error', (err) => {
|
|
431
|
+
// Ignore hypercore inflight request cancellation
|
|
432
|
+
if (ensureError(err).message.includes('REQUEST_CANCELLED')) return
|
|
431
433
|
// TODO: Handle this error in some way - this error will come from an
|
|
432
434
|
// unexpected error with background blob downloads
|
|
433
435
|
console.error('BlobStore error', err)
|
|
@@ -1162,6 +1164,13 @@ export class MapeoProject extends TypedEmitter {
|
|
|
1162
1164
|
continue
|
|
1163
1165
|
}
|
|
1164
1166
|
}
|
|
1167
|
+
const hasDownloaded = await this.#blobStore.hasDownloadedBlobEntry(
|
|
1168
|
+
blobId.driveId,
|
|
1169
|
+
entry
|
|
1170
|
+
)
|
|
1171
|
+
if (!hasDownloaded) {
|
|
1172
|
+
continue
|
|
1173
|
+
}
|
|
1165
1174
|
return { blobId, mimeType }
|
|
1166
1175
|
} catch (e) {
|
|
1167
1176
|
if (!(e instanceof Error)) throw e
|