Skip to content

Commit 4856ce3

Browse files
committed
feat: expose routing v1 server via optional setting
1 parent 2a20180 commit 4856ce3

File tree

20 files changed

+371
-204
lines changed

20 files changed

+371
-204
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Kubo Changelogs
22

3+
- [v0.23](docs/changelogs/v0.23.md)
34
- [v0.22](docs/changelogs/v0.22.md)
45
- [v0.21](docs/changelogs/v0.21.md)
56
- [v0.20](docs/changelogs/v0.20.md)

cmd/ipfs/daemon.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,6 +850,10 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e
850850
opts = append(opts, corehttp.P2PProxyOption())
851851
}
852852

853+
if cfg.Gateway.ExposeRoutingAPI.WithDefault(config.DefaultExposeRoutingAPI) {
854+
opts = append(opts, corehttp.RoutingOption())
855+
}
856+
853857
if len(cfg.Gateway.RootRedirect) > 0 {
854858
opts = append(opts, corehttp.RedirectOption("", cfg.Gateway.RootRedirect))
855859
}

config/gateway.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package config
33
const (
44
DefaultInlineDNSLink = false
55
DefaultDeserializedResponses = true
6+
DefaultExposeRoutingAPI = false
67
)
78

89
type GatewaySpec struct {
@@ -73,4 +74,8 @@ type Gateway struct {
7374
// PublicGateways configures behavior of known public gateways.
7475
// Each key is a fully qualified domain name (FQDN).
7576
PublicGateways map[string]*GatewaySpec
77+
78+
// ExposeRoutingAPI configures the gateway to expose a Routing v1 HTTP Server
79+
// under /routing/v1: https://specs.ipfs.tech/routing/routing-v1/.
80+
ExposeRoutingAPI Flag
7681
}

config/routing.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package config
33
import (
44
"encoding/json"
55
"fmt"
6-
"runtime"
76
)
87

98
// Routing defines configuration options for libp2p routing
@@ -133,23 +132,6 @@ var MethodNameList = []MethodName{MethodNameProvide, MethodNameFindPeers, Method
133132
type HTTPRouterParams struct {
134133
// Endpoint is the URL where the routing implementation will point to get the information.
135134
Endpoint string
136-
137-
// MaxProvideBatchSize determines the maximum amount of CIDs sent per batch.
138-
// Servers might not accept more than 100 elements per batch. 100 elements by default.
139-
MaxProvideBatchSize int
140-
141-
// MaxProvideConcurrency determines the number of threads used when providing content. GOMAXPROCS by default.
142-
MaxProvideConcurrency int
143-
}
144-
145-
func (hrp *HTTPRouterParams) FillDefaults() {
146-
if hrp.MaxProvideBatchSize == 0 {
147-
hrp.MaxProvideBatchSize = 100
148-
}
149-
150-
if hrp.MaxProvideConcurrency == 0 {
151-
hrp.MaxProvideConcurrency = runtime.GOMAXPROCS(0)
152-
}
153135
}
154136

155137
type DHTRouterParams struct {

core/corehttp/routing.go

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package corehttp
2+
3+
import (
4+
"context"
5+
"net"
6+
"net/http"
7+
8+
"github.com/ipfs/boxo/ipns"
9+
"github.com/ipfs/boxo/routing/http/server"
10+
"github.com/ipfs/boxo/routing/http/types"
11+
"github.com/ipfs/boxo/routing/http/types/iter"
12+
cid "github.com/ipfs/go-cid"
13+
core "github.com/ipfs/kubo/core"
14+
"github.com/libp2p/go-libp2p/core/peer"
15+
)
16+
17+
func RoutingOption() ServeOption {
18+
return func(n *core.IpfsNode, _ net.Listener, mux *http.ServeMux) (*http.ServeMux, error) {
19+
handler := server.Handler(&contentRouter{n})
20+
mux.Handle("/routing/v1/", handler)
21+
return mux, nil
22+
}
23+
}
24+
25+
type contentRouter struct {
26+
n *core.IpfsNode
27+
}
28+
29+
func (r *contentRouter) GetProviders(ctx context.Context, key cid.Cid, limit int) (iter.ResultIter[types.Record], error) {
30+
ctx, cancel := context.WithCancel(ctx)
31+
ch := r.n.Routing.FindProvidersAsync(ctx, key, limit)
32+
return iter.ToResultIter[types.Record](&peerChanIter{
33+
ch: ch,
34+
cancel: cancel,
35+
}), nil
36+
}
37+
38+
func (r *contentRouter) GetPeers(ctx context.Context, pid peer.ID, limit int) (iter.ResultIter[types.Record], error) {
39+
ctx, cancel := context.WithCancel(ctx)
40+
defer cancel()
41+
42+
addr, err := r.n.Routing.FindPeer(ctx, pid)
43+
if err != nil {
44+
return nil, err
45+
}
46+
47+
rec := &types.PeerRecord{
48+
Schema: types.SchemaPeer,
49+
ID: &addr.ID,
50+
}
51+
52+
for _, addr := range addr.Addrs {
53+
rec.Addrs = append(rec.Addrs, types.Multiaddr{Multiaddr: addr})
54+
}
55+
56+
return iter.ToResultIter[types.Record](iter.FromSlice[types.Record]([]types.Record{rec})), nil
57+
}
58+
59+
func (r *contentRouter) GetIPNSRecord(ctx context.Context, name ipns.Name) (*ipns.Record, error) {
60+
ctx, cancel := context.WithCancel(ctx)
61+
defer cancel()
62+
63+
raw, err := r.n.Routing.GetValue(ctx, string(name.RoutingKey()))
64+
if err != nil {
65+
return nil, err
66+
}
67+
68+
return ipns.UnmarshalRecord(raw)
69+
}
70+
71+
func (r *contentRouter) PutIPNSRecord(ctx context.Context, name ipns.Name, record *ipns.Record) error {
72+
ctx, cancel := context.WithCancel(ctx)
73+
defer cancel()
74+
75+
raw, err := ipns.MarshalRecord(record)
76+
if err != nil {
77+
return err
78+
}
79+
80+
// The caller guarantees that name matches the record. This is double checked
81+
// by the internals of PutValue.
82+
return r.n.Routing.PutValue(ctx, string(name.RoutingKey()), raw)
83+
}
84+
85+
type peerChanIter struct {
86+
ch <-chan peer.AddrInfo
87+
cancel context.CancelFunc
88+
next *peer.AddrInfo
89+
}
90+
91+
func (it *peerChanIter) Next() bool {
92+
addr, ok := <-it.ch
93+
if ok {
94+
it.next = &addr
95+
return true
96+
} else {
97+
it.next = nil
98+
return false
99+
}
100+
}
101+
102+
func (it *peerChanIter) Val() types.Record {
103+
if it.next == nil {
104+
return nil
105+
}
106+
107+
// We don't know what type of protocol this peer provides. It is likely Bitswap
108+
// but it might not be. Therefore, we set an unknown protocol with an unknown schema.
109+
rec := &types.PeerRecord{
110+
Schema: types.SchemaPeer,
111+
ID: &it.next.ID,
112+
}
113+
114+
for _, addr := range it.next.Addrs {
115+
rec.Addrs = append(rec.Addrs, types.Multiaddr{Multiaddr: addr})
116+
}
117+
118+
return rec
119+
}
120+
121+
func (it *peerChanIter) Close() error {
122+
it.cancel()
123+
return nil
124+
}

core/node/libp2p/routingopt.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,7 @@ func ConstructDelegatedRouting(routers config.Routers, methods config.Methods, p
135135
Datastore: args.Datastore,
136136
Context: args.Ctx,
137137
},
138-
&irouting.ExtraHTTPParams{
139-
PeerID: peerID,
140-
Addrs: httpAddrsFromConfig(addrs),
141-
PrivKeyB64: privKey,
142-
})
138+
)
143139
}
144140
}
145141

