@helia/ipns 2.0.2 → 3.0.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 (60) hide show
  1. package/README.md +110 -0
  2. package/dist/index.min.js +26 -15
  3. package/dist/src/dns-resolvers/default.d.ts +3 -0
  4. package/dist/src/dns-resolvers/default.d.ts.map +1 -0
  5. package/dist/src/dns-resolvers/default.js +8 -0
  6. package/dist/src/dns-resolvers/default.js.map +1 -0
  7. package/dist/src/dns-resolvers/dns-json-over-https.d.ts +18 -0
  8. package/dist/src/dns-resolvers/dns-json-over-https.d.ts.map +1 -0
  9. package/dist/src/dns-resolvers/dns-json-over-https.js +72 -0
  10. package/dist/src/dns-resolvers/dns-json-over-https.js.map +1 -0
  11. package/dist/src/dns-resolvers/dns-over-https.d.ts +16 -0
  12. package/dist/src/dns-resolvers/dns-over-https.d.ts.map +1 -0
  13. package/dist/src/dns-resolvers/dns-over-https.js +123 -0
  14. package/dist/src/dns-resolvers/dns-over-https.js.map +1 -0
  15. package/dist/src/dns-resolvers/index.d.ts +3 -0
  16. package/dist/src/dns-resolvers/index.d.ts.map +1 -0
  17. package/dist/src/dns-resolvers/index.js +3 -0
  18. package/dist/src/dns-resolvers/index.js.map +1 -0
  19. package/dist/src/dns-resolvers/resolver.browser.d.ts +4 -0
  20. package/dist/src/dns-resolvers/resolver.browser.d.ts.map +1 -0
  21. package/dist/src/dns-resolvers/resolver.browser.js +39 -0
  22. package/dist/src/dns-resolvers/resolver.browser.js.map +1 -0
  23. package/dist/src/dns-resolvers/resolver.d.ts +4 -0
  24. package/dist/src/dns-resolvers/resolver.d.ts.map +1 -0
  25. package/dist/src/dns-resolvers/resolver.js +21 -0
  26. package/dist/src/dns-resolvers/resolver.js.map +1 -0
  27. package/dist/src/index.d.ts +102 -9
  28. package/dist/src/index.d.ts.map +1 -1
  29. package/dist/src/index.js +82 -12
  30. package/dist/src/index.js.map +1 -1
  31. package/dist/src/routing/dht.js.map +1 -1
  32. package/dist/src/routing/local-store.js +3 -3
  33. package/dist/src/routing/local-store.js.map +1 -1
  34. package/dist/src/routing/pubsub.js.map +1 -1
  35. package/dist/src/utils/dns.d.ts +35 -0
  36. package/dist/src/utils/dns.d.ts.map +1 -0
  37. package/dist/src/utils/dns.js +79 -0
  38. package/dist/src/utils/dns.js.map +1 -0
  39. package/dist/src/utils/tlru.js.map +1 -1
  40. package/dist/typedoc-urls.json +8 -0
  41. package/package.json +14 -5
  42. package/src/dns-resolvers/default.ts +9 -0
  43. package/src/dns-resolvers/dns-json-over-https.ts +90 -0
  44. package/src/dns-resolvers/dns-over-https.ts +146 -0
  45. package/src/dns-resolvers/index.ts +2 -0
  46. package/src/dns-resolvers/resolver.browser.ts +50 -0
  47. package/src/dns-resolvers/resolver.ts +25 -0
  48. package/src/index.ts +121 -13
  49. package/src/routing/local-store.ts +3 -3
  50. package/src/utils/dns.ts +126 -0
  51. package/dist/src/utils/resolve-dns-link.browser.d.ts +0 -6
  52. package/dist/src/utils/resolve-dns-link.browser.d.ts.map +0 -1
  53. package/dist/src/utils/resolve-dns-link.browser.js +0 -46
  54. package/dist/src/utils/resolve-dns-link.browser.js.map +0 -1
  55. package/dist/src/utils/resolve-dns-link.d.ts +0 -3
  56. package/dist/src/utils/resolve-dns-link.d.ts.map +0 -1
  57. package/dist/src/utils/resolve-dns-link.js +0 -54
  58. package/dist/src/utils/resolve-dns-link.js.map +0 -1
  59. package/src/utils/resolve-dns-link.browser.ts +0 -61
  60. package/src/utils/resolve-dns-link.ts +0 -65
