Skip to content

Commit

Permalink
feat: expose .dns property on @helia/interface
Browse files Browse the repository at this point in the history
Exposes a `.dns` property on the Helia interface for use with other
modules such as @helia/ipns.

Refs: ipfs/helia-verified-fetch#13 (comment)
  • Loading branch information
achingbrain committed Mar 12, 2024
1 parent a64e5de commit 6a6773d
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
1 change: 1 addition & 0 deletions packages/interface/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
},
"dependencies": {
"@libp2p/interface": "^1.1.4",
"@multiformats/dns": "^1.0.1",
"interface-blockstore": "^5.2.10",
"interface-datastore": "^8.2.11",
"interface-store": "^5.1.8",
Expand Down
7 changes: 7 additions & 0 deletions packages/interface/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import type { Blocks } from './blocks.js'
import type { Pins } from './pins.js'
import type { Routing } from './routing.js'
import type { AbortOptions, ComponentLogger } from '@libp2p/interface'
import type { DNS } from '@multiformats/dns'
import type { Datastore } from 'interface-datastore'
import type { MultihashHasher } from 'multiformats'
import type { CID } from 'multiformats/cid'
Expand Down Expand Up @@ -67,6 +68,12 @@ export interface Helia {
*/
hashers: Record<number, MultihashHasher>

/**
* The DNS property can be used to perform lookups of various record types and
* will use a resolver appropriate to the current platform.
*/
dns: DNS

/**
* Starts the Helia node
*/
Expand Down
11 changes: 11 additions & 0 deletions packages/utils/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import { contentRoutingSymbol, peerRoutingSymbol, start, stop } from '@libp2p/interface'
import { defaultLogger } from '@libp2p/logger'
import { dns } from '@multiformats/dns'
import drain from 'it-drain'
import { CustomProgressEvent } from 'progress-events'
import { PinsImpl } from './pins.js'
Expand All @@ -32,6 +33,7 @@ import type { DAGWalker, GCOptions, Helia as HeliaInterface, Routing } from '@he
import type { BlockBroker } from '@helia/interface/blocks'
import type { Pins } from '@helia/interface/pins'
import type { ComponentLogger, Logger } from '@libp2p/interface'
import type { DNS } from '@multiformats/dns'
import type { Blockstore } from 'interface-blockstore'
import type { Datastore } from 'interface-datastore'
import type { CID } from 'multiformats/cid'
Expand Down Expand Up @@ -103,6 +105,11 @@ export interface HeliaInit {
* Components used by subclasses
*/
components?: Record<string, any>

/**
* An optional DNS implementation used the perform queries.
*/
dns?: DNS
}

interface Components {
Expand All @@ -112,6 +119,7 @@ interface Components {
dagWalkers: Record<number, DAGWalker>
logger: ComponentLogger
blockBrokers: BlockBroker[]
dns: DNS
}

export class Helia implements HeliaInterface {
Expand All @@ -122,13 +130,15 @@ export class Helia implements HeliaInterface {
public routing: Routing
public dagWalkers: Record<number, DAGWalker>
public hashers: Record<number, MultihashHasher>
public dns: DNS
private readonly log: Logger

constructor (init: HeliaInit) {
this.logger = init.logger ?? defaultLogger()
this.log = this.logger.forComponent('helia')
this.hashers = defaultHashers(init.hashers)
this.dagWalkers = defaultDagWalkers(init.dagWalkers)
this.dns = init.dns ?? dns()

const components: Components = {
blockstore: init.blockstore,
Expand All @@ -137,6 +147,7 @@ export class Helia implements HeliaInterface {
dagWalkers: this.dagWalkers,
logger: this.logger,
blockBrokers: [],
dns: this.dns,
...(init.components ?? {})
}

Expand Down

0 comments on commit 6a6773d

Please sign in to comment.