docs/changelogs/v0.23.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Kubo changelog v0.23
2+
3+
- [v0.23.0](#v0230)
4+
5+
## v0.23.0
6+
7+
- [Overview](#overview)
8+
- [🔦 Highlights](#-highlights)
9+
- [Local Gateway: optional support for `/routing/v1` endpoint](#local-gateway-optional-support-for-routingv1-endpoint)
10+
- [📝 Changelog](#-changelog)
11+
- [👨‍👩‍👧‍👦 Contributors](#-contributors)
12+
13+
### Overview
14+
15+
### 🔦 Highlights
16+
17+
#### Local Gateway: optional support for `/routing/v1` endpoint
18+
19+
The local gateway, hosted at `127.0.0.1`, now supports the delegated [Routing V1](https://specs.ipfs.tech/routing/http-routing-v1/) API.
20+
This is disabled by default, but can be enabled by setting `Config.Gateway.ExposeRoutingAPI = true`.
21+
22+
### 📝 Changelog
23+
24+
### 👨‍👩‍👧‍👦 Contributors

docs/config.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,15 @@ Default: `true`
659659

660660
Type: `flag`
661661

662+
#### `Gateway.ExposeRoutingAPI`
663+
664+
An optional flag to explicitly configure whether this gateway provides a Routing
665+
V1 endpoint. This only affects your local gateway, at `127.0.0.1`: https://specs.ipfs.tech/routing/routing-v1/.
666+
667+
Default: `false`
668+
669+
Type: `flag`
670+
662671
### `Gateway.HTTPHeaders`
663672

664673
Headers to set on gateway responses.

docs/examples/kubo-as-a-library/go.mod

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ go 1.18
77
replace github.com/ipfs/kubo => ./../../..
88

99
require (
10-
github.com/ipfs/boxo v0.11.0
10+
github.com/ipfs/boxo v0.11.1-0.20230809093309-ecc6fb41f53d
1111
github.com/ipfs/kubo v0.0.0-00010101000000-000000000000
1212
github.com/libp2p/go-libp2p v0.29.2
1313
github.com/multiformats/go-multiaddr v0.10.1
@@ -52,7 +52,6 @@ require (
5252
github.com/google/gopacket v1.1.19 // indirect
5353
github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect
5454
github.com/google/uuid v1.3.0 // indirect
55-
github.com/gorilla/mux v1.8.0 // indirect
5655
github.com/gorilla/websocket v1.5.0 // indirect
5756
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
5857
github.com/hannahhoward/go-pubsub v0.0.0-20200423002714-8d62886cc36e // indirect
@@ -91,7 +90,7 @@ require (
9190
github.com/ipfs/go-unixfsnode v1.7.1 // indirect
9291
github.com/ipld/go-car/v2 v2.10.2-0.20230622090957-499d0c909d33 // indirect
9392
github.com/ipld/go-codec-dagpb v1.6.0 // indirect
94-
github.com/ipld/go-ipld-prime v0.20.0 // indirect
93+
github.com/ipld/go-ipld-prime v0.20.1-0.20230619045951-499e9b9c2024 // indirect
9594
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
9695
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
9796
github.com/jbenet/goprocess v0.1.4 // indirect
@@ -153,7 +152,6 @@ require (
153152
github.com/quic-go/quic-go v0.36.4 // indirect
154153
github.com/quic-go/webtransport-go v0.5.3 // indirect
155154
github.com/raulk/go-watchdog v1.3.0 // indirect
156-
github.com/samber/lo v1.36.0 // indirect
157155
github.com/spaolacci/murmur3 v1.1.0 // indirect
158156
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
159157
github.com/ucarion/urlpath v0.0.0-20200424170820-7ccc79b76bbb // indirect

docs/examples/kubo-as-a-library/go.sum

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJn
159159
github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY=
160160
github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
161161
github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og=
162-
github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
162+
github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA=
163163
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
164164
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
165165
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
@@ -270,7 +270,6 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m
270270
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
271271
github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c h1:7lF+Vz0LqiRidnzC1Oq86fpX1q/iEv2KJdrCtttYjT4=
272272
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
273-
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
274273
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
275274
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
276275
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
@@ -301,8 +300,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
301300
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
302301
github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs=
303302
github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0=
304-
github.com/ipfs/boxo v0.11.0 h1:urMxhZ3xoF4HssJVD3+0ssGT9pptEfHfbL8DYdoWFlg=
305-
github.com/ipfs/boxo v0.11.0/go.mod h1:8IfDmp+FzFGcF4zjAgHMVPpwYw4AjN9ePEzDfkaYJ1w=
303+
github.com/ipfs/boxo v0.11.1-0.20230809093309-ecc6fb41f53d h1:11P/IcImiaLEOFc+xGiFza4/xnVicYIcbyawQixF8Qg=
304+
github.com/ipfs/boxo v0.11.1-0.20230809093309-ecc6fb41f53d/go.mod h1:Tbv+IR9baTM1VprtVTUMC2EPu6lR4803DahiQk5IQMk=
306305
github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA=
307306
github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU=
308307
github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY=
@@ -398,8 +397,8 @@ github.com/ipld/go-codec-dagpb v1.6.0 h1:9nYazfyu9B1p3NAgfVdpRco3Fs2nFC72DqVsMj6
398397
github.com/ipld/go-codec-dagpb v1.6.0/go.mod h1:ANzFhfP2uMJxRBr8CE+WQWs5UsNa0pYtmKZ+agnUw9s=
399398
github.com/ipld/go-ipld-prime v0.11.0/go.mod h1:+WIAkokurHmZ/KwzDOMUuoeJgaRQktHtEaLglS3ZeV8=
400399
github.com/ipld/go-ipld-prime v0.14.1/go.mod h1:QcE4Y9n/ZZr8Ijg5bGPT0GqYWgZ1704nH0RDcQtgTP0=
401-
github.com/ipld/go-ipld-prime v0.20.0 h1:Ud3VwE9ClxpO2LkCYP7vWPc0Fo+dYdYzgxUJZ3uRG4g=
402-
github.com/ipld/go-ipld-prime v0.20.0/go.mod h1:PzqZ/ZR981eKbgdr3y2DJYeD/8bgMawdGVlJDE8kK+M=
400+
github.com/ipld/go-ipld-prime v0.20.1-0.20230619045951-499e9b9c2024 h1:HfSCtpmGw0fzCfhZKzASxVjNk8tA1oSCDEF/To3eVg0=
401+
github.com/ipld/go-ipld-prime v0.20.1-0.20230619045951-499e9b9c2024/go.mod h1:PRQpXNcJypaPiiSdarsrJABPkYrBvafwDl0B9HjujZ8=
403402
github.com/ipld/go-ipld-prime/storage/bsadapter v0.0.0-20230102063945-1a409dc236dd h1:gMlw/MhNr2Wtp5RwGdsW23cs+yCuj9k2ON7i9MiJlRo=
404403
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
405404
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
@@ -655,8 +654,6 @@ github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjR
655654
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
656655
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
657656
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=
658-
github.com/samber/lo v1.36.0 h1:4LaOxH1mHnbDGhTVE0i1z8v/lWaQW8AIfOD3HU4mSaw=
659-
github.com/samber/lo v1.36.0/go.mod h1:HLeWcJRRyLKp3+/XBJvOrerCQn9mhdKMHyd7IRlgeQ8=
660657
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
661658
github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY=
662659
github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM=
@@ -723,7 +720,6 @@ github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpP
723720
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=
724721
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
725722
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
726-
github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M=
727723
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk=
728724
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c h1:u6SKchux2yDvFQnDHS3lPnIRmfVJ5Sxy3ao2SIdysLQ=
729725
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM=
@@ -737,7 +733,7 @@ github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMI
737733
github.com/wangjia184/sortedset v0.0.0-20160527075905-f5d03557ba30/go.mod h1:YkocrP2K2tcw938x9gCOmT5G5eCD6jsTz0SZuyAqwIE=
738734
github.com/warpfork/go-testmark v0.3.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0=
739735
github.com/warpfork/go-testmark v0.9.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0=
740-
github.com/warpfork/go-testmark v0.11.0 h1:J6LnV8KpceDvo7spaNU4+DauH2n1x+6RaO2rJrmpQ9U=
736+
github.com/warpfork/go-testmark v0.12.1 h1:rMgCpJfwy1sJ50x0M0NgyphxYYPMOODIJHhsXyEHU0s=
741737
github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
742738
github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
743739
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ=

go.mod

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require (
1515
github.com/fsnotify/fsnotify v1.6.0
1616
github.com/google/uuid v1.3.0
1717
github.com/hashicorp/go-multierror v1.1.1
18-
github.com/ipfs/boxo v0.11.0
18+
github.com/ipfs/boxo v0.11.1-0.20230809093309-ecc6fb41f53d
1919
github.com/ipfs/go-block-format v0.1.2
2020
github.com/ipfs/go-cid v0.4.1
2121
github.com/ipfs/go-cidutil v0.1.0
@@ -39,7 +39,7 @@ require (
3939
github.com/ipld/go-car v0.5.0
4040
github.com/ipld/go-car/v2 v2.10.2-0.20230622090957-499d0c909d33
4141
github.com/ipld/go-codec-dagpb v1.6.0
42-
github.com/ipld/go-ipld-prime v0.20.0
42+
github.com/ipld/go-ipld-prime v0.20.1-0.20230619045951-499e9b9c2024
4343
github.com/jbenet/go-random v0.0.0-20190219211222-123a90aedc0c
4444
github.com/jbenet/go-temp-err-catcher v0.1.0
4545
github.com/jbenet/goprocess v0.1.4
@@ -198,7 +198,6 @@ require (
198198
github.com/quic-go/webtransport-go v0.5.3 // indirect
199199
github.com/raulk/go-watchdog v1.3.0 // indirect
200200
github.com/rs/cors v1.7.0 // indirect
201-
github.com/samber/lo v1.36.0 // indirect
202201
github.com/spaolacci/murmur3 v1.1.0 // indirect
203202
github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e // indirect
204203
github.com/tidwall/match v1.1.1 // indirect

0 commit comments

Comments
 (0)