Upgraded to orbit 1.18.0 and kubo 0.16

pull/53/head
マリウス 2 years ago
parent dad27bc85d
commit 305a075614
No known key found for this signature in database

@ -1,317 +1,315 @@
package database package database
import ( import (
"context" "context"
"sort" "sort"
"sync" "sync"
"time" "time"
orbitdb "berty.tech/go-orbit-db" orbitdb "berty.tech/go-orbit-db"
"berty.tech/go-orbit-db/accesscontroller" "berty.tech/go-orbit-db/accesscontroller"
"berty.tech/go-orbit-db/iface" "berty.tech/go-orbit-db/iface"
"berty.tech/go-orbit-db/stores" "berty.tech/go-orbit-db/stores"
"berty.tech/go-orbit-db/stores/documentstore" "berty.tech/go-orbit-db/stores/documentstore"
config "github.com/ipfs/go-ipfs-config" config "github.com/ipfs/go-ipfs-config"
"github.com/ipfs/go-ipfs/core" icore "github.com/ipfs/interface-go-ipfs-core"
icore "github.com/ipfs/interface-go-ipfs-core" "github.com/ipfs/kubo/core"
"github.com/libp2p/go-libp2p-core/crypto" "github.com/libp2p/go-libp2p/core/crypto"
"github.com/libp2p/go-libp2p-core/peer" "github.com/libp2p/go-libp2p/core/event"
"github.com/libp2p/go-libp2p-core/event" "github.com/libp2p/go-libp2p/core/peer"
"github.com/mitchellh/mapstructure" "github.com/mitchellh/mapstructure"
"go.uber.org/zap" "go.uber.org/zap"
"github.com/mrusme/superhighway84/cache" "github.com/mrusme/superhighway84/cache"
"github.com/mrusme/superhighway84/models" "github.com/mrusme/superhighway84/models"
) )
type Database struct { type Database struct {
ctx context.Context ctx context.Context
ConnectionString string ConnectionString string
URI string URI string
CachePath string CachePath string
Cache *cache.Cache Cache *cache.Cache
Logger *zap.Logger Logger *zap.Logger
IPFSNode *core.IpfsNode IPFSNode *core.IpfsNode
IPFSCoreAPI icore.CoreAPI IPFSCoreAPI icore.CoreAPI
OrbitDB orbitdb.OrbitDB OrbitDB orbitdb.OrbitDB
Store orbitdb.DocumentStore Store orbitdb.DocumentStore
Events event.Subscription Events event.Subscription
} }
func (db *Database) init() (error) { func (db *Database) init() error {
var err error var err error
ctx := context.Background() ctx := context.Background()
db.Logger.Debug("initializing NewOrbitDB ...") db.Logger.Debug("initializing NewOrbitDB ...")
db.OrbitDB, err = orbitdb.NewOrbitDB(ctx, db.IPFSCoreAPI, &orbitdb.NewOrbitDBOptions{ db.OrbitDB, err = orbitdb.NewOrbitDB(ctx, db.IPFSCoreAPI, &orbitdb.NewOrbitDBOptions{
Directory: &db.CachePath, Directory: &db.CachePath,
Logger: db.Logger, Logger: db.Logger,
}) })
if err != nil { if err != nil {
return err return err
} }
ac := &accesscontroller.CreateAccessControllerOptions{ ac := &accesscontroller.CreateAccessControllerOptions{
Access: map[string][]string{ Access: map[string][]string{
"write": { "write": {
"*", "*",
}, },
}, },
} }
if err != nil { if err != nil {
return err return err
} }
// addr, err := db.OrbitDB.DetermineAddress(db.ctx, db.Name, "docstore", &orbitdb.DetermineAddressOptions{}) // addr, err := db.OrbitDB.DetermineAddress(db.ctx, db.Name, "docstore", &orbitdb.DetermineAddressOptions{})
// if err != nil { // if err != nil {
// return err // return err
// } // }
// db.URI = addr.String() // db.URI = addr.String()
storetype := "docstore" storetype := "docstore"
db.Logger.Debug("initializing OrbitDB.Docs ...") db.Logger.Debug("initializing OrbitDB.Docs ...")
db.Store, err = db.OrbitDB.Docs(ctx, db.ConnectionString, &orbitdb.CreateDBOptions{ db.Store, err = db.OrbitDB.Docs(ctx, db.ConnectionString, &orbitdb.CreateDBOptions{
AccessController: ac, AccessController: ac,
StoreType: &storetype, StoreType: &storetype,
StoreSpecificOpts: documentstore.DefaultStoreOptsForMap("id"), StoreSpecificOpts: documentstore.DefaultStoreOptsForMap("id"),
Timeout: time.Second * 600, Timeout: time.Second * 600,
}) })
if err != nil { if err != nil {
return err return err
} }
db.Logger.Debug("subscribing to EventBus ...") db.Logger.Debug("subscribing to EventBus ...")
db.Events, err = db.Store.EventBus().Subscribe(new(stores.EventReady)) db.Events, err = db.Store.EventBus().Subscribe(new(stores.EventReady))
return nil return nil
} }
func(db *Database) GetOwnID() string { func (db *Database) GetOwnID() string {
return db.OrbitDB.Identity().ID return db.OrbitDB.Identity().ID
} }
func(db *Database) GetOwnPubKey() crypto.PubKey { func (db *Database) GetOwnPubKey() crypto.PubKey {
pubKey, err := db.OrbitDB.Identity().GetPublicKey() pubKey, err := db.OrbitDB.Identity().GetPublicKey()
if err != nil { if err != nil {
return nil return nil
} }
return pubKey return pubKey
} }
func(db *Database) connectToPeers() error { func (db *Database) connectToPeers() error {
var wg sync.WaitGroup var wg sync.WaitGroup
peerInfos, err := config.DefaultBootstrapPeers() peerInfos, err := config.DefaultBootstrapPeers()
if err != nil { if err != nil {
return err return err
} }
wg.Add(len(peerInfos)) wg.Add(len(peerInfos))
for _, peerInfo := range peerInfos { for _, peerInfo := range peerInfos {
go func(peerInfo *peer.AddrInfo) { go func(peerInfo *peer.AddrInfo) {
defer wg.Done() defer wg.Done()
err := db.IPFSCoreAPI.Swarm().Connect(db.ctx, *peerInfo) err := db.IPFSCoreAPI.Swarm().Connect(db.ctx, *peerInfo)
if err != nil { if err != nil {
db.Logger.Error("failed to connect", zap.String("peerID", peerInfo.ID.String()), zap.Error(err)) db.Logger.Error("failed to connect", zap.String("peerID", peerInfo.ID.String()), zap.Error(err))
} else { } else {
db.Logger.Debug("connected!", zap.String("peerID", peerInfo.ID.String())) db.Logger.Debug("connected!", zap.String("peerID", peerInfo.ID.String()))
} }
}(&peerInfo) }(&peerInfo)
} }
wg.Wait() wg.Wait()
return nil return nil
} }
func NewDatabase( func NewDatabase(
ctx context.Context, ctx context.Context,
dbConnectionString string, dbConnectionString string,
dbCache string, dbCache string,
cch *cache.Cache, cch *cache.Cache,
logger *zap.Logger, logger *zap.Logger,
) (*Database, error) { ) (*Database, error) {
var err error var err error
db := new(Database) db := new(Database)
db.ctx = ctx db.ctx = ctx
db.ConnectionString = dbConnectionString db.ConnectionString = dbConnectionString
db.CachePath = dbCache db.CachePath = dbCache
db.Cache = cch db.Cache = cch
db.Logger = logger db.Logger = logger
db.Logger.Debug("getting config root path ...") db.Logger.Debug("getting config root path ...")
defaultPath, err := config.PathRoot() defaultPath, err := config.PathRoot()
if err != nil { if err != nil {
return nil, err return nil, err
} }
db.Logger.Debug("setting up plugins ...") db.Logger.Debug("setting up plugins ...")
if err := setupPlugins(defaultPath); err != nil { if err := setupPlugins(defaultPath); err != nil {
return nil, err return nil, err
} }
db.Logger.Debug("creating IPFS node ...") db.Logger.Debug("creating IPFS node ...")
db.IPFSNode, db.IPFSCoreAPI, err = createNode(ctx, defaultPath) db.IPFSNode, db.IPFSCoreAPI, err = createNode(ctx, defaultPath)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return db, nil return db, nil
} }
func (db *Database) Connect(onReady func(address string)) (error) { func (db *Database) Connect(onReady func(address string)) error {
var err error var err error
db.Logger.Info("connecting to peers ...") db.Logger.Info("connecting to peers ...")
// go func() { // go func() {
err = db.connectToPeers() err = db.connectToPeers()
if err != nil { if err != nil {
db.Logger.Error("failed to connect: %s", zap.Error(err)) db.Logger.Error("failed to connect: %s", zap.Error(err))
} else { } else {
db.Logger.Debug("connected to peer!") db.Logger.Debug("connected to peer!")
} }
// }() // }()
db.Logger.Info("initializing database connection ...")
db.Logger.Info("initializing database connection ...") // if db.Init {
// if db.Init { err = db.init()
err = db.init() if err != nil {
if err != nil { db.Logger.Error("%s", zap.Error(err))
db.Logger.Error("%s", zap.Error(err)) return err
return err }
} // } else {
// } else { // err = db.open()
// err = db.open() // if err != nil {
// if err != nil { // return err
// return err // }
// } // }
// }
db.Logger.Info("running ...")
db.Logger.Info("running ...")
go func() {
go func() { for {
for { for ev := range db.Events.Out() {
for ev := range db.Events.Out() { db.Logger.Debug("got event", zap.Any("event", ev))
db.Logger.Debug("got event", zap.Any("event", ev)) switch ev.(type) {
switch ev.(type) { case stores.EventReady:
case stores.EventReady: db.URI = db.Store.Address().String()
db.URI = db.Store.Address().String() onReady(db.URI)
onReady(db.URI) continue
continue }
} }
} }
} }()
}()
err = db.Store.Load(db.ctx, -1)
err = db.Store.Load(db.ctx, -1) if err != nil {
if err != nil { db.Logger.Error("%s", zap.Error(err))
db.Logger.Error("%s", zap.Error(err)) // TODO: clean up
// TODO: clean up return err
return err }
}
db.Logger.Debug("connect done")
db.Logger.Debug("connect done") return nil
return nil
} }
func (db *Database) Disconnect() { func (db *Database) Disconnect() {
db.Events.Close() db.Events.Close()
db.Store.Close() db.Store.Close()
db.OrbitDB.Close() db.OrbitDB.Close()
} }
func (db *Database) SubmitArticle(article *models.Article) (error) { func (db *Database) SubmitArticle(article *models.Article) error {
entity, err := structToMap(*article) entity, err := structToMap(*article)
if err != nil { if err != nil {
return err return err
} }
entity["type"] = "article" entity["type"] = "article"
_, err = db.Store.Put(db.ctx, entity) _, err = db.Store.Put(db.ctx, entity)
return err return err
} }
func (db *Database) GetArticleByID(id string) (models.Article, error) { func (db *Database) GetArticleByID(id string) (models.Article, error) {
entity, err := db.Store.Get(db.ctx, id, &iface.DocumentStoreGetOptions{CaseInsensitive: false}) entity, err := db.Store.Get(db.ctx, id, &iface.DocumentStoreGetOptions{CaseInsensitive: false})
if err != nil { if err != nil {
return models.Article{}, err return models.Article{}, err
} }
var article models.Article var article models.Article
err = mapstructure.Decode(entity[0], &article) err = mapstructure.Decode(entity[0], &article)
if err != nil { if err != nil {
return models.Article{}, err return models.Article{}, err
} }
return article, nil return article, nil
} }
func (db *Database) ListArticles() ([]*models.Article, []*models.Article, error) { func (db *Database) ListArticles() ([]*models.Article, []*models.Article, error) {
var articles []*models.Article var articles []*models.Article
var articlesMap map[string]*models.Article var articlesMap map[string]*models.Article
articlesMap = make(map[string]*models.Article) articlesMap = make(map[string]*models.Article)
_, err := db.Store.Query(db.ctx, func(e interface{})(bool, error) { _, err := db.Store.Query(db.ctx, func(e interface{}) (bool, error) {
entity := e.(map[string]interface{}) entity := e.(map[string]interface{})
if entity["type"] == "article" { if entity["type"] == "article" {
var article models.Article var article models.Article
err := mapstructure.Decode(entity, &article) err := mapstructure.Decode(entity, &article)
if err == nil { if err == nil {
// TODO: Not sure why mapstructure won't convert this field and simply // TODO: Not sure why mapstructure won't convert this field and simply
// leave it "" // leave it ""
if entity["in-reply-to-id"] != nil { if entity["in-reply-to-id"] != nil {
article.InReplyToID = entity["in-reply-to-id"].(string) article.InReplyToID = entity["in-reply-to-id"].(string)
} }
db.Cache.LoadArticle(&article) db.Cache.LoadArticle(&article)
articles = append(articles, &article) articles = append(articles, &article)
articlesMap[article.ID] = articles[(len(articles) - 1)] articlesMap[article.ID] = articles[(len(articles) - 1)]
} }
return true, err return true, err
} }
return false, nil return false, nil
}) })
if err != nil { if err != nil {
return articles, nil, err return articles, nil, err
} }
sort.SliceStable(articles, func(i, j int) bool { sort.SliceStable(articles, func(i, j int) bool {
return articles[i].Date > articles[j].Date return articles[i].Date > articles[j].Date
}) })
var articlesRoots []*models.Article var articlesRoots []*models.Article
for i := 0; i < len(articles); i++ { for i := 0; i < len(articles); i++ {
if articles[i].InReplyToID != "" { if articles[i].InReplyToID != "" {
inReplyTo := articles[i].InReplyToID inReplyTo := articles[i].InReplyToID
if _, exist := articlesMap[inReplyTo]; exist == true { if _, exist := articlesMap[inReplyTo]; exist == true {
(*articlesMap[inReplyTo]).Replies = (*articlesMap[inReplyTo]).Replies =
append((*articlesMap[inReplyTo]).Replies, articles[i]) append((*articlesMap[inReplyTo]).Replies, articles[i])
(*articlesMap[inReplyTo]).LatestReply = articles[i].Date (*articlesMap[inReplyTo]).LatestReply = articles[i].Date
continue continue
} }
} }
articlesRoots = append(articlesRoots, articles[i]) articlesRoots = append(articlesRoots, articles[i])
} }
sort.SliceStable(articlesRoots, func(i, j int) bool { sort.SliceStable(articlesRoots, func(i, j int) bool {
iLatest := articlesRoots[i].LatestReply iLatest := articlesRoots[i].LatestReply
if iLatest <= 0 { if iLatest <= 0 {
iLatest = articlesRoots[i].Date iLatest = articlesRoots[i].Date
} }
jLatest := articlesRoots[j].LatestReply jLatest := articlesRoots[j].LatestReply
if jLatest <= 0 { if jLatest <= 0 {
jLatest = articlesRoots[j].Date jLatest = articlesRoots[j].Date
} }
return iLatest > jLatest return iLatest > jLatest
}) })
return articles, articlesRoots, nil return articles, articlesRoots, nil
} }

