@comapeo/core 2.0.1 → 2.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.
Files changed (114) hide show
  1. package/dist/blob-store/downloader.d.ts +43 -0
  2. package/dist/blob-store/downloader.d.ts.map +1 -0
  3. package/dist/blob-store/entries-stream.d.ts +13 -0
  4. package/dist/blob-store/entries-stream.d.ts.map +1 -0
  5. package/dist/blob-store/hyperdrive-index.d.ts +20 -0
  6. package/dist/blob-store/hyperdrive-index.d.ts.map +1 -0
  7. package/dist/blob-store/index.d.ts +34 -29
  8. package/dist/blob-store/index.d.ts.map +1 -1
  9. package/dist/blob-store/utils.d.ts +27 -0
  10. package/dist/blob-store/utils.d.ts.map +1 -0
  11. package/dist/constants.d.ts +2 -1
  12. package/dist/constants.d.ts.map +1 -1
  13. package/dist/core-manager/index.d.ts +11 -1
  14. package/dist/core-manager/index.d.ts.map +1 -1
  15. package/dist/core-ownership.d.ts.map +1 -1
  16. package/dist/datastore/index.d.ts +5 -4
  17. package/dist/datastore/index.d.ts.map +1 -1
  18. package/dist/datatype/index.d.ts +5 -1
  19. package/dist/discovery/local-discovery.d.ts.map +1 -1
  20. package/dist/errors.d.ts +6 -1
  21. package/dist/errors.d.ts.map +1 -1
  22. package/dist/fastify-plugins/blobs.d.ts.map +1 -1
  23. package/dist/fastify-plugins/maps.d.ts.map +1 -1
  24. package/dist/generated/extensions.d.ts +31 -0
  25. package/dist/generated/extensions.d.ts.map +1 -1
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/lib/drizzle-helpers.d.ts +6 -0
  29. package/dist/lib/drizzle-helpers.d.ts.map +1 -0
  30. package/dist/lib/error.d.ts +51 -0
  31. package/dist/lib/error.d.ts.map +1 -0
  32. package/dist/lib/get-own.d.ts +9 -0
  33. package/dist/lib/get-own.d.ts.map +1 -0
  34. package/dist/lib/is-hostname-ip-address.d.ts +17 -0
  35. package/dist/lib/is-hostname-ip-address.d.ts.map +1 -0
  36. package/dist/lib/ws-core-replicator.d.ts +11 -0
  37. package/dist/lib/ws-core-replicator.d.ts.map +1 -0
  38. package/dist/mapeo-manager.d.ts +18 -22
  39. package/dist/mapeo-manager.d.ts.map +1 -1
  40. package/dist/mapeo-project.d.ts +459 -26
  41. package/dist/mapeo-project.d.ts.map +1 -1
  42. package/dist/member-api.d.ts +44 -1
  43. package/dist/member-api.d.ts.map +1 -1
  44. package/dist/roles.d.ts.map +1 -1
  45. package/dist/schema/client.d.ts +17 -5
  46. package/dist/schema/client.d.ts.map +1 -1
  47. package/dist/schema/project.d.ts +212 -2
  48. package/dist/schema/project.d.ts.map +1 -1
  49. package/dist/sync/core-sync-state.d.ts +20 -15
  50. package/dist/sync/core-sync-state.d.ts.map +1 -1
  51. package/dist/sync/namespace-sync-state.d.ts +13 -1
  52. package/dist/sync/namespace-sync-state.d.ts.map +1 -1
  53. package/dist/sync/peer-sync-controller.d.ts +1 -1
  54. package/dist/sync/peer-sync-controller.d.ts.map +1 -1
  55. package/dist/sync/sync-api.d.ts +47 -2
  56. package/dist/sync/sync-api.d.ts.map +1 -1
  57. package/dist/sync/sync-state.d.ts +12 -0
  58. package/dist/sync/sync-state.d.ts.map +1 -1
  59. package/dist/translation-api.d.ts +2 -2
  60. package/dist/translation-api.d.ts.map +1 -1
  61. package/dist/types.d.ts +10 -2
  62. package/dist/types.d.ts.map +1 -1
  63. package/drizzle/client/0001_chubby_cargill.sql +12 -0
  64. package/drizzle/client/meta/0001_snapshot.json +208 -0
  65. package/drizzle/client/meta/_journal.json +7 -0
  66. package/drizzle/project/0001_medical_wendell_rand.sql +22 -0
  67. package/drizzle/project/meta/0001_snapshot.json +1267 -0
  68. package/drizzle/project/meta/_journal.json +7 -0
  69. package/package.json +14 -5
  70. package/src/blob-store/downloader.js +130 -0
  71. package/src/blob-store/entries-stream.js +81 -0
  72. package/src/blob-store/hyperdrive-index.js +122 -0
  73. package/src/blob-store/index.js +59 -117
  74. package/src/blob-store/utils.js +54 -0
  75. package/src/constants.js +4 -1
  76. package/src/core-manager/index.js +60 -3
  77. package/src/core-ownership.js +2 -4
  78. package/src/datastore/README.md +1 -2
  79. package/src/datastore/index.js +8 -8
  80. package/src/datatype/index.d.ts +5 -1
  81. package/src/datatype/index.js +22 -9
  82. package/src/discovery/local-discovery.js +2 -1
  83. package/src/errors.js +11 -2
  84. package/src/fastify-plugins/blobs.js +17 -1
  85. package/src/fastify-plugins/maps.js +2 -1
  86. package/src/generated/extensions.d.ts +31 -0
  87. package/src/generated/extensions.js +150 -0
  88. package/src/generated/extensions.ts +181 -0
  89. package/src/index.js +10 -0
  90. package/src/invite-api.js +1 -1
  91. package/src/lib/drizzle-helpers.js +79 -0
  92. package/src/lib/error.js +71 -0
  93. package/src/lib/get-own.js +10 -0
  94. package/src/lib/is-hostname-ip-address.js +26 -0
  95. package/src/lib/ws-core-replicator.js +47 -0
  96. package/src/mapeo-manager.js +74 -45
  97. package/src/mapeo-project.js +238 -58
  98. package/src/member-api.js +295 -2
  99. package/src/roles.js +38 -32
  100. package/src/schema/client.js +4 -3
  101. package/src/schema/project.js +7 -0
  102. package/src/sync/core-sync-state.js +39 -23
  103. package/src/sync/namespace-sync-state.js +22 -0
  104. package/src/sync/peer-sync-controller.js +1 -0
  105. package/src/sync/sync-api.js +197 -3
  106. package/src/sync/sync-state.js +18 -0
  107. package/src/translation-api.js +5 -9
  108. package/src/types.ts +12 -3
  109. package/dist/blob-store/live-download.d.ts +0 -107
  110. package/dist/blob-store/live-download.d.ts.map +0 -1
  111. package/dist/lib/timing-safe-equal.d.ts +0 -15
  112. package/dist/lib/timing-safe-equal.d.ts.map +0 -1
  113. package/src/blob-store/live-download.js +0 -373
  114. package/src/lib/timing-safe-equal.js +0 -34
