@comapeo/core 4.1.3 → 4.2.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 +1 -0
- package/dist/generated/rpc.d.ts.map +1 -1
- package/dist/mapeo-manager.d.ts +4 -1
- package/dist/mapeo-manager.d.ts.map +1 -1
- package/dist/mapeo-project.d.ts +28 -0
- package/dist/mapeo-project.d.ts.map +1 -1
- package/dist/member-api.d.ts.map +1 -1
- package/dist/schema/client.d.ts +12 -0
- package/dist/schema/client.d.ts.map +1 -1
- package/drizzle/client/0003_neat_magus.sql +1 -0
- package/drizzle/client/meta/0003_snapshot.json +227 -0
- package/drizzle/client/meta/_journal.json +7 -0
- package/package.json +7 -4
- package/src/generated/rpc.d.ts +1 -0
- package/src/generated/rpc.js +18 -2
- package/src/generated/rpc.ts +19 -1
- package/src/invite/invite-state-machine.js +1 -1
- package/src/mapeo-manager.js +11 -3
- package/src/mapeo-project.js +72 -5
- package/src/member-api.js +2 -0
package/dist/generated/rpc.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/generated/rpc.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,uBAAuB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/generated/rpc.ts"],"names":[],"mappings":"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"}
|
package/dist/mapeo-manager.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const DEFAULT_FALLBACK_MAP_FILE_PATH: string;
|
|
2
2
|
export const DEFAULT_ONLINE_STYLE_URL: "https://demotiles.maplibre.org/style.json";
|
|
3
|
+
export const DEFAULT_IS_ARCHIVE_DEVICE: true;
|
|
3
4
|
/**
|
|
4
5
|
* @typedef {Omit<import('./local-peers.js').PeerInfo, 'protomux'>} PublicPeerInfo
|
|
5
6
|
*/
|
|
@@ -23,9 +24,10 @@ export class MapeoManager extends TypedEmitter<MapeoManagerEvents> {
|
|
|
23
24
|
* @param {string} [opts.customMapPath] File path to a locally stored Styled Map Package (SMP).
|
|
24
25
|
* @param {string} [opts.fallbackMapPath] File path to a locally stored Styled Map Package (SMP)
|
|
25
26
|
* @param {string} [opts.defaultOnlineStyleUrl] URL for an online-hosted StyleJSON asset.
|
|
27
|
+
* @param {boolean} [opts.defaultIsArchiveDevice] Whether the node is an archive device by default
|
|
26
28
|
* @param {(url: string) => WebSocket} [opts.makeWebsocket]
|
|
27
29
|
*/
|
|
28
|
-
constructor({ rootKey, dbFolder, projectMigrationsFolder, clientMigrationsFolder, coreStorage, fastify, defaultConfigPath, customMapPath, fallbackMapPath, defaultOnlineStyleUrl, makeWebsocket, }: {
|
|
30
|
+
constructor({ rootKey, dbFolder, projectMigrationsFolder, clientMigrationsFolder, coreStorage, fastify, defaultConfigPath, customMapPath, fallbackMapPath, defaultOnlineStyleUrl, defaultIsArchiveDevice, makeWebsocket, }: {
|
|
29
31
|
rootKey: Buffer;
|
|
30
32
|
dbFolder: string;
|
|
31
33
|
projectMigrationsFolder: string;
|
|
@@ -36,6 +38,7 @@ export class MapeoManager extends TypedEmitter<MapeoManagerEvents> {
|
|
|
36
38
|
customMapPath?: string | undefined;
|
|
37
39
|
fallbackMapPath?: string | undefined;
|
|
38
40
|
defaultOnlineStyleUrl?: string | undefined;
|
|
41
|
+
defaultIsArchiveDevice?: boolean | undefined;
|
|
39
42
|
makeWebsocket?: ((url: string) => WebSocket) | undefined;
|
|
40
43
|
});
|
|
41
44
|
get deviceId(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapeo-manager.d.ts","sourceRoot":"","sources":["../src/mapeo-manager.js"],"names":[],"mappings":"AAqFA,oDAEC;AAED,mFAC6C;AAE7C;;GAEG;AAEH;;;GAGG;AAEH;;GAEG;AACH;
|
|
1
|
+
{"version":3,"file":"mapeo-manager.d.ts","sourceRoot":"","sources":["../src/mapeo-manager.js"],"names":[],"mappings":"AAqFA,oDAEC;AAED,mFAC6C;AAE7C,6CAA6C;AAE7C;;GAEG;AAEH;;;GAGG;AAEH;;GAEG;AACH;IAuBE;;;;;;;;;;;;;;OAcG;IACH,4NAbG;QAAqB,OAAO,EAApB,MAAM;QACO,QAAQ,EAArB,MAAM;QACO,uBAAuB,EAApC,MAAM;QACO,sBAAsB,EAAnC,MAAM;QACqB,WAAW,EAAtC,MAAM,GAAG,WAAW;QACoB,OAAO,EAA/C,OAAO,SAAS,EAAE,eAAe;QACnB,iBAAiB;QACjB,aAAa;QACb,eAAe;QACf,qBAAqB;QACpB,sBAAsB;QACH,aAAa,UAAzC,MAAM,KAAK,SAAS;KAAsB,EAkG1D;IAED,uBAEC;IAsID;;;;;OAKG;IACH;eAHoB,MAAM;qBAAe,MAAM;uBAAiB,MAAM;6BAAuB,MAAM;oBACtF,OAAO,CAAC,MAAM,CAAC,CAoF3B;IAED;;;OAGG;IACH,4BAHW,MAAM,GACJ,OAAO,CAAC,YAAY,CAAC,CAuCjC;IAwBD;;OAEG;IACH,gBAFa,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAyDzC;IAED;;;;;;;;OAQG;IACH,6FAJW,mBAAmB;sBACH,OAAO;sBACrB,OAAO,CAAC,MAAM,CAAC,CA4G3B;IAqED;;OAEG;IAEH;;;;OAIG;IACH,cAHoF,CAAC,SADxE,OAAQ,WAAW,EAAE,KAAK,CACtC,OAAS,oBAAoB,EAAE,eAAe,GAAG;QAAC,UAAU,CAAC,oGAAe;KAAC,EAAE,CAAC,CAAE,cACxE,CAAC,iBA6CX;IAED;;;;;;;OAOG;IACH,iBAPa,CACZ;QACM,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;KAC3C,GAAG,OAAO,CAAC,eAAe,CAAC,CAC7B,CAaH;IAED;;;;;;OAMG;IACH,oCAHW,OAAO,GACL,IAAI,CAkBhB;IAED;;;;;OAKG;IACH,sBAFa,OAAO,CAanB;IAED;;OAEG;IACH,wBAEC;IAED,yDAAyD;IACzD,iCADc,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAGpD;;;;;;;;;;IAYD;;OAEG;IACH,kBAFa,OAAO,CAAC,cAAc,EAAE,CAAC,CAIrC;IAED;;;;;;;OAOG;IACH,kBAFa,IAAI,CAKhB;IAED;;;;;;;OAOG;IACH,kBAFa,IAAI,CAKhB;IAED;;OAEG;IACH,8BAFW,MAAM,iBAgDhB;IAED,sCAGC;;CACF;mCA36Ba,eAAe,WAAW,EAAE,gBAAgB,CAAC;kCAC7C,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE;4BACvI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE;6BA0BjI,IAAI,CAAC,OAAO,kBAAkB,EAAE,QAAQ,EAAE,UAAU,CAAC;;;;;mBAKpD,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI;;6BA5FlB,oBAAoB;6BAY1C,oBAAoB;qCA6CuB,oBAAoB;0BAhB5C,wBAAwB;iCAeN,YAAY;0BAL9B,IAAI;4BAjCF,qBAAqB;oCAoCb,WAAW;wCACN,oBAAoB"}
|
package/dist/mapeo-project.d.ts
CHANGED
|
@@ -1289,6 +1289,10 @@ export class MapeoProject extends TypedEmitter<{
|
|
|
1289
1289
|
* @returns {import('./icon-api.js').IconApi}
|
|
1290
1290
|
*/
|
|
1291
1291
|
get $icons(): IconApi;
|
|
1292
|
+
/**
|
|
1293
|
+
* @returns {ProjectStats}
|
|
1294
|
+
*/
|
|
1295
|
+
$getStats(): ProjectStats;
|
|
1292
1296
|
/**
|
|
1293
1297
|
* Export observations and or tracks as a GeoJSON file
|
|
1294
1298
|
* @param {string} exportFolder Path to save the file. The file name is auto-generated
|
|
@@ -2668,6 +2672,18 @@ export class MapeoProject extends TypedEmitter<{
|
|
|
2668
2672
|
enumValues: [string, ...string[]];
|
|
2669
2673
|
baseColumn: never;
|
|
2670
2674
|
}, object>;
|
|
2675
|
+
readonly sendStats: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
2676
|
+
name: "sendStats";
|
|
2677
|
+
tableName: "projectSettings";
|
|
2678
|
+
dataType: "boolean";
|
|
2679
|
+
columnType: "SQLiteBoolean";
|
|
2680
|
+
data: boolean;
|
|
2681
|
+
driverParam: number;
|
|
2682
|
+
notNull: true;
|
|
2683
|
+
hasDefault: false;
|
|
2684
|
+
enumValues: undefined;
|
|
2685
|
+
baseColumn: never;
|
|
2686
|
+
}, object>;
|
|
2671
2687
|
readonly defaultPresets: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
2672
2688
|
name: "defaultPresets";
|
|
2673
2689
|
tableName: "projectSettings";
|
|
@@ -2722,6 +2738,7 @@ export class MapeoProject extends TypedEmitter<{
|
|
|
2722
2738
|
name?: string | undefined;
|
|
2723
2739
|
projectDescription?: string | undefined;
|
|
2724
2740
|
projectColor?: string | undefined;
|
|
2741
|
+
sendStats: boolean;
|
|
2725
2742
|
defaultPresets?: {
|
|
2726
2743
|
point: string[];
|
|
2727
2744
|
area: string[];
|
|
@@ -2747,6 +2764,7 @@ export class MapeoProject extends TypedEmitter<{
|
|
|
2747
2764
|
name?: string | undefined;
|
|
2748
2765
|
projectDescription?: string | undefined;
|
|
2749
2766
|
projectColor?: string | undefined;
|
|
2767
|
+
sendStats: boolean;
|
|
2750
2768
|
defaultPresets?: {
|
|
2751
2769
|
point: string[];
|
|
2752
2770
|
area: string[];
|
|
@@ -3730,6 +3748,16 @@ export type BlobRef = {
|
|
|
3730
3748
|
mimeType: string | undefined;
|
|
3731
3749
|
blobId: BlobId;
|
|
3732
3750
|
};
|
|
3751
|
+
export type Stats = {
|
|
3752
|
+
columns: string[];
|
|
3753
|
+
values: Array<[string, number]>;
|
|
3754
|
+
};
|
|
3755
|
+
export type ProjectStats = {
|
|
3756
|
+
timezoneOffset: number;
|
|
3757
|
+
observations: Stats;
|
|
3758
|
+
tracks: Stats;
|
|
3759
|
+
members: Stats;
|
|
3760
|
+
};
|
|
3733
3761
|
import { TypedEmitter } from 'tiny-typed-emitter';
|
|
3734
3762
|
import { BlobApi } from './blob-api.js';
|
|
3735
3763
|
import { DataStore } from './datastore/index.js';
|
|
@@ -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":"AAikDA;;;;;GAKG;AACH,qCAJW,MAAM,mBACN,MAAM,GACJ,MAAM,CAOlB;AAh/CD,yCAAiD;AACjD,2CAAqD;AACrD,8CAA4D;AAC5D,uCAA6C;AAC7C,8CAA4D;AAC5D,uCAA6C;AAC7C,0CAAoD;AACpD,6CAAoE;AACpE,gDAAgE;AAChE,6CAA4E;AAC5E,6CAAyD;AAOzD;;GAEG;AACH;WAFmC,MAAM,IAAI;;IAwB3C,4CAAsD;IAEtD;;;;;;;;;;;;;;;;;OAiBG;IACH,2NAhBG;QAAqB,MAAM,EAAnB,MAAM;QACO,uBAAuB,EAApC,MAAM;QACmC,UAAU,EAAnD,2CAAkC;QACrB,UAAU,EAAvB,MAAM;QACQ,gBAAgB;QACqB,cAAc,EAAjE,OAAO,qBAAqB,EAAE,cAAc;QACqB,QAAQ,EAAzE,OAAO,4BAA4B,EAAE,qBAAqB;QACxC,iBAAiB,EAAnC,WAAW;QACO,WAAW,EAA7B,WAAW;QAC6C,eAAe,EAAvE,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC;QACf,aAAa,UAAzC,MAAM,KAAK,SAAS;QACkB,UAAU,EAAtD,OAAO,kBAAkB,EAAE,UAAU;QACvB,eAAe,EAA7B,OAAO;QACO,MAAM;KAE9B,EA2VA;IA3FC,gBASE;IA6GJ,uBAEC;IAUD;;;;OAIG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;OACG;IACH,uBAaC;IA+CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA9f+B,CAAA;wCAI1B,CAAC;;wCAgBG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA9BmC,CAAC;oBACvB,CAAC;6BACT,CAAC;4BAGQ,CAAC;4BAKM,CAAA;gCAI1B,CAAC;;gCAgBG,CAAC;;;;;;;;;;;;;;;;;;;;;;;0BA9BmC,CAAC;oBACvB,CAAC;6BACT,CAAC;4BAGQ,CAAC;4BAKM,CAAA;gCAI1B,CAAC;;gCAgBG,CAAC;;;;;;;OA4eT;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAEC;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAEC;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAEC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAEC;IAED,yBAEC;IAED,qBAEC;IAED,mCAEC;IAED;;;OAGG;IACH,8BAHW,OAAO,CAAC,uBAAuB,CAAC,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CAyB5C;IAED;;OAEG;IACH,uBAFa,OAAO,CAAC,uBAAuB,CAAC,CAU5C;IAED;;OAEG;IACH,6BAFa,OAAO,CAAC,OAAO,CAAC,CAY5B;IASD,+KAEC;IAED;;;;OAIG;IACH,gDAJW,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAU3B;IAyED;;OAEG;IACH,sBAEC;IAED;;OAEG;IACH,aAFa,YAAY,CAmBxB;IA2PD;;;;;;;;OAQG;IACH,gCAPW,MAAM;;;;oBAKJ,OAAO,CAAC,MAAM,CAAC,CAa3B;IA4ID;;;;;;;;;OASG;IACH,4BARW,MAAM;;;;;oBAMJ,OAAO,CAAC,MAAM,CAAC,CAkB3B;IAsFD;;;OAGG;IACH,6BAHI;QAAqB,UAAU,EAAvB,MAAM;KACd,GAAU,OAAO,CAAC,KAAK,EAAE,CAAC,CAkK7B;IA5+BD;;OAEG;IACH,kCAEC;IAED;;OAEG;IACH,sCAEC;IAED;;OAEG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAna+B,CAAA;4CAI1B,CAAC;;4CAgBG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA9BmC,CAAC;wBACvB,CAAC;iCACT,CAAC;gCAGQ,CAAC;gCAKM,CAAA;oCAI1B,CAAC;;oCAgBG,CAAC;;;;;;;;;;;;;;;;;;;;;;;8BA9BmC,CAAC;wBACvB,CAAC;iCACT,CAAC;gCAGQ,CAAC;gCAKM,CAAA;oCAI1B,CAAC;;oCAgBG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiZT;IAED,8BAEC;IAoMD;;;;;;;;;;;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;IAmPD,iCAMC;IAED;;;OAGG;IACH,sBAFa,OAAO,CAAC,IAAI,CAAC,CAoCzB;;CAuKF;sCA75Ca,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;;6BAjFU,oBAAoB;wBAYzB,eAAe;0BAHb,sBAAsB;yBACL,qBAAqB;0BAuCtC,iBAAiB;wBAKpC,oBAAoB;2BAIA,sBAAsB;wBAFzB,eAAe;4BAhDX,yBAAyB;8BAuB9C,qBAAqB;0BApBF,uBAAuB;uCAoD8H,YAAY;4BAlD/J,yBAAyB;iCAkD0H,YAAY;0BAHjK,IAAI;uBALP,aAAa;0CAO0B,iBAAiB;gCACgG,YAAY;4BAAZ,YAAY"}
|
package/dist/member-api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member-api.d.ts","sourceRoot":"","sources":["../src/member-api.js"],"names":[],"mappings":"AA4BA;;;;;;;GAOG;AACH,8CAA8C;AAC9C,mEAAmE;AACnE,sDAAsD;AACtD,wDAAwD;AACxD,6DAA6D;AAC7D,iEAAiE;AACjE,sDAAsD;AAEtD,qIAAqI;AACrI,sJAAsJ;AACtJ;;;;;;;;;GASG;AAEH;IAiBE;;;;;;;;;;;;;;;;OAgBG;IACH,sLAfG;QAAqB,QAAQ,EAArB,MAAM;QAC2B,KAAK,EAAtC,OAAO,YAAY,EAAE,KAAK;QACwB,aAAa,EAA/D,OAAO,qBAAqB,EAAE,aAAa;QACQ,cAAc,EAAjE,OAAO,qBAAqB,EAAE,cAAc;QACD,cAAc,EAAzD,MAAM,WAAW,SAAS,GAAG,MAAM,CAAC;QACvB,UAAU,EAAvB,MAAM;QACsC,GAAG,EAA/C,OAAO,kBAAkB,EAAE,UAAU;QACH,aAAa,UAAzC,MAAM,KAAK,SAAS;QACI,oBAAoB,EAAlD,MAAM,iBAAiB;QAC6C,0BAA0B,EAA9F,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC;QAChD,SAAS,EAC9B;YAA2E,UAAU,EAA7E,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAC;YACE,OAAO,EAA3D,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC;SAC3C;QAAsB,MAAM;KAAC,EA6B/B;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,iBAbW,MAAM,oFAEd;QAAsD,MAAM,EAApD,OAAO,YAAY,EAAE,kBAAkB;QACzB,QAAQ;QACR,eAAe;QACf,kBAAkB;QAClB,oBAAoB;KAC1C,GAAU,OAAO,CAAC,CACpB,OAAW,uBAAuB,CAAC,MAAM,GACzC,OAAW,uBAAuB,CAAC,MAAM,GACzC,OAAW,uBAAuB,CAAC,OAAO,CACvC,CAAC,
|
|
1
|
+
{"version":3,"file":"member-api.d.ts","sourceRoot":"","sources":["../src/member-api.js"],"names":[],"mappings":"AA4BA;;;;;;;GAOG;AACH,8CAA8C;AAC9C,mEAAmE;AACnE,sDAAsD;AACtD,wDAAwD;AACxD,6DAA6D;AAC7D,iEAAiE;AACjE,sDAAsD;AAEtD,qIAAqI;AACrI,sJAAsJ;AACtJ;;;;;;;;;GASG;AAEH;IAiBE;;;;;;;;;;;;;;;;OAgBG;IACH,sLAfG;QAAqB,QAAQ,EAArB,MAAM;QAC2B,KAAK,EAAtC,OAAO,YAAY,EAAE,KAAK;QACwB,aAAa,EAA/D,OAAO,qBAAqB,EAAE,aAAa;QACQ,cAAc,EAAjE,OAAO,qBAAqB,EAAE,cAAc;QACD,cAAc,EAAzD,MAAM,WAAW,SAAS,GAAG,MAAM,CAAC;QACvB,UAAU,EAAvB,MAAM;QACsC,GAAG,EAA/C,OAAO,kBAAkB,EAAE,UAAU;QACH,aAAa,UAAzC,MAAM,KAAK,SAAS;QACI,oBAAoB,EAAlD,MAAM,iBAAiB;QAC6C,0BAA0B,EAA9F,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC;QAChD,SAAS,EAC9B;YAA2E,UAAU,EAA7E,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAC;YACE,OAAO,EAA3D,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC;SAC3C;QAAsB,MAAM;KAAC,EA6B/B;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,iBAbW,MAAM,oFAEd;QAAsD,MAAM,EAApD,OAAO,YAAY,EAAE,kBAAkB;QACzB,QAAQ;QACR,eAAe;QACf,kBAAkB;QAClB,oBAAoB;KAC1C,GAAU,OAAO,CAAC,CACpB,OAAW,uBAAuB,CAAC,MAAM,GACzC,OAAW,uBAAuB,CAAC,MAAM,GACzC,OAAW,uBAAuB,CAAC,OAAO,CACvC,CAAC,CA+GJ;IAqDD;;;;;;;OAOG;IACH,8BAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,uBALW,MAAM;;oBAGJ,OAAO,CAAC,IAAI,CAAC,CAqBzB;IAED;;;;;;;OAOG;IACH,iCALW,MAAM;;oBAGJ,OAAO,CAAC,IAAI,CAAC,CAgCzB;IAkHD;;;OAGG;IACH,kBAHW,MAAM,GACJ,OAAO,CAAC,UAAU,CAAC,CA6B/B;IAED;;OAEG;IACH,WAFa,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAqCtC;IAED;;;;OAIG;IACH,qBAJW,MAAM,UACN,OAAO,YAAY,EAAE,wBAAwB,GAC3C,OAAO,CAAC,IAAI,CAAC,CAIzB;;CACF;iCAliBa,SAAS,UAAU,QAAQ,CAAC,EAAE,sBAAsB,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC;8BAChG,SAAS,UAAU,QAAQ,CAAC,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,eAAe,EAAE,oBAAoB,CAAC;;cAGxH,MAAM;UACN,OAAO,YAAY,EAAE,IAAI;;;;;iBAKzB,MAAM;;;6BAnDa,oBAAoB;wCAET,oBAAoB;gCA+B5B,WAAW;sBAlCrB,IAAI;uCAwCa,YAAY;uBA5B5B,aAAa;+BAyBL,sBAAsB;qCAChB,qBAAqB;gCANhD,iBAAiB;qCAAjB,iBAAiB;8BAIG,qBAAqB;0CAGT,oBAAoB;qCAPpD,iBAAiB;0CAAjB,iBAAiB"}
|
package/dist/schema/client.d.ts
CHANGED
|
@@ -134,6 +134,18 @@ export const projectSettingsTable: import("drizzle-orm/sqlite-core").SQLiteTable
|
|
|
134
134
|
enumValues: [string, ...string[]];
|
|
135
135
|
baseColumn: never;
|
|
136
136
|
}, object>;
|
|
137
|
+
readonly sendStats: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
138
|
+
name: "sendStats";
|
|
139
|
+
tableName: "projectSettings";
|
|
140
|
+
dataType: "boolean";
|
|
141
|
+
columnType: "SQLiteBoolean";
|
|
142
|
+
data: boolean;
|
|
143
|
+
driverParam: number;
|
|
144
|
+
notNull: true;
|
|
145
|
+
hasDefault: false;
|
|
146
|
+
enumValues: undefined;
|
|
147
|
+
baseColumn: never;
|
|
148
|
+
}, object>;
|
|
137
149
|
readonly defaultPresets: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
138
150
|
name: "defaultPresets";
|
|
139
151
|
tableName: "projectSettings";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/schema/client.js"],"names":[],"mappings":"AAuBA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/schema/client.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGC;AACD;;;;;;;;;;;;;;;;;;GAAuE;AACvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAYE;AAYF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIE;0BA5CW,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,cAAc,GAAG,oBAAoB,CAAC;8BA+BrE,IAAI,CAAC,OAAO,iBAAiB,EAAE,eAAe,EAAE,YAAY,CAAC;qCAlCtC,iBAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE projectSettings ADD `sendStats` integer NOT NULL DEFAULT 0;
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "5",
|
|
3
|
+
"dialect": "sqlite",
|
|
4
|
+
"id": "3b7b9e2d-3a35-47e3-977e-b5dcbe2fd302",
|
|
5
|
+
"prevId": "facbbc92-fe5b-4ce0-9bcd-189143af55f9",
|
|
6
|
+
"tables": {
|
|
7
|
+
"deviceSettings": {
|
|
8
|
+
"name": "deviceSettings",
|
|
9
|
+
"columns": {
|
|
10
|
+
"deviceId": {
|
|
11
|
+
"name": "deviceId",
|
|
12
|
+
"type": "text",
|
|
13
|
+
"primaryKey": false,
|
|
14
|
+
"notNull": true,
|
|
15
|
+
"autoincrement": false
|
|
16
|
+
},
|
|
17
|
+
"deviceInfo": {
|
|
18
|
+
"name": "deviceInfo",
|
|
19
|
+
"type": "text",
|
|
20
|
+
"primaryKey": false,
|
|
21
|
+
"notNull": false,
|
|
22
|
+
"autoincrement": false
|
|
23
|
+
},
|
|
24
|
+
"isArchiveDevice": {
|
|
25
|
+
"name": "isArchiveDevice",
|
|
26
|
+
"type": "integer",
|
|
27
|
+
"primaryKey": false,
|
|
28
|
+
"notNull": false,
|
|
29
|
+
"autoincrement": false
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"indexes": {
|
|
33
|
+
"deviceSettings_deviceId_unique": {
|
|
34
|
+
"name": "deviceSettings_deviceId_unique",
|
|
35
|
+
"columns": [
|
|
36
|
+
"deviceId"
|
|
37
|
+
],
|
|
38
|
+
"isUnique": true
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"foreignKeys": {},
|
|
42
|
+
"compositePrimaryKeys": {},
|
|
43
|
+
"uniqueConstraints": {}
|
|
44
|
+
},
|
|
45
|
+
"projectSettings_backlink": {
|
|
46
|
+
"name": "projectSettings_backlink",
|
|
47
|
+
"columns": {
|
|
48
|
+
"versionId": {
|
|
49
|
+
"name": "versionId",
|
|
50
|
+
"type": "text",
|
|
51
|
+
"primaryKey": true,
|
|
52
|
+
"notNull": true,
|
|
53
|
+
"autoincrement": false
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"indexes": {},
|
|
57
|
+
"foreignKeys": {},
|
|
58
|
+
"compositePrimaryKeys": {},
|
|
59
|
+
"uniqueConstraints": {}
|
|
60
|
+
},
|
|
61
|
+
"projectKeys": {
|
|
62
|
+
"name": "projectKeys",
|
|
63
|
+
"columns": {
|
|
64
|
+
"projectId": {
|
|
65
|
+
"name": "projectId",
|
|
66
|
+
"type": "text",
|
|
67
|
+
"primaryKey": true,
|
|
68
|
+
"notNull": true,
|
|
69
|
+
"autoincrement": false
|
|
70
|
+
},
|
|
71
|
+
"projectPublicId": {
|
|
72
|
+
"name": "projectPublicId",
|
|
73
|
+
"type": "text",
|
|
74
|
+
"primaryKey": false,
|
|
75
|
+
"notNull": true,
|
|
76
|
+
"autoincrement": false
|
|
77
|
+
},
|
|
78
|
+
"projectInviteId": {
|
|
79
|
+
"name": "projectInviteId",
|
|
80
|
+
"type": "blob",
|
|
81
|
+
"primaryKey": false,
|
|
82
|
+
"notNull": true,
|
|
83
|
+
"autoincrement": false
|
|
84
|
+
},
|
|
85
|
+
"keysCipher": {
|
|
86
|
+
"name": "keysCipher",
|
|
87
|
+
"type": "blob",
|
|
88
|
+
"primaryKey": false,
|
|
89
|
+
"notNull": true,
|
|
90
|
+
"autoincrement": false
|
|
91
|
+
},
|
|
92
|
+
"projectInfo": {
|
|
93
|
+
"name": "projectInfo",
|
|
94
|
+
"type": "text",
|
|
95
|
+
"primaryKey": false,
|
|
96
|
+
"notNull": true,
|
|
97
|
+
"autoincrement": false,
|
|
98
|
+
"default": "'{}'"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"indexes": {},
|
|
102
|
+
"foreignKeys": {},
|
|
103
|
+
"compositePrimaryKeys": {},
|
|
104
|
+
"uniqueConstraints": {}
|
|
105
|
+
},
|
|
106
|
+
"projectSettings": {
|
|
107
|
+
"name": "projectSettings",
|
|
108
|
+
"columns": {
|
|
109
|
+
"docId": {
|
|
110
|
+
"name": "docId",
|
|
111
|
+
"type": "text",
|
|
112
|
+
"primaryKey": true,
|
|
113
|
+
"notNull": true,
|
|
114
|
+
"autoincrement": false
|
|
115
|
+
},
|
|
116
|
+
"versionId": {
|
|
117
|
+
"name": "versionId",
|
|
118
|
+
"type": "text",
|
|
119
|
+
"primaryKey": false,
|
|
120
|
+
"notNull": true,
|
|
121
|
+
"autoincrement": false
|
|
122
|
+
},
|
|
123
|
+
"originalVersionId": {
|
|
124
|
+
"name": "originalVersionId",
|
|
125
|
+
"type": "text",
|
|
126
|
+
"primaryKey": false,
|
|
127
|
+
"notNull": true,
|
|
128
|
+
"autoincrement": false
|
|
129
|
+
},
|
|
130
|
+
"schemaName": {
|
|
131
|
+
"name": "schemaName",
|
|
132
|
+
"type": "text",
|
|
133
|
+
"primaryKey": false,
|
|
134
|
+
"notNull": true,
|
|
135
|
+
"autoincrement": false
|
|
136
|
+
},
|
|
137
|
+
"createdAt": {
|
|
138
|
+
"name": "createdAt",
|
|
139
|
+
"type": "text",
|
|
140
|
+
"primaryKey": false,
|
|
141
|
+
"notNull": true,
|
|
142
|
+
"autoincrement": false
|
|
143
|
+
},
|
|
144
|
+
"updatedAt": {
|
|
145
|
+
"name": "updatedAt",
|
|
146
|
+
"type": "text",
|
|
147
|
+
"primaryKey": false,
|
|
148
|
+
"notNull": true,
|
|
149
|
+
"autoincrement": false
|
|
150
|
+
},
|
|
151
|
+
"links": {
|
|
152
|
+
"name": "links",
|
|
153
|
+
"type": "text",
|
|
154
|
+
"primaryKey": false,
|
|
155
|
+
"notNull": true,
|
|
156
|
+
"autoincrement": false
|
|
157
|
+
},
|
|
158
|
+
"deleted": {
|
|
159
|
+
"name": "deleted",
|
|
160
|
+
"type": "integer",
|
|
161
|
+
"primaryKey": false,
|
|
162
|
+
"notNull": true,
|
|
163
|
+
"autoincrement": false
|
|
164
|
+
},
|
|
165
|
+
"name": {
|
|
166
|
+
"name": "name",
|
|
167
|
+
"type": "text",
|
|
168
|
+
"primaryKey": false,
|
|
169
|
+
"notNull": false,
|
|
170
|
+
"autoincrement": false
|
|
171
|
+
},
|
|
172
|
+
"projectDescription": {
|
|
173
|
+
"name": "projectDescription",
|
|
174
|
+
"type": "text",
|
|
175
|
+
"primaryKey": false,
|
|
176
|
+
"notNull": false,
|
|
177
|
+
"autoincrement": false
|
|
178
|
+
},
|
|
179
|
+
"projectColor": {
|
|
180
|
+
"name": "projectColor",
|
|
181
|
+
"type": "text",
|
|
182
|
+
"primaryKey": false,
|
|
183
|
+
"notNull": false,
|
|
184
|
+
"autoincrement": false
|
|
185
|
+
},
|
|
186
|
+
"sendStats": {
|
|
187
|
+
"name": "sendStats",
|
|
188
|
+
"type": "integer",
|
|
189
|
+
"primaryKey": false,
|
|
190
|
+
"notNull": true,
|
|
191
|
+
"autoincrement": false
|
|
192
|
+
},
|
|
193
|
+
"defaultPresets": {
|
|
194
|
+
"name": "defaultPresets",
|
|
195
|
+
"type": "text",
|
|
196
|
+
"primaryKey": false,
|
|
197
|
+
"notNull": false,
|
|
198
|
+
"autoincrement": false
|
|
199
|
+
},
|
|
200
|
+
"configMetadata": {
|
|
201
|
+
"name": "configMetadata",
|
|
202
|
+
"type": "text",
|
|
203
|
+
"primaryKey": false,
|
|
204
|
+
"notNull": false,
|
|
205
|
+
"autoincrement": false
|
|
206
|
+
},
|
|
207
|
+
"forks": {
|
|
208
|
+
"name": "forks",
|
|
209
|
+
"type": "text",
|
|
210
|
+
"primaryKey": false,
|
|
211
|
+
"notNull": true,
|
|
212
|
+
"autoincrement": false
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"indexes": {},
|
|
216
|
+
"foreignKeys": {},
|
|
217
|
+
"compositePrimaryKeys": {},
|
|
218
|
+
"uniqueConstraints": {}
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"enums": {},
|
|
222
|
+
"_meta": {
|
|
223
|
+
"schemas": {},
|
|
224
|
+
"tables": {},
|
|
225
|
+
"columns": {}
|
|
226
|
+
}
|
|
227
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comapeo/core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"description": "Offline p2p mapping library",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -162,18 +162,18 @@
|
|
|
162
162
|
},
|
|
163
163
|
"dependencies": {
|
|
164
164
|
"@comapeo/fallback-smp": "^1.0.0",
|
|
165
|
-
"@comapeo/schema": "2.
|
|
165
|
+
"@comapeo/schema": "^2.1.1",
|
|
166
166
|
"@digidem/types": "^2.3.0",
|
|
167
167
|
"@fastify/error": "^3.4.1",
|
|
168
168
|
"@fastify/type-provider-typebox": "^4.1.0",
|
|
169
169
|
"@hyperswarm/secret-stream": "^6.6.3",
|
|
170
170
|
"@mapeo/crypto": "1.0.0-alpha.10",
|
|
171
|
-
"@mapeo/sqlite-indexer": "1.0.
|
|
171
|
+
"@mapeo/sqlite-indexer": "^1.0.2",
|
|
172
172
|
"@sinclair/typebox": "^0.33.17",
|
|
173
173
|
"@sindresorhus/merge-streams": "^4.0.0",
|
|
174
174
|
"b4a": "^1.6.3",
|
|
175
175
|
"bcp-47": "^2.1.0",
|
|
176
|
-
"better-sqlite3": "^
|
|
176
|
+
"better-sqlite3": "^11.10.0",
|
|
177
177
|
"big-sparse-array": "^1.0.3",
|
|
178
178
|
"bogon": "^1.1.0",
|
|
179
179
|
"compact-encoding": "^2.12.0",
|
|
@@ -215,5 +215,8 @@
|
|
|
215
215
|
"xstate": "^5.19.2",
|
|
216
216
|
"yauzl-promise": "^4.0.0",
|
|
217
217
|
"zip-stream-promise": "^1.0.2"
|
|
218
|
+
},
|
|
219
|
+
"overrides": {
|
|
220
|
+
"better-sqlite3": "$better-sqlite3"
|
|
218
221
|
}
|
|
219
222
|
}
|
package/src/generated/rpc.d.ts
CHANGED
package/src/generated/rpc.js
CHANGED
|
@@ -116,7 +116,13 @@ export function deviceInfo_RPCFeaturesToNumber(object) {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
function createBaseInvite() {
|
|
119
|
-
return {
|
|
119
|
+
return {
|
|
120
|
+
inviteId: Buffer.alloc(0),
|
|
121
|
+
projectInviteId: Buffer.alloc(0),
|
|
122
|
+
projectName: "",
|
|
123
|
+
invitorName: "",
|
|
124
|
+
sendStats: false,
|
|
125
|
+
};
|
|
120
126
|
}
|
|
121
127
|
export var Invite = {
|
|
122
128
|
encode: function (message, writer) {
|
|
@@ -145,6 +151,9 @@ export var Invite = {
|
|
|
145
151
|
if (message.projectDescription !== undefined) {
|
|
146
152
|
writer.uint32(66).string(message.projectDescription);
|
|
147
153
|
}
|
|
154
|
+
if (message.sendStats === true) {
|
|
155
|
+
writer.uint32(72).bool(message.sendStats);
|
|
156
|
+
}
|
|
148
157
|
return writer;
|
|
149
158
|
},
|
|
150
159
|
decode: function (input, length) {
|
|
@@ -202,6 +211,12 @@ export var Invite = {
|
|
|
202
211
|
}
|
|
203
212
|
message.projectDescription = reader.string();
|
|
204
213
|
continue;
|
|
214
|
+
case 9:
|
|
215
|
+
if (tag !== 72) {
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
message.sendStats = reader.bool();
|
|
219
|
+
continue;
|
|
205
220
|
}
|
|
206
221
|
if ((tag & 7) === 4 || tag === 0) {
|
|
207
222
|
break;
|
|
@@ -214,7 +229,7 @@ export var Invite = {
|
|
|
214
229
|
return Invite.fromPartial(base !== null && base !== void 0 ? base : {});
|
|
215
230
|
},
|
|
216
231
|
fromPartial: function (object) {
|
|
217
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
232
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
218
233
|
var message = createBaseInvite();
|
|
219
234
|
message.inviteId = (_a = object.inviteId) !== null && _a !== void 0 ? _a : Buffer.alloc(0);
|
|
220
235
|
message.projectInviteId = (_b = object.projectInviteId) !== null && _b !== void 0 ? _b : Buffer.alloc(0);
|
|
@@ -224,6 +239,7 @@ export var Invite = {
|
|
|
224
239
|
message.invitorName = (_f = object.invitorName) !== null && _f !== void 0 ? _f : "";
|
|
225
240
|
message.projectColor = (_g = object.projectColor) !== null && _g !== void 0 ? _g : undefined;
|
|
226
241
|
message.projectDescription = (_h = object.projectDescription) !== null && _h !== void 0 ? _h : undefined;
|
|
242
|
+
message.sendStats = (_j = object.sendStats) !== null && _j !== void 0 ? _j : false;
|
|
227
243
|
return message;
|
|
228
244
|
},
|
|
229
245
|
};
|
package/src/generated/rpc.ts
CHANGED
|
@@ -11,6 +11,7 @@ export interface Invite {
|
|
|
11
11
|
invitorName: string;
|
|
12
12
|
projectColor?: string | undefined;
|
|
13
13
|
projectDescription?: string | undefined;
|
|
14
|
+
sendStats: boolean;
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
export interface InviteCancel {
|
|
@@ -180,7 +181,13 @@ export interface ProjectJoinDetailsAck {
|
|
|
180
181
|
}
|
|
181
182
|
|
|
182
183
|
function createBaseInvite(): Invite {
|
|
183
|
-
return {
|
|
184
|
+
return {
|
|
185
|
+
inviteId: Buffer.alloc(0),
|
|
186
|
+
projectInviteId: Buffer.alloc(0),
|
|
187
|
+
projectName: "",
|
|
188
|
+
invitorName: "",
|
|
189
|
+
sendStats: false,
|
|
190
|
+
};
|
|
184
191
|
}
|
|
185
192
|
|
|
186
193
|
export const Invite = {
|
|
@@ -209,6 +216,9 @@ export const Invite = {
|
|
|
209
216
|
if (message.projectDescription !== undefined) {
|
|
210
217
|
writer.uint32(66).string(message.projectDescription);
|
|
211
218
|
}
|
|
219
|
+
if (message.sendStats === true) {
|
|
220
|
+
writer.uint32(72).bool(message.sendStats);
|
|
221
|
+
}
|
|
212
222
|
return writer;
|
|
213
223
|
},
|
|
214
224
|
|
|
@@ -275,6 +285,13 @@ export const Invite = {
|
|
|
275
285
|
|
|
276
286
|
message.projectDescription = reader.string();
|
|
277
287
|
continue;
|
|
288
|
+
case 9:
|
|
289
|
+
if (tag !== 72) {
|
|
290
|
+
break;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
message.sendStats = reader.bool();
|
|
294
|
+
continue;
|
|
278
295
|
}
|
|
279
296
|
if ((tag & 7) === 4 || tag === 0) {
|
|
280
297
|
break;
|
|
@@ -297,6 +314,7 @@ export const Invite = {
|
|
|
297
314
|
message.invitorName = object.invitorName ?? "";
|
|
298
315
|
message.projectColor = object.projectColor ?? undefined;
|
|
299
316
|
message.projectDescription = object.projectDescription ?? undefined;
|
|
317
|
+
message.sendStats = object.sendStats ?? false;
|
|
300
318
|
return message;
|
|
301
319
|
},
|
|
302
320
|
};
|
|
@@ -5,7 +5,7 @@ import ensureError from 'ensure-error'
|
|
|
5
5
|
import { TimeoutError } from '../errors.js'
|
|
6
6
|
|
|
7
7
|
const RECEIVE_PROJECT_DETAILS_TIMEOUT_MS = 45_000
|
|
8
|
-
const ADD_PROJECT_TIMEOUT_MS =
|
|
8
|
+
const ADD_PROJECT_TIMEOUT_MS = 300_000
|
|
9
9
|
|
|
10
10
|
/** @import { StringToTaggedUnion } from '../types.js' */
|
|
11
11
|
/** @import { ProjectJoinDetails } from '../generated/rpc.js' */
|
package/src/mapeo-manager.js
CHANGED
|
@@ -90,6 +90,8 @@ export const DEFAULT_FALLBACK_MAP_FILE_PATH = require.resolve(
|
|
|
90
90
|
export const DEFAULT_ONLINE_STYLE_URL =
|
|
91
91
|
'https://demotiles.maplibre.org/style.json'
|
|
92
92
|
|
|
93
|
+
export const DEFAULT_IS_ARCHIVE_DEVICE = true
|
|
94
|
+
|
|
93
95
|
/**
|
|
94
96
|
* @typedef {Omit<import('./local-peers.js').PeerInfo, 'protomux'>} PublicPeerInfo
|
|
95
97
|
*/
|
|
@@ -123,6 +125,7 @@ export class MapeoManager extends TypedEmitter {
|
|
|
123
125
|
#l
|
|
124
126
|
#defaultConfigPath
|
|
125
127
|
#makeWebsocket
|
|
128
|
+
#defaultIsArchiveDevice
|
|
126
129
|
|
|
127
130
|
/**
|
|
128
131
|
* @param {Object} opts
|
|
@@ -136,6 +139,7 @@ export class MapeoManager extends TypedEmitter {
|
|
|
136
139
|
* @param {string} [opts.customMapPath] File path to a locally stored Styled Map Package (SMP).
|
|
137
140
|
* @param {string} [opts.fallbackMapPath] File path to a locally stored Styled Map Package (SMP)
|
|
138
141
|
* @param {string} [opts.defaultOnlineStyleUrl] URL for an online-hosted StyleJSON asset.
|
|
142
|
+
* @param {boolean} [opts.defaultIsArchiveDevice] Whether the node is an archive device by default
|
|
139
143
|
* @param {(url: string) => WebSocket} [opts.makeWebsocket]
|
|
140
144
|
*/
|
|
141
145
|
constructor({
|
|
@@ -149,12 +153,14 @@ export class MapeoManager extends TypedEmitter {
|
|
|
149
153
|
customMapPath,
|
|
150
154
|
fallbackMapPath = DEFAULT_FALLBACK_MAP_FILE_PATH,
|
|
151
155
|
defaultOnlineStyleUrl = DEFAULT_ONLINE_STYLE_URL,
|
|
156
|
+
defaultIsArchiveDevice = DEFAULT_IS_ARCHIVE_DEVICE,
|
|
152
157
|
makeWebsocket = (url) => new WebSocket(url),
|
|
153
158
|
}) {
|
|
154
159
|
super()
|
|
155
160
|
this.#keyManager = new KeyManager(rootKey)
|
|
156
161
|
this.#deviceId = getDeviceId(this.#keyManager)
|
|
157
162
|
this.#defaultConfigPath = defaultConfigPath
|
|
163
|
+
this.#defaultIsArchiveDevice = defaultIsArchiveDevice
|
|
158
164
|
this.#makeWebsocket = makeWebsocket
|
|
159
165
|
const logger = (this.#loggerBase = new Logger({ deviceId: this.#deviceId }))
|
|
160
166
|
this.#l = Logger.create('manager', logger)
|
|
@@ -165,6 +171,7 @@ export class MapeoManager extends TypedEmitter {
|
|
|
165
171
|
? ':memory:'
|
|
166
172
|
: path.join(dbFolder, CLIENT_SQLITE_FILE_NAME)
|
|
167
173
|
)
|
|
174
|
+
sqlite.pragma('journal_mode=WAL')
|
|
168
175
|
this.#db = drizzle(sqlite)
|
|
169
176
|
migrate(this.#db, { migrationsFolder: clientMigrationsFolder })
|
|
170
177
|
|
|
@@ -656,6 +663,7 @@ export class MapeoManager extends TypedEmitter {
|
|
|
656
663
|
createdAt: UNIX_EPOCH_DATE,
|
|
657
664
|
updatedAt: UNIX_EPOCH_DATE,
|
|
658
665
|
deleted: false,
|
|
666
|
+
sendStats: false,
|
|
659
667
|
links: [],
|
|
660
668
|
forks: [],
|
|
661
669
|
name: projectName,
|
|
@@ -708,14 +716,14 @@ export class MapeoManager extends TypedEmitter {
|
|
|
708
716
|
*
|
|
709
717
|
* @param {MapeoProject} project
|
|
710
718
|
* @param {object} [opts]
|
|
711
|
-
* @param {number} [opts.timeoutMs=
|
|
719
|
+
* @param {number} [opts.timeoutMs=45_000] Timeout in milliseconds for max time
|
|
712
720
|
* to wait between sync status updates before giving up. As long as syncing is
|
|
713
721
|
* happening, this will never timeout, but if more than timeoutMs passes
|
|
714
722
|
* without any sync activity, then this will resolve `false` e.g. data has not
|
|
715
723
|
* synced
|
|
716
724
|
* @returns {Promise<boolean>}
|
|
717
725
|
*/
|
|
718
|
-
async #waitForInitialSync(project, { timeoutMs =
|
|
726
|
+
async #waitForInitialSync(project, { timeoutMs = 45_000 } = {}) {
|
|
719
727
|
const [ownRole, isProjectSettingsSynced] = await Promise.all([
|
|
720
728
|
project.$getOwnRole(),
|
|
721
729
|
project.$hasSyncedProjectSettings(),
|
|
@@ -882,7 +890,7 @@ export class MapeoManager extends TypedEmitter {
|
|
|
882
890
|
if (typeof row?.isArchiveDevice === 'boolean') {
|
|
883
891
|
return row.isArchiveDevice
|
|
884
892
|
} else {
|
|
885
|
-
return
|
|
893
|
+
return this.#defaultIsArchiveDevice
|
|
886
894
|
}
|
|
887
895
|
}
|
|
888
896
|
|
package/src/mapeo-project.js
CHANGED
|
@@ -2,6 +2,7 @@ import path from 'path'
|
|
|
2
2
|
import Database from 'better-sqlite3'
|
|
3
3
|
import { decodeBlockPrefix, decode, parseVersionId } from '@comapeo/schema'
|
|
4
4
|
import { drizzle } from 'drizzle-orm/better-sqlite3'
|
|
5
|
+
import { sql, count } from 'drizzle-orm'
|
|
5
6
|
import { discoveryKey } from 'hypercore-crypto'
|
|
6
7
|
import { TypedEmitter } from 'tiny-typed-emitter'
|
|
7
8
|
import ZipArchive from 'zip-stream-promise'
|
|
@@ -74,6 +75,18 @@ import { createWriteStream } from 'fs'
|
|
|
74
75
|
* @prop {string|undefined} mimeType
|
|
75
76
|
* @prop {BlobId} blobId
|
|
76
77
|
*/
|
|
78
|
+
/**
|
|
79
|
+
* @typedef {Object} Stats
|
|
80
|
+
* @property {string[]} columns
|
|
81
|
+
* @property {Array<[string, number]>} values
|
|
82
|
+
*/
|
|
83
|
+
/**
|
|
84
|
+
* @typedef {Object} ProjectStats
|
|
85
|
+
* @property {number} timezoneOffset
|
|
86
|
+
* @property {Stats} observations
|
|
87
|
+
* @property {Stats} tracks
|
|
88
|
+
* @property {Stats} members
|
|
89
|
+
*/
|
|
77
90
|
|
|
78
91
|
const CORESTORE_STORAGE_FOLDER_NAME = 'corestore'
|
|
79
92
|
const INDEXER_STORAGE_FOLDER_NAME = 'indexer'
|
|
@@ -109,6 +122,7 @@ export class MapeoProject extends TypedEmitter {
|
|
|
109
122
|
#coreOwnership
|
|
110
123
|
#roles
|
|
111
124
|
#sqlite
|
|
125
|
+
#db
|
|
112
126
|
#memberApi
|
|
113
127
|
#iconApi
|
|
114
128
|
#syncApi
|
|
@@ -166,7 +180,9 @@ export class MapeoProject extends TypedEmitter {
|
|
|
166
180
|
///////// 1. Setup database
|
|
167
181
|
|
|
168
182
|
this.#sqlite = new Database(dbPath)
|
|
183
|
+
this.#sqlite.pragma('journal_mode=WAL')
|
|
169
184
|
const db = drizzle(this.#sqlite)
|
|
185
|
+
this.#db = db
|
|
170
186
|
const migrationResult = migrate(db, {
|
|
171
187
|
migrationsFolder: projectMigrationsFolder,
|
|
172
188
|
})
|
|
@@ -645,6 +661,7 @@ export class MapeoProject extends TypedEmitter {
|
|
|
645
661
|
await projectSettings[kCreateWithDocId](this.#projectId, {
|
|
646
662
|
...settings,
|
|
647
663
|
schemaName: 'projectSettings',
|
|
664
|
+
sendStats: settings.sendStats ?? false,
|
|
648
665
|
})
|
|
649
666
|
)
|
|
650
667
|
}
|
|
@@ -780,6 +797,28 @@ export class MapeoProject extends TypedEmitter {
|
|
|
780
797
|
return this.#iconApi
|
|
781
798
|
}
|
|
782
799
|
|
|
800
|
+
/**
|
|
801
|
+
* @returns {ProjectStats}
|
|
802
|
+
*/
|
|
803
|
+
$getStats() {
|
|
804
|
+
// Get timestamp for 3 months ago
|
|
805
|
+
// Find members with createdAt > timestamp
|
|
806
|
+
// Bucket by week
|
|
807
|
+
// Same for obs, tracks
|
|
808
|
+
const observations = countWeeks(this.#db, observationTable)
|
|
809
|
+
const tracks = countWeeks(this.#db, trackTable)
|
|
810
|
+
const members = countWeeks(this.#db, roleTable)
|
|
811
|
+
|
|
812
|
+
const stats = {
|
|
813
|
+
timezoneOffset: new Date().getTimezoneOffset(),
|
|
814
|
+
observations,
|
|
815
|
+
tracks,
|
|
816
|
+
members,
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
return stats
|
|
820
|
+
}
|
|
821
|
+
|
|
783
822
|
/**
|
|
784
823
|
* @param {Iterable<Observation>} observations
|
|
785
824
|
* @param {Object} options
|
|
@@ -867,12 +906,12 @@ export class MapeoProject extends TypedEmitter {
|
|
|
867
906
|
)
|
|
868
907
|
)
|
|
869
908
|
|
|
909
|
+
/** @type {([number, number] | [number, number, number])[]} */
|
|
870
910
|
const coordinates = track.locations.map(
|
|
871
|
-
({ coords: { longitude, latitude, altitude } }) =>
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
]
|
|
911
|
+
({ coords: { longitude, latitude, altitude } }) =>
|
|
912
|
+
typeof altitude === 'number'
|
|
913
|
+
? [longitude, latitude, altitude]
|
|
914
|
+
: [longitude, latitude]
|
|
876
915
|
)
|
|
877
916
|
const comma = first ? '' : ','
|
|
878
917
|
first = false
|
|
@@ -1572,3 +1611,31 @@ export function baseUrlToWS(baseUrl, projectPublicId) {
|
|
|
1572
1611
|
|
|
1573
1612
|
return wsUrl.href
|
|
1574
1613
|
}
|
|
1614
|
+
|
|
1615
|
+
/**
|
|
1616
|
+
* @param {import('drizzle-orm/better-sqlite3').BetterSQLite3Database} db
|
|
1617
|
+
* @param {import('./datatype/index.js').MapeoDocTables} table
|
|
1618
|
+
* @returns {Stats}
|
|
1619
|
+
*/
|
|
1620
|
+
function countWeeks(db, table) {
|
|
1621
|
+
/** @type {Array<[string, number]>}*/
|
|
1622
|
+
const values = /** @type {Array<[string, number]>}*/ (
|
|
1623
|
+
db
|
|
1624
|
+
.select({
|
|
1625
|
+
week: sql`strftime('%Y-%W', date(${table.createdAt}, 'localtime'))`.as(
|
|
1626
|
+
'week'
|
|
1627
|
+
),
|
|
1628
|
+
count: count().as('count'),
|
|
1629
|
+
})
|
|
1630
|
+
.from(table)
|
|
1631
|
+
.where(
|
|
1632
|
+
sql`date(${table.createdAt}, 'localtime') >= date('now', '-6 months', 'weekday 0')`
|
|
1633
|
+
)
|
|
1634
|
+
.groupBy(sql`week`)
|
|
1635
|
+
.orderBy(sql`week`)
|
|
1636
|
+
.values()
|
|
1637
|
+
)
|
|
1638
|
+
const columns = ['week', 'count']
|
|
1639
|
+
|
|
1640
|
+
return { columns, values }
|
|
1641
|
+
}
|
package/src/member-api.js
CHANGED
|
@@ -175,6 +175,7 @@ export class MemberApi extends TypedEmitter {
|
|
|
175
175
|
|
|
176
176
|
const projectColor = project.projectColor
|
|
177
177
|
const projectDescription = project.projectDescription
|
|
178
|
+
const sendStats = project.sendStats
|
|
178
179
|
|
|
179
180
|
abortSignal.throwIfAborted()
|
|
180
181
|
|
|
@@ -187,6 +188,7 @@ export class MemberApi extends TypedEmitter {
|
|
|
187
188
|
roleName,
|
|
188
189
|
roleDescription,
|
|
189
190
|
invitorName,
|
|
191
|
+
sendStats,
|
|
190
192
|
}
|
|
191
193
|
|
|
192
194
|
const inviteResponse = await this.#sendInviteAndGetResponse(
|