Skip to content

Commit 03dd364

Browse files
committed
feat: expose routing v1 server via optional setting
1 parent 7220409 commit 03dd364

File tree

19 files changed

+352
-204
lines changed

19 files changed

+352
-204
lines changed

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: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- [Overview](#overview)
88
- [🔦 Highlights](#-highlights)
99
- [Mplex removal](#mplex-removal)
10+
- [Local Gateway: optional support for `/routing/v1` endpoint](#local-gateway-optional-support-for-routingv1-endpoint)
1011
- [📝 Changelog](#-changelog)
1112
- [👨‍👩‍👧‍👦 Contributors](#-contributors)
1213

@@ -23,6 +24,11 @@ New pieces of code rely on backpressure, that means the stream will dynamicaly
2324
slow down the sending rate if data is getting backed up.
2425
Backpressure is provided by Yamux and QUIC.
2526

27+
#### Local Gateway: optional support for `/routing/v1` endpoint
28+
29+
The local gateway, hosted at `127.0.0.1`, now supports the delegated [Routing V1](https://specs.ipfs.tech/routing/http-routing-v1/) API.
30+
This is disabled by default, but can be enabled by setting `Config.Gateway.ExposeRoutingAPI = true`.
31+
2632
### 📝 Changelog
2733

2834
### 👨‍👩‍👧‍👦 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.20230815101015-dd27fbece9ec
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.21.0 // 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
@@ -152,7 +151,6 @@ require (
152151
github.com/quic-go/quic-go v0.36.4 // indirect
153152
github.com/quic-go/webtransport-go v0.5.3 // indirect
154153
github.com/raulk/go-watchdog v1.3.0 // indirect
155-
github.com/samber/lo v1.36.0 // indirect
156154
github.com/spaolacci/murmur3 v1.1.0 // indirect
157155
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
158156
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.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
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.20230815101015-dd27fbece9ec h1:21ZBY3gFNVqnVFrum48ClP4IKPiyBKzKowAvuqLsHew=
304+
github.com/ipfs/boxo v0.11.1-0.20230815101015-dd27fbece9ec/go.mod h1:xAnfiU6PtxWCnRqu7dcXQ10bB5/kvI1kXRotuGqGBhg=
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.21.0 h1:n4JmcpOlPDIxBcY037SVfpd1G+Sj1nKZah0m6QH9C2E=
401+
github.com/ipld/go-ipld-prime v0.21.0/go.mod h1:3RLqy//ERg/y5oShXXdx5YIp50cFGOanyMctpPjsvxQ=
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=
@@ -653,8 +652,6 @@ github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjR
653652
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
654653
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
655654
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=
656-
github.com/samber/lo v1.36.0 h1:4LaOxH1mHnbDGhTVE0i1z8v/lWaQW8AIfOD3HU4mSaw=
657-
github.com/samber/lo v1.36.0/go.mod h1:HLeWcJRRyLKp3+/XBJvOrerCQn9mhdKMHyd7IRlgeQ8=
658655
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
659656
github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY=
660657
github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM=
@@ -721,7 +718,6 @@ github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpP
721718
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=
722719
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
723720
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
724-
github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M=
725721
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk=
726722
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c h1:u6SKchux2yDvFQnDHS3lPnIRmfVJ5Sxy3ao2SIdysLQ=
727723
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM=
@@ -735,7 +731,7 @@ github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMI
735731
github.com/wangjia184/sortedset v0.0.0-20160527075905-f5d03557ba30/go.mod h1:YkocrP2K2tcw938x9gCOmT5G5eCD6jsTz0SZuyAqwIE=
736732
github.com/warpfork/go-testmark v0.3.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0=
737733
github.com/warpfork/go-testmark v0.9.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0=
738-
github.com/warpfork/go-testmark v0.11.0 h1:J6LnV8KpceDvo7spaNU4+DauH2n1x+6RaO2rJrmpQ9U=
734+
github.com/warpfork/go-testmark v0.12.1 h1:rMgCpJfwy1sJ50x0M0NgyphxYYPMOODIJHhsXyEHU0s=
739735
github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
740736
github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
741737
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.20230815101015-dd27fbece9ec
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.21.0
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
@@ -197,7 +197,6 @@ require (
197197
github.com/quic-go/webtransport-go v0.5.3 // indirect
198198
github.com/raulk/go-watchdog v1.3.0 // indirect
199199
github.com/rs/cors v1.7.0 // indirect
200-
github.com/samber/lo v1.36.0 // indirect
201200
github.com/spaolacci/murmur3 v1.1.0 // indirect
202201
github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e // indirect
203202
github.com/tidwall/match v1.1.1 // indirect

0 commit comments

Comments
 (0)