society-protocol 1.1.0 → 1.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/bootstrap.d.ts +8 -3
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +52 -9
- package/dist/bootstrap.js.map +1 -1
- package/dist/content-store.d.ts +77 -0
- package/dist/content-store.d.ts.map +1 -0
- package/dist/content-store.js +178 -0
- package/dist/content-store.js.map +1 -0
- package/dist/index.js +174 -39
- package/dist/index.js.map +1 -1
- package/dist/knowledge.d.ts +100 -1
- package/dist/knowledge.d.ts.map +1 -1
- package/dist/knowledge.js +437 -2
- package/dist/knowledge.js.map +1 -1
- package/dist/lib.d.ts +4 -2
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -1
- package/dist/lib.js.map +1 -1
- package/dist/p2p.d.ts +25 -0
- package/dist/p2p.d.ts.map +1 -1
- package/dist/p2p.js +159 -69
- package/dist/p2p.js.map +1 -1
- package/dist/planner.d.ts +1 -0
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +26 -4
- package/dist/planner.js.map +1 -1
- package/dist/proactive/watcher.d.ts +76 -0
- package/dist/proactive/watcher.d.ts.map +1 -0
- package/dist/proactive/watcher.js +246 -0
- package/dist/proactive/watcher.js.map +1 -0
- package/dist/registry.d.ts +4 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +21 -0
- package/dist/registry.js.map +1 -1
- package/dist/rooms.d.ts +24 -0
- package/dist/rooms.d.ts.map +1 -1
- package/dist/rooms.js +90 -0
- package/dist/rooms.js.map +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js +1 -1
- package/dist/swp.d.ts +1 -1
- package/dist/swp.d.ts.map +1 -1
- package/dist/swp.js.map +1 -1
- package/package.json +1 -1
package/dist/bootstrap.d.ts
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* Zero-Config Bootstrap Module
|
|
3
3
|
*
|
|
4
4
|
* Auto-discovery de peers via:
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
5
|
+
* 1. Registry API (api.society.computer)
|
|
6
|
+
* 2. DNS TXT records (bootstrap.society.dev)
|
|
7
7
|
* 3. Cache local de peers funcionais
|
|
8
|
-
* 4.
|
|
8
|
+
* 4. Hardcoded fallback list
|
|
9
|
+
* 5. mDNS para LAN discovery
|
|
9
10
|
*/
|
|
10
11
|
export interface BootstrapPeer {
|
|
11
12
|
id: string;
|
|
@@ -33,6 +34,10 @@ export declare class BootstrapManager {
|
|
|
33
34
|
* Query DNS TXT records for peer lists
|
|
34
35
|
*/
|
|
35
36
|
private queryDnsPeers;
|
|
37
|
+
/**
|
|
38
|
+
* Query the registry API for registered nodes
|
|
39
|
+
*/
|
|
40
|
+
private queryRegistryPeers;
|
|
36
41
|
/**
|
|
37
42
|
* Test connectivity to a peer
|
|
38
43
|
*/
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AA8BD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,YAAY,CAAuB;gBAE/B,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAenD,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,SAAS;IAYjB;;OAEG;YACW,aAAa;IA8D3B;;OAEG;YACW,kBAAkB;IAmChC;;OAEG;YACW,QAAQ;IAuBtB;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAqF1C;;OAEG;IACH,eAAe,IAAI,aAAa,EAAE;IAIlC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAKlC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CAK1C;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAG/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,CA6B3F"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* Zero-Config Bootstrap Module
|
|
3
3
|
*
|
|
4
4
|
* Auto-discovery de peers via:
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
5
|
+
* 1. Registry API (api.society.computer)
|
|
6
|
+
* 2. DNS TXT records (bootstrap.society.dev)
|
|
7
7
|
* 3. Cache local de peers funcionais
|
|
8
|
-
* 4.
|
|
8
|
+
* 4. Hardcoded fallback list
|
|
9
|
+
* 5. mDNS para LAN discovery
|
|
9
10
|
*/
|
|
10
11
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
11
12
|
import { join } from 'path';
|
|
@@ -13,6 +14,7 @@ import { homedir } from 'os';
|
|
|
13
14
|
import { promisify } from 'util';
|
|
14
15
|
import { exec } from 'child_process';
|
|
15
16
|
const execAsync = promisify(exec);
|
|
17
|
+
const REGISTRY_URL = process.env.SOCIETY_REGISTRY_URL || 'https://api.society.computer';
|
|
16
18
|
// Default bootstrap domain
|
|
17
19
|
const SOCIETY_DOMAIN = 'society.computer';
|
|
18
20
|
function parseFallbackPeersFromEnv() {
|
|
@@ -149,6 +151,37 @@ export class BootstrapManager {
|
|
|
149
151
|
}
|
|
150
152
|
return peers;
|
|
151
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Query the registry API for registered nodes
|
|
156
|
+
*/
|
|
157
|
+
async queryRegistryPeers() {
|
|
158
|
+
const peers = [];
|
|
159
|
+
try {
|
|
160
|
+
const res = await fetch(`${REGISTRY_URL}/v1/nodes`, {
|
|
161
|
+
method: 'GET',
|
|
162
|
+
headers: { 'Accept': 'application/json' },
|
|
163
|
+
signal: AbortSignal.timeout(5_000),
|
|
164
|
+
});
|
|
165
|
+
if (!res.ok)
|
|
166
|
+
return peers;
|
|
167
|
+
const data = await res.json();
|
|
168
|
+
for (const node of data.nodes || []) {
|
|
169
|
+
if (node.data?.multiaddr) {
|
|
170
|
+
peers.push({
|
|
171
|
+
id: `registry_${node.name}`,
|
|
172
|
+
addrs: [node.data.multiaddr],
|
|
173
|
+
lastSeen: Date.now(),
|
|
174
|
+
latency: 0,
|
|
175
|
+
reliability: 0.8,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
console.warn('[bootstrap] Registry query failed:', err?.message);
|
|
182
|
+
}
|
|
183
|
+
return peers;
|
|
184
|
+
}
|
|
152
185
|
/**
|
|
153
186
|
* Test connectivity to a peer
|
|
154
187
|
*/
|
|
@@ -179,7 +212,17 @@ export class BootstrapManager {
|
|
|
179
212
|
const allPeers = [];
|
|
180
213
|
const testedPeers = new Set();
|
|
181
214
|
const working = [];
|
|
182
|
-
// 1. Try
|
|
215
|
+
// 1. Try registry API first (fastest, most reliable)
|
|
216
|
+
console.log('[bootstrap] Querying registry...');
|
|
217
|
+
try {
|
|
218
|
+
const registryPeers = await this.queryRegistryPeers();
|
|
219
|
+
allPeers.push(...registryPeers);
|
|
220
|
+
console.log(`[bootstrap] Registry returned ${registryPeers.length} peers`);
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
console.warn('[bootstrap] Registry query failed:', err);
|
|
224
|
+
}
|
|
225
|
+
// 2. Try DNS (fallback)
|
|
183
226
|
console.log('[bootstrap] Querying DNS...');
|
|
184
227
|
try {
|
|
185
228
|
const dnsPeers = await this.queryDnsPeers();
|
|
@@ -189,14 +232,14 @@ export class BootstrapManager {
|
|
|
189
232
|
catch (err) {
|
|
190
233
|
console.warn('[bootstrap] DNS discovery failed:', err);
|
|
191
234
|
}
|
|
192
|
-
//
|
|
235
|
+
// 3. Try cached peers
|
|
193
236
|
console.log('[bootstrap] Checking cache...');
|
|
194
237
|
const cachedPeers = Array.from(this.cache.values());
|
|
195
238
|
allPeers.push(...cachedPeers);
|
|
196
|
-
//
|
|
239
|
+
// 4. Add fallback peers (env var)
|
|
197
240
|
console.log('[bootstrap] Adding fallback peers...');
|
|
198
241
|
allPeers.push(...this.config.fallbackPeers);
|
|
199
|
-
//
|
|
242
|
+
// 5. Test peers in parallel (with concurrency limit)
|
|
200
243
|
console.log(`[bootstrap] Testing ${allPeers.length} unique peers...`);
|
|
201
244
|
const batchSize = 5;
|
|
202
245
|
for (let i = 0; i < allPeers.length; i += batchSize) {
|
|
@@ -216,13 +259,13 @@ export class BootstrapManager {
|
|
|
216
259
|
if (working.length >= 3)
|
|
217
260
|
break;
|
|
218
261
|
}
|
|
219
|
-
//
|
|
262
|
+
// 6. Sort by reliability and latency
|
|
220
263
|
working.sort((a, b) => {
|
|
221
264
|
const scoreA = a.reliability * 1000 - a.latency;
|
|
222
265
|
const scoreB = b.reliability * 1000 - b.latency;
|
|
223
266
|
return scoreB - scoreA;
|
|
224
267
|
});
|
|
225
|
-
//
|
|
268
|
+
// 7. Update cache with working peers
|
|
226
269
|
for (const peer of working) {
|
|
227
270
|
this.cache.set(peer.id, peer);
|
|
228
271
|
}
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAkBlC,2BAA2B;AAC3B,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C,SAAS,yBAAyB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACjC,EAAE,EAAE,OAAO,KAAK,EAAE;QAClB,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,GAAG;KACjB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,sBAAsB,GAAoB,yBAAyB,EAAE,CAAC;AAE5E,gCAAgC;AAChC,MAAM,qBAAqB,GAAG;IAC5B,aAAa,cAAc,EAAE;IAC7B,uBAAuB;IACvB,cAAc,cAAc,EAAE;IAC9B,cAAc,cAAc,EAAE;IAC9B,cAAc,cAAc,EAAE;CAC/B,CAAC;AAEF,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAkB;IACxB,KAAK,GAA+B,IAAI,GAAG,EAAE,CAAC;IAC9C,YAAY,GAAoB,EAAE,CAAC;IAE3C,YAAY,YAAuC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,MAAM,GAAG;YACZ,YAAY,EAAE,YAAY,EAAE,YAAY,IAAI,qBAAqB;YACjE,aAAa,EAAE,YAAY,EAAE,aAAa,IAAI,sBAAsB;YACpE,SAAS,EAAE,YAAY,EAAE,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC;YAC1E,UAAU,EAAE,YAAY,EAAE,UAAU,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM;YACnE,kBAAkB,EAAE,YAAY,EAAE,kBAAkB,IAAI,KAAK,CAAC,MAAM;SACrE,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEO,cAAc;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,SAAS;QACf,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;gBACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;oBACpC,2BAA2B;oBAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;wBACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,SAAS;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG;gBACX,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aACvC,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,2CAA2C;gBAC3C,IAAI,MAAc,CAAC;gBAEnB,IAAI,CAAC;oBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;oBACjE,MAAM,GAAG,MAAM,CAAC;gBAClB,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;oBACrE,MAAM,GAAG,MAAM,CAAC;gBAClB,CAAC;gBAED,qBAAqB;gBACrB,sCAAsC;gBACtC,wCAAwC;gBACxC,MAAM,UAAU,GAAG,MAAM;qBACtB,KAAK,CAAC,IAAI,CAAC;qBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;qBAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAE1E,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;oBAChC,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChC,MAAM,KAAK,GAAG,MAAM;6BACjB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;6BACrB,KAAK,CAAC,GAAG,CAAC;6BACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;6BAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACrB,KAAK,CAAC,IAAI,CAAC;gCACT,EAAE,EAAE,OAAO,QAAQ,QAAQ;gCAC3B,KAAK;gCACL,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;gCACpB,OAAO,EAAE,CAAC;gCACV,WAAW,EAAE,GAAG;6BACjB,CAAC,CAAC;wBACL,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChC,IAAI,CAAC;4BACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;4BAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;4BACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;4BACrC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;wBAC1B,CAAC;wBAAC,MAAM,CAAC;4BACP,OAAO,CAAC,IAAI,CAAC,qDAAqD,QAAQ,EAAE,CAAC,CAAC;wBAChF,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ,CAAC,IAAmB;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,oCAAoC;YACpC,mDAAmD;YACnD,8CAA8C;YAE9C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;YAE3D,yCAAyC;YACzC,sEAAsE;YAEtE,YAAY,CAAC,OAAO,CAAC,CAAC;YAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,OAAO,GAAoB,EAAE,CAAC;QAEpC,qCAAqC;QACrC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,4BAA4B,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;QAED,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAE9B,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAE5C,qDAAqD;QACrD,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,MAAM,kBAAkB,CAAC,CAAC;QAEtE,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YAE/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACvB,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAC1C,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACpE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAEvE,uCAAuC;YACvC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM;QACjC,CAAC;QAED,qCAAqC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpB,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;YAChD,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;YAChD,OAAO,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAE5B,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC;QACtE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAmB;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACvC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM;IACN,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,gCAAgC,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,MAAM;IACN,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,UAAU,CAAC,gCAAgC,CAAC,EAAE,CAAC;QACrF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,QAAQ;IACR,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,UAAU,CAAC,8BAA8B,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO,OAAO,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,eAAe;IACf,IAAI,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,cAAc,CAAC;IAE3D,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content-Addressed Block Store
|
|
3
|
+
*
|
|
4
|
+
* IPFS-inspired content-addressed storage for Society Protocol.
|
|
5
|
+
* Uses blake3 hashing for CIDs and SQLite for block persistence.
|
|
6
|
+
* Supports chunked file storage with Merkle-like manifests.
|
|
7
|
+
*
|
|
8
|
+
* Based on: IPFS (arXiv:1407.3561) — content-addressed blocks with CID-based retrieval
|
|
9
|
+
*/
|
|
10
|
+
import { type Storage } from './storage.js';
|
|
11
|
+
export interface FileManifest {
|
|
12
|
+
rootCid: string;
|
|
13
|
+
fileName: string;
|
|
14
|
+
totalSize: number;
|
|
15
|
+
blockSize: number;
|
|
16
|
+
blocks: Array<{
|
|
17
|
+
cid: string;
|
|
18
|
+
offset: number;
|
|
19
|
+
size: number;
|
|
20
|
+
}>;
|
|
21
|
+
mimeType?: string;
|
|
22
|
+
createdAt: number;
|
|
23
|
+
author: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class ContentStore {
|
|
26
|
+
private storage;
|
|
27
|
+
private manifests;
|
|
28
|
+
constructor(storage: Storage);
|
|
29
|
+
private ensureTable;
|
|
30
|
+
/**
|
|
31
|
+
* Store a data block, returning its CID (blake3 hash).
|
|
32
|
+
*/
|
|
33
|
+
put(data: Uint8Array): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Retrieve a block by CID.
|
|
36
|
+
*/
|
|
37
|
+
get(cid: string): Promise<Uint8Array | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Check if a block exists locally.
|
|
40
|
+
*/
|
|
41
|
+
has(cid: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Store a file from disk, chunking into blocks.
|
|
44
|
+
* Returns a manifest describing all blocks.
|
|
45
|
+
*/
|
|
46
|
+
storeFile(filePath: string, author: string): Promise<FileManifest>;
|
|
47
|
+
/**
|
|
48
|
+
* Store raw buffer data, chunking into blocks.
|
|
49
|
+
*/
|
|
50
|
+
storeBuffer(data: Buffer | Uint8Array, fileName: string, author: string): Promise<FileManifest>;
|
|
51
|
+
/**
|
|
52
|
+
* Reassemble a file from its manifest.
|
|
53
|
+
* All blocks must be locally available.
|
|
54
|
+
*/
|
|
55
|
+
retrieveFile(manifest: FileManifest): Promise<Uint8Array>;
|
|
56
|
+
/**
|
|
57
|
+
* Save reassembled file to disk.
|
|
58
|
+
*/
|
|
59
|
+
saveFile(manifest: FileManifest, outputPath: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Get a manifest by root CID.
|
|
62
|
+
*/
|
|
63
|
+
getManifest(rootCid: string): FileManifest | null;
|
|
64
|
+
/**
|
|
65
|
+
* List all stored file manifests.
|
|
66
|
+
*/
|
|
67
|
+
listFiles(): FileManifest[];
|
|
68
|
+
/**
|
|
69
|
+
* List missing blocks for a manifest (for fetching from peers).
|
|
70
|
+
*/
|
|
71
|
+
getMissingBlocks(manifest: FileManifest): string[];
|
|
72
|
+
/**
|
|
73
|
+
* Store a manifest received from a peer (without blocks).
|
|
74
|
+
*/
|
|
75
|
+
addRemoteManifest(manifest: FileManifest): void;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=content-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-store.d.ts","sourceRoot":"","sources":["../src/content-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB;AAID,qBAAa,YAAY;IACrB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAmC;gBAExC,OAAO,EAAE,OAAO;IAK5B,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB5C;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQlD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAOzB;;;OAGG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKxE;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkCrG;;;OAGG;IACG,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAc/D;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzE;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAkBjD;;OAEG;IACH,SAAS,IAAI,YAAY,EAAE;IAQ3B;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE;IAMlD;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;CAMlD"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content-Addressed Block Store
|
|
3
|
+
*
|
|
4
|
+
* IPFS-inspired content-addressed storage for Society Protocol.
|
|
5
|
+
* Uses blake3 hashing for CIDs and SQLite for block persistence.
|
|
6
|
+
* Supports chunked file storage with Merkle-like manifests.
|
|
7
|
+
*
|
|
8
|
+
* Based on: IPFS (arXiv:1407.3561) — content-addressed blocks with CID-based retrieval
|
|
9
|
+
*/
|
|
10
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
11
|
+
import { basename } from 'path';
|
|
12
|
+
// ─── Constants ──────────────────────────────────────────────────
|
|
13
|
+
const BLOCK_SIZE = 256 * 1024; // 256KB per block
|
|
14
|
+
// ─── ContentStore ───────────────────────────────────────────────
|
|
15
|
+
export class ContentStore {
|
|
16
|
+
storage;
|
|
17
|
+
manifests = new Map(); // rootCid → manifest
|
|
18
|
+
constructor(storage) {
|
|
19
|
+
this.storage = storage;
|
|
20
|
+
this.ensureTable();
|
|
21
|
+
}
|
|
22
|
+
ensureTable() {
|
|
23
|
+
this.storage.db.exec(`
|
|
24
|
+
CREATE TABLE IF NOT EXISTS content_blocks (
|
|
25
|
+
cid TEXT PRIMARY KEY,
|
|
26
|
+
data BLOB NOT NULL,
|
|
27
|
+
size INTEGER NOT NULL,
|
|
28
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
|
|
29
|
+
);
|
|
30
|
+
CREATE TABLE IF NOT EXISTS file_manifests (
|
|
31
|
+
root_cid TEXT PRIMARY KEY,
|
|
32
|
+
manifest TEXT NOT NULL,
|
|
33
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
|
|
34
|
+
);
|
|
35
|
+
`);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Store a data block, returning its CID (blake3 hash).
|
|
39
|
+
*/
|
|
40
|
+
async put(data) {
|
|
41
|
+
const { blake3 } = await import('@noble/hashes/blake3');
|
|
42
|
+
const hash = blake3(data);
|
|
43
|
+
const cid = Buffer.from(hash).toString('hex');
|
|
44
|
+
// Idempotent: skip if already stored
|
|
45
|
+
const existing = this.storage.db
|
|
46
|
+
.prepare('SELECT cid FROM content_blocks WHERE cid = ?')
|
|
47
|
+
.get(cid);
|
|
48
|
+
if (!existing) {
|
|
49
|
+
this.storage.db
|
|
50
|
+
.prepare('INSERT INTO content_blocks (cid, data, size) VALUES (?, ?, ?)')
|
|
51
|
+
.run(cid, Buffer.from(data), data.byteLength);
|
|
52
|
+
}
|
|
53
|
+
return cid;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Retrieve a block by CID.
|
|
57
|
+
*/
|
|
58
|
+
async get(cid) {
|
|
59
|
+
const row = this.storage.db
|
|
60
|
+
.prepare('SELECT data FROM content_blocks WHERE cid = ?')
|
|
61
|
+
.get(cid);
|
|
62
|
+
return row ? new Uint8Array(row.data) : null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if a block exists locally.
|
|
66
|
+
*/
|
|
67
|
+
has(cid) {
|
|
68
|
+
const row = this.storage.db
|
|
69
|
+
.prepare('SELECT 1 FROM content_blocks WHERE cid = ?')
|
|
70
|
+
.get(cid);
|
|
71
|
+
return !!row;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Store a file from disk, chunking into blocks.
|
|
75
|
+
* Returns a manifest describing all blocks.
|
|
76
|
+
*/
|
|
77
|
+
async storeFile(filePath, author) {
|
|
78
|
+
const fileData = readFileSync(filePath);
|
|
79
|
+
return this.storeBuffer(fileData, basename(filePath), author);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Store raw buffer data, chunking into blocks.
|
|
83
|
+
*/
|
|
84
|
+
async storeBuffer(data, fileName, author) {
|
|
85
|
+
const buf = Buffer.from(data);
|
|
86
|
+
const blocks = [];
|
|
87
|
+
for (let offset = 0; offset < buf.byteLength; offset += BLOCK_SIZE) {
|
|
88
|
+
const chunk = new Uint8Array(buf.subarray(offset, Math.min(offset + BLOCK_SIZE, buf.byteLength)));
|
|
89
|
+
const cid = await this.put(chunk);
|
|
90
|
+
blocks.push({ cid, offset, size: chunk.byteLength });
|
|
91
|
+
}
|
|
92
|
+
// Root CID = hash of all block CIDs concatenated
|
|
93
|
+
const { blake3 } = await import('@noble/hashes/blake3');
|
|
94
|
+
const rootData = new TextEncoder().encode(blocks.map(b => b.cid).join(':'));
|
|
95
|
+
const rootCid = Buffer.from(blake3(rootData)).toString('hex');
|
|
96
|
+
const manifest = {
|
|
97
|
+
rootCid,
|
|
98
|
+
fileName,
|
|
99
|
+
totalSize: buf.byteLength,
|
|
100
|
+
blockSize: BLOCK_SIZE,
|
|
101
|
+
blocks,
|
|
102
|
+
createdAt: Date.now(),
|
|
103
|
+
author,
|
|
104
|
+
};
|
|
105
|
+
// Persist manifest
|
|
106
|
+
this.manifests.set(rootCid, manifest);
|
|
107
|
+
this.storage.db
|
|
108
|
+
.prepare('INSERT OR REPLACE INTO file_manifests (root_cid, manifest) VALUES (?, ?)')
|
|
109
|
+
.run(rootCid, JSON.stringify(manifest));
|
|
110
|
+
return manifest;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Reassemble a file from its manifest.
|
|
114
|
+
* All blocks must be locally available.
|
|
115
|
+
*/
|
|
116
|
+
async retrieveFile(manifest) {
|
|
117
|
+
const result = Buffer.alloc(manifest.totalSize);
|
|
118
|
+
for (const block of manifest.blocks) {
|
|
119
|
+
const data = await this.get(block.cid);
|
|
120
|
+
if (!data) {
|
|
121
|
+
throw new Error(`Missing block ${block.cid} for file ${manifest.fileName}`);
|
|
122
|
+
}
|
|
123
|
+
Buffer.from(data).copy(result, block.offset);
|
|
124
|
+
}
|
|
125
|
+
return new Uint8Array(result);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Save reassembled file to disk.
|
|
129
|
+
*/
|
|
130
|
+
async saveFile(manifest, outputPath) {
|
|
131
|
+
const data = await this.retrieveFile(manifest);
|
|
132
|
+
writeFileSync(outputPath, data);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get a manifest by root CID.
|
|
136
|
+
*/
|
|
137
|
+
getManifest(rootCid) {
|
|
138
|
+
if (this.manifests.has(rootCid)) {
|
|
139
|
+
return this.manifests.get(rootCid);
|
|
140
|
+
}
|
|
141
|
+
const row = this.storage.db
|
|
142
|
+
.prepare('SELECT manifest FROM file_manifests WHERE root_cid = ?')
|
|
143
|
+
.get(rootCid);
|
|
144
|
+
if (row) {
|
|
145
|
+
const manifest = JSON.parse(row.manifest);
|
|
146
|
+
this.manifests.set(rootCid, manifest);
|
|
147
|
+
return manifest;
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* List all stored file manifests.
|
|
153
|
+
*/
|
|
154
|
+
listFiles() {
|
|
155
|
+
const rows = this.storage.db
|
|
156
|
+
.prepare('SELECT manifest FROM file_manifests ORDER BY created_at DESC')
|
|
157
|
+
.all();
|
|
158
|
+
return rows.map(r => JSON.parse(r.manifest));
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* List missing blocks for a manifest (for fetching from peers).
|
|
162
|
+
*/
|
|
163
|
+
getMissingBlocks(manifest) {
|
|
164
|
+
return manifest.blocks
|
|
165
|
+
.filter(b => !this.has(b.cid))
|
|
166
|
+
.map(b => b.cid);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Store a manifest received from a peer (without blocks).
|
|
170
|
+
*/
|
|
171
|
+
addRemoteManifest(manifest) {
|
|
172
|
+
this.manifests.set(manifest.rootCid, manifest);
|
|
173
|
+
this.storage.db
|
|
174
|
+
.prepare('INSERT OR REPLACE INTO file_manifests (root_cid, manifest) VALUES (?, ?)')
|
|
175
|
+
.run(manifest.rootCid, JSON.stringify(manifest));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=content-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-store.js","sourceRoot":"","sources":["../src/content-store.ts"],"names":[],"mappings":"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"}
|