Skip to content

Commit 1313dee

Browse files
paskalumputun
authored andcommitted
update to lcw v2 with generic types
1 parent 3210de8 commit 1313dee

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1162
-1140
lines changed

backend/app/cmd/server.go

+14-12
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
"time"
1717

1818
"github.com/go-pkgz/jrpc"
19-
"github.com/go-pkgz/lcw/eventbus"
19+
"github.com/go-pkgz/lcw/v2/eventbus"
2020
log "github.com/go-pkgz/lgr"
2121
ntf "github.com/go-pkgz/notify"
2222
"github.com/golang-jwt/jwt"
@@ -28,7 +28,7 @@ import (
2828
"github.com/go-pkgz/auth/provider"
2929
"github.com/go-pkgz/auth/provider/sender"
3030
"github.com/go-pkgz/auth/token"
31-
cache "github.com/go-pkgz/lcw"
31+
cache "github.com/go-pkgz/lcw/v2"
3232

3333
"github.com/umputun/remark42/backend/app/migrator"
3434
"github.com/umputun/remark42/backend/app/notify"
@@ -869,27 +869,28 @@ func (s *ServerCommand) makeAdminStore() (admin.Store, error) {
869869

870870
func (s *ServerCommand) makeCache() (LoadingCache, error) {
871871
log.Printf("[INFO] make cache, type=%s", s.Cache.Type)
872+
o := cache.NewOpts[[]byte]()
872873
switch s.Cache.Type {
873874
case "redis_pub_sub":
874875
redisPubSub, err := eventbus.NewRedisPubSub(s.Cache.RedisAddr, "remark42-cache")
875876
if err != nil {
876877
return nil, fmt.Errorf("cache backend initialization, redis PubSub initialisation: %w", err)
877878
}
878-
backend, err := cache.NewLruCache(cache.MaxCacheSize(s.Cache.Max.Size), cache.MaxValSize(s.Cache.Max.Value),
879-
cache.MaxKeys(s.Cache.Max.Items), cache.EventBus(redisPubSub))
879+
backend, err := cache.NewLruCache(o.MaxCacheSize(s.Cache.Max.Size), o.MaxValSize(s.Cache.Max.Value),
880+
o.MaxKeys(s.Cache.Max.Items), o.EventBus(redisPubSub))
880881
if err != nil {
881882
return nil, fmt.Errorf("cache backend initialization: %w", err)
882883
}
883-
return cache.NewScache(backend), nil
884+
return cache.NewScache[[]byte](backend), nil
884885
case "mem":
885-
backend, err := cache.NewLruCache(cache.MaxCacheSize(s.Cache.Max.Size), cache.MaxValSize(s.Cache.Max.Value),
886-
cache.MaxKeys(s.Cache.Max.Items))
886+
backend, err := cache.NewLruCache(o.MaxCacheSize(s.Cache.Max.Size), o.MaxValSize(s.Cache.Max.Value),
887+
o.MaxKeys(s.Cache.Max.Items))
887888
if err != nil {
888889
return nil, fmt.Errorf("cache backend initialization: %w", err)
889890
}
890-
return cache.NewScache(backend), nil
891+
return cache.NewScache[[]byte](backend), nil
891892
case "none":
892-
return cache.NewScache(&cache.Nop{}), nil
893+
return cache.NewScache[[]byte](&cache.Nop[[]byte]{}), nil
893894
}
894895
return nil, fmt.Errorf("unsupported cache type %s", s.Cache.Type)
895896
}
@@ -1326,11 +1327,12 @@ func splitAtCommas(s string) []string {
13261327

13271328
// authRefreshCache used by authenticator to minimize repeatable token refreshes
13281329
type authRefreshCache struct {
1329-
cache.LoadingCache
1330+
cache.LoadingCache[string]
13301331
}
13311332

13321333
func newAuthRefreshCache() *authRefreshCache {
1333-
expirableCache, _ := cache.NewExpirableCache(cache.TTL(5 * time.Minute))
1334+
o := cache.NewOpts[string]()
1335+
expirableCache, _ := cache.NewExpirableCache(o.TTL(5 * time.Minute))
13341336
return &authRefreshCache{LoadingCache: expirableCache}
13351337
}
13361338

@@ -1341,5 +1343,5 @@ func (c *authRefreshCache) Get(key interface{}) (interface{}, bool) {
13411343

13421344
// Set implements cache setter with key converted to string
13431345
func (c *authRefreshCache) Set(key, value interface{}) {
1344-
_, _ = c.LoadingCache.Get(key.(string), func() (interface{}, error) { return value, nil })
1346+
_, _ = c.LoadingCache.Get(key.(string), func() (string, error) { return value.(string), nil })
13451347
}

backend/app/cmd/server_test.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -848,5 +848,10 @@ func createAppFromCmd(t *testing.T, cmd ServerCommand) (*serverApp, context.Cont
848848

849849
func TestMain(m *testing.M) {
850850
// ignore is added only for GitHub Actions, can't reproduce locally
851-
goleak.VerifyTestMain(m, goleak.IgnoreTopFunction("net/http.(*Server).Shutdown"))
851+
goleak.VerifyTestMain(
852+
m,
853+
goleak.IgnoreTopFunction("net/http.(*Server).Shutdown"),
854+
// this will be fixed in https://github.com/hashicorp/golang-lru/issues/159
855+
goleak.IgnoreTopFunction("github.com/hashicorp/golang-lru/v2/expirable.NewLRU[...].func1"),
856+
)
852857
}

backend/app/main_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -157,5 +157,7 @@ func TestMain(m *testing.M) {
157157
m,
158158
goleak.IgnoreTopFunction("github.com/umputun/remark42/backend/app.init.0.func1"),
159159
goleak.IgnoreTopFunction("net/http.(*Server).Shutdown"),
160+
// this will be fixed in https://github.com/hashicorp/golang-lru/issues/159
161+
goleak.IgnoreTopFunction("github.com/hashicorp/golang-lru/v2/expirable.NewLRU[...].func1"),
160162
)
161163
}

backend/app/rest/api/admin.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"github.com/go-chi/chi/v5"
1010
"github.com/go-chi/render"
1111
"github.com/go-pkgz/auth"
12-
cache "github.com/go-pkgz/lcw"
12+
cache "github.com/go-pkgz/lcw/v2"
1313
log "github.com/go-pkgz/lgr"
1414
R "github.com/go-pkgz/rest"
1515

backend/app/rest/api/admin_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"time"
1515

1616
"github.com/go-pkgz/auth/token"
17-
cache "github.com/go-pkgz/lcw"
17+
cache "github.com/go-pkgz/lcw/v2"
1818
R "github.com/go-pkgz/rest"
1919
"github.com/golang-jwt/jwt"
2020
"github.com/stretchr/testify/assert"
@@ -348,7 +348,7 @@ func TestAdmin_Block(t *testing.T) {
348348
assert.Equal(t, "test test #1", comments.Comments[2].Text, "comment not removed and not cleared")
349349
assert.False(t, comments.Comments[2].Deleted, "not deleted")
350350

351-
srv.pubRest.cache = cache.NewScache(cache.NewNopCache()) // TODO: with lru cache it won't be refreshed and invalidated for long
351+
srv.pubRest.cache = cache.NewScache[[]byte](cache.NewNopCache[[]byte]()) // TODO: with lru cache it won't be refreshed and invalidated for long
352352
// time
353353
time.Sleep(50 * time.Millisecond)
354354
res, code = get(t, ts.URL+"/api/v1/find?site=remark42&url=https://radio-t.com/blah&sort=+time")

backend/app/rest/api/migrator.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"time"
1212

1313
"github.com/go-chi/render"
14-
cache "github.com/go-pkgz/lcw"
14+
cache "github.com/go-pkgz/lcw/v2"
1515
log "github.com/go-pkgz/lgr"
1616
R "github.com/go-pkgz/rest"
1717

backend/app/rest/api/rest.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
"github.com/go-chi/cors"
2323
"github.com/go-chi/render"
2424
"github.com/go-pkgz/auth"
25-
"github.com/go-pkgz/lcw"
25+
"github.com/go-pkgz/lcw/v2"
2626
log "github.com/go-pkgz/lgr"
2727
R "github.com/go-pkgz/rest"
2828
"github.com/go-pkgz/rest/logger"

backend/app/rest/api/rest_private.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
"github.com/go-chi/render"
1919
"github.com/go-pkgz/auth"
2020
"github.com/go-pkgz/auth/token"
21-
cache "github.com/go-pkgz/lcw"
21+
cache "github.com/go-pkgz/lcw/v2"
2222
log "github.com/go-pkgz/lgr"
2323
R "github.com/go-pkgz/rest"
2424
"github.com/golang-jwt/jwt"

backend/app/rest/api/rest_public.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
"github.com/go-chi/chi/v5"
1515
"github.com/go-chi/render"
16-
cache "github.com/go-pkgz/lcw"
16+
cache "github.com/go-pkgz/lcw/v2"
1717
log "github.com/go-pkgz/lgr"
1818
R "github.com/go-pkgz/rest"
1919
"github.com/skip2/go-qrcode"

backend/app/rest/api/rest_public_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"testing"
1212
"time"
1313

14-
cache "github.com/go-pkgz/lcw"
14+
cache "github.com/go-pkgz/lcw/v2"
1515
R "github.com/go-pkgz/rest"
1616
"github.com/stretchr/testify/assert"
1717
"github.com/stretchr/testify/require"

backend/app/rest/api/rest_test.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"github.com/go-pkgz/auth/avatar"
2121
"github.com/go-pkgz/auth/provider"
2222
"github.com/go-pkgz/auth/token"
23-
cache "github.com/go-pkgz/lcw"
23+
cache "github.com/go-pkgz/lcw/v2"
2424
R "github.com/go-pkgz/rest"
2525
"github.com/stretchr/testify/assert"
2626
"github.com/stretchr/testify/require"
@@ -438,7 +438,7 @@ func startupT(t *testing.T, srvHook ...func(srv *Rest)) (ts *httptest.Server, sr
438438
b, err := engine.NewBoltDB(bolt.Options{}, engine.BoltSite{FileName: testDB, SiteID: "remark42"})
439439
require.NoError(t, err)
440440

441-
memCache := cache.NewScache(cache.NewNopCache())
441+
memCache := cache.NewScache[[]byte](cache.NewNopCache[[]byte]())
442442

443443
astore := adminstore.NewStaticStore("123456", []string{"remark42"}, []string{"a1", "a2"}, "admin@remark-42.com")
444444
restrictedWordsMatcher := service.NewRestrictedWordsMatcher(service.StaticRestrictedWordsLister{Words: []string{"duck"}})
@@ -658,5 +658,9 @@ func waitForHTTPSServerStart(port int) {
658658
}
659659

660660
func TestMain(m *testing.M) {
661-
goleak.VerifyTestMain(m)
661+
goleak.VerifyTestMain(
662+
m,
663+
// this will be fixed in https://github.com/hashicorp/golang-lru/issues/159
664+
goleak.IgnoreTopFunction("github.com/hashicorp/golang-lru/v2/expirable.NewLRU[...].func1"),
665+
)
662666
}

backend/app/rest/api/rss.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"net/http"
66
"time"
77

8-
cache "github.com/go-pkgz/lcw"
8+
cache "github.com/go-pkgz/lcw/v2"
99
log "github.com/go-pkgz/lgr"
1010
"github.com/gorilla/feeds"
1111

backend/app/store/service/service.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"sync"
1212
"time"
1313

14-
"github.com/go-pkgz/lcw"
14+
"github.com/go-pkgz/lcw/v2"
1515
log "github.com/go-pkgz/lgr"
1616
"github.com/google/uuid"
1717
"github.com/hashicorp/go-multierror"
@@ -49,7 +49,7 @@ type DataStore struct {
4949
}
5050

5151
repliesCache struct {
52-
lcw.LoadingCache
52+
lcw.LoadingCache[struct{}]
5353
once sync.Once
5454
}
5555
}
@@ -534,7 +534,8 @@ func (s *DataStore) EditComment(locator store.Locator, commentID string, req Edi
534534
func (s *DataStore) HasReplies(comment store.Comment) bool {
535535
s.repliesCache.once.Do(func() {
536536
// default expiration time of 5 minutes and cleanup time of 2.5 minutes
537-
s.repliesCache.LoadingCache, _ = lcw.NewExpirableCache(lcw.TTL(5 * time.Minute))
537+
o := lcw.NewOpts[struct{}]()
538+
s.repliesCache.LoadingCache, _ = lcw.NewExpirableCache[struct{}](o.TTL(5 * time.Minute))
538539
})
539540

540541
if _, found := s.repliesCache.Peek(comment.ID); found {
@@ -554,7 +555,7 @@ func (s *DataStore) HasReplies(comment store.Comment) bool {
554555
// When this code is reached, key "comment.ID" is not in cache.
555556
// Calling cache.Get on it will put it in cache with 5 minutes TTL.
556557
// We call it with empty struct as value as we care about keys and not values.
557-
_, _ = s.repliesCache.Get(comment.ID, func() (interface{}, error) { return struct{}{}, nil })
558+
_, _ = s.repliesCache.Get(comment.ID, func() (struct{}, error) { return struct{}{}, nil })
558559
return true
559560
}
560561
}

backend/app/store/service/title.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"strings"
99
"time"
1010

11-
"github.com/go-pkgz/lcw"
11+
"github.com/go-pkgz/lcw/v2"
1212
log "github.com/go-pkgz/lgr"
1313
"golang.org/x/net/html"
1414
)
@@ -21,7 +21,7 @@ const (
2121
// TitleExtractor gets html title from remote page, cached
2222
type TitleExtractor struct {
2323
client http.Client
24-
cache lcw.LoadingCache
24+
cache lcw.LoadingCache[string]
2525
allowedDomains []string
2626
}
2727

@@ -33,10 +33,11 @@ func NewTitleExtractor(client http.Client, allowedDomains []string) *TitleExtrac
3333
allowedDomains: allowedDomains,
3434
}
3535
var err error
36-
res.cache, err = lcw.NewExpirableCache(lcw.TTL(teCacheTTL), lcw.MaxKeySize(teCacheMaxRecs))
36+
o := lcw.NewOpts[string]()
37+
res.cache, err = lcw.NewExpirableCache(o.TTL(teCacheTTL), o.MaxKeySize(teCacheMaxRecs))
3738
if err != nil {
3839
log.Printf("[WARN] failed to make cache, caching disabled for titles, %v", err)
39-
res.cache = &lcw.Nop{}
40+
res.cache = &lcw.Nop[string]{}
4041
}
4142
return &res
4243
}
@@ -62,34 +63,34 @@ func (t *TitleExtractor) Get(pageURL string) (string, error) {
6263
}
6364
client := http.Client{Timeout: t.client.Timeout, Transport: t.client.Transport}
6465
defer client.CloseIdleConnections()
65-
b, err := t.cache.Get(pageURL, func() (interface{}, error) {
66+
b, err := t.cache.Get(pageURL, func() (string, error) {
6667
resp, e := client.Get(pageURL)
6768
if e != nil {
68-
return nil, fmt.Errorf("failed to load page %s: %w", pageURL, e)
69+
return "", fmt.Errorf("failed to load page %s: %w", pageURL, e)
6970
}
7071
defer func() {
7172
if err = resp.Body.Close(); err != nil {
7273
log.Printf("[WARN] failed to close title extractor body, %v", err)
7374
}
7475
}()
7576
if resp.StatusCode != 200 {
76-
return nil, fmt.Errorf("can't load page %s, code %d", pageURL, resp.StatusCode)
77+
return "", fmt.Errorf("can't load page %s, code %d", pageURL, resp.StatusCode)
7778
}
7879

7980
title, ok := t.getTitle(resp.Body)
8081
if !ok {
81-
return nil, fmt.Errorf("can't get title for %s", pageURL)
82+
return "", fmt.Errorf("can't get title for %s", pageURL)
8283
}
8384
return title, nil
8485
})
8586

8687
// on error save result (empty string) to cache too and return "" title
8788
if err != nil {
88-
_, _ = t.cache.Get(pageURL, func() (interface{}, error) { return "", nil })
89+
_, _ = t.cache.Get(pageURL, func() (string, error) { return "", nil })
8990
return "", err
9091
}
9192

92-
return b.(string), nil
93+
return b, nil
9394
}
9495

9596
// Close title extractor

backend/go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
github.com/go-chi/render v1.0.3
1414
github.com/go-pkgz/auth v1.22.2-0.20240117071454-f721b8c33b05
1515
github.com/go-pkgz/jrpc v0.3.0
16-
github.com/go-pkgz/lcw v1.1.0
16+
github.com/go-pkgz/lcw/v2 v2.0.0
1717
github.com/go-pkgz/lgr v0.11.1
1818
github.com/go-pkgz/notify v1.1.0
1919
github.com/go-pkgz/repeater v1.1.3
@@ -56,7 +56,7 @@ require (
5656
github.com/gorilla/css v1.0.1 // indirect
5757
github.com/gorilla/websocket v1.5.1 // indirect
5858
github.com/hashicorp/errwrap v1.1.0 // indirect
59-
github.com/hashicorp/golang-lru v1.0.2 // indirect
59+
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
6060
github.com/klauspost/compress v1.17.4 // indirect
6161
github.com/montanaflynn/stats v0.7.1 // indirect
6262
github.com/pmezard/go-difflib v1.0.0 // indirect

backend/go.sum

+8-10
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ github.com/alecthomas/chroma/v2 v2.12.0 h1:Wh8qLEgMMsN7mgyG8/qIpegky2Hvzr4By6gEF
1515
github.com/alecthomas/chroma/v2 v2.12.0/go.mod h1:4TQu7gdfuPjSh76j78ietmqh9LiurGF0EpseFXdKMBw=
1616
github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk=
1717
github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
18-
github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk=
19-
github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
18+
github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 h1:uvdUDbHQHO85qeSydJtItA4T55Pw6BtAejd0APRJOCE=
19+
github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
2020
github.com/alicebob/miniredis/v2 v2.31.1 h1:7XAt0uUg3DtwEKW5ZAGa+K7FZV2DdKQo5K/6TTnfX8Y=
2121
github.com/alicebob/miniredis/v2 v2.31.1/go.mod h1:UB/T2Uztp7MlFSDakaX1sTXUv5CASoprx0wulRT6HBg=
2222
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
@@ -72,8 +72,8 @@ github.com/go-pkgz/expirable-cache v1.0.0 h1:ns5+1hjY8hntGv8bPaQd9Gr7Jyo+Uw5SLyI
7272
github.com/go-pkgz/expirable-cache v1.0.0/go.mod h1:GTrEl0X+q0mPNqN6dtcQXksACnzCBQ5k/k1SwXJsZKs=
7373
github.com/go-pkgz/jrpc v0.3.0 h1:Fls38KqPsHzvp0FWfivr6cGnncC+iFBodHBqvUPY+0U=
7474
github.com/go-pkgz/jrpc v0.3.0/go.mod h1:MFtKs75JESiSqVicsQkgN2iDFFuCd3gVT1/vKiwRi00=
75-
github.com/go-pkgz/lcw v1.1.0 h1:hDJdQJZf4iw19a7cTgQvF6Poz/L7mL4E7FgG5jGs4lA=
76-
github.com/go-pkgz/lcw v1.1.0/go.mod h1:zwT7RSxFskQsHWHJezYq6n0iTn0n4yIYRDijXq3awM0=
75+
github.com/go-pkgz/lcw/v2 v2.0.0 h1:gTwXpiJBhQeA1rXuqkRuLcV79uATFna8CckH8ZBBrH0=
76+
github.com/go-pkgz/lcw/v2 v2.0.0/go.mod h1:yxJHOn+IbQBQHxUqkCtMrbGjIfdYcsBAZcVCBaL1Va8=
7777
github.com/go-pkgz/lgr v0.11.1 h1:hXFhZcznehI6imLhEa379oMOKFz7TQUmisAqb3oLOSM=
7878
github.com/go-pkgz/lgr v0.11.1/go.mod h1:tgDF4RXQnBfIgJqjgkv0yOeTQ3F1yewWIZkpUhHnAkU=
7979
github.com/go-pkgz/notify v1.1.0 h1:xdMKoY7W5t9lewGzn61yM6Z6oWafPiPS1WtAMO81p2k=
@@ -132,8 +132,8 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY
132132
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
133133
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
134134
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
135-
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
136-
github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
135+
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
136+
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
137137
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
138138
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
139139
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
@@ -189,8 +189,6 @@ github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
189189
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
190190
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
191191
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
192-
github.com/slack-go/slack v0.12.2 h1:x3OppyMyGIbbiyFhsBmpf9pwkUzMhthJMRNmNlA4LaQ=
193-
github.com/slack-go/slack v0.12.2/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
194192
github.com/slack-go/slack v0.12.4 h1:4iLT2opw+/QptmQxBNA7S8pNfSIvtn0NDGu7Jq0emi4=
195193
github.com/slack-go/slack v0.12.4/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
196194
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
@@ -253,8 +251,8 @@ github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3Ifn
253251
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
254252
github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
255253
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
256-
github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE=
257-
github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
254+
github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M=
255+
github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
258256
go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA=
259257
go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
260258
go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk=

backend/vendor/github.com/go-pkgz/lcw/.gitignore

-12
This file was deleted.

0 commit comments

Comments
 (0)