@@ -6,6 +6,8 @@ export const kProjectReplicate: unique symbol;
6
6
  export const kDataTypes: unique symbol;
7
7
  export const kProjectLeave: unique symbol;
8
8
  export const kClearDataIfLeft: unique symbol;
9
+ export const kSetIsArchiveDevice: unique symbol;
10
+ export const kIsArchiveDevice: unique symbol;
9
11
  /**
10
12
  * @extends {TypedEmitter<{ close: () => void }>}
11
13
  */
@@ -26,10 +28,11 @@ export class MapeoProject extends TypedEmitter<{
26
28
  * @param {CoreStorage} opts.coreStorage Folder to store all hypercore data
27
29
  * @param {(mediaType: 'blobs' | 'icons') => Promise<string>} opts.getMediaBaseUrl
28
30
  * @param {import('./local-peers.js').LocalPeers} opts.localPeers
31
+ * @param {boolean} opts.isArchiveDevice Whether this device is an archive device
29
32
  * @param {Logger} [opts.logger]
30
33
  *
31
34
  */
32
- constructor({ dbPath, projectMigrationsFolder, sharedDb, sharedIndexWriter, coreStorage, keyManager, projectKey, projectSecretKey, encryptionKeys, getMediaBaseUrl, localPeers, logger, }: {
35
+ constructor({ dbPath, projectMigrationsFolder, sharedDb, sharedIndexWriter, coreStorage, keyManager, projectKey, projectSecretKey, encryptionKeys, getMediaBaseUrl, localPeers, logger, isArchiveDevice, }: {
33
36
  dbPath: string;
34
37
  projectMigrationsFolder: string;
35
38
  keyManager: import("@mapeo/crypto/dist/key-manager.js");
@@ -41,6 +44,7 @@ export class MapeoProject extends TypedEmitter<{
41
44
  coreStorage: CoreStorage;
42
45
  getMediaBaseUrl: (mediaType: "blobs" | "icons") => Promise<string>;
43
46
  localPeers: import("./local-peers.js").LocalPeers;
47
+ isArchiveDevice: boolean;
44
48
  logger?: Logger | undefined;
45
49
  });
46
50
  $blobs: BlobApi;
@@ -54,7 +58,7 @@ export class MapeoProject extends TypedEmitter<{
54
58
  /**
55
59
  */
56
60
  close(): Promise<void>;
57
- get observation(): DataType<DataStore<"data", "observation" | "track">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
61
+ get observation(): DataType<DataStore<"data", "track" | "remoteDetectionAlert" | "observation">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
58
62
  name: "observation";
59
63
  schema: undefined;
60
64
  columns: {
@@ -324,7 +328,7 @@ export class MapeoProject extends TypedEmitter<{
324
328
  versionId: string;
325
329
  } | undefined;
326
330
  }>;
327
- get track(): DataType<DataStore<"data", "observation" | "track">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
331
+ get track(): DataType<DataStore<"data", "track" | "remoteDetectionAlert" | "observation">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
328
332
  name: "track";
329
333
  schema: undefined;
330
334
  columns: {
@@ -507,7 +511,7 @@ export class MapeoProject extends TypedEmitter<{
507
511
  [k: string]: boolean | number | string | null | (boolean | number | string | null)[];
508
512
  };
509
513
  }>;
510
- get preset(): DataType<DataStore<"config", "translation" | "preset" | "field" | "projectSettings" | "deviceInfo" | "icon">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
514
+ get preset(): DataType<DataStore<"config", "translation" | "projectSettings" | "preset" | "icon" | "field" | "deviceInfo">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
511
515
  name: "preset";
512
516
  schema: undefined;
513
517
  columns: {
@@ -777,7 +781,7 @@ export class MapeoProject extends TypedEmitter<{
777
781
  terms: string[];
778
782
  color?: string | undefined;
779
783
  }>;
780
- get field(): DataType<DataStore<"config", "translation" | "preset" | "field" | "projectSettings" | "deviceInfo" | "icon">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
784
+ get field(): DataType<DataStore<"config", "translation" | "projectSettings" | "preset" | "icon" | "field" | "deviceInfo">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
781
785
  name: "field";
782
786
  schema: undefined;
783
787
  columns: {
@@ -1038,6 +1042,208 @@ export class MapeoProject extends TypedEmitter<{
1038
1042
  placeholder?: string | undefined;
1039
1043
  helperText?: string | undefined;
1040
1044
  }>;
1045
+ get remoteDetectionAlert(): DataType<DataStore<"data", "track" | "remoteDetectionAlert" | "observation">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1046
+ name: "remoteDetectionAlert";
1047
+ schema: undefined;
1048
+ columns: {
1049
+ readonly docId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1050
+ name: "docId";
1051
+ tableName: "remoteDetectionAlert";
1052
+ dataType: "string";
1053
+ columnType: "SQLiteText";
1054
+ data: string;
1055
+ driverParam: string;
1056
+ notNull: true;
1057
+ hasDefault: false;
1058
+ enumValues: [string, ...string[]];
1059
+ baseColumn: never;
1060
+ }, object>;
1061
+ readonly versionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1062
+ name: "versionId";
1063
+ tableName: "remoteDetectionAlert";
1064
+ dataType: "string";
1065
+ columnType: "SQLiteText";
1066
+ data: string;
1067
+ driverParam: string;
1068
+ notNull: true;
1069
+ hasDefault: false;
1070
+ enumValues: [string, ...string[]];
1071
+ baseColumn: never;
1072
+ }, object>;
1073
+ readonly originalVersionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1074
+ name: "originalVersionId";
1075
+ tableName: "remoteDetectionAlert";
1076
+ dataType: "string";
1077
+ columnType: "SQLiteText";
1078
+ data: string;
1079
+ driverParam: string;
1080
+ notNull: true;
1081
+ hasDefault: false;
1082
+ enumValues: [string, ...string[]];
1083
+ baseColumn: never;
1084
+ }, object>;
1085
+ readonly schemaName: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1086
+ name: "schemaName";
1087
+ tableName: "remoteDetectionAlert";
1088
+ dataType: "string";
1089
+ columnType: "SQLiteText";
1090
+ data: "remoteDetectionAlert";
1091
+ driverParam: string;
1092
+ notNull: true;
1093
+ hasDefault: false;
1094
+ enumValues: ["remoteDetectionAlert"];
1095
+ baseColumn: never;
1096
+ }, object>;
1097
+ readonly createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1098
+ name: "createdAt";
1099
+ tableName: "remoteDetectionAlert";
1100
+ dataType: "string";
1101
+ columnType: "SQLiteText";
1102
+ data: string;
1103
+ driverParam: string;
1104
+ notNull: true;
1105
+ hasDefault: false;
1106
+ enumValues: [string, ...string[]];
1107
+ baseColumn: never;
1108
+ }, object>;
1109
+ readonly updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1110
+ name: "updatedAt";
1111
+ tableName: "remoteDetectionAlert";
1112
+ dataType: "string";
1113
+ columnType: "SQLiteText";
1114
+ data: string;
1115
+ driverParam: string;
1116
+ notNull: true;
1117
+ hasDefault: false;
1118
+ enumValues: [string, ...string[]];
1119
+ baseColumn: never;
1120
+ }, object>;
1121
+ readonly links: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1122
+ name: "links";
1123
+ tableName: "remoteDetectionAlert";
1124
+ dataType: "custom";
1125
+ columnType: "SQLiteCustomColumn";
1126
+ data: string[];
1127
+ driverParam: string;
1128
+ notNull: true;
1129
+ hasDefault: false;
1130
+ enumValues: undefined;
1131
+ baseColumn: never;
1132
+ }, object>;
1133
+ readonly deleted: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1134
+ name: "deleted";
1135
+ tableName: "remoteDetectionAlert";
1136
+ dataType: "boolean";
1137
+ columnType: "SQLiteBoolean";
1138
+ data: boolean;
1139
+ driverParam: number;
1140
+ notNull: true;
1141
+ hasDefault: false;
1142
+ enumValues: undefined;
1143
+ baseColumn: never;
1144
+ }, object>;
1145
+ readonly detectionDateStart: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1146
+ name: "detectionDateStart";
1147
+ tableName: "remoteDetectionAlert";
1148
+ dataType: "string";
1149
+ columnType: "SQLiteText";
1150
+ data: string;
1151
+ driverParam: string;
1152
+ notNull: true;
1153
+ hasDefault: false;
1154
+ enumValues: [string, ...string[]];
1155
+ baseColumn: never;
1156
+ }, object>;
1157
+ readonly detectionDateEnd: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1158
+ name: "detectionDateEnd";
1159
+ tableName: "remoteDetectionAlert";
1160
+ dataType: "string";
1161
+ columnType: "SQLiteText";
1162
+ data: string;
1163
+ driverParam: string;
1164
+ notNull: true;
1165
+ hasDefault: false;
1166
+ enumValues: [string, ...string[]];
1167
+ baseColumn: never;
1168
+ }, object>;
1169
+ readonly sourceId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1170
+ name: "sourceId";
1171
+ tableName: "remoteDetectionAlert";
1172
+ dataType: "string";
1173
+ columnType: "SQLiteText";
1174
+ data: string;
1175
+ driverParam: string;
1176
+ notNull: true;
1177
+ hasDefault: false;
1178
+ enumValues: [string, ...string[]];
1179
+ baseColumn: never;
1180
+ }, object>;
1181
+ readonly metadata: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1182
+ name: "metadata";
1183
+ tableName: "remoteDetectionAlert";
1184
+ dataType: "custom";
1185
+ columnType: "SQLiteCustomColumn";
1186
+ data: {
1187
+ [k: string]: string | number | boolean | (string | number | boolean | null)[] | null;
1188
+ };
1189
+ driverParam: string;
1190
+ notNull: true;
1191
+ hasDefault: false;
1192
+ enumValues: undefined;
1193
+ baseColumn: never;
1194
+ }, object>;
1195
+ readonly geometry: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1196
+ name: "geometry";
1197
+ tableName: "remoteDetectionAlert";
1198
+ dataType: "custom";
1199
+ columnType: "SQLiteCustomColumn";
1200
+ data: import("@comapeo/schema/dist/schema/remoteDetectionAlert.js").Geometry;
1201
+ driverParam: string;
1202
+ notNull: true;
1203
+ hasDefault: false;
1204
+ enumValues: undefined;
1205
+ baseColumn: never;
1206
+ }, object>;
1207
+ forks: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1208
+ name: "forks";
1209
+ tableName: "remoteDetectionAlert";
1210
+ dataType: "custom";
1211
+ columnType: "SQLiteCustomColumn";
1212
+ data: string[];
1213
+ driverParam: string;
1214
+ notNull: true;
1215
+ hasDefault: false;
1216
+ enumValues: undefined;
1217
+ baseColumn: never;
1218
+ }, object>;
1219
+ };
1220
+ dialect: "sqlite";
1221
+ }>, "remoteDetectionAlert", {
1222
+ schemaName: "remoteDetectionAlert";
1223
+ detectionDateStart: string;
1224
+ detectionDateEnd: string;
1225
+ sourceId: string;
1226
+ metadata: {
1227
+ [k: string]: boolean | number | string | null | (boolean | number | string | null)[];
1228
+ };
1229
+ geometry: import("@comapeo/schema/dist/schema/remoteDetectionAlert.js").Geometry;
1230
+ docId: string;
1231
+ versionId: string;
1232
+ originalVersionId: string;
1233
+ createdAt: string;
1234
+ updatedAt: string;
1235
+ links: string[];
1236
+ deleted: boolean;
1237
+ }, {
1238
+ schemaName: "remoteDetectionAlert";
1239
+ detectionDateStart: string;
1240
+ detectionDateEnd: string;
1241
+ sourceId: string;
1242
+ metadata: {
1243
+ [k: string]: boolean | number | string | null | (boolean | number | string | null)[];
1244
+ };
1245
+ geometry: import("@comapeo/schema/dist/schema/remoteDetectionAlert.js").Geometry;
1246
+ }>;
1041
1247
  get $member(): MemberApi;