package/README.md CHANGED
@@ -13,6 +13,116 @@
13
13
 
14
14
  > An implementation of IPNS for Helia
15
15
 
16
+ # About
17
+
18
+ IPNS operations using a Helia node
19
+
20
+ ## Example
21
+
22
+ With IPNSRouting routers:
23
+
24
+ ```typescript
25
+ import { createHelia } from 'helia'
26
+ import { dht, pubsub } from '@helia/ipns/routing'
27
+ import { unixfs } from '@helia/unixfs'
28
+
29
+ const helia = await createHelia()
30
+ const name = ipns(helia, {
31
+ routers: [
32
+ dht(helia),
33
+ pubsub(helia)
34
+ ]
35
+ })
36
+
37
+ // create a public key to publish as an IPNS name
38
+ const keyInfo = await helia.libp2p.keychain.createKey('my-key')
39
+ const peerId = await helia.libp2p.keychain.exportPeerId(keyInfo.name)
40
+
41
+ // store some data to publish
42
+ const fs = unixfs(helia)
43
+ const cid = await fs.add(Uint8Array.from([0, 1, 2, 3, 4]))
44
+
45
+ // publish the name
46
+ await name.publish(peerId, cid)
47
+
48
+ // resolve the name
49
+ const cid = name.resolve(peerId)
50
+ ```
51
+
52
+ ## Example
53
+
54
+ With default DNSResolver resolvers:
55
+
56
+ ```typescript
57
+ import { createHelia } from 'helia'
58
+ import { dht, pubsub } from '@helia/ipns/routing'
59
+ import { unixfs } from '@helia/unixfs'
60
+
61
+ const helia = await createHelia()
62
+ const name = ipns(helia, {
63
+ resolvers: [
64
+ dnsOverHttps('https://private-dns-server.me/dns-query'),
65
+ ]
66
+ })
67
+
68
+ const cid = name.resolveDns('some-domain-with-dnslink-entry.com')
69
+ ```
70
+
71
+ ## Example
72
+
73
+ Calling `resolveDns` with the `@helia/ipns` instance:
74
+
75
+ ```typescript
76
+ // resolve a CID from a TXT record in a DNS zone file, using the default
77
+ // resolver for the current platform eg:
78
+ // > dig _dnslink.ipfs.io TXT
79
+ // ;; ANSWER SECTION:
80
+ // _dnslink.ipfs.io. 60 IN TXT "dnslink=/ipns/website.ipfs.io"
81
+ // > dig _dnslink.website.ipfs.io TXT
82
+ // ;; ANSWER SECTION:
83
+ // _dnslink.website.ipfs.io. 60 IN TXT "dnslink=/ipfs/QmWebsite"
84
+
85
+ const cid = name.resolveDns('ipfs.io')
86
+
87
+ console.info(cid)
88
+ // QmWebsite
89
+ ```
90
+
91
+ ## Example
92
+
93
+ This example uses the Mozilla provided RFC 1035 DNS over HTTPS service. This
94
+ uses binary DNS records so requires extra dependencies to process the
95
+ response which can increase browser bundle sizes.
96
+
97
+ If this is a concern, use the DNS-JSON-Over-HTTPS resolver instead.
98
+
99
+ ```typescript
100
+ // use DNS-Over-HTTPS
101
+ import { dnsOverHttps } from '@helia/ipns/dns-resolvers'
102
+
103
+ const cid = name.resolveDns('ipfs.io', {
104
+ resolvers: [
105
+ dnsOverHttps('https://mozilla.cloudflare-dns.com/dns-query')
106
+ ]
107
+ })
108
+ ```
109
+
110
+ ## Example
111
+
112
+ DNS-JSON-Over-HTTPS resolvers use the RFC 8427 `application/dns-json` and can
113
+ result in a smaller browser bundle due to the response being plain JSON.
114
+
115
+ ```typescript
116
+ // use DNS-JSON-Over-HTTPS
117
+ import { dnsJsonOverHttps } from '@helia/ipns/dns-resolvers'
118
+
119
+ const cid = name.resolveDns('ipfs.io', {
120
+ resolvers: [
121
+ dnsJsonOverHttps('https://mozilla.cloudflare-dns.com/dns-query')
122
+ ]
123
+ })
124
+ ```
125
+
16
126
  ## Table of contents <!-- omit in toc -->
17
127
 
18
128
  - [Install](#install)