@ -1,88 +1,87 @@
package database package database
import ( import (
"context" "context"
"fmt" "fmt"
"os" "os"
"path/filepath" "path/filepath"
files "github.com/ipfs/go-ipfs-files" files "github.com/ipfs/go-ipfs-files"
"github.com/ipfs/go-ipfs/core" icore "github.com/ipfs/interface-go-ipfs-core"
"github.com/ipfs/go-ipfs/core/coreapi" "github.com/ipfs/kubo/core"
"github.com/ipfs/go-ipfs/core/node/libp2p" "github.com/ipfs/kubo/core/coreapi"
"github.com/ipfs/go-ipfs/plugin/loader" "github.com/ipfs/kubo/core/node/libp2p"
"github.com/ipfs/go-ipfs/repo/fsrepo" "github.com/ipfs/kubo/plugin/loader"
icore "github.com/ipfs/interface-go-ipfs-core" "github.com/ipfs/kubo/repo/fsrepo"
"github.com/mitchellh/mapstructure" "github.com/mitchellh/mapstructure"
) )
func setupPlugins(path string) error { func setupPlugins(path string) error {
plugins, err := loader.NewPluginLoader(filepath.Join(path, "plugins")) plugins, err := loader.NewPluginLoader(filepath.Join(path, "plugins"))
if err != nil { if err != nil {
return fmt.Errorf("error loading plugins: %s", err) return fmt.Errorf("error loading plugins: %s", err)
} }
if err := plugins.Initialize(); err != nil { if err := plugins.Initialize(); err != nil {
return fmt.Errorf("error initializing plugins: %s", err) return fmt.Errorf("error initializing plugins: %s", err)
} }
if err := plugins.Inject(); err != nil { if err := plugins.Inject(); err != nil {
return fmt.Errorf("error initializing plugins: %s", err) return fmt.Errorf("error initializing plugins: %s", err)
} }
return nil return nil
} }
func createNode(ctx context.Context, repoPath string) (*core.IpfsNode, icore.CoreAPI, error) { func createNode(ctx context.Context, repoPath string) (*core.IpfsNode, icore.CoreAPI, error) {
repo, err := fsrepo.Open(repoPath) repo, err := fsrepo.Open(repoPath)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
nodeOptions := &core.BuildCfg{ nodeOptions := &core.BuildCfg{
Online: true, Online: true,
Routing: libp2p.DHTClientOption, // DHTOption Routing: libp2p.DHTClientOption, // DHTOption
Repo: repo, Repo: repo,
ExtraOpts: map[string]bool{ ExtraOpts: map[string]bool{
"pubsub": true, "pubsub": true,
}, },
} }
node, err := core.NewNode(ctx, nodeOptions) node, err := core.NewNode(ctx, nodeOptions)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
coreAPI, err := coreapi.NewCoreAPI(node) coreAPI, err := coreapi.NewCoreAPI(node)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
return node, coreAPI, nil return node, coreAPI, nil
} }
func getUnixfsNode(path string) (files.Node, error) { func getUnixfsNode(path string) (files.Node, error) {
st, err := os.Stat(path) st, err := os.Stat(path)
if err != nil { if err != nil {
return nil, err return nil, err
} }
f, err := files.NewSerialFile(path, false, st) f, err := files.NewSerialFile(path, false, st)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return f, nil return f, nil
} }
func structToMap(v interface{}) (map[string]interface{}, error) { func structToMap(v interface{}) (map[string]interface{}, error) {
vMap := &map[string]interface{}{} vMap := &map[string]interface{}{}
err := mapstructure.Decode(v, &vMap) err := mapstructure.Decode(v, &vMap)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return *vMap, nil return *vMap, nil
} }

