@helia/ipns 1.1.0 → 1.1.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -70,6 +70,7 @@ var _DefaultIPNS_instances, _DefaultIPNS_resolve, _DefaultIPNS_findIpnsRecord;
70
70
  import { isPeerId } from '@libp2p/interface-peer-id';
71
71
  import { create, marshal, peerIdToRoutingKey, unmarshal } from 'ipns';
72
72
  import { ipnsValidator } from 'ipns/validator';
73
+ import { ipnsSelector } from 'ipns/selector';
73
74
  import { CID } from 'multiformats/cid';
74
75
  import { resolveDnslink } from './utils/resolve-dns-link.js';
75
76
  import { logger } from '@libp2p/logger';
@@ -78,6 +79,7 @@ import { CustomProgressEvent } from 'progress-events';
78
79
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
79
80
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
80
81
  import { localStore } from './routing/local-store.js';
82
+ import { CodeError } from '@libp2p/interfaces/errors';
81
83
  const log = logger('helia:ipns');
82
84
  const MINUTE = 60 * 1000;
83
85
  const HOUR = 60 * MINUTE;
@@ -184,12 +186,23 @@ _DefaultIPNS_instances = new WeakSet(), _DefaultIPNS_resolve = async function _D
184
186
  this.localStore
185
187
  ];
186
188
  }
