@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
@@ -0,0 +1,43 @@
1
+ /** @import { BlobFilter } from '../types.js' */
2
+ /** @import { THyperdriveIndex } from './hyperdrive-index.js' */
3
+ /**
4
+ * Like hyperdrive.download() but 'live', and for multiple drives.
5
+ *
6
+ * Will emit an 'error' event for any unexpected errors. A consumer must attach
7
+ * an error listener to avoid uncaught errors. Sources of errors include:
8
+ *
9
+ * - If the entries stream emits an error
10
+ * - If a drive referenced in an entry is not found
11
+ * - If core.has() throws (e.g. if hypercore is closed)
12
+ * - If core.download().done() throws, which should not happen according to
13
+ * current hypercore code.
14
+ * - If the entries stream ends unexpectedly (it should be live and not end)
15
+ *
16
+ * NB: unlike hyperdrive.download(), this will also download deleted and
17
+ * previous versions of blobs - we don't currently support editing or deleting
18
+ * of blobs, so this should not be an issue, and if we do in the future,
19
+ * downloading deleted and previous versions may be desirable behavior anyway
20
+ *
21
+ * @extends {TypedEmitter<{ error: (error: Error) => void }>}
22
+ */
23
+ export class Downloader extends TypedEmitter<{
24
+ error: (error: Error) => void;
25
+ }> {
26
+ /**
27
+ * @param {THyperdriveIndex} driveIndex
28
+ * @param {object} [options]
29
+ * @param {BlobFilter | null} [options.filter] Filter blobs of specific types and/or sizes to download
30
+ */
31
+ constructor(driveIndex: THyperdriveIndex, { filter }?: {
32
+ filter?: BlobFilter | null | undefined;
33
+ } | undefined);
34
+ /**
35
+ * Cancel the downloads and clean up resources.
36
+ */
37
+ destroy(): void;
38
+ #private;
39
+ }
40
+ import { TypedEmitter } from 'tiny-typed-emitter';
41
+ import type { THyperdriveIndex } from './hyperdrive-index.js';
42
+ import type { BlobFilter } from '../types.js';
43
+ //# sourceMappingURL=downloader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloader.d.ts","sourceRoot":"","sources":["../../src/blob-store/downloader.js"],"names":[],"mappings":"AAIA,gDAAgD;AAChD,gEAAgE;AAEhE;;;;;;;;;;;;;;;;;;;GAmBG;AACH;WAFmC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;;IAYvD;;;;OAIG;IACH,wBAJW,gBAAgB;;mBAmB1B;IAkDD;;OAEG;IACH,gBAEC;;CAiBF;6BAjI4B,oBAAoB;sCAKX,uBAAuB;gCAD7B,aAAa"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ *
3
+ * @param {THyperdriveIndex} driveIndex
4
+ * @param {object} opts
5
+ * @param {boolean} [opts.live=false]
6
+ * @returns {BlobStoreEntriesStream}
7
+ */
8
+ export function createEntriesStream(driveIndex: THyperdriveIndex, { live }?: {
9
+ live?: boolean | undefined;
10
+ }): BlobStoreEntriesStream;
11
+ import type { THyperdriveIndex } from './hyperdrive-index.js';
12
+ import type { BlobStoreEntriesStream } from '../types.js';
13
+ //# sourceMappingURL=entries-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entries-stream.d.ts","sourceRoot":"","sources":["../../src/blob-store/entries-stream.js"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,gDALW,gBAAgB,aAExB;IAAuB,IAAI;CAC3B,GAAU,sBAAsB,CAiBlC;sCA1BqC,uBAAuB;4CADjB,aAAa"}
@@ -0,0 +1,20 @@
1
+ /** @typedef {HyperdriveIndexImpl} THyperdriveIndex */
2
+ /**
3
+ * @extends {TypedEmitter<{ 'add-drive': (drive: Hyperdrive) => void }>}
4
+ */
5
+ export class HyperdriveIndexImpl extends TypedEmitter<{
6
+ 'add-drive': (drive: Hyperdrive) => void;
7
+ }> {
8
+ /** @param {import('../core-manager/index.js').CoreManager} coreManager */
9
+ constructor(coreManager: import("../core-manager/index.js").CoreManager);
10
+ get writer(): Hyperdrive;
11
+ get writerKey(): Buffer;
12
+ /** @param {string} driveId */
13
+ get(driveId: string): Hyperdrive | undefined;
14
+ [Symbol.iterator](): MapIterator<Hyperdrive>;
15
+ #private;
16
+ }
17
+ export type THyperdriveIndex = HyperdriveIndexImpl;
18
+ import Hyperdrive from 'hyperdrive';
19
+ import { TypedEmitter } from 'tiny-typed-emitter';
20
+ //# sourceMappingURL=hyperdrive-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyperdrive-index.d.ts","sourceRoot":"","sources":["../../src/blob-store/hyperdrive-index.js"],"names":[],"mappings":"AAMA,sDAAsD;AAEtD;;GAEG;AACH;iBAFyC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI;;IAOlE,0EAA0E;IAC1E,yBADY,OAAO,0BAA0B,EAAE,WAAW,EAiCzD;IACD,yBAEC;IACD,wBAEC;IAID,8BAA8B;IAC9B,aADY,MAAM,0BAGjB;IAND,6CAEC;;CAKF;+BAzDa,mBAAmB;uBAJV,YAAY;6BAEN,oBAAoB"}
@@ -1,10 +1,15 @@
1
- export class BlobStore {
1
+ /** @extends {TypedEmitter<{ error: (error: Error) => void }>} */
2
+ export class BlobStore extends TypedEmitter<{
3
+ error: (error: Error) => void;
4
+ }> {
2
5
  /**
3
6
  * @param {object} options
4
7
  * @param {import('../core-manager/index.js').CoreManager} options.coreManager
8
+ * @param {BlobFilter | null} options.downloadFilter - Filter blob types and/or variants to download. Set to `null` to download all blobs.
5
9
  */
6
- constructor({ coreManager }: {
10
+ constructor({ coreManager, downloadFilter }: {
7
11
  coreManager: import("../core-manager/index.js").CoreManager;
12
+ downloadFilter: BlobFilter | null;
8
13
  });
9
14
  /**
10
15
  * @returns {string}
@@ -22,21 +27,12 @@ export class BlobStore {
22
27
  timeout?: undefined;
23
28
  }): Promise<Uint8Array>;
24
29
  /**
25
- * Download blobs from all drives, optionally filtering particular blob types
26
- * or blob variants. Download will be 'live' and will continue downloading new
27
- * data as it becomes available from any replicating drive.
30
+ * Set the filter for downloading blobs.
28
31
  *
29
- * If no filter is specified, all blobs will be downloaded. If a filter is
30
- * specified, then _only_ blobs that match the filter will be downloaded.
31
- *
32
- * @param {import('../types.js').BlobFilter} [filter] Filter blob types and/or variants to download. Filter is { [BlobType]: BlobVariants[] }. At least one blob variant must be specified for each blob type.
33
- * @param {object} options
34
- * @param {AbortSignal} [options.signal] Optional AbortSignal to cancel in-progress download
35
- * @returns {TypedEmitter<BlobDownloadEvents>}
32
+ * @param {import('../types.js').BlobFilter | null} filter Filter blob types and/or variants to download. Filter is { [BlobType]: BlobVariants[] }. At least one blob variant must be specified for each blob type.
33
+ * @returns {void}
36
34
  */
37
- download(filter?: import("../types.js").BlobFilter | undefined, { signal }?: {
38
- signal?: AbortSignal | undefined;
39
- }): TypedEmitter<BlobDownloadEvents>;
35
+ setDownloadFilter(filter: import("../types.js").BlobFilter | null): void;
40
36
  /**
41
37
  * @param {BlobId} blobId
42
38
  * @param {object} [options]
@@ -48,6 +44,19 @@ export class BlobStore {
48
44
  wait?: boolean | undefined;
49
45
  timeout?: number | undefined;
50
46
  } | undefined): Readable;
47
+ /**
48
+ * This is a low-level method to create a stream of entries from all drives.
49
+ * It includes entries for unknown blob types and variants.
50
+ *
51
+ * @param {object} opts
52
+ * @param {boolean} [opts.live=false] Set to `true` to get a live stream of entries
53
+ * @param {import('./utils.js').GenericBlobFilter | null} [opts.filter] Filter blob types and/or variants in returned entries. Filter is { [BlobType]: BlobVariants[] }.
54
+ * @returns {BlobStoreEntriesStream}
55
+ */
56
+ createEntriesReadStream({ live, filter }?: {
57
+ live?: boolean | undefined;
58
+ filter?: import("./utils.js").GenericBlobFilter | null | undefined;
59
+ }): BlobStoreEntriesStream;
51
60
  /**
52
61
  * Optimization for creating the blobs read stream when you have
53
62
  * previously read the entry from Hyperdrive using `drive.entry`
@@ -57,7 +66,7 @@ export class BlobStore {
57
66
  * @param {boolean} [options.wait=false] Set to `true` to wait for a blob to download, otherwise will throw if blob is not available locally
58
67
  * @returns {Promise<Readable>}
59
68
  */
60
- createEntryReadStream(driveId: BlobId["driveId"], entry: import("hyperdrive").HyperdriveEntry, options?: {
69
+ createReadStreamFromEntry(driveId: BlobId["driveId"], entry: import("hyperdrive").HyperdriveEntry, options?: {
61
70
  wait?: boolean | undefined;
62
71
  } | undefined): Promise<Readable>;
63
72
  /**
@@ -75,24 +84,20 @@ export class BlobStore {
75
84
  * @param {Omit<BlobId, 'driveId'>} blobId
76
85
  * @param {Buffer} blob
77
86
  * @param {object} [options]
78
- * @param {{mimeType: string}} [options.metadata] Metadata to store with the blob
87
+ * @param {JsonObject} [options.metadata] Metadata to store with the blob
79
88
  * @returns {Promise<string>} discovery key as hex string of hyperdrive where blob is stored
80
89
  */
81
90
  put({ type, variant, name }: Omit<BlobId, "driveId">, blob: Buffer, options?: {
82
- metadata?: {
83
- mimeType: string;
84
- } | undefined;
91
+ metadata?: JsonObject | undefined;
85
92
  } | undefined): Promise<string>;
86
93
  /**
87
94
  * @param {Omit<BlobId, 'driveId'>} blobId
88
95
  * @param {object} [options]
89
- * @param {{mimeType: string}} [options.metadata] Metadata to store with the blob
96
+ * @param {JsonObject} [options.metadata] Metadata to store with the blob
90
97
  * @returns {Writable & { driveId: string }}
91
98
  */
92
99
  createWriteStream({ type, variant, name }: Omit<BlobId, "driveId">, options?: {
93
- metadata?: {
94
- mimeType: string;
95
- } | undefined;
100
+ metadata?: JsonObject | undefined;
96
101
  } | undefined): Writable & {
97
102
  driveId: string;
98
103
  };
@@ -120,21 +125,21 @@ export class BlobStore {
120
125
  } | undefined): Promise<{
121
126
  blocks: number;
122
127
  } | null>;
128
+ close(): void;
123
129
  #private;
124
130
  }
125
131
  export type Readable = NodeReadable | StreamxReadable;
126
- export type InternalDriveEmitter = TypedEmitter<{
127
- "add-drive": (drive: import("hyperdrive")) => void;
128
- }>;
129
132
  export namespace SUPPORTED_BLOB_VARIANTS {
130
133
  let photo: readonly ["original", "preview", "thumbnail"];
131
134
  let audio: readonly ["original"];
132
135
  let video: readonly ["original"];
133
136
  }
134
- import type { BlobId } from '../types.js';
135
137
  import { TypedEmitter } from 'tiny-typed-emitter';
136
- import type { BlobDownloadEvents } from './live-download.js';
138
+ import type { BlobId } from '../types.js';
139
+ import type { BlobStoreEntriesStream } from '../types.js';
140
+ import type { JsonObject } from 'type-fest';
137
141
  import type { Writable } from 'streamx';
142
+ import type { BlobFilter } from '../types.js';
138
143
  import type { Readable as NodeReadable } from 'node:stream';
139
144
  import type { Readable as StreamxReadable } from 'streamx';
140
145
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blob-store/index.js"],"names":[],"mappings":"AAsCA;IAUE;;;OAGG;IACH,6BAFG;QAAgE,WAAW,EAAnE,OAAO,0BAA0B,EAAE,WAAW;KACxD,EA+BA;IAED;;OAEG;IACH,4BAEC;IAYD;;;;;;OAMG;IACH,sCANW,MAAM,sBAEd;QAAqB,IAAI;QACJ,OAAO;KAC5B,GAAU,OAAO,CAAC,UAAU,CAAC,CAQ/B;IAED;;;;;;;;;;;;OAYG;IACH,6EAHG;QAA8B,MAAM;KACpC,GAAU,YAAY,CAAC,kBAAkB,CAAC,CAO5C;IAED;;;;;;OAMG;IACH,mDANW,MAAM;;;oBAIJ,QAAQ,CAYpB;IAED;;;;;;;;OAQG;IACH,+BANW,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;;sBAEK,MAAM;;oBACf,OAAO,CAAC,MAAM,CAAC,CAM3B;IAED;;;;;OAKG;IACH,2CALW,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;;sBAEZ,MAAM;;oBACf,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;;CACF;uBAnPY,YAAY,GAAG,eAAe;mCAG7B,YAAY,CAAC;IAAE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,IAAI,CAAA;CAAE,CAAC;;;;;;4BARtD,aAAa;6BAJZ,oBAAoB;wCAKT,oBAAoB;8BAFD,SAAS;8CADtB,aAAa;iDACA,SAAS"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blob-store/index.js"],"names":[],"mappings":"AAwCA,iEAAiE;AACjE;WADoC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;;IAMxD;;;;OAIG;IACH,6CAHG;QAAgE,WAAW,EAAnE,OAAO,0BAA0B,EAAE,WAAW;QACnB,cAAc,EAAzC,UAAU,GAAG,IAAI;KAC3B,EAQA;IAED;;OAEG;IACH,4BAEC;IAYD;;;;;;OAMG;IACH,sCANW,MAAM,sBAEd;QAAqB,IAAI;QACJ,OAAO;KAC5B,GAAU,OAAO,CAAC,UAAU,CAAC,CAQ/B;IAED;;;;;OAKG;IACH,0BAHW,OAAO,aAAa,EAAE,UAAU,GAAG,IAAI,GACrC,IAAI,CAShB;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,cAGC;;CACF;uBAvOY,YAAY,GAAG,eAAe;;;;;;6BAXd,oBAAoB;4BAOe,aAAa;4CAAb,aAAa;gCAH7C,WAAW;8BAEgB,SAAS;gCACJ,aAAa;8CAF/B,aAAa;iDACA,SAAS"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @param {GenericBlobFilter} filter
3
+ * @param {string} filePath
4
+ * @returns {boolean}
5
+ */
6
+ export function filePathMatchesFilter(filter: GenericBlobFilter, filePath: string): boolean;
7
+ /** @type {import("../types.js").BlobStoreEntriesStream} */
8
+ export class FilterEntriesStream extends Transform {
9
+ /** @param {GenericBlobFilter} filter */
10
+ constructor(filter: GenericBlobFilter);
11
+ /**
12
+ * @param {import("hyperdrive").HyperdriveEntry} entry
13
+ * @param {Parameters<Transform['_transform']>[1]} _
14
+ * @param {Parameters<Transform['_transform']>[2]} callback
15
+ */
16
+ _transform(entry: import("hyperdrive").HyperdriveEntry, _: Parameters<Transform["_transform"]>[1], callback: Parameters<Transform["_transform"]>[2]): void;
17
+ #private;
18
+ }
19
+ /**
20
+ * This is a more generic version of the BlobFilter type that can filter unknown
21
+ * blob types and variants from the blob store.
22
+ */
23
+ export type GenericBlobFilter = {
24
+ [type: string]: readonly string[];
25
+ };
26
+ import { Transform } from 'node:stream';
27
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/blob-store/utils.js"],"names":[],"mappings":"AASA;;;;GAIG;AACH,8CAJW,iBAAiB,YACjB,MAAM,GACJ,OAAO,CAqBnB;AAED,2DAA2D;AAC3D;IAEE,wCAAwC;IACxC,oBADY,iBAAiB,EAI5B;IACD;;;;OAIG;IACH,kBAJW,OAAO,YAAY,EAAE,eAAe,KACpC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YACtC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,QAMhD;;CACF;;;;;gCAjDY;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;CAAE;0BAGxB,aAAa"}
@@ -5,10 +5,11 @@ export const PRESYNC_NAMESPACES: ReadonlyArray<Namespace>;
5
5
  /** @type {ReadonlyArray<Namespace>} */
6
6
  export const DATA_NAMESPACES: ReadonlyArray<Namespace>;
7
7
  export namespace NAMESPACE_SCHEMAS {
8
- let data: readonly ["observation", "track"];
8
+ let data: readonly ["observation", "track", "remoteDetectionAlert"];
9
9
  let config: readonly ["translation", "preset", "field", "projectSettings", "deviceInfo", "icon"];
10
10
  let auth: readonly ["coreOwnership", "role"];
11
11
  }
12
12
  export const SUPPORTED_CONFIG_VERSION: 1;
13
+ export const DRIZZLE_MIGRATIONS_TABLE: "__drizzle_migrations";
13
14
  import type { Namespace } from './types.js';
14
15
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.js"],"names":[],"mappings":"AAAA,8CAA8C;AAI9C,kFAME;AAEF,uCAAuC;AACvC,iCADW,aAAa,CAAC,SAAS,CAAC,CAC8B;AAEjE,uCAAuC;AACvC,8BADW,aAAa,CAAC,SAAS,CAAC,CAGlC;;;;;;AAeD,yCAAyC;+BAjCV,YAAY"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.js"],"names":[],"mappings":"AAAA,8CAA8C;AAI9C,kFAME;AAEF,uCAAuC;AACvC,iCADW,aAAa,CAAC,SAAS,CAAC,CAC8B;AAEjE,uCAAuC;AACvC,8BADW,aAAa,CAAC,SAAS,CAAC,CAGlC;;;;;;AAeD,yCAAyC;AAGzC,8DAA8D;+BApC/B,YAAY"}
@@ -5,6 +5,7 @@ export const kCoreManagerReplicate: unique symbol;
5
5
  * @typedef {Object} Events
6
6
  * @property {(coreRecord: CoreRecord) => void} add-core
7
7
  * @property {(namespace: Namespace, msg: { coreDiscoveryId: string, peerId: string, start: number, bitfield: Uint32Array }) => void} peer-have
8
+ * @property {(blobFilter: GenericBlobFilter, peerId: string) => void} peer-download-intent
8
9
  */
9
10
  /**
10
11
  * @extends {TypedEmitter<Events>}
@@ -27,7 +28,7 @@ export class CoreManager extends TypedEmitter<Events> {
27
28
  keyManager: import("@mapeo/crypto/dist/key-manager.js");
28
29
  projectKey: Buffer;
29
30
  projectSecretKey?: Buffer | undefined;
30
- encryptionKeys?: Partial<Record<"blob" | "auth" | "config" | "data" | "blobIndex", Buffer>> | undefined;
31
+ encryptionKeys?: Partial<Record<"auth" | "config" | "data" | "blobIndex" | "blob", Buffer>> | undefined;
31
32
  storage: import("hypercore").HypercoreStorage;
32
33
  autoDownload?: boolean | undefined;
33
34
  logger?: Logger | undefined;
@@ -80,6 +81,11 @@ export class CoreManager extends TypedEmitter<Events> {
80
81
  * @returns {CoreRecord}
81
82
  */
82
83
  addCore(key: Buffer, namespace: Namespace): CoreRecord;
84
+ /**
85
+ * @param {BlobFilter} blobFilter
86
+ * @param {HypercorePeer} peer
87
+ */
88
+ sendDownloadIntents(blobFilter: BlobFilter, peer: HypercorePeer): void;
83
89
  /**
84
90
  * @param {Exclude<Namespace, 'auth'>} namespace
85
91
  * @returns {Promise<void>}
@@ -111,6 +117,7 @@ export type Events = {
111
117
  start: number;
112
118
  bitfield: Uint32Array;
113
119
  }) => void;
120
+ "peer-download-intent": (blobFilter: GenericBlobFilter, peerId: string) => void;
114
121
  };
115
122
  export type HaveMsg = {
116
123
  discoveryKey: Buffer;
@@ -120,7 +127,10 @@ export type HaveMsg = {
120
127
  };
121
128
  import { TypedEmitter } from 'tiny-typed-emitter';
122
129
  import type { Namespace } from '../types.js';
130
+ import type { BlobFilter } from '../types.js';
131
+ import type { HypercorePeer } from '../types.js';
123
132
  import Corestore from 'corestore';
124
133
  import { Logger } from '../logger.js';
125
134
  import type Hypercore from 'hypercore';
135
+ import type { GenericBlobFilter } from '../types.js';
126
136
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core-manager/index.js"],"names":[],"mappings":"AAmBA,kDAAqE;AAErE,kDAAkD;AAClD,8EAA8E;AAC9E;;;;GAIG;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,EAgHlC;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,uBAQC;IAED;;;;;;OAMG;IACH,aAJW,MAAM,aACN,SAAS,GACP,UAAU,CAItB;IAqLD;;;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;mBAzba,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;;;kBAwbtH,MAAM;WACN,MAAM;cACN,WAAW;eACX,SAAS;;6BArdM,oBAAoB;+BAeH,aAAa;sBAdrC,WAAW;uBAMV,cAAc;2BAOV,WAAW"}
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;IAkBE,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,EA0HlC;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,uBAQC;IAED;;;;;;OAMG;IACH,aAJW,MAAM,aACN,SAAS,GACP,UAAU,CAItB;IAiJD;;;OAGG;IACH,gCAHW,UAAU,QACV,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;mBAvda,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,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI;;;kBAqdvD,MAAM;WACN,MAAM;cACN,WAAW;eACX,SAAS;;6BAxfM,oBAAoB;+BAoB4B,aAAa;gCAAb,aAAa;mCAAb,aAAa;sBAnBpE,WAAW;uBAUV,cAAc;2BAQV,WAAW;uCACuC,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"core-ownership.d.ts","sourceRoot":"","sources":["../src/core-ownership.js"],"names":[],"mappings":"AAqJA;;;;;;;;;;;GAWG;AACH,iDAJW,2BAA2B,wBAC3B,OAAO,iBAAiB,EAAE,eAAe,GACvC,OAAO,iBAAiB,EAAE,aAAa,CAiBnD;;AA9JD;;;;;;;GAOG;AAEH;;;GAGG;AAEH;;GAEG;AACH;IAGE;;;;;;;;;;;;OAYG;IACH,yDAVG;QAMQ,QAAQ,EANR,OAAO,qBAAqB,EAAE,QAAQ,CAChD,OAAW,sBAAsB,EAAE,SAAS,CAAC,MAAM,CAAC,EACpD,cAAkB,qBAAqB,EAAE,kBAAkB,EAC3D,eAAmB,EACnB,OAAW,iBAAiB,EAAE,aAAa,EAC3C,OAAW,iBAAiB,EAAE,kBAAkB,CAC7C;QACwC,YAAY,EAA7C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;QACZ,eAAe,EAA7B,OAAO;KACjB,EAyBA;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAiB3B;IAED;;;;;OAKG;IACH,oBAJW,MAAM,aACN,SAAS,GACP,OAAO,CAAC,MAAM,CAAC,CAK3B;IAED;;;;OAIG;IACH,cAFW,MAAM;;;;;;;;;;;;;;;;OAKhB;IAED;;;;;;;;;;;;;;;;UAGC;;CAyBF;;;;;YAtHa,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;;iDALjC,YAAY;6BARO,oBAAoB;+BAQvC,YAAY;6BAAZ,YAAY"}
1
+ {"version":3,"file":"core-ownership.d.ts","sourceRoot":"","sources":["../src/core-ownership.js"],"names":[],"mappings":"AAmJA;;;;;;;;;;;GAWG;AACH,iDAJW,2BAA2B,wBAC3B,OAAO,iBAAiB,EAAE,eAAe,GACvC,OAAO,iBAAiB,EAAE,aAAa,CAiBnD;;AA3JD;;;;;;;GAOG;AAEH;;;GAGG;AAEH;;GAEG;AACH;IAGE;;;;;;;;;;;;OAYG;IACH,yDAVG;QAMQ,QAAQ,EANR,OAAO,qBAAqB,EAAE,QAAQ,CAChD,OAAW,sBAAsB,EAAE,SAAS,CAAC,MAAM,CAAC,EACpD,cAAkB,qBAAqB,EAAE,kBAAkB,EAC3D,eAAmB,EACnB,OAAW,iBAAiB,EAAE,aAAa,EAC3C,OAAW,iBAAiB,EAAE,kBAAkB,CAC7C;QACwC,YAAY,EAA7C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;QACZ,eAAe,EAA7B,OAAO;KACjB,EAyBA;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAc3B;IAED;;;;;OAKG;IACH,oBAJW,MAAM,aACN,SAAS,GACP,OAAO,CAAC,MAAM,CAAC,CAK3B;IAED;;;;OAIG;IACH,cAFW,MAAM;;;;;;;;;;;;;;;;OAKhB;IAED;;;;;;;;;;;;;;;;UAGC;;CAyBF;;;;;YAnHa,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;;iDALjC,YAAY;6BATO,oBAAoB;+BASvC,YAAY;6BAAZ,YAAY"}
@@ -23,7 +23,7 @@
23
23
  * @extends {TypedEmitter<DataStoreEvents<TSchemaName>>}
24
24
  */
25
25
  export class DataStore<TNamespace extends keyof NamespaceSchemas = "auth" | "config" | "data", TSchemaName extends NamespaceSchemas[TNamespace][number] = {
26
- readonly data: readonly ["observation", "track"];
26
+ readonly data: readonly ["observation", "track", "remoteDetectionAlert"];
27
27
  readonly config: readonly ["translation", "preset", "field", "projectSettings", "deviceInfo", "icon"];
28
28
  readonly auth: readonly ["coreOwnership", "role"];
29
29
  }[TNamespace][number]> extends TypedEmitter<DataStoreEvents<TSchemaName>> {
@@ -33,18 +33,19 @@ export class DataStore<TNamespace extends keyof NamespaceSchemas = "auth" | "con
33
33
  * @param {TNamespace} opts.namespace
34
34
  * @param {(entries: MultiCoreIndexer.Entry<'binary'>[]) => Promise<import('../index-writer/index.js').IndexedDocIds>} opts.batch
35
35
  * @param {MultiCoreIndexer.StorageParam} opts.storage
36
+ * @param {boolean} opts.reindex
36
37
  */
37
- constructor({ coreManager, namespace, batch, storage }: {
38
+ constructor({ coreManager, namespace, batch, storage, reindex }: {
38
39
  coreManager: import("../core-manager/index.js").CoreManager;
39
40
  namespace: TNamespace;
40
41
  batch: (entries: MultiCoreIndexer.Entry<"binary">[]) => Promise<import("../index-writer/index.js").IndexedDocIds>;
41
42
  storage: MultiCoreIndexer.StorageParam;
43
+ reindex: boolean;
42
44
  });
43
45
  get indexer(): MultiCoreIndexer<"binary">;
44
46
  get namespace(): TNamespace;
45
- get schemas(): ("observation" | "track")[] | ("translation" | "preset" | "field" | "projectSettings" | "deviceInfo" | "icon")[] | ("coreOwnership" | "role")[];
47
+ get schemas(): ("track" | "remoteDetectionAlert" | "observation")[] | ("translation" | "projectSettings" | "preset" | "icon" | "field" | "deviceInfo")[] | ("role" | "coreOwnership")[];
46
48
  get writerCore(): import("../core-manager/index.js").Core;
47
- getIndexState(): import("multi-core-indexer/types/lib/types.js").IndexState;
48
49
  /**
49
50
  * UNSAFE: Does not check links: [] refer to a valid doc - should only be used
50
51
  * internally.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datastore/index.js"],"names":[],"mappings":"AAOA,kDAAkD;AAElD;;;;;;;;;GASG;AACH;;;;GAIG;AAEH;;GAEG;AAEH;;;;GAIG;AACH,uBAJuC,UAAU,SAApC,MAAO,gBAAiB,+BACgB,WAAW,SAAlD,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAE;;;;;IAgBjD;;;;;;OAMG;IACH,wDALG;QAA6D,WAAW,EAAhE,OAAO,0BAA0B,EAAE,WAAW;QAC7B,SAAS,EAA1B,UAAU;QACuG,KAAK,EAAtH,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,0BAA0B,EAAE,aAAa,CAAC;QACtE,OAAO,EAA3C,gBAAgB,CAAC,YAAY;KACvC,EAqBA;IAED,0CAEC;IAED,4BAEC;IAED,+JAGC;IAED,0DAEC;IAED,4EAEC;IAkCD;;;;;;;;;OASG;IACH,MAJ2E,IAAI,SAAjE,OAAO,CAAC,UAAU,eAAQ,CAAC,CAAC,CAAC,EAAE;QAAE,UAAU,EAAE,WAAW,CAAA;KAAE,CAAE,OAC/D,IAAI,GACF,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAoC5C;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAAC,QAAQ,CAAC,CAS7B;IAED,0BAA0B;IAC1B,cADY,MAAM,mBAUjB;IAED,gCAAgC;IAChC,mBADY,MAAM,mBAQjB;IAED,uBAEC;IAED;;OAEG;IACH,wBAEC;;CAaF;;;;;;4BA3NqC,WAAW,SAAnC,QAAQ,CAAC,YAAY,CAAE,IACxB,GACP,CAA4C,IAAvC,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,GAC9E;sBAGS,CAAC,EACW,CAAC,SAAb,MAAO,GAAI,IACX,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;+BAIlC,OAAO,iBAAiB;6BA1BR,oBAAoB;6BAEpB,oBAAoB;uBADY,iBAAiB;8BAMhD,iBAAiB;kCAFb,iBAAiB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datastore/index.js"],"names":[],"mappings":"AAQA,kDAAkD;AAElD;;;;;;;;;GASG;AACH;;;;GAIG;AAEH;;GAEG;AAEH;;;;GAIG;AACH,uBAJuC,UAAU,SAApC,MAAO,gBAAiB,+BACgB,WAAW,SAAlD,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAE;;;;;IAgBjD;;;;;;;OAOG;IACH,iEANG;QAA6D,WAAW,EAAhE,OAAO,0BAA0B,EAAE,WAAW;QAC7B,SAAS,EAA1B,UAAU;QACuG,KAAK,EAAtH,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,0BAA0B,EAAE,aAAa,CAAC;QACtE,OAAO,EAA3C,gBAAgB,CAAC,YAAY;QACf,OAAO,EAArB,OAAO;KACjB,EAsBA;IAED,0CAEC;IAED,4BAEC;IAED,wLAGC;IAED,0DAEC;IAkCD;;;;;;;;;OASG;IACH,MAJ2E,IAAI,SAAjE,OAAO,CAAC,UAAU,eAAQ,CAAC,CAAC,CAAC,EAAE;QAAE,UAAU,EAAE,WAAW,CAAA;KAAE,CAAE,OAC/D,IAAI,GACF,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAqC5C;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAAC,QAAQ,CAAC,CAS7B;IAED,0BAA0B;IAC1B,cADY,MAAM,mBAUjB;IAED,gCAAgC;IAChC,mBADY,MAAM,mBAQjB;IAED,uBAEC;IAED;;OAEG;IACH,wBAEC;;CAaF;;;;;;4BA1NqC,WAAW,SAAnC,QAAQ,CAAC,YAAY,CAAE,IACxB,GACP,CAA4C,IAAvC,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,GAC9E;sBAGS,CAAC,EACW,CAAC,SAAb,MAAO,GAAI,IACX,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;+BAIlC,OAAO,iBAAiB;6BA3BR,oBAAoB;6BAEpB,oBAAoB;uBADY,iBAAiB;8BAOhD,iBAAiB;kCAHb,iBAAiB"}
@@ -87,8 +87,12 @@ export class DataType<
87
87
 
88
88
  getByDocId(
89
89
  docId: string,
90
- opts?: { lang?: string }
90
+ opts?: { mustBeFound?: true; lang?: string }
91
91
  ): Promise<TDoc & { forks: string[] }>
92
+ getByDocId(
93
+ docId: string,
94
+ opts?: { mustBeFound?: boolean; lang?: string }
95
+ ): Promise<null | (TDoc & { forks: string[] })>
92
96
 
93
97
  getByVersionId(versionId: string, opts?: { lang?: string }): Promise<TDoc>
94
98
 
@@ -1 +1 @@
1
- {"version":3,"file":"local-discovery.d.ts","sourceRoot":"","sources":["../../src/discovery/local-discovery.js"],"names":[],"mappings":"AAoBA,mDAAmD;AAEnD;;;GAGG;AAEH;;GAEG;AACH;IAYE;;;;OAIG;IACH,yCAHG;QAAsB,eAAe,EAA7B,OAAO;QACO,MAAM;KAAC,EAqB/B;IAED,yDAAyD;IACzD,SADc,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAIpD;IAWD;;;;;;OAMG;IACH,qCALG;QAAqB,OAAO,EAApB,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,IAAI,EAAjB,MAAM;KACd,GAAU,IAAI,CAkBhB;IAqJD;;;;;;;;;OASG;IACH;;;oBAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;;CAqBF;sBAnRa;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;mCACxC,kBAAkB,GAAG,CAAC,MAAM,CAAC;;gBAU7B,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI;;6BAxB3B,oBAAoB;uBAU1B,cAAc;gBATrB,UAAU;uCAUa,uCAAuC"}
1
+ {"version":3,"file":"local-discovery.d.ts","sourceRoot":"","sources":["../../src/discovery/local-discovery.js"],"names":[],"mappings":"AAqBA,mDAAmD;AAEnD;;;GAGG;AAEH;;GAEG;AACH;IAYE;;;;OAIG;IACH,yCAHG;QAAsB,eAAe,EAA7B,OAAO;QACO,MAAM;KAAC,EAqB/B;IAED,yDAAyD;IACzD,SADc,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAIpD;IAWD;;;;;;OAMG;IACH,qCALG;QAAqB,OAAO,EAApB,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,IAAI,EAAjB,MAAM;KACd,GAAU,IAAI,CAkBhB;IAqJD;;;;;;;;;OASG;IACH;;;oBAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;;CAqBF;sBAnRa;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;mCACxC,kBAAkB,GAAG,CAAC,MAAM,CAAC;;gBAU7B,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI;;6BAzB3B,oBAAoB;uBAU1B,cAAc;gBATrB,UAAU;uCAWa,uCAAuC"}
package/dist/errors.d.ts CHANGED
@@ -1,4 +1,9 @@
1
+ /**
2
+ * @param {unknown} err
3
+ * @returns {null}
4
+ */
5
+ export function nullIfNotFound(err: unknown): null;
1
6
  export class NotFoundError extends Error {
2
- constructor();
7
+ constructor(message?: string);
3
8
  }
4
9
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.js"],"names":[],"mappings":"AAAA;IACE,cAEC;CACF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,oCAHW,OAAO,GACL,IAAI,CAKhB;AAbD;IACE,8BAEC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"blobs.d.ts","sourceRoot":"","sources":["../../src/fastify-plugins/blobs.js"],"names":[],"mappings":";;;kBAiBc,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,wBAAwB,EAAE,SAAS,CAAC"}
1
+ {"version":3,"file":"blobs.d.ts","sourceRoot":"","sources":["../../src/fastify-plugins/blobs.js"],"names":[],"mappings":";;;kBAmBc,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,wBAAwB,EAAE,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"maps.d.ts","sourceRoot":"","sources":["../../src/fastify-plugins/maps.js"],"names":[],"mappings":";AAQA,oDAAoD;AACpD,uCAAuC;AAEvC,yCAAyC;AACzC,6CAA6C;;2BAK/B,MAAM,GAAG,GAAG;;qBAEZ,MAAM"}
1
+ {"version":3,"file":"maps.d.ts","sourceRoot":"","sources":["../../src/fastify-plugins/maps.js"],"names":[],"mappings":";AASA,oDAAoD;AACpD,uCAAuC;AAEvC,yCAAyC;AACzC,6CAA6C;;2BAK/B,MAAM,GAAG,GAAG;;qBAEZ,MAAM"}
@@ -19,6 +19,19 @@ export declare const HaveExtension_Namespace: {
19
19
  export type HaveExtension_Namespace = typeof HaveExtension_Namespace[keyof typeof HaveExtension_Namespace];
20
20
  export declare function haveExtension_NamespaceFromJSON(object: any): HaveExtension_Namespace;
21
21
  export declare function haveExtension_NamespaceToNumber(object: HaveExtension_Namespace): number;
22
+ /** A map of blob types and variants that a peer intends to download */
23
+ export interface DownloadIntentExtension {
24
+ downloadIntents: {
25
+ [key: string]: DownloadIntentExtension_DownloadIntent;
26
+ };
27
+ }
28
+ export interface DownloadIntentExtension_DownloadIntent {
29
+ variants: string[];
30
+ }
31
+ export interface DownloadIntentExtension_DownloadIntentsEntry {
32
+ key: string;
33
+ value: DownloadIntentExtension_DownloadIntent | undefined;
34
+ }
22
35
  export declare const ProjectExtension: {
23
36
  encode(message: ProjectExtension, writer?: _m0.Writer): _m0.Writer;
24
37
  decode(input: _m0.Reader | Uint8Array, length?: number): ProjectExtension;
@@ -31,6 +44,24 @@ export declare const HaveExtension: {
31
44
  create<I extends Exact<DeepPartial<HaveExtension>, I>>(base?: I): HaveExtension;
32
45
  fromPartial<I extends Exact<DeepPartial<HaveExtension>, I>>(object: I): HaveExtension;
33
46
  };
47
+ export declare const DownloadIntentExtension: {
48
+ encode(message: DownloadIntentExtension, writer?: _m0.Writer): _m0.Writer;
49
+ decode(input: _m0.Reader | Uint8Array, length?: number): DownloadIntentExtension;
50
+ create<I extends Exact<DeepPartial<DownloadIntentExtension>, I>>(base?: I): DownloadIntentExtension;
51
+ fromPartial<I extends Exact<DeepPartial<DownloadIntentExtension>, I>>(object: I): DownloadIntentExtension;
52
+ };
53
+ export declare const DownloadIntentExtension_DownloadIntent: {
54
+ encode(message: DownloadIntentExtension_DownloadIntent, writer?: _m0.Writer): _m0.Writer;
55
+ decode(input: _m0.Reader | Uint8Array, length?: number): DownloadIntentExtension_DownloadIntent;
56
+ create<I extends Exact<DeepPartial<DownloadIntentExtension_DownloadIntent>, I>>(base?: I): DownloadIntentExtension_DownloadIntent;
57
+ fromPartial<I extends Exact<DeepPartial<DownloadIntentExtension_DownloadIntent>, I>>(object: I): DownloadIntentExtension_DownloadIntent;
58
+ };
59
+ export declare const DownloadIntentExtension_DownloadIntentsEntry: {
60
+ encode(message: DownloadIntentExtension_DownloadIntentsEntry, writer?: _m0.Writer): _m0.Writer;
61
+ decode(input: _m0.Reader | Uint8Array, length?: number): DownloadIntentExtension_DownloadIntentsEntry;
62
+ create<I extends Exact<DeepPartial<DownloadIntentExtension_DownloadIntentsEntry>, I>>(base?: I): DownloadIntentExtension_DownloadIntentsEntry;
63
+ fromPartial<I extends Exact<DeepPartial<DownloadIntentExtension_DownloadIntentsEntry>, I>>(object: I): DownloadIntentExtension_DownloadIntentsEntry;
64
+ };
34
65
  type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
35
66
  type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
36
67
  [K in keyof T]?: DeepPartial<T[K]>;
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/generated/extensions.ts"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,uBAAuB,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,uBAAuB,CAAC;CACpC;AAED,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAC;AAE3G,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,GAAG,GAAG,uBAAuB,CAsBpF;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAgBvF;AAMD,eAAO,MAAM,gBAAgB;oBACX,gBAAgB,WAAU,GAAG,CAAC,MAAM,GAAyB,GAAG,CAAC,MAAM;kBAOzE,GAAG,CAAC,MAAM,GAAG,UAAU,WAAW,MAAM,GAAG,gBAAgB;WAuBlE,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,gBAAgB;gBAGzE,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,gBAAgB;CAK5F,CAAC;AAWF,eAAO,MAAM,aAAa;oBACR,aAAa,WAAU,GAAG,CAAC,MAAM,GAAyB,GAAG,CAAC,MAAM;kBAgBtE,GAAG,CAAC,MAAM,GAAG,UAAU,WAAW,MAAM,GAAG,aAAa;WA4C/D,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,aAAa;gBAGnE,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,aAAa;CAQtF,CAAC;AAqBF,KAAK,OAAO,GAAG,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpF,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,CAAC,GACvC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACnH,CAAC,SAAS,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACrD,OAAO,CAAC,CAAC,CAAC,CAAC;AAEf,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;AACpD,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,CAAC,GAC9C,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CAAE,CAAC"}
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/generated/extensions.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  export { plugin as CoMapeoMapsFastifyPlugin } from "./fastify-plugins/maps.js";
2
2
  export { FastifyController } from "./fastify-controller.js";
3
3
  export { MapeoManager } from "./mapeo-manager.js";
4
+ export function replicateProject(project: MapeoProject, isInitiatorOrStream: boolean | import("stream").Duplex | import("streamx").Duplex<any, any, any, any, true, true, import("streamx").DuplexEvents<any, any>>): ReturnType<(isInitiatorOrStream: (boolean | import("stream").Duplex | import("streamx").Duplex)) => import("./types.js").ReplicationStream>;
4
5
  export namespace roles {
5
6
  export { CREATOR_ROLE_ID };
6
7
  export { COORDINATOR_ROLE_ID };
7
8
  export { MEMBER_ROLE_ID };
8
9
  }
10
+ import type { MapeoProject } from './mapeo-project.js';
9
11
  import { CREATOR_ROLE_ID } from './roles.js';
10
12
  import { COORDINATOR_ROLE_ID } from './roles.js';
11
13
  import { MEMBER_ROLE_ID } from './roles.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;gCAIO,YAAY;oCAAZ,YAAY;+BAAZ,YAAY"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;;AAgBO,0CAJI,YAAY,gKAEV,UAAU,yCAUk0nB,QAAQ,kBAAyB,SAAS,qDAVj0nB,CAG7B;;;;;;kCARH,oBAAoB;gCAL/C,YAAY;oCAAZ,YAAY;+BAAZ,YAAY"}
@@ -0,0 +1,6 @@
1
+ export function migrate(db: BetterSQLite3Database, { migrationsFolder }: {
2
+ migrationsFolder: string;
3
+ }): MigrationResult;
4
+ export type MigrationResult = "initialized database" | "migrated" | "no migration";
5
+ import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
6
+ //# sourceMappingURL=drizzle-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drizzle-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/drizzle-helpers.js"],"names":[],"mappings":"AAiEO,4BALI,qBAAqB,wBAE7B;IAAwB,gBAAgB,EAAhC,MAAM;CACd,GAAU,eAAe,CAe3B;8BAzBY,sBAAsB,GAAG,UAAU,GAAG,cAAc;2CAjDtB,4BAA4B"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * If the argument is an `Error` instance, return its `code` property if it is a string.
3
+ * Otherwise, returns `undefined`.
4
+ *
5
+ * @param {unknown} maybeError
6
+ * @returns {undefined | string}
7
+ * @example
8
+ * try {
9
+ * // do something
10
+ * } catch (err) {
11
+ * console.error(getErrorCode(err))
12
+ * }
13
+ */
14
+ export function getErrorCode(maybeError: unknown): undefined | string;
15
+ /**
16
+ * Get the error message from an object if possible.
17
+ * Otherwise, stringify the argument.
18
+ *
19
+ * @param {unknown} maybeError
20
+ * @returns {string}
21
+ * @example
22
+ * try {
23
+ * // do something
24
+ * } catch (err) {
25
+ * console.error(getErrorMessage(err))
26
+ * }
27
+ */
28
+ export function getErrorMessage(maybeError: unknown): string;
29
+ /**
30
+ * Create an `Error` with a `code` property.
31
+ *
32
+ * @example
33
+ * const err = new ErrorWithCode('INVALID_DATA', 'data was invalid')
34
+ * err.message
35
+ * // => 'data was invalid'
36
+ * err.code
37
+ * // => 'INVALID_DATA'
38
+ */
39
+ export class ErrorWithCode extends Error {
40
+ /**
41
+ * @param {string} code
42
+ * @param {string} message
43
+ * @param {object} [options]
44
+ * @param {unknown} [options.cause]
45
+ */
46
+ constructor(code: string, message: string, options?: {
47
+ cause?: unknown;
48
+ } | undefined);
49
+ /** @readonly */ readonly code: string;
50
+ }
51
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/lib/error.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;GAYG;AACH,yCATW,OAAO,GACL,SAAS,GAAG,MAAM,CAiB9B;AAED;;;;;;;;;;;;GAYG;AACH,4CATW,OAAO,GACL,MAAM,CAkBlB;AAtED;;;;;;;;;GASG;AACH;IACE;;;;;OAKG;IACH,kBALW,MAAM,WACN,MAAM;gBAEN,OAAO;mBAKjB;IADC,gBAAgB,CAAC,sBAAgB;CAEpC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @template {object} T
3
+ * @template {keyof T} K
4
+ * @param {T} obj
5
+ * @param {K} key
6
+ * @returns {undefined | T[K]}
7
+ */
8
+ export function getOwn<T extends object, K extends keyof T>(obj: T, key: K): undefined | T[K];
9
+ //# sourceMappingURL=get-own.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-own.d.ts","sourceRoot":"","sources":["../../src/lib/get-own.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,uBANsB,CAAC,SAAV,MAAQ,EACE,CAAC,SAAX,MAAO,CAAE,OACX,CAAC,OACD,CAAC,GACC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAI5B"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Is this hostname an IP address?
3
+ *
4
+ * @param {string} hostname
5
+ * @returns {boolean}
6
+ * @example
7
+ * isHostnameIpAddress('100.64.0.42')
8
+ * // => false
9
+ *
10
+ * isHostnameIpAddress('[2001:0db8:85a3:0000:0000:8a2e:0370:7334]')
11
+ * // => true
12
+ *
13
+ * isHostnameIpAddress('example.com')
14
+ * // => false
15
+ */
16
+ export function isHostnameIpAddress(hostname: string): boolean;
17
+ //# sourceMappingURL=is-hostname-ip-address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-hostname-ip-address.d.ts","sourceRoot":"","sources":["../../src/lib/is-hostname-ip-address.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,8CAZW,MAAM,GACJ,OAAO,CAmBnB"}