242
go.mod

@ -3,86 +3,97 @@ module github.com/mrusme/superhighway84
go 1.18 go 1.18
require ( require (
berty.tech/go-orbit-db v1.17.1 berty.tech/go-orbit-db v1.18.0
github.com/BurntSushi/toml v1.2.0 github.com/BurntSushi/toml v1.2.0
github.com/eliukblau/pixterm v1.3.1 github.com/eliukblau/pixterm v1.3.1
github.com/gdamore/tcell/v2 v2.5.2 github.com/gdamore/tcell/v2 v2.5.2
github.com/go-playground/validator/v10 v10.11.0 github.com/go-playground/validator/v10 v10.11.0
github.com/google/uuid v1.3.0 github.com/google/uuid v1.3.0
github.com/ipfs/go-ipfs v0.12.2
github.com/ipfs/go-ipfs-config v0.18.0 github.com/ipfs/go-ipfs-config v0.18.0
github.com/ipfs/go-ipfs-files v0.0.9 github.com/ipfs/go-ipfs-files v0.1.1
github.com/ipfs/interface-go-ipfs-core v0.5.2 github.com/ipfs/interface-go-ipfs-core v0.7.0
github.com/libp2p/go-libp2p-core v0.13.0 github.com/ipfs/kubo v0.16.0
github.com/libp2p/go-libp2p v0.23.3
github.com/mitchellh/mapstructure v1.5.0 github.com/mitchellh/mapstructure v1.5.0
github.com/rivo/tview v0.0.0-20220731115447-9d32d269593e github.com/rivo/tview v0.0.0-20220731115447-9d32d269593e
github.com/tidwall/buntdb v1.2.9 github.com/tidwall/buntdb v1.2.9
go.uber.org/zap v1.21.0 go.uber.org/zap v1.23.0
) )
require ( require (
bazil.org/fuse v0.0.0-20200117225306-7b5117fecadc // indirect bazil.org/fuse v0.0.0-20200117225306-7b5117fecadc // indirect
berty.tech/go-ipfs-log v1.8.0 // indirect berty.tech/go-ipfs-log v1.9.0 // indirect
github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect
github.com/Stebalien/go-bitfield v0.0.1 // indirect github.com/Stebalien/go-bitfield v0.0.1 // indirect
github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a // indirect github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a // indirect
github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 // indirect github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 // indirect
github.com/benbjohnson/clock v1.1.0 // indirect github.com/benbjohnson/clock v1.3.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect github.com/blang/semver/v4 v4.0.0 // indirect
github.com/btcsuite/btcd v0.22.0-beta // indirect github.com/btcsuite/btcd v0.22.1 // indirect
github.com/cenkalti/backoff v2.2.1+incompatible // indirect github.com/cenkalti/backoff v2.2.1+incompatible // indirect
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
github.com/ceramicnetwork/go-dag-jose v0.1.0 // indirect github.com/ceramicnetwork/go-dag-jose v0.1.0 // indirect
github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.1.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/cheekybits/genny v1.0.0 // indirect github.com/containerd/cgroups v1.0.4 // indirect
github.com/coreos/go-systemd/v22 v22.4.0 // indirect
github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 // indirect github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 // indirect
github.com/cskr/pubsub v1.0.2 // indirect github.com/cskr/pubsub v1.0.2 // indirect
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect
github.com/dgraph-io/badger v1.6.2 // indirect github.com/dgraph-io/badger v1.6.2 // indirect
github.com/dgraph-io/ristretto v0.0.2 // indirect github.com/dgraph-io/ristretto v0.0.2 // indirect
github.com/disintegration/imaging v1.6.2 // indirect github.com/disintegration/imaging v1.6.2 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect
github.com/elastic/gosigar v0.14.2 // indirect
github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5 // indirect github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5 // indirect
github.com/flynn/noise v1.0.0 // indirect github.com/flynn/noise v1.0.0 // indirect
github.com/francoispqt/gojay v1.2.13 // indirect github.com/francoispqt/gojay v1.2.13 // indirect
github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect
github.com/gdamore/encoding v1.0.0 // indirect github.com/gdamore/encoding v1.0.0 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/locales v0.14.0 // indirect
github.com/go-playground/universal-translator v0.18.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.2 // indirect github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.1 // indirect github.com/golang/snappy v0.0.4 // indirect
github.com/google/gopacket v1.1.19 // indirect github.com/google/gopacket v1.1.19 // indirect
github.com/gorilla/websocket v1.4.2 // indirect github.com/gorilla/websocket v1.5.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
github.com/hannahhoward/go-pubsub v0.0.0-20200423002714-8d62886cc36e // indirect github.com/hannahhoward/go-pubsub v0.0.0-20200423002714-8d62886cc36e // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/huin/goupnp v1.0.2 // indirect github.com/huin/goupnp v1.0.3 // indirect
github.com/ipfs/bbloom v0.0.4 // indirect github.com/ipfs/bbloom v0.0.4 // indirect
github.com/ipfs/go-bitfield v1.0.0 // indirect github.com/ipfs/go-bitfield v1.0.0 // indirect
github.com/ipfs/go-bitswap v0.5.1 // indirect github.com/ipfs/go-bitswap v0.10.2 // indirect
github.com/ipfs/go-block-format v0.0.3 // indirect github.com/ipfs/go-block-format v0.0.3 // indirect
github.com/ipfs/go-blockservice v0.2.1 // indirect github.com/ipfs/go-blockservice v0.4.0 // indirect
github.com/ipfs/go-cid v0.1.0 // indirect github.com/ipfs/go-cid v0.3.2 // indirect
github.com/ipfs/go-cidutil v0.0.2 // indirect github.com/ipfs/go-cidutil v0.1.0 // indirect
github.com/ipfs/go-datastore v0.5.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect
github.com/ipfs/go-delegated-routing v0.6.0 // indirect
github.com/ipfs/go-ds-badger v0.3.0 // indirect github.com/ipfs/go-ds-badger v0.3.0 // indirect
github.com/ipfs/go-ds-flatfs v0.5.1 // indirect github.com/ipfs/go-ds-flatfs v0.5.1 // indirect
github.com/ipfs/go-ds-leveldb v0.5.0 // indirect github.com/ipfs/go-ds-leveldb v0.5.0 // indirect
github.com/ipfs/go-ds-measure v0.2.0 // indirect github.com/ipfs/go-ds-measure v0.2.0 // indirect
github.com/ipfs/go-fetcher v1.6.1 // indirect github.com/ipfs/go-fetcher v1.6.1 // indirect
github.com/ipfs/go-filestore v1.1.0 // indirect github.com/ipfs/go-filestore v1.2.0 // indirect
github.com/ipfs/go-fs-lock v0.0.7 // indirect github.com/ipfs/go-fs-lock v0.0.7 // indirect
github.com/ipfs/go-graphsync v0.11.0 // indirect github.com/ipfs/go-graphsync v0.13.1 // indirect
github.com/ipfs/go-ipfs-blockstore v1.1.2 // indirect github.com/ipfs/go-ipfs-blockstore v1.2.0 // indirect
github.com/ipfs/go-ipfs-chunker v0.0.5 // indirect github.com/ipfs/go-ipfs-chunker v0.0.5 // indirect
github.com/ipfs/go-ipfs-delay v0.0.1 // indirect github.com/ipfs/go-ipfs-delay v0.0.1 // indirect
github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect
github.com/ipfs/go-ipfs-exchange-interface v0.1.0 // indirect github.com/ipfs/go-ipfs-exchange-interface v0.2.0 // indirect
github.com/ipfs/go-ipfs-exchange-offline v0.1.1 // indirect github.com/ipfs/go-ipfs-exchange-offline v0.3.0 // indirect
github.com/ipfs/go-ipfs-keystore v0.0.2 // indirect github.com/ipfs/go-ipfs-keystore v0.0.2 // indirect
github.com/ipfs/go-ipfs-pinner v0.2.1 // indirect github.com/ipfs/go-ipfs-pinner v0.2.1 // indirect
github.com/ipfs/go-ipfs-posinfo v0.0.1 // indirect github.com/ipfs/go-ipfs-posinfo v0.0.1 // indirect
@ -91,149 +102,142 @@ require (
github.com/ipfs/go-ipfs-routing v0.2.1 // indirect github.com/ipfs/go-ipfs-routing v0.2.1 // indirect
github.com/ipfs/go-ipfs-util v0.0.2 // indirect github.com/ipfs/go-ipfs-util v0.0.2 // indirect
github.com/ipfs/go-ipld-cbor v0.0.6 // indirect github.com/ipfs/go-ipld-cbor v0.0.6 // indirect
github.com/ipfs/go-ipld-format v0.2.0 // indirect github.com/ipfs/go-ipld-format v0.4.0 // indirect
github.com/ipfs/go-ipld-git v0.1.1 // indirect github.com/ipfs/go-ipld-git v0.1.1 // indirect
github.com/ipfs/go-ipld-legacy v0.1.0 // indirect github.com/ipfs/go-ipld-legacy v0.1.1 // indirect
github.com/ipfs/go-ipns v0.1.2 // indirect github.com/ipfs/go-ipns v0.3.0 // indirect
github.com/ipfs/go-log v1.0.5 // indirect github.com/ipfs/go-log v1.0.5 // indirect
github.com/ipfs/go-log/v2 v2.4.0 // indirect github.com/ipfs/go-log/v2 v2.5.1 // indirect
github.com/ipfs/go-merkledag v0.5.1 // indirect github.com/ipfs/go-merkledag v0.6.0 // indirect
github.com/ipfs/go-metrics-interface v0.0.1 // indirect github.com/ipfs/go-metrics-interface v0.0.1 // indirect
github.com/ipfs/go-mfs v0.2.1 // indirect github.com/ipfs/go-mfs v0.2.1 // indirect
github.com/ipfs/go-namesys v0.4.0 // indirect github.com/ipfs/go-namesys v0.5.0 // indirect
github.com/ipfs/go-path v0.2.1 // indirect github.com/ipfs/go-path v0.3.0 // indirect
github.com/ipfs/go-peertaskqueue v0.7.0 // indirect github.com/ipfs/go-peertaskqueue v0.7.1 // indirect
github.com/ipfs/go-unixfs v0.3.1 // indirect github.com/ipfs/go-unixfs v0.4.0 // indirect
github.com/ipfs/go-unixfsnode v1.1.3 // indirect github.com/ipfs/go-unixfsnode v1.4.0 // indirect
github.com/ipfs/go-verifcid v0.0.1 // indirect github.com/ipfs/go-verifcid v0.0.2 // indirect
github.com/ipld/go-codec-dagpb v1.3.2 // indirect github.com/ipld/edelweiss v0.2.0 // indirect
github.com/ipld/go-ipld-prime v0.14.2 // indirect github.com/ipld/go-codec-dagpb v1.4.1 // indirect
github.com/ipld/go-ipld-prime v0.18.0 // indirect
github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
github.com/jbenet/goprocess v0.1.4 // indirect github.com/jbenet/goprocess v0.1.4 // indirect
github.com/klauspost/compress v1.11.7 // indirect github.com/klauspost/compress v1.15.10 // indirect
github.com/klauspost/cpuid/v2 v2.0.9 // indirect github.com/klauspost/cpuid/v2 v2.1.1 // indirect
github.com/koron/go-ssdp v0.0.2 // indirect github.com/koron/go-ssdp v0.0.3 // indirect
github.com/leodido/go-urn v1.2.1 // indirect github.com/leodido/go-urn v1.2.1 // indirect
github.com/libp2p/go-addr-util v0.1.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect
github.com/libp2p/go-buffer-pool v0.0.2 // indirect
github.com/libp2p/go-cidranger v1.1.0 // indirect github.com/libp2p/go-cidranger v1.1.0 // indirect
github.com/libp2p/go-conn-security-multistream v0.3.0 // indirect github.com/libp2p/go-doh-resolver v0.4.0 // indirect
github.com/libp2p/go-doh-resolver v0.3.1 // indirect github.com/libp2p/go-flow-metrics v0.1.0 // indirect
github.com/libp2p/go-eventbus v0.2.1 // indirect github.com/libp2p/go-libp2p-asn-util v0.2.0 // indirect
github.com/libp2p/go-flow-metrics v0.0.3 // indirect github.com/libp2p/go-libp2p-core v0.20.1 // indirect
github.com/libp2p/go-libp2p v0.17.0 // indirect github.com/libp2p/go-libp2p-kad-dht v0.18.0 // indirect
github.com/libp2p/go-libp2p-asn-util v0.1.0 // indirect
github.com/libp2p/go-libp2p-autonat v0.7.0 // indirect
github.com/libp2p/go-libp2p-blankhost v0.3.0 // indirect
github.com/libp2p/go-libp2p-connmgr v0.2.4 // indirect
github.com/libp2p/go-libp2p-discovery v0.6.0 // indirect
github.com/libp2p/go-libp2p-kad-dht v0.15.0 // indirect
github.com/libp2p/go-libp2p-kbucket v0.4.7 // indirect github.com/libp2p/go-libp2p-kbucket v0.4.7 // indirect
github.com/libp2p/go-libp2p-loggables v0.1.0 // indirect github.com/libp2p/go-libp2p-pubsub v0.8.1 // indirect
github.com/libp2p/go-libp2p-mplex v0.4.1 // indirect
github.com/libp2p/go-libp2p-nat v0.1.0 // indirect
github.com/libp2p/go-libp2p-noise v0.3.0 // indirect
github.com/libp2p/go-libp2p-peerstore v0.6.0 // indirect
github.com/libp2p/go-libp2p-pnet v0.2.0 // indirect
github.com/libp2p/go-libp2p-pubsub v0.6.0 // indirect
github.com/libp2p/go-libp2p-pubsub-router v0.5.0 // indirect github.com/libp2p/go-libp2p-pubsub-router v0.5.0 // indirect
github.com/libp2p/go-libp2p-quic-transport v0.15.2 // indirect github.com/libp2p/go-libp2p-record v0.2.0 // indirect
github.com/libp2p/go-libp2p-record v0.1.3 // indirect github.com/libp2p/go-libp2p-routing-helpers v0.4.0 // indirect
github.com/libp2p/go-libp2p-routing-helpers v0.2.3 // indirect github.com/libp2p/go-libp2p-xor v0.1.0 // indirect
github.com/libp2p/go-libp2p-swarm v0.9.0 // indirect github.com/libp2p/go-mplex v0.7.0 // indirect
github.com/libp2p/go-libp2p-tls v0.3.1 // indirect github.com/libp2p/go-msgio v0.2.0 // indirect
github.com/libp2p/go-libp2p-transport-upgrader v0.6.0 // indirect
github.com/libp2p/go-libp2p-xor v0.0.0-20210714161855-5c005aca55db // indirect
github.com/libp2p/go-libp2p-yamux v0.7.0 // indirect
github.com/libp2p/go-maddr-filter v0.1.0 // indirect
github.com/libp2p/go-mplex v0.3.0 // indirect
github.com/libp2p/go-msgio v0.1.0 // indirect
github.com/libp2p/go-nat v0.1.0 // indirect github.com/libp2p/go-nat v0.1.0 // indirect
github.com/libp2p/go-netroute v0.1.6 // indirect github.com/libp2p/go-netroute v0.2.0 // indirect
github.com/libp2p/go-openssl v0.0.7 // indirect github.com/libp2p/go-openssl v0.1.0 // indirect
github.com/libp2p/go-reuseport v0.1.0 // indirect github.com/libp2p/go-reuseport v0.2.0 // indirect
github.com/libp2p/go-reuseport-transport v0.1.0 // indirect github.com/libp2p/go-yamux/v4 v4.0.0 // indirect
github.com/libp2p/go-sockaddr v0.1.1 // indirect github.com/libp2p/zeroconf/v2 v2.2.0 // indirect
github.com/libp2p/go-stream-muxer-multistream v0.3.0 // indirect github.com/lucas-clemente/quic-go v0.29.1 // indirect
github.com/libp2p/go-tcp-transport v0.4.0 // indirect
github.com/libp2p/go-ws-transport v0.5.0 // indirect
github.com/libp2p/go-yamux/v2 v2.3.0 // indirect
github.com/libp2p/zeroconf/v2 v2.1.1 // indirect
github.com/lucas-clemente/quic-go v0.26.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/marten-seemann/qtls-go1-16 v0.1.5 // indirect github.com/marten-seemann/qpack v0.2.1 // indirect
github.com/marten-seemann/qtls-go1-17 v0.1.1 // indirect github.com/marten-seemann/qtls-go1-18 v0.1.2 // indirect
github.com/marten-seemann/qtls-go1-18 v0.1.1 // indirect github.com/marten-seemann/qtls-go1-19 v0.1.0 // indirect
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
github.com/mattn/go-isatty v0.0.14 // indirect github.com/marten-seemann/webtransport-go v0.1.1 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/mattn/go-pointer v0.0.1 // indirect
github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/miekg/dns v1.1.43 // indirect github.com/miekg/dns v1.1.50 // indirect
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 // indirect
github.com/minio/sha256-simd v1.0.0 // indirect github.com/minio/sha256-simd v1.0.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mr-tron/base58 v1.2.0 // indirect github.com/mr-tron/base58 v1.2.0 // indirect
github.com/multiformats/go-base32 v0.0.3 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect
github.com/multiformats/go-base36 v0.1.0 // indirect github.com/multiformats/go-base36 v0.1.0 // indirect
github.com/multiformats/go-multiaddr v0.4.1 // indirect github.com/multiformats/go-multiaddr v0.7.0 // indirect
github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect
github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect
github.com/multiformats/go-multibase v0.0.3 // indirect github.com/multiformats/go-multibase v0.1.1 // indirect
github.com/multiformats/go-multicodec v0.3.0 // indirect github.com/multiformats/go-multicodec v0.6.0 // indirect
github.com/multiformats/go-multihash v0.1.0 // indirect github.com/multiformats/go-multihash v0.2.1 // indirect
github.com/multiformats/go-multistream v0.2.2 // indirect github.com/multiformats/go-multistream v0.3.3 // indirect
github.com/multiformats/go-varint v0.0.6 // indirect github.com/multiformats/go-varint v0.0.6 // indirect
github.com/nxadm/tail v1.4.8 // indirect github.com/nxadm/tail v1.4.8 // indirect
github.com/onsi/ginkgo v1.16.4 // indirect github.com/onsi/ginkgo v1.16.5 // indirect
github.com/opencontainers/runtime-spec v1.0.2 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/openzipkin/zipkin-go v0.4.0 // indirect
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
github.com/pkg/errors v0.9.1 // indirect github.com/pkg/errors v0.9.1 // indirect
github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e // indirect github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e // indirect
github.com/prometheus/client_golang v1.11.0 // indirect github.com/prometheus/client_golang v1.13.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.30.0 // indirect github.com/prometheus/common v0.37.0 // indirect
github.com/prometheus/procfs v0.7.3 // indirect github.com/prometheus/procfs v0.8.0 // indirect
github.com/raulk/go-watchdog v1.3.0 // indirect
github.com/rivo/uniseg v0.3.1 // indirect github.com/rivo/uniseg v0.3.1 // indirect
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/syndtr/goleveldb v1.0.0 // indirect github.com/syndtr/goleveldb v1.0.0 // indirect
github.com/tidwall/btree v1.3.1 // indirect github.com/tidwall/btree v1.1.0 // indirect
github.com/tidwall/gjson v1.14.1 // indirect github.com/tidwall/gjson v1.14.0 // indirect
github.com/tidwall/grect v0.1.4 // indirect github.com/tidwall/grect v0.1.4 // indirect
github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.0 // indirect github.com/tidwall/pretty v1.2.0 // indirect
github.com/tidwall/rtred v0.1.2 // indirect github.com/tidwall/rtred v0.1.2 // indirect
github.com/tidwall/tinyqueue v0.1.1 // indirect github.com/tidwall/tinyqueue v0.1.1 // indirect
github.com/wI2L/jsondiff v0.2.0 // indirect
github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc // indirect github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc // indirect
github.com/whyrusleeping/cbor-gen v0.0.0-20210219115102-f37d292932f2 // indirect github.com/whyrusleeping/cbor-gen v0.0.0-20210219115102-f37d292932f2 // indirect
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f // indirect github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f // indirect
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9 // indirect
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 // indirect github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 // indirect
github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee // indirect github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee // indirect
go.opencensus.io v0.23.0 // indirect go.opencensus.io v0.23.0 // indirect
go.opentelemetry.io/otel v0.20.0 // indirect go.opentelemetry.io/otel v1.11.1 // indirect
go.opentelemetry.io/otel/metric v0.20.0 // indirect go.opentelemetry.io/otel/exporters/jaeger v1.7.0 // indirect
go.opentelemetry.io/otel/trace v0.20.0 // indirect go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0 // indirect
go.uber.org/atomic v1.9.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0 // indirect
go.uber.org/dig v1.12.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0 // indirect
go.uber.org/fx v1.15.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.7.0 // indirect
go.opentelemetry.io/otel/exporters/zipkin v1.7.0 // indirect
go.opentelemetry.io/otel/sdk v1.7.0 // indirect
go.opentelemetry.io/otel/trace v1.11.1 // indirect
go.opentelemetry.io/proto/otlp v0.16.0 // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/dig v1.14.1 // indirect
go.uber.org/fx v1.17.1 // indirect
go.uber.org/multierr v1.8.0 // indirect go.uber.org/multierr v1.8.0 // indirect
go4.org v0.0.0-20200411211856-f5505b9728dd // indirect go4.org v0.0.0-20200411211856-f5505b9728dd // indirect
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect
golang.org/x/exp v0.0.0-20220916125017-b168a2c6b86b // indirect
golang.org/x/image v0.0.0-20191206065243-da761ea9ff43 // indirect golang.org/x/image v0.0.0-20191206065243-da761ea9ff43 // indirect
golang.org/x/mod v0.4.2 // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect golang.org/x/net v0.0.0-20220920183852-bf014ff85ad5 // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect
golang.org/x/sys v0.0.0-20220731174439-a90be440212d // indirect golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 // indirect
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
golang.org/x/text v0.3.7 // indirect golang.org/x/text v0.3.7 // indirect
golang.org/x/tools v0.1.5 // indirect golang.org/x/tools v0.1.12 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect
google.golang.org/protobuf v1.27.1 // indirect google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 // indirect
google.golang.org/grpc v1.47.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/square/go-jose.v2 v2.5.1 // indirect gopkg.in/square/go-jose.v2 v2.5.1 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
lukechampine.com/blake3 v1.1.6 // indirect lukechampine.com/blake3 v1.1.7 // indirect
) )

580
go.sum

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save