187
- const unmarshaledRecord = await Promise.any(routers.map(async (router) => {
188
- const unmarshaledRecord = await router.get(routingKey, options);
189
- await ipnsValidator(routingKey, unmarshaledRecord);
190
- return unmarshaledRecord;
189
+ const records = [];
190
+ await Promise.all(routers.map(async (router) => {
191
+ try {
192
+ const record = await router.get(routingKey, options);
193
+ await ipnsValidator(routingKey, record);
194
+ records.push(record);
195
+ }
196
+ catch (err) {
197
+ log.error('error finding IPNS record', err);
198
+ }
191
199
  }));
192
- return unmarshal(unmarshaledRecord);
200
+ if (records.length === 0) {
201
+ throw new CodeError('Could not find record for routing key', 'ERR_NOT_FOUND');
202
+ }
203
+ const record = records[ipnsSelector(routingKey, records)];
204
+ await this.localStore.put(routingKey, record, options);
205
+ return unmarshal(record);
193
206
  };
194
207
  export function ipns(components, routers = []) {
195
208
  return new DefaultIPNS(components, routers);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  import type { IPNSRouting } from '../index.js';
2
- import type { DHT, QueryEvent } from '@libp2p/interface-dht';
3
2
  import type { GetOptions, PutOptions } from './index.js';
4
3
  import { ProgressEvent } from 'progress-events';
4
+ import type { ContentRouting } from '@libp2p/interface-content-routing';
5
5
  export interface DHTRoutingComponents {
6
6
  libp2p: {
7
- dht: DHT;
7
+ contentRouting: ContentRouting;
8
8
  };
9
9
  }
10
- export type DHTProgressEvents = ProgressEvent<'ipns:routing:dht:query', QueryEvent> | ProgressEvent<'ipns:routing:dht:error', Error>;
10
+ export type DHTProgressEvents = ProgressEvent<'ipns:routing:dht:error', Error>;
11
11
  export declare class DHTRouting implements IPNSRouting {
12
- private readonly dht;
12
+ private readonly contentRouting;
13
13
  constructor(components: DHTRoutingComponents);
14
14
  put(routingKey: Uint8Array, marshaledRecord: Uint8Array, options?: PutOptions): Promise<void>;
15
15
  get(routingKey: Uint8Array, options?: GetOptions): Promise<Uint8Array>;
@@ -1 +1 @@
1
- {"version":3,"file":"dht.d.ts","sourceRoot":"","sources":["../../../src/routing/dht.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAAuB,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIpE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE;QACN,GAAG,EAAE,GAAG,CAAA;KACT,CAAA;CACF;AAED,MAAM,MAAM,iBAAiB,GAC3B,aAAa,CAAC,wBAAwB,EAAE,UAAU,CAAC,GACnD,aAAa,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAA;AAEhD,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;gBAEZ,UAAU,EAAE,oBAAoB;IAIvC,GAAG,CAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlG,GAAG,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC;CAiBlF;AAkBD,wBAAgB,GAAG,CAAE,UAAU,EAAE,oBAAoB,GAAG,WAAW,CAElE"}
1
+ {"version":3,"file":"dht.d.ts","sourceRoot":"","sources":["../../../src/routing/dht.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAAuB,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAEvE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE;QACN,cAAc,EAAE,cAAc,CAAA;KAC/B,CAAA;CACF;AAED,MAAM,MAAM,iBAAiB,GAC3B,aAAa,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAA;AAEhD,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAElC,UAAU,EAAE,oBAAoB;IAIvC,GAAG,CAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlG,GAAG,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC;CASlF;AAED,wBAAgB,GAAG,CAAE,UAAU,EAAE,oBAAoB,GAAG,WAAW,CAElE"}
@@ -1,37 +1,19 @@
1
- import { logger } from '@libp2p/logger';
2
1
  import { CustomProgressEvent } from 'progress-events';
3
- const log = logger('helia:ipns:routing:dht');
4
2
  export class DHTRouting {
5
3
  constructor(components) {
6
- this.dht = components.libp2p.dht;
4
+ this.contentRouting = components.libp2p.contentRouting;
7
5
  }
8
6
  async put(routingKey, marshaledRecord, options = {}) {
9
- let putValue = false;
10
7
  try {
11
- for await (const event of this.dht.put(routingKey, marshaledRecord, options)) {
12
- logEvent('DHT put event', event);
13
- options.onProgress?.(new CustomProgressEvent('ipns:routing:dht:query', event));
14
- if (event.name === 'PEER_RESPONSE' && event.messageName === 'PUT_VALUE') {
15
- putValue = true;
16
- }
17
- }
8
+ await this.contentRouting.put(routingKey, marshaledRecord, options);
18
9
  }
19
10
  catch (err) {
20
11
  options.onProgress?.(new CustomProgressEvent('ipns:routing:dht:error', err));
21
12
  }
22
- if (!putValue) {
23
- throw new Error('Could not put value to DHT');
24
- }
25
13
  }
26
14
  async get(routingKey, options = {}) {
27
15
  try {
28
- for await (const event of this.dht.get(routingKey, options)) {
29
- logEvent('DHT get event', event);
30
- options.onProgress?.(new CustomProgressEvent('ipns:routing:dht:query', event));
31
- if (event.name === 'VALUE') {
32
- return event.value;
33
- }
34
- }
16
+ return await this.contentRouting.get(routingKey, options);
35
17
  }
36
18
  catch (err) {
37
19
  options.onProgress?.(new CustomProgressEvent('ipns:routing:dht:error', err));
@@ -39,26 +21,6 @@ export class DHTRouting {
39
21
  throw new Error('Not found');
40
22
  }
41
23
  }
42
- function logEvent(prefix, event) {
43
- if (event.name === 'SENDING_QUERY') {
44
- log(prefix, event.name, event.messageName, '->', event.to.toString());
45
- }
46
- else if (event.name === 'PEER_RESPONSE') {
47
- log(prefix, event.name, event.messageName, '<-', event.from.toString());
48
- }
49
- else if (event.name === 'FINAL_PEER') {
50
- log(prefix, event.name, event.peer.id.toString());
51
- }
52
- else if (event.name === 'QUERY_ERROR') {
53
- log(prefix, event.name, event.error.message);
54
- }
55
- else if (event.name === 'PROVIDER') {
56
- log(prefix, event.name, event.providers.map(p => p.id.toString()).join(', '));
57
- }
58
- else {
59
- log(prefix, event.name);
60
- }
61
- }
62
24
  export function dht(components) {
63
25
  return new DHTRouting(components);
64
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dht.js","sourceRoot":"","sources":["../../../src/routing/dht.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dht.js","sourceRoot":"","sources":["../../../src/routing/dht.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAiB,MAAM,iBAAiB,CAAA;AAYpE,MAAM,OAAO,UAAU;IAGrB,YAAa,UAAgC;QAC3C,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,eAA2B,EAAE,UAAsB,EAAE;QACtF,IAAI;YACF,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAA;SACpE;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAQ,wBAAwB,EAAE,GAAG,CAAC,CAAC,CAAA;SACpF;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,UAAsB,EAAE;QACzD,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;SAC1D;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAQ,wBAAwB,EAAE,GAAG,CAAC,CAAC,CAAA;SACpF;QAED,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,UAAU,GAAG,CAAE,UAAgC;IACnD,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,CAAA;AACnC,CAAC"}
@@ -12,11 +12,11 @@ function dhtRoutingKey(key) {
12
12
  */
13
13
  export function localStore(datastore) {
14
14
  return {
15
- async put(routingKey, marshaledRecord, options = {}) {
15
+ async put(routingKey, marshalledRecord, options = {}) {
16
16
  try {
17
17
  const key = dhtRoutingKey(routingKey);
18
18
  // Marshal to libp2p record as the DHT does
19
- const record = new Libp2pRecord(routingKey, marshaledRecord, new Date());
19
+ const record = new Libp2pRecord(routingKey, marshalledRecord, new Date());
20
20
  options.onProgress?.(new CustomProgressEvent('ipns:routing:datastore:put'));
21
21
  await datastore.put(key, record.serialize(), options);
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../../src/routing/local-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAiB,MAAM,iBAAiB,CAAA;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAa,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGtE,SAAS,aAAa,CAAE,GAAe;IACrC,OAAO,IAAI,GAAG,CAAC,cAAc,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;AAC3E,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAE,SAAoB;IAC9C,OAAO;QACL,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,eAA2B,EAAE,UAAsB,EAAE;YACtF,IAAI;gBACF,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;gBAErC,2CAA2C;gBAC3C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;gBAExE,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,4BAA4B,CAAC,CAAC,CAAA;gBAC3E,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAA;aACtD;YAAC,OAAO,GAAQ,EAAE;gBACjB,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAQ,8BAA8B,EAAE,GAAG,CAAC,CAAC,CAAA;gBACzF,MAAM,GAAG,CAAA;aACV;QACH,CAAC;QACD,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,UAAsB,EAAE;YACzD,IAAI;gBACF,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;gBAErC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,4BAA4B,CAAC,CAAC,CAAA;gBAC3E,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBAE7C,0CAA0C;gBAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBAE5C,OAAO,MAAM,CAAC,KAAK,CAAA;aACpB;YAAC,OAAO,GAAQ,EAAE;gBACjB,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAQ,8BAA8B,EAAE,GAAG,CAAC,CAAC,CAAA;gBACzF,MAAM,GAAG,CAAA;aACV;QACH,CAAC;QACD,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,UAAwB,EAAE;YAC3D,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;YACrC,OAAO,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../../src/routing/local-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAiB,MAAM,iBAAiB,CAAA;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAa,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGtE,SAAS,aAAa,CAAE,GAAe;IACrC,OAAO,IAAI,GAAG,CAAC,cAAc,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;AAC3E,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAE,SAAoB;IAC9C,OAAO;QACL,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,gBAA4B,EAAE,UAAsB,EAAE;YACvF,IAAI;gBACF,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;gBAErC,2CAA2C;gBAC3C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;gBAEzE,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,4BAA4B,CAAC,CAAC,CAAA;gBAC3E,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAA;aACtD;YAAC,OAAO,GAAQ,EAAE;gBACjB,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAQ,8BAA8B,EAAE,GAAG,CAAC,CAAC,CAAA;gBACzF,MAAM,GAAG,CAAA;aACV;QACH,CAAC;QACD,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,UAAsB,EAAE;YACzD,IAAI;gBACF,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;gBAErC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,4BAA4B,CAAC,CAAC,CAAA;gBAC3E,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBAE7C,0CAA0C;gBAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBAE5C,OAAO,MAAM,CAAC,KAAK,CAAA;aACpB;YAAC,OAAO,GAAQ,EAAE;gBACjB,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAQ,8BAA8B,EAAE,GAAG,CAAC,CAAC,CAAA;gBACzF,MAAM,GAAG,CAAA;aACV;QACH,CAAC;QACD,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,UAAwB,EAAE;YAC3D,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;YACrC,OAAO,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;KACF,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/ipns",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "An implementation of IPNS for Helia",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/helia-ipns/tree/master/packages/ipns#readme",
@@ -159,6 +159,7 @@
159
159
  "release": "aegir release"
160
160
  },
161
161
  "dependencies": {
162
+ "@libp2p/interface-content-routing": "^2.1.0",
162
163
  "@libp2p/interface-dht": "^2.0.1",
163
164
  "@libp2p/interface-peer-id": "^2.0.1",
164
165
  "@libp2p/interface-pubsub": "^3.0.6",
package/src/index.ts CHANGED
@@ -68,6 +68,7 @@ import { create, marshal, peerIdToRoutingKey, unmarshal } from 'ipns'
68
68
  import type { IPNSEntry } from 'ipns'
69
69
  import type { IPNSRouting, IPNSRoutingEvents } from './routing/index.js'
70
70
  import { ipnsValidator } from 'ipns/validator'
71
+ import { ipnsSelector } from 'ipns/selector'
71
72
  import { CID } from 'multiformats/cid'
72
73
  import { resolveDnslink } from './utils/resolve-dns-link.js'
73
74
  import { logger } from '@libp2p/logger'
@@ -78,6 +79,7 @@ import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
78
79
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
79
80
  import type { Datastore } from 'interface-datastore'
80
81
  import { localStore, LocalStore } from './routing/local-store.js'
82
+ import { CodeError } from '@libp2p/interfaces/errors'
81
83
 
82
84
  const log = logger('helia:ipns')
83
85
 
@@ -295,16 +297,30 @@ class DefaultIPNS implements IPNS {
295
297
  ]
296
298
  }
297
299
 
298
- const unmarshaledRecord = await Promise.any(
299
- routers.map(async (router) => {
300
- const unmarshaledRecord = await router.get(routingKey, options)
301
- await ipnsValidator(routingKey, unmarshaledRecord)
300
+ const records: Uint8Array[] = []
302
301
 
303
- return unmarshaledRecord
302
+ await Promise.all(
303
+ routers.map(async (router) => {
304
+ try {
305
+ const record = await router.get(routingKey, options)
306
+ await ipnsValidator(routingKey, record)
307
+
308
+ records.push(record)
309
+ } catch (err) {
310
+ log.error('error finding IPNS record', err)
311
+ }
304
312
  })
305
313
  )
306
314
 
307
- return unmarshal(unmarshaledRecord)
315
+ if (records.length === 0) {
316
+ throw new CodeError('Could not find record for routing key', 'ERR_NOT_FOUND')
317
+ }
318
+
319
+ const record = records[ipnsSelector(routingKey, records)]
320
+
321
+ await this.localStore.put(routingKey, record, options)
322
+
323
+ return unmarshal(record)
308
324
  }
309
325
  }
310
326
 
@@ -1,61 +1,35 @@
1
- import { logger } from '@libp2p/logger'
2
1
  import type { IPNSRouting } from '../index.js'
3
- import type { DHT, QueryEvent } from '@libp2p/interface-dht'
4
2
  import type { GetOptions, PutOptions } from './index.js'
5
3
  import { CustomProgressEvent, ProgressEvent } from 'progress-events'
6
-
7
- const log = logger('helia:ipns:routing:dht')
4
+ import type { ContentRouting } from '@libp2p/interface-content-routing'
8
5
 
9
6
  export interface DHTRoutingComponents {
10
7
  libp2p: {
11
- dht: DHT
8
+ contentRouting: ContentRouting
12
9
  }
13
10
  }
14
11
 
15
12
  export type DHTProgressEvents =
16
- ProgressEvent<'ipns:routing:dht:query', QueryEvent> |
17
13
  ProgressEvent<'ipns:routing:dht:error', Error>
18
14
 
19
15
  export class DHTRouting implements IPNSRouting {
20
- private readonly dht: DHT
16
+ private readonly contentRouting: ContentRouting
21
17
 
22
18
  constructor (components: DHTRoutingComponents) {
23
- this.dht = components.libp2p.dht
19
+ this.contentRouting = components.libp2p.contentRouting
24
20
  }
25
21
 
26
22
  async put (routingKey: Uint8Array, marshaledRecord: Uint8Array, options: PutOptions = {}): Promise<void> {
27
- let putValue = false
28
-
29
23
  try {
30
- for await (const event of this.dht.put(routingKey, marshaledRecord, options)) {
31
- logEvent('DHT put event', event)
32
-
33
- options.onProgress?.(new CustomProgressEvent<QueryEvent>('ipns:routing:dht:query', event))
34
-
35
- if (event.name === 'PEER_RESPONSE' && event.messageName === 'PUT_VALUE') {
36
- putValue = true
37
- }
38
- }
24
+ await this.contentRouting.put(routingKey, marshaledRecord, options)
39
25
  } catch (err: any) {
40
26
  options.onProgress?.(new CustomProgressEvent<Error>('ipns:routing:dht:error', err))
41
27
  }
42
-
43
- if (!putValue) {
44
- throw new Error('Could not put value to DHT')
45
- }
46
28
  }
47
29
 
48
30
  async get (routingKey: Uint8Array, options: GetOptions = {}): Promise<Uint8Array> {
49
31
  try {
50
- for await (const event of this.dht.get(routingKey, options)) {
51
- logEvent('DHT get event', event)
52
-
53
- options.onProgress?.(new CustomProgressEvent<QueryEvent>('ipns:routing:dht:query', event))
54
-
55
- if (event.name === 'VALUE') {
56
- return event.value
57
- }
58
- }
32
+ return await this.contentRouting.get(routingKey, options)
59
33
  } catch (err: any) {
60
34
  options.onProgress?.(new CustomProgressEvent<Error>('ipns:routing:dht:error', err))
61
35
  }
@@ -64,22 +38,6 @@ export class DHTRouting implements IPNSRouting {
64
38
  }
65
39
  }
66
40
 
67
- function logEvent (prefix: string, event: QueryEvent): void {
68
- if (event.name === 'SENDING_QUERY') {
69
- log(prefix, event.name, event.messageName, '->', event.to.toString())
70
- } else if (event.name === 'PEER_RESPONSE') {
71
- log(prefix, event.name, event.messageName, '<-', event.from.toString())
72
- } else if (event.name === 'FINAL_PEER') {
73
- log(prefix, event.name, event.peer.id.toString())
74
- } else if (event.name === 'QUERY_ERROR') {
75
- log(prefix, event.name, event.error.message)
76
- } else if (event.name === 'PROVIDER') {
77
- log(prefix, event.name, event.providers.map(p => p.id.toString()).join(', '))
78
- } else {
79
- log(prefix, event.name)
80
- }
81
- }
82
-
83
41
  export function dht (components: DHTRoutingComponents): IPNSRouting {
84
42
  return new DHTRouting(components)
85
43
  }
@@ -25,12 +25,12 @@ export interface LocalStore extends IPNSRouting {
25
25
  */
26
26
  export function localStore (datastore: Datastore): LocalStore {
27
27
  return {
28
- async put (routingKey: Uint8Array, marshaledRecord: Uint8Array, options: PutOptions = {}) {
28
+ async put (routingKey: Uint8Array, marshalledRecord: Uint8Array, options: PutOptions = {}) {
29
29
  try {
30
30
  const key = dhtRoutingKey(routingKey)
31
31
 
32
32
  // Marshal to libp2p record as the DHT does
33
- const record = new Libp2pRecord(routingKey, marshaledRecord, new Date())
33
+ const record = new Libp2pRecord(routingKey, marshalledRecord, new Date())
34
34
 
35
35
  options.onProgress?.(new CustomProgressEvent('ipns:routing:datastore:put'))
36
36
  await datastore.put(key, record.serialize(), options)