1042
1248
  get $sync(): SyncApi;
1043
1249
  get $translation(): TranslationApi;
@@ -1080,7 +1286,7 @@ export class MapeoProject extends TypedEmitter<{
1080
1286
  * DataTypes object mappings, used for tests
1081
1287
  */
1082
1288
  get [kDataTypes](): {
1083
- observation: DataType<DataStore<"data", "observation" | "track">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1289
+ observation: DataType<DataStore<"data", "track" | "remoteDetectionAlert" | "observation">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1084
1290
  name: "observation";
1085
1291
  schema: undefined;
1086
1292
  columns: {
@@ -1350,7 +1556,7 @@ export class MapeoProject extends TypedEmitter<{
1350
1556
  versionId: string;
1351
1557
  } | undefined;
1352
1558
  }>;
1353
- track: DataType<DataStore<"data", "observation" | "track">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1559
+ track: DataType<DataStore<"data", "track" | "remoteDetectionAlert" | "observation">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1354
1560
  name: "track";
1355
1561
  schema: undefined;
1356
1562
  columns: {
@@ -1533,7 +1739,209 @@ export class MapeoProject extends TypedEmitter<{
1533
1739
  [k: string]: boolean | number | string | null | (boolean | number | string | null)[];
1534
1740
  };
1535
1741
  }>;
1536
- preset: DataType<DataStore<"config", "translation" | "preset" | "field" | "projectSettings" | "deviceInfo" | "icon">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1742
+ remoteDetectionAlert: DataType<DataStore<"data", "track" | "remoteDetectionAlert" | "observation">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1743
+ name: "remoteDetectionAlert";
1744
+ schema: undefined;
1745
+ columns: {
1746
+ readonly docId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1747
+ name: "docId";
1748
+ tableName: "remoteDetectionAlert";
1749
+ dataType: "string";
1750
+ columnType: "SQLiteText";
1751
+ data: string;
1752
+ driverParam: string;
1753
+ notNull: true;
1754
+ hasDefault: false;
1755
+ enumValues: [string, ...string[]];
1756
+ baseColumn: never;
1757
+ }, object>;
1758
+ readonly versionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1759
+ name: "versionId";
1760
+ tableName: "remoteDetectionAlert";
1761
+ dataType: "string";
1762
+ columnType: "SQLiteText";
1763
+ data: string;
1764
+ driverParam: string;
1765
+ notNull: true;
1766
+ hasDefault: false;
1767
+ enumValues: [string, ...string[]];
1768
+ baseColumn: never;
1769
+ }, object>;
1770
+ readonly originalVersionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1771
+ name: "originalVersionId";
1772
+ tableName: "remoteDetectionAlert";
1773
+ dataType: "string";
1774
+ columnType: "SQLiteText";
1775
+ data: string;
1776
+ driverParam: string;
1777
+ notNull: true;
1778
+ hasDefault: false;
1779
+ enumValues: [string, ...string[]];
1780
+ baseColumn: never;
1781
+ }, object>;
1782
+ readonly schemaName: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1783
+ name: "schemaName";
1784
+ tableName: "remoteDetectionAlert";
1785
+ dataType: "string";
1786
+ columnType: "SQLiteText";
1787
+ data: "remoteDetectionAlert";
1788
+ driverParam: string;
1789
+ notNull: true;
1790
+ hasDefault: false;
1791
+ enumValues: ["remoteDetectionAlert"];
1792
+ baseColumn: never;
1793
+ }, object>;
1794
+ readonly createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1795
+ name: "createdAt";
1796
+ tableName: "remoteDetectionAlert";
1797
+ dataType: "string";
1798
+ columnType: "SQLiteText";
1799
+ data: string;
1800
+ driverParam: string;
1801
+ notNull: true;
1802
+ hasDefault: false;
1803
+ enumValues: [string, ...string[]];
1804
+ baseColumn: never;
1805
+ }, object>;
1806
+ readonly updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1807
+ name: "updatedAt";
1808
+ tableName: "remoteDetectionAlert";
1809
+ dataType: "string";
1810
+ columnType: "SQLiteText";
1811
+ data: string;
1812
+ driverParam: string;
1813
+ notNull: true;
1814
+ hasDefault: false;
1815
+ enumValues: [string, ...string[]];
1816
+ baseColumn: never;
1817
+ }, object>;
1818
+ readonly links: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1819
+ name: "links";
1820
+ tableName: "remoteDetectionAlert";
1821
+ dataType: "custom";
1822
+ columnType: "SQLiteCustomColumn";
1823
+ data: string[];
1824
+ driverParam: string;
1825
+ notNull: true;
1826
+ hasDefault: false;
1827
+ enumValues: undefined;
1828
+ baseColumn: never;
1829
+ }, object>;
1830
+ readonly deleted: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1831
+ name: "deleted";
1832
+ tableName: "remoteDetectionAlert";
1833
+ dataType: "boolean";
1834
+ columnType: "SQLiteBoolean";
1835
+ data: boolean;
1836
+ driverParam: number;
1837
+ notNull: true;
1838
+ hasDefault: false;
1839
+ enumValues: undefined;
1840
+ baseColumn: never;
1841
+ }, object>;
1842
+ readonly detectionDateStart: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1843
+ name: "detectionDateStart";
1844
+ tableName: "remoteDetectionAlert";
1845
+ dataType: "string";
1846
+ columnType: "SQLiteText";
1847
+ data: string;
1848
+ driverParam: string;
1849
+ notNull: true;
1850
+ hasDefault: false;
1851
+ enumValues: [string, ...string[]];
1852
+ baseColumn: never;
1853
+ }, object>;
1854
+ readonly detectionDateEnd: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1855
+ name: "detectionDateEnd";
1856
+ tableName: "remoteDetectionAlert";
1857
+ dataType: "string";
1858
+ columnType: "SQLiteText";
1859
+ data: string;
1860
+ driverParam: string;
1861
+ notNull: true;
1862
+ hasDefault: false;
1863
+ enumValues: [string, ...string[]];
1864
+ baseColumn: never;
1865
+ }, object>;
1866
+ readonly sourceId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1867
+ name: "sourceId";
1868
+ tableName: "remoteDetectionAlert";
1869
+ dataType: "string";
1870
+ columnType: "SQLiteText";
1871
+ data: string;
1872
+ driverParam: string;
1873
+ notNull: true;
1874
+ hasDefault: false;
1875
+ enumValues: [string, ...string[]];
1876
+ baseColumn: never;
1877
+ }, object>;
1878
+ readonly metadata: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1879
+ name: "metadata";
1880
+ tableName: "remoteDetectionAlert";
1881
+ dataType: "custom";
1882
+ columnType: "SQLiteCustomColumn";
1883
+ data: {
1884
+ [k: string]: string | number | boolean | (string | number | boolean | null)[] | null;
1885
+ };
1886
+ driverParam: string;
1887
+ notNull: true;
1888
+ hasDefault: false;
1889
+ enumValues: undefined;
1890
+ baseColumn: never;
1891
+ }, object>;
1892
+ readonly geometry: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1893
+ name: "geometry";
1894
+ tableName: "remoteDetectionAlert";
1895
+ dataType: "custom";
1896
+ columnType: "SQLiteCustomColumn";
1897
+ data: import("@comapeo/schema/dist/schema/remoteDetectionAlert.js").Geometry;
1898
+ driverParam: string;
1899
+ notNull: true;
1900
+ hasDefault: false;
1901
+ enumValues: undefined;
1902
+ baseColumn: never;
1903
+ }, object>;
1904
+ forks: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1905
+ name: "forks";
1906
+ tableName: "remoteDetectionAlert";
1907
+ dataType: "custom";
1908
+ columnType: "SQLiteCustomColumn";
1909
+ data: string[];
1910
+ driverParam: string;
1911
+ notNull: true;
1912
+ hasDefault: false;
1913
+ enumValues: undefined;
1914
+ baseColumn: never;
1915
+ }, object>;
1916
+ };
1917
+ dialect: "sqlite";
1918
+ }>, "remoteDetectionAlert", {
1919
+ schemaName: "remoteDetectionAlert";
1920
+ detectionDateStart: string;
1921
+ detectionDateEnd: string;
1922
+ sourceId: string;
1923
+ metadata: {
1924
+ [k: string]: boolean | number | string | null | (boolean | number | string | null)[];
1925
+ };
1926
+ geometry: import("@comapeo/schema/dist/schema/remoteDetectionAlert.js").Geometry;
1927
+ docId: string;
1928
+ versionId: string;
1929
+ originalVersionId: string;
1930
+ createdAt: string;
1931
+ updatedAt: string;
1932
+ links: string[];
1933
+ deleted: boolean;
1934
+ }, {
1935
+ schemaName: "remoteDetectionAlert";
1936
+ detectionDateStart: string;
1937
+ detectionDateEnd: string;
1938
+ sourceId: string;
1939
+ metadata: {
1940
+ [k: string]: boolean | number | string | null | (boolean | number | string | null)[];
1941
+ };
1942
+ geometry: import("@comapeo/schema/dist/schema/remoteDetectionAlert.js").Geometry;
1943
+ }>;
1944
+ preset: DataType<DataStore<"config", "translation" | "projectSettings" | "preset" | "icon" | "field" | "deviceInfo">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1537
1945
  name: "preset";
1538
1946
  schema: undefined;
1539
1947
  columns: {
@@ -1803,7 +2211,7 @@ export class MapeoProject extends TypedEmitter<{
1803
2211
  terms: string[];
1804
2212
  color?: string | undefined;
1805
2213
  }>;
1806
- field: DataType<DataStore<"config", "translation" | "preset" | "field" | "projectSettings" | "deviceInfo" | "icon">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2214
+ field: DataType<DataStore<"config", "translation" | "projectSettings" | "preset" | "icon" | "field" | "deviceInfo">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1807
2215
  name: "field";
1808
2216
  schema: undefined;
1809
2217
  columns: {
@@ -2064,7 +2472,7 @@ export class MapeoProject extends TypedEmitter<{
2064
2472
  placeholder?: string | undefined;
2065
2473
  helperText?: string | undefined;
2066
2474
  }>;
2067
- projectSettings: DataType<DataStore<"config", "translation" | "preset" | "field" | "projectSettings" | "deviceInfo" | "icon">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2475
+ projectSettings: DataType<DataStore<"config", "translation" | "projectSettings" | "preset" | "icon" | "field" | "deviceInfo">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2068
2476
  name: "projectSettings";
2069
2477
  schema: undefined;
2070
2478
  columns: {
@@ -2265,7 +2673,7 @@ export class MapeoProject extends TypedEmitter<{
2265
2673
  fileVersion: string;
2266
2674
  } | undefined;
2267
2675
  }>;
2268
- coreOwnership: DataType<DataStore<"auth", "coreOwnership" | "role">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2676
+ coreOwnership: DataType<DataStore<"auth", "role" | "coreOwnership">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2269
2677
  name: "coreOwnership";
2270
2678
  schema: undefined;
2271
2679
  columns: {
@@ -2461,7 +2869,7 @@ export class MapeoProject extends TypedEmitter<{
2461
2869
  blobCoreId: string;
2462
2870
  blobIndexCoreId: string;
2463
2871
  }>;
2464
- role: DataType<DataStore<"auth", "coreOwnership" | "role">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2872
+ role: DataType<DataStore<"auth", "role" | "coreOwnership">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2465
2873
  name: "role";
2466
2874
  schema: undefined;
2467
2875
  columns: {
@@ -2615,7 +3023,7 @@ export class MapeoProject extends TypedEmitter<{
2615
3023
  roleId: string;
2616
3024
  fromIndex: number;
2617
3025
  }>;
2618
- deviceInfo: DataType<DataStore<"config", "translation" | "preset" | "field" | "projectSettings" | "deviceInfo" | "icon">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
3026
+ deviceInfo: DataType<DataStore<"config", "translation" | "projectSettings" | "preset" | "icon" | "field" | "deviceInfo">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2619
3027
  name: "deviceInfo";
2620
3028
  schema: undefined;
2621
3029
  columns: {
@@ -2739,6 +3147,20 @@ export class MapeoProject extends TypedEmitter<{
2739
3147
  enumValues: ["device_type_unspecified", "mobile", "tablet", "desktop", "selfHostedServer", "UNRECOGNIZED"];
2740
3148
  baseColumn: never;
2741
3149
  }, object>;
3150
+ readonly selfHostedServerDetails: import("drizzle-orm/sqlite-core").SQLiteColumn<{
3151
+ name: "selfHostedServerDetails";
3152
+ tableName: "deviceInfo";
3153
+ dataType: "custom";
3154
+ columnType: "SQLiteCustomColumn";
3155
+ data: {
3156
+ baseUrl: string;
3157
+ } | undefined;
3158
+ driverParam: string;
3159
+ notNull: false;
3160
+ hasDefault: false;
3161
+ enumValues: undefined;
3162
+ baseColumn: never;
3163
+ }, object>;
2742
3164
  forks: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2743
3165
  name: "forks";
2744
3166
  tableName: "deviceInfo";
@@ -2757,6 +3179,9 @@ export class MapeoProject extends TypedEmitter<{
2757
3179
  schemaName: "deviceInfo";
2758
3180
  name: string;
2759
3181
  deviceType: "device_type_unspecified" | "mobile" | "tablet" | "desktop" | "selfHostedServer" | "UNRECOGNIZED";
3182
+ selfHostedServerDetails?: {
3183
+ baseUrl: string;
3184
+ } | undefined;
2760
3185
  docId: string;
2761
3186
  versionId: string;
2762
3187
  originalVersionId: string;
@@ -2768,8 +3193,11 @@ export class MapeoProject extends TypedEmitter<{
2768
3193
  schemaName: "deviceInfo";
2769
3194
  name: string;
2770
3195
  deviceType: "device_type_unspecified" | "mobile" | "tablet" | "desktop" | "selfHostedServer" | "UNRECOGNIZED";
3196
+ selfHostedServerDetails?: {
3197
+ baseUrl: string;
3198
+ } | undefined;
2771
3199
  }>;
2772
- icon: DataType<DataStore<"config", "translation" | "preset" | "field" | "projectSettings" | "deviceInfo" | "icon">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
3200
+ icon: DataType<DataStore<"config", "translation" | "projectSettings" | "preset" | "icon" | "field" | "deviceInfo">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2773
3201
  name: "icon";
2774
3202
  schema: undefined;
2775
3203
  columns: {
@@ -2950,7 +3378,7 @@ export class MapeoProject extends TypedEmitter<{
2950
3378
  blobVersionId: import("@comapeo/schema/dist/schema/icon.js").BlobVersionId;
2951
3379
  })[];
2952
3380
  }>;
2953
- translation: DataType<DataStore<"config", "translation" | "preset" | "field" | "projectSettings" | "deviceInfo" | "icon">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
3381
+ translation: DataType<DataStore<"config", "translation" | "projectSettings" | "preset" | "icon" | "field" | "deviceInfo">, import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2954
3382
  name: "translation";
2955
3383
  schema: undefined;
2956
3384
  columns: {
@@ -3070,7 +3498,7 @@ export class MapeoProject extends TypedEmitter<{
3070
3498
  tableName: "translation";
3071
3499
  dataType: "string";
3072
3500
  columnType: "SQLiteText";
3073
- data: "UNRECOGNIZED" | "observation" | "track" | "preset" | "field" | "projectSettings" | "deviceInfo" | "role" | "type_unspecified";
3501
+ data: "track" | "role" | "projectSettings" | "preset" | "observation" | "field" | "deviceInfo" | "UNRECOGNIZED" | "type_unspecified";
3074
3502
  driverParam: string;
3075
3503
  notNull: true;
3076
3504
  hasDefault: false;
@@ -3174,21 +3602,25 @@ export class MapeoProject extends TypedEmitter<{
3174
3602
  /**
3175
3603
  * Replicate a project to a @hyperswarm/secret-stream. Invites will not
3176
3604
  * function because the RPC channel is not connected for project replication,
3177
- * and only this project will replicate (to replicate multiple projects you
3178
- * need to replicate the manager instance via manager[kManagerReplicate])
3605
+ * and only this project will replicate.
3179
3606
  *
3180
- * @param {Parameters<import('hypercore')['replicate']>[0]} stream A duplex stream, a @hyperswarm/secret-stream, or a Protomux instance
3607
+ * @param {(
3608
+ * boolean |
3609
+ * import('stream').Duplex |
3610
+ * import('streamx').Duplex
3611
+ * )} isInitiatorOrStream
3612
+ * @returns {ReplicationStream}
3181
3613
  */
3182
- [kProjectReplicate](stream: Parameters<import("hypercore")["replicate"]>[0]): import("streamx").Duplex<any, any, any, any, true, true, import("streamx").DuplexEvents<any, any>> & {
3183
- noiseStream: Omit<import("@hyperswarm/secret-stream")<import("streamx").Duplex<any, any, any, any, true, true, import("streamx").DuplexEvents<any, any>>>, "userData"> & {
3184
- userData: import("protomux");
3185
- };
3186
- } & import("protomux")<import("streamx").Duplex<any, any, any, any, true, true, import("streamx").DuplexEvents<any, any>>>;
3614
+ [kProjectReplicate](isInitiatorOrStream: (boolean | import("stream").Duplex | import("streamx").Duplex)): ReplicationStream;
3187
3615
  /**
3188
- * @param {Pick<import('@comapeo/schema').DeviceInfoValue, 'name' | 'deviceType'>} value
3616
+ * @param {Pick<import('@comapeo/schema').DeviceInfoValue, 'name' | 'deviceType' | 'selfHostedServerDetails'>} value
3189
3617
  * @returns {Promise<import('@comapeo/schema').DeviceInfo>}
3190
3618
  */
3191
- [kSetOwnDeviceInfo](value: Pick<import("@comapeo/schema").DeviceInfoValue, "name" | "deviceType">): Promise<import("@comapeo/schema").DeviceInfo>;
3619
+ [kSetOwnDeviceInfo](value: Pick<import("@comapeo/schema").DeviceInfoValue, "name" | "deviceType" | "selfHostedServerDetails">): Promise<import("@comapeo/schema").DeviceInfo>;
3620
+ /** @param {boolean} isArchiveDevice */
3621
+ [kSetIsArchiveDevice](isArchiveDevice: boolean): Promise<void>;
3622
+ /** @returns {boolean} */
3623
+ get [kIsArchiveDevice](): boolean;
3192
3624
  [kProjectLeave](): Promise<void>;
3193
3625
  /**
3194
3626
  * Clear data if we've left the project. No-op if you're still in the project.
@@ -3210,6 +3642,7 @@ import { IconApi } from './icon-api.js';
3210
3642
  import { CoreManager } from './core-manager/index.js';
3211
3643
  import { CoreOwnership } from './core-ownership.js';
3212
3644
  import { BlobStore } from './blob-store/index.js';
3645
+ import type { ReplicationStream } from './types.js';
3213
3646
  import { IndexWriter } from './index-writer/index.js';
3214
3647
  import type { CoreStorage } from './types.js';
3215
3648
  import { Logger } from './logger.js';