mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-09 17:44:59 +09:00
merge
This commit is contained in:
commit
317f6adc39
45 changed files with 5581 additions and 1271 deletions
|
@ -7,7 +7,7 @@ checkout-linux: &checkout-linux
|
|||
jobs:
|
||||
persist-checkout:
|
||||
docker:
|
||||
- image: circleci/golang:1.13.12
|
||||
- image: circleci/golang:1.14.7
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
|
@ -25,7 +25,7 @@ jobs:
|
|||
|
||||
unit-test:
|
||||
docker:
|
||||
- image: circleci/golang:1.13.12
|
||||
- image: circleci/golang:1.14.7
|
||||
steps:
|
||||
- *checkout-linux
|
||||
- add_ssh_keys:
|
||||
|
@ -65,7 +65,7 @@ jobs:
|
|||
|
||||
build-lib-linux:
|
||||
docker:
|
||||
- image: circleci/golang:1.13.12
|
||||
- image: circleci/golang:1.14.7
|
||||
steps:
|
||||
- *checkout-linux
|
||||
- add_ssh_keys:
|
||||
|
@ -158,8 +158,8 @@ jobs:
|
|||
- run:
|
||||
name: install golang
|
||||
command: |
|
||||
curl -L -O https://dl.google.com/go/go1.13.12.darwin-amd64.tar.gz
|
||||
sudo tar -C /usr/local -xzf go1.13.12.darwin-amd64.tar.gz
|
||||
curl -L -O https://dl.google.com/go/go1.14.7.darwin-amd64.tar.gz
|
||||
sudo tar -C /usr/local -xzf go1.14.7.darwin-amd64.tar.gz
|
||||
- restore_cache:
|
||||
keys:
|
||||
- go-pkg-v3-mac-{{ arch }}-{{ checksum "go.sum" }}
|
||||
|
@ -299,8 +299,8 @@ jobs:
|
|||
name: install golang
|
||||
command: |
|
||||
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
||||
curl -L -O https://dl.google.com/go/go1.13.12.darwin-amd64.tar.gz
|
||||
sudo tar -C /usr/local -xzf go1.13.12.darwin-amd64.tar.gz
|
||||
curl -L -O https://dl.google.com/go/go1.14.7.darwin-amd64.tar.gz
|
||||
sudo tar -C /usr/local -xzf go1.14.7.darwin-amd64.tar.gz
|
||||
# see the https://github.com/golang/go/issues/31628
|
||||
# uncomment if go not fixes this issue and we will need to publish to the appstore
|
||||
# cd ~ && mkdir gosrc && cd gosrc
|
||||
|
@ -403,8 +403,8 @@ jobs:
|
|||
- run:
|
||||
name: install golang
|
||||
command: |
|
||||
wget https://dl.google.com/go/go1.13.12.linux-amd64.tar.gz
|
||||
sudo tar -C /usr/local -xzf go1.13.12.linux-amd64.tar.gz
|
||||
wget https://dl.google.com/go/go1.14.7.linux-amd64.tar.gz
|
||||
sudo tar -C /usr/local -xzf go1.14.7.linux-amd64.tar.gz
|
||||
mkdir -p $GOPATH/bin
|
||||
- run:
|
||||
name: install protobuf
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/state"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/source"
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
"github.com/gogo/protobuf/types"
|
||||
)
|
||||
|
||||
func (mw *Middleware) BlockCreate(req *pb.RpcBlockCreateRequest) *pb.RpcBlockCreateResponse {
|
||||
|
@ -1131,3 +1132,66 @@ func (mw *Middleware) BlockSetDataviewActiveView(req *pb.RpcBlockSetDataviewActi
|
|||
}
|
||||
return response(pb.RpcBlockSetDataviewActiveViewResponseError_NULL, nil)
|
||||
}
|
||||
|
||||
func (mw *Middleware) BlockCreateDataviewRecord(req *pb.RpcBlockCreateDataviewRecordRequest) *pb.RpcBlockCreateDataviewRecordResponse {
|
||||
ctx := state.NewContext(nil)
|
||||
response := func(details *types.Struct, code pb.RpcBlockCreateDataviewRecordResponseErrorCode, err error) *pb.RpcBlockCreateDataviewRecordResponse {
|
||||
m := &pb.RpcBlockCreateDataviewRecordResponse{Record: details, Error: &pb.RpcBlockCreateDataviewRecordResponseError{Code: code}}
|
||||
if err != nil {
|
||||
m.Error.Description = err.Error()
|
||||
}
|
||||
// no events generated
|
||||
return m
|
||||
}
|
||||
|
||||
var details *types.Struct
|
||||
if err := mw.doBlockService(func(bs block.Service) (err error) {
|
||||
details, err = bs.CreateDataviewRecord(ctx, *req)
|
||||
return err
|
||||
}); err != nil {
|
||||
return response(nil, pb.RpcBlockCreateDataviewRecordResponseError_UNKNOWN_ERROR, err)
|
||||
}
|
||||
|
||||
return response(details, pb.RpcBlockCreateDataviewRecordResponseError_NULL, nil)
|
||||
}
|
||||
|
||||
func (mw *Middleware) BlockUpdateDataviewRecord(req *pb.RpcBlockUpdateDataviewRecordRequest) *pb.RpcBlockUpdateDataviewRecordResponse {
|
||||
ctx := state.NewContext(nil)
|
||||
response := func(code pb.RpcBlockUpdateDataviewRecordResponseErrorCode, err error) *pb.RpcBlockUpdateDataviewRecordResponse {
|
||||
m := &pb.RpcBlockUpdateDataviewRecordResponse{Error: &pb.RpcBlockUpdateDataviewRecordResponseError{Code: code}}
|
||||
if err != nil {
|
||||
m.Error.Description = err.Error()
|
||||
}
|
||||
// no events generated
|
||||
return m
|
||||
}
|
||||
|
||||
if err := mw.doBlockService(func(bs block.Service) (err error) {
|
||||
return bs.UpdateDataviewRecord(ctx, *req)
|
||||
}); err != nil {
|
||||
return response(pb.RpcBlockUpdateDataviewRecordResponseError_UNKNOWN_ERROR, err)
|
||||
}
|
||||
|
||||
return response(pb.RpcBlockUpdateDataviewRecordResponseError_NULL, nil)
|
||||
}
|
||||
|
||||
func (mw *Middleware) BlockDeleteDataviewRecord(req *pb.RpcBlockDeleteDataviewRecordRequest) *pb.RpcBlockDeleteDataviewRecordResponse {
|
||||
ctx := state.NewContext(nil)
|
||||
response := func(code pb.RpcBlockDeleteDataviewRecordResponseErrorCode, err error) *pb.RpcBlockDeleteDataviewRecordResponse {
|
||||
m := &pb.RpcBlockDeleteDataviewRecordResponse{Error: &pb.RpcBlockDeleteDataviewRecordResponseError{Code: code}}
|
||||
if err != nil {
|
||||
m.Error.Description = err.Error()
|
||||
} else {
|
||||
m.Event = ctx.GetResponseEvent()
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
||||
if err := mw.doBlockService(func(bs block.Service) (err error) {
|
||||
return bs.DeleteDataviewRecord(ctx, *req)
|
||||
}); err != nil {
|
||||
return response(pb.RpcBlockDeleteDataviewRecordResponseError_UNKNOWN_ERROR, err)
|
||||
}
|
||||
|
||||
return response(pb.RpcBlockDeleteDataviewRecordResponseError_NULL, nil)
|
||||
}
|
||||
|
|
34
core/block/database/database.go
Normal file
34
core/block/database/database.go
Normal file
|
@ -0,0 +1,34 @@
|
|||
package database
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/database"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/anytype"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/database/pages"
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
)
|
||||
|
||||
type Ctrl interface {
|
||||
Anytype() anytype.Service
|
||||
SetDetails(req pb.RpcBlockSetDetailsRequest) error
|
||||
CreateSmartBlock(req pb.RpcBlockCreatePageRequest) (pageId string, err error)
|
||||
}
|
||||
|
||||
type Router interface {
|
||||
Get(id string) (database.Database, error)
|
||||
}
|
||||
|
||||
func New(s Ctrl) Router {
|
||||
return &router{s: s}
|
||||
}
|
||||
|
||||
type router struct{ s Ctrl }
|
||||
|
||||
func (r router) Get(id string) (database.Database, error) {
|
||||
switch id {
|
||||
case "pages":
|
||||
return pages.New(r.s.Anytype().PageStore(), r.s.SetDetails, r.s.CreateSmartBlock), nil
|
||||
}
|
||||
return nil, fmt.Errorf("db not found")
|
||||
}
|
70
core/block/database/pages/pages.go
Normal file
70
core/block/database/pages/pages.go
Normal file
|
@ -0,0 +1,70 @@
|
|||
package pages
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/database"
|
||||
"github.com/anytypeio/go-anytype-library/localstore"
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
"github.com/gogo/protobuf/types"
|
||||
)
|
||||
|
||||
func New(
|
||||
pageStore localstore.PageStore,
|
||||
setDetails func(req pb.RpcBlockSetDetailsRequest) error,
|
||||
createSmartBlock func(req pb.RpcBlockCreatePageRequest) (pageId string, err error),
|
||||
) database.Database {
|
||||
return &setPages{
|
||||
PageStore: pageStore,
|
||||
setDetails: setDetails,
|
||||
createSmartBlock: createSmartBlock,
|
||||
}
|
||||
}
|
||||
|
||||
type setPages struct {
|
||||
localstore.PageStore
|
||||
setDetails func(req pb.RpcBlockSetDetailsRequest) error
|
||||
createSmartBlock func(req pb.RpcBlockCreatePageRequest) (pageId string, err error)
|
||||
}
|
||||
|
||||
func (sp setPages) Create(rec database.Record) (database.Record, error) {
|
||||
id, err := sp.createSmartBlock(pb.RpcBlockCreatePageRequest{Details: rec.Details})
|
||||
if err != nil {
|
||||
return rec, err
|
||||
}
|
||||
|
||||
if rec.Details == nil || rec.Details.Fields == nil {
|
||||
rec.Details = &types.Struct{Fields: make(map[string]*types.Value)}
|
||||
}
|
||||
|
||||
// inject created block ID into the record
|
||||
rec.Details.Fields[database.RecordIDField] = &types.Value{Kind: &types.Value_StringValue{StringValue: id}}
|
||||
return rec, nil
|
||||
}
|
||||
|
||||
func (sp *setPages) Update(id string, rec database.Record) error {
|
||||
var details []*pb.RpcBlockSetDetailsDetail
|
||||
for k, v := range rec.Details.Fields {
|
||||
details = append(details, &pb.RpcBlockSetDetailsDetail{Key: k, Value: v})
|
||||
}
|
||||
|
||||
if len(details) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return sp.setDetails(pb.RpcBlockSetDetailsRequest{
|
||||
ContextId: id, // not sure?
|
||||
Details: details,
|
||||
})
|
||||
}
|
||||
|
||||
func (sp setPages) Delete(id string) error {
|
||||
|
||||
// TODO implement!
|
||||
|
||||
return errors.New("not implemented")
|
||||
}
|
||||
|
||||
func (sp setPages) Schema() string {
|
||||
return sp.Schema()
|
||||
}
|
|
@ -2,6 +2,7 @@ package bookmark
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/anytypeio/go-anytype-middleware/util/uri"
|
||||
|
||||
|
@ -19,7 +20,7 @@ func NewBookmark(sb smartblock.SmartBlock, lp linkpreview.LinkPreview, ctrl DoBo
|
|||
}
|
||||
|
||||
type Bookmark interface {
|
||||
Fetch(ctx *state.Context, id string, url string) (err error)
|
||||
Fetch(ctx *state.Context, id string, url string, isSync bool) (err error)
|
||||
CreateAndFetch(ctx *state.Context, req pb.RpcBlockBookmarkCreateAndFetchRequest) (newId string, err error)
|
||||
UpdateBookmark(id string, apply func(b bookmark.Block) error) (err error)
|
||||
}
|
||||
|
@ -34,15 +35,15 @@ type sbookmark struct {
|
|||
ctrl DoBookmark
|
||||
}
|
||||
|
||||
func (b *sbookmark) Fetch(ctx *state.Context, id string, url string) (err error) {
|
||||
func (b *sbookmark) Fetch(ctx *state.Context, id string, url string, isSync bool) (err error) {
|
||||
s := b.NewStateCtx(ctx)
|
||||
if err = b.fetch(s, id, url); err != nil {
|
||||
if err = b.fetch(s, id, url, isSync); err != nil {
|
||||
return
|
||||
}
|
||||
return b.Apply(s)
|
||||
}
|
||||
|
||||
func (b *sbookmark) fetch(s *state.State, id, url string) (err error) {
|
||||
func (b *sbookmark) fetch(s *state.State, id, url string, isSync bool) (err error) {
|
||||
bb := s.Get(id)
|
||||
if b == nil {
|
||||
return smartblock.ErrSimpleBlockNotFound
|
||||
|
@ -52,17 +53,23 @@ func (b *sbookmark) fetch(s *state.State, id, url string) (err error) {
|
|||
if err != nil {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
var updMu sync.Mutex
|
||||
if bm, ok := bb.(bookmark.Block); ok {
|
||||
return bm.Fetch(bookmark.FetchParams{
|
||||
Url: url,
|
||||
Anytype: b.Anytype(),
|
||||
Updater: func(id string, apply func(b bookmark.Block) error) (err error) {
|
||||
if isSync {
|
||||
updMu.Lock()
|
||||
defer updMu.Unlock()
|
||||
return apply(bm)
|
||||
}
|
||||
return b.ctrl.DoBookmark(b.Id(), func(b Bookmark) error {
|
||||
return b.UpdateBookmark(id, apply)
|
||||
})
|
||||
},
|
||||
LinkPreview: b.lp,
|
||||
Sync: isSync,
|
||||
})
|
||||
}
|
||||
return fmt.Errorf("unexpected simple bock type: %T (want Bookmark)", bb)
|
||||
|
@ -82,7 +89,7 @@ func (b *sbookmark) CreateAndFetch(ctx *state.Context, req pb.RpcBlockBookmarkCr
|
|||
if err = s.InsertTo(req.TargetId, req.Position, newId); err != nil {
|
||||
return
|
||||
}
|
||||
if err = b.fetch(s, newId, req.Url); err != nil {
|
||||
if err = b.fetch(s, newId, req.Url, false); err != nil {
|
||||
return
|
||||
}
|
||||
if err = b.Apply(s); err != nil {
|
||||
|
|
|
@ -12,6 +12,7 @@ import (
|
|||
|
||||
"github.com/anytypeio/go-anytype-library/logging"
|
||||
"github.com/anytypeio/go-anytype-middleware/anymark"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/file"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/smartblock"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/state"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple"
|
||||
|
@ -40,20 +41,22 @@ type Clipboard interface {
|
|||
Export(req pb.RpcBlockExportRequest) (path string, err error)
|
||||
}
|
||||
|
||||
func NewClipboard(sb smartblock.SmartBlock) Clipboard {
|
||||
return &clipboard{sb}
|
||||
func NewClipboard(sb smartblock.SmartBlock, file file.File) Clipboard {
|
||||
return &clipboard{SmartBlock: sb, file: file}
|
||||
}
|
||||
|
||||
type clipboard struct {
|
||||
smartblock.SmartBlock
|
||||
file file.File
|
||||
}
|
||||
|
||||
func (cb *clipboard) Paste(ctx *state.Context, req pb.RpcBlockPasteRequest) (blockIds []string, uploadArr []pb.RpcBlockUploadRequest, caretPosition int32, isSameBlockCaret bool, err error) {
|
||||
caretPosition = -1
|
||||
|
||||
if len(req.AnySlot) > 0 {
|
||||
if len(req.FileSlot) > 0 {
|
||||
blockIds, err = cb.pasteFiles(ctx, req)
|
||||
return
|
||||
} else if len(req.AnySlot) > 0 {
|
||||
blockIds, uploadArr, caretPosition, isSameBlockCaret, err = cb.pasteAny(ctx, req)
|
||||
|
||||
} else if len(req.HtmlSlot) > 0 {
|
||||
blockIds, uploadArr, caretPosition, isSameBlockCaret, err = cb.pasteHtml(ctx, req)
|
||||
|
||||
|
@ -585,3 +588,28 @@ func (cb *clipboard) blocksToState(blocks []*model.Block) (cbs *state.State) {
|
|||
cbs.Pick(cbs.RootId()).Model().ChildrenIds = rootIds
|
||||
return
|
||||
}
|
||||
|
||||
func (cb *clipboard) pasteFiles(ctx *state.Context, req pb.RpcBlockPasteRequest) (blockIds []string, err error) {
|
||||
s := cb.NewStateCtx(ctx)
|
||||
for _, fs := range req.FileSlot {
|
||||
b := simple.New(&model.Block{
|
||||
Content: &model.BlockContentOfFile{
|
||||
File: &model.BlockContentFile{
|
||||
Name: fs.Name,
|
||||
},
|
||||
},
|
||||
})
|
||||
s.Add(b)
|
||||
if err = cb.file.UploadState(s, b.Model().Id, file.FileSource{
|
||||
Bytes: fs.Data,
|
||||
Name: fs.Name,
|
||||
}, true); err != nil {
|
||||
return
|
||||
}
|
||||
blockIds = append(blockIds, b.Model().Id)
|
||||
}
|
||||
if err = s.InsertTo(req.FocusedBlockId, model.Block_Bottom, blockIds...); err != nil {
|
||||
return
|
||||
}
|
||||
return blockIds, cb.Apply(s)
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package clipboard
|
|||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/smartblock/smarttest"
|
||||
|
@ -10,8 +11,6 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"testing"
|
||||
|
||||
_ "github.com/anytypeio/go-anytype-middleware/core/block/simple/base"
|
||||
)
|
||||
|
||||
|
@ -42,7 +41,7 @@ func page(blocks ...*model.Block) (sb *smarttest.SmartTest) {
|
|||
}
|
||||
|
||||
func rangePaste(sb *smarttest.SmartTest, t *testing.T, focusId string, focusRange *model.Range, copyRange *model.Range, blocks ...*model.Block) {
|
||||
cb := NewClipboard(sb)
|
||||
cb := NewClipboard(sb, nil)
|
||||
req := pb.RpcBlockPasteRequest{
|
||||
ContextId: sb.Id(),
|
||||
FocusedBlockId: focusId,
|
||||
|
@ -234,7 +233,7 @@ func checkBlockMarksDebug(t *testing.T, sb *smarttest.SmartTest, marksArr [][]*m
|
|||
}
|
||||
|
||||
func pasteAny(t *testing.T, sb *smarttest.SmartTest, id string, textRange model.Range, selectedBlockIds []string, blocks []*model.Block) {
|
||||
cb := NewClipboard(sb)
|
||||
cb := NewClipboard(sb, nil)
|
||||
req := pb.RpcBlockPasteRequest{}
|
||||
if id != "" {
|
||||
req.FocusedBlockId = id
|
||||
|
@ -250,7 +249,7 @@ func pasteAny(t *testing.T, sb *smarttest.SmartTest, id string, textRange model.
|
|||
}
|
||||
|
||||
func pasteText(t *testing.T, sb *smarttest.SmartTest, id string, textRange model.Range, selectedBlockIds []string, textSlot string) {
|
||||
cb := NewClipboard(sb)
|
||||
cb := NewClipboard(sb, nil)
|
||||
req := pb.RpcBlockPasteRequest{}
|
||||
if id != "" {
|
||||
req.FocusedBlockId = id
|
||||
|
@ -266,7 +265,7 @@ func pasteText(t *testing.T, sb *smarttest.SmartTest, id string, textRange model
|
|||
}
|
||||
|
||||
func pasteHtml(t *testing.T, sb *smarttest.SmartTest, id string, textRange model.Range, selectedBlockIds []string, htmlSlot string) {
|
||||
cb := NewClipboard(sb)
|
||||
cb := NewClipboard(sb, nil)
|
||||
req := pb.RpcBlockPasteRequest{}
|
||||
if id != "" {
|
||||
req.FocusedBlockId = id
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
"github.com/anytypeio/go-anytype-library/logging"
|
||||
"github.com/anytypeio/go-anytype-library/pb/model"
|
||||
"github.com/anytypeio/go-anytype-library/schema"
|
||||
blockDB "github.com/anytypeio/go-anytype-middleware/core/block/database"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/smartblock"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/state"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple"
|
||||
|
@ -27,11 +28,15 @@ type Dataview interface {
|
|||
SetActiveView(ctx *state.Context, blockId string, activeViewId string, limit int, offset int) error
|
||||
CreateView(ctx *state.Context, blockId string, view model.BlockContentDataviewView) (*model.BlockContentDataviewView, error)
|
||||
|
||||
CreateRecord(ctx *state.Context, blockId string, rec model.PageDetails) (*model.PageDetails, error)
|
||||
UpdateRecord(ctx *state.Context, blockId string, recID string, rec model.PageDetails) error
|
||||
DeleteRecord(ctx *state.Context, blockId string, recID string) error
|
||||
|
||||
smartblock.SmartblockOpenListner
|
||||
}
|
||||
|
||||
func NewDataview(sb smartblock.SmartBlock, sendEvent func(e *pb.Event)) Dataview {
|
||||
return &dataviewCollectionImpl{SmartBlock: sb, sendEvent: sendEvent}
|
||||
func NewDataview(sb smartblock.SmartBlock) Dataview {
|
||||
return &dataviewCollectionImpl{SmartBlock: sb}
|
||||
}
|
||||
|
||||
type dataviewImpl struct {
|
||||
|
@ -39,18 +44,16 @@ type dataviewImpl struct {
|
|||
activeViewId string
|
||||
offset int
|
||||
limit int
|
||||
entries []database.Entry
|
||||
records []database.Record
|
||||
mu sync.Mutex
|
||||
database.Database
|
||||
}
|
||||
|
||||
type dataviewCollectionImpl struct {
|
||||
smartblock.SmartBlock
|
||||
dataviews []*dataviewImpl
|
||||
mu sync.Mutex
|
||||
sendEvent func(e *pb.Event)
|
||||
}
|
||||
|
||||
// This method is not thread-safe
|
||||
func (d *dataviewCollectionImpl) getDataviewImpl(block dataview.Block) *dataviewImpl {
|
||||
for _, dv := range d.dataviews {
|
||||
if dv.blockId == block.Model().Id {
|
||||
|
@ -69,8 +72,6 @@ func (d *dataviewCollectionImpl) getDataviewImpl(block dataview.Block) *dataview
|
|||
}
|
||||
|
||||
func (d *dataviewCollectionImpl) DeleteView(ctx *state.Context, blockId string, viewId string, showEvent bool) error {
|
||||
d.mu.Lock()
|
||||
defer d.mu.Unlock()
|
||||
s := d.NewStateCtx(ctx)
|
||||
tb, err := getDataviewBlock(s, blockId)
|
||||
if err != nil {
|
||||
|
@ -104,8 +105,6 @@ func (d *dataviewCollectionImpl) DeleteView(ctx *state.Context, blockId string,
|
|||
}
|
||||
|
||||
func (d *dataviewCollectionImpl) UpdateView(ctx *state.Context, blockId string, viewId string, view model.BlockContentDataviewView, showEvent bool) error {
|
||||
d.mu.Lock()
|
||||
defer d.mu.Unlock()
|
||||
s := d.NewStateCtx(ctx)
|
||||
tb, err := getDataviewBlock(s, blockId)
|
||||
if err != nil {
|
||||
|
@ -134,8 +133,6 @@ func (d *dataviewCollectionImpl) UpdateView(ctx *state.Context, blockId string,
|
|||
}
|
||||
|
||||
func (d *dataviewCollectionImpl) SetActiveView(ctx *state.Context, id string, activeViewId string, limit int, offset int) error {
|
||||
d.mu.Lock()
|
||||
defer d.mu.Unlock()
|
||||
var dvBlock dataview.Block
|
||||
var ok bool
|
||||
if dvBlock, ok = d.Pick(id).(dataview.Block); !ok {
|
||||
|
@ -149,8 +146,8 @@ func (d *dataviewCollectionImpl) SetActiveView(ctx *state.Context, id string, ac
|
|||
}
|
||||
|
||||
if dv.activeViewId != activeViewId {
|
||||
dv.entries = []database.Entry{}
|
||||
dv.activeViewId = activeViewId
|
||||
dv.records = nil
|
||||
}
|
||||
|
||||
dv.limit = limit
|
||||
|
@ -164,9 +161,6 @@ func (d *dataviewCollectionImpl) SetActiveView(ctx *state.Context, id string, ac
|
|||
}
|
||||
|
||||
func (d *dataviewCollectionImpl) CreateView(ctx *state.Context, id string, view model.BlockContentDataviewView) (*model.BlockContentDataviewView, error) {
|
||||
d.mu.Lock()
|
||||
defer d.mu.Unlock()
|
||||
|
||||
view.Id = uuid.New().String()
|
||||
s := d.NewStateCtx(ctx)
|
||||
tb, err := getDataviewBlock(s, id)
|
||||
|
@ -212,12 +206,74 @@ func (d *dataviewCollectionImpl) fetchAllDataviewsRecordsAndSendEvents(ctx *stat
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (d *dataviewCollectionImpl) CreateRecord(_ *state.Context, blockId string, rec model.PageDetails) (*model.PageDetails, error) {
|
||||
var databaseId string
|
||||
if dvBlock, ok := d.Pick(blockId).(dataview.Block); !ok {
|
||||
return nil, fmt.Errorf("not a dataview block")
|
||||
} else {
|
||||
databaseId = dvBlock.Model().GetDataview().DatabaseId
|
||||
}
|
||||
|
||||
var db database.Writer
|
||||
if dbRouter, ok := d.SmartBlock.(blockDB.Router); !ok {
|
||||
return nil, fmt.Errorf("unexpected smart block type: %T", d.SmartBlock)
|
||||
} else if target, err := dbRouter.Get(databaseId); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
db = target
|
||||
}
|
||||
|
||||
created, err := db.Create(database.Record{Details: rec.Details})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &model.PageDetails{Details: created.Details}, nil
|
||||
}
|
||||
|
||||
func (d *dataviewCollectionImpl) UpdateRecord(_ *state.Context, blockId string, recID string, rec model.PageDetails) error {
|
||||
var databaseId string
|
||||
if dvBlock, ok := d.Pick(blockId).(dataview.Block); !ok {
|
||||
return fmt.Errorf("not a dataview block")
|
||||
} else {
|
||||
databaseId = dvBlock.Model().GetDataview().DatabaseId
|
||||
}
|
||||
|
||||
var db database.Writer
|
||||
if dbRouter, ok := d.SmartBlock.(blockDB.Router); !ok {
|
||||
return fmt.Errorf("unexpected smart block type: %T", d.SmartBlock)
|
||||
} else if target, err := dbRouter.Get(databaseId); err != nil {
|
||||
return err
|
||||
} else {
|
||||
db = target
|
||||
}
|
||||
|
||||
return db.Update(recID, database.Record{Details: rec.Details})
|
||||
}
|
||||
|
||||
func (d *dataviewCollectionImpl) DeleteRecord(_ *state.Context, blockId string, recID string) error {
|
||||
var databaseId string
|
||||
if dvBlock, ok := d.Pick(blockId).(dataview.Block); !ok {
|
||||
return fmt.Errorf("not a dataview block")
|
||||
} else {
|
||||
databaseId = dvBlock.Model().GetDataview().DatabaseId
|
||||
}
|
||||
|
||||
var db database.Writer
|
||||
if dbRouter, ok := d.SmartBlock.(blockDB.Router); !ok {
|
||||
return fmt.Errorf("unexpected smart block type: %T", d.SmartBlock)
|
||||
} else if target, err := dbRouter.Get(databaseId); err != nil {
|
||||
return err
|
||||
} else {
|
||||
db = target
|
||||
}
|
||||
|
||||
return db.Delete(recID)
|
||||
}
|
||||
|
||||
func (d *dataviewCollectionImpl) SmartblockOpened(ctx *state.Context) {
|
||||
d.mu.Lock()
|
||||
defer d.mu.Unlock()
|
||||
d.Iterate(func(b simple.Block) (isContinue bool) {
|
||||
if dvBlock, ok := b.(dataview.Block); !ok {
|
||||
return true
|
||||
|
@ -225,7 +281,7 @@ func (d *dataviewCollectionImpl) SmartblockOpened(ctx *state.Context) {
|
|||
// reset state after block was reopened
|
||||
// getDataviewImpl will also set activeView to the fist one in case the smartblock wasn't opened in this session before
|
||||
dv := d.getDataviewImpl(dvBlock)
|
||||
dv.entries = []database.Entry{}
|
||||
dv.records = nil
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
@ -237,13 +293,15 @@ func (d *dataviewCollectionImpl) fetchAndGetEventsMessages(dv *dataviewImpl, dvB
|
|||
databaseId := dvBlock.Model().GetDataview().DatabaseId
|
||||
activeView := dvBlock.GetView(dv.activeViewId)
|
||||
|
||||
db, err := d.Anytype().DatabaseByID(databaseId)
|
||||
if err != nil {
|
||||
var db database.Reader
|
||||
if dbRouter, ok := d.SmartBlock.(blockDB.Router); !ok {
|
||||
return nil, fmt.Errorf("unexpected smart block type: %T", d.SmartBlock)
|
||||
} else if target, err := dbRouter.Get(databaseId); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
db = target
|
||||
}
|
||||
|
||||
var msgs []*pb.EventMessage
|
||||
|
||||
entries, total, err := db.Query(database.Query{
|
||||
Relations: activeView.Relations,
|
||||
Filters: activeView.Filters,
|
||||
|
@ -251,9 +309,12 @@ func (d *dataviewCollectionImpl) fetchAndGetEventsMessages(dv *dataviewImpl, dvB
|
|||
Limit: dv.limit,
|
||||
Offset: dv.offset,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var currentEntriesIds []string
|
||||
for _, entry := range dv.entries {
|
||||
for _, entry := range dv.records {
|
||||
currentEntriesIds = append(currentEntriesIds, getEntryID(entry))
|
||||
}
|
||||
|
||||
|
@ -262,20 +323,22 @@ func (d *dataviewCollectionImpl) fetchAndGetEventsMessages(dv *dataviewImpl, dvB
|
|||
records = append(records, entry.Details)
|
||||
}
|
||||
|
||||
msgs = append(msgs, &pb.EventMessage{&pb.EventMessageValueOfBlockSetDataviewRecords{
|
||||
&pb.EventBlockSetDataviewRecords{
|
||||
Id: dv.blockId,
|
||||
ViewId: activeView.Id,
|
||||
Updated: nil,
|
||||
Removed: currentEntriesIds,
|
||||
Inserted: records,
|
||||
InsertPosition: 0,
|
||||
Total: uint32(total),
|
||||
},
|
||||
}})
|
||||
var msgs = []*pb.EventMessage{
|
||||
{Value: &pb.EventMessageValueOfBlockSetDataviewRecords{
|
||||
BlockSetDataviewRecords: &pb.EventBlockSetDataviewRecords{
|
||||
Id: dv.blockId,
|
||||
ViewId: activeView.Id,
|
||||
Updated: nil,
|
||||
Removed: currentEntriesIds,
|
||||
Inserted: records,
|
||||
InsertPosition: 0,
|
||||
Total: uint32(total),
|
||||
},
|
||||
}},
|
||||
}
|
||||
|
||||
log.Debugf("db query for %s {filters: %+v, sorts: %+v, limit: %d, offset: %d} got %d entries, total: %d, msgs: %d", databaseId, activeView.Filters, activeView.Sorts, dv.limit, dv.offset, len(entries), total, len(msgs))
|
||||
dv.entries = entries
|
||||
log.Debugf("db query for %s {filters: %+v, sorts: %+v, limit: %d, offset: %d} got %d records, total: %d, msgs: %d", databaseId, activeView.Filters, activeView.Sorts, dv.limit, dv.offset, len(entries), total, len(msgs))
|
||||
dv.records = entries
|
||||
|
||||
return msgs, nil
|
||||
}
|
||||
|
@ -308,7 +371,7 @@ func getDataviewBlock(s *state.State, id string) (dataview.Block, error) {
|
|||
return nil, fmt.Errorf("not a dataview block")
|
||||
}
|
||||
|
||||
func getEntryID(entry database.Entry) string {
|
||||
func getEntryID(entry database.Record) string {
|
||||
if entry.Details == nil {
|
||||
return ""
|
||||
}
|
||||
|
@ -326,7 +389,7 @@ type recordsInsertedAtPosition struct {
|
|||
entries []*types.Struct
|
||||
}
|
||||
|
||||
func calculateEntriesDiff(a []database.Entry, b []database.Entry) (updated []*types.Struct, removed []string, insertedGroupedByPosition []recordsInsertedAtPosition) {
|
||||
func calculateEntriesDiff(a, b []database.Record) (updated []*types.Struct, removed []string, insertedGroupedByPosition []recordsInsertedAtPosition) {
|
||||
var inserted []recordInsertedAtPosition
|
||||
|
||||
var existing = make(map[string]*types.Struct, len(a))
|
||||
|
|
|
@ -30,7 +30,7 @@ func Test_getDefaultRelations(t *testing.T) {
|
|||
}
|
||||
|
||||
func Test_calculateEntriesDiff(t *testing.T) {
|
||||
a := []database.Entry{
|
||||
a := []database.Record{
|
||||
{Details: &types.Struct{
|
||||
Fields: map[string]*types.Value{
|
||||
"id": pbtypes.String("id1"),
|
||||
|
@ -51,7 +51,7 @@ func Test_calculateEntriesDiff(t *testing.T) {
|
|||
}},
|
||||
}
|
||||
|
||||
b := []database.Entry{
|
||||
b := []database.Record{
|
||||
{Details: &types.Struct{
|
||||
Fields: map[string]*types.Value{
|
||||
"id": pbtypes.String("id1"),
|
||||
|
@ -82,5 +82,4 @@ func Test_calculateEntriesDiff(t *testing.T) {
|
|||
require.Equal(t, "id3", removed[0])
|
||||
require.Equal(t, 2, inserted[0].position)
|
||||
require.Equal(t, []*types.Struct{b[2].Details}, inserted[0].entries)
|
||||
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/core/block/simple/file"
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/pbtypes"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/uri"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
@ -30,11 +29,11 @@ const (
|
|||
|
||||
var log = logging.Logger("anytype-mw-smartfile")
|
||||
|
||||
func NewFile(sb smartblock.SmartBlock, source FileSource) File {
|
||||
func NewFile(sb smartblock.SmartBlock, source BlockService) File {
|
||||
return &sfile{SmartBlock: sb, fileSource: source}
|
||||
}
|
||||
|
||||
type FileSource interface {
|
||||
type BlockService interface {
|
||||
DoFile(id string, apply func(f File) error) error
|
||||
CreatePage(ctx *state.Context, req pb.RpcBlockCreatePageRequest) (linkId string, pageId string, err error)
|
||||
ProcessAdd(p process.Process) (err error)
|
||||
|
@ -43,26 +42,38 @@ type FileSource interface {
|
|||
|
||||
type File interface {
|
||||
DropFiles(req pb.RpcExternalDropFilesRequest) (err error)
|
||||
Upload(ctx *state.Context, id, localPath, url string) (err error)
|
||||
Upload(ctx *state.Context, id string, source FileSource, isSync bool) (err error)
|
||||
UploadState(s *state.State, id string, source FileSource, isSync bool) (err error)
|
||||
UpdateFile(id string, apply func(b file.Block) error) (err error)
|
||||
CreateAndUpload(ctx *state.Context, req pb.RpcBlockFileCreateAndUploadRequest) (string, error)
|
||||
|
||||
dropFilesHandler
|
||||
}
|
||||
|
||||
type sfile struct {
|
||||
smartblock.SmartBlock
|
||||
fileSource FileSource
|
||||
type FileSource struct {
|
||||
Path string
|
||||
Url string
|
||||
Bytes []byte
|
||||
Name string
|
||||
}
|
||||
|
||||
func (sf *sfile) Upload(ctx *state.Context, id, localPath, url string) (err error) {
|
||||
type sfile struct {
|
||||
smartblock.SmartBlock
|
||||
fileSource BlockService
|
||||
}
|
||||
|
||||
func (sf *sfile) Upload(ctx *state.Context, id string, source FileSource, isSync bool) (err error) {
|
||||
s := sf.NewStateCtx(ctx)
|
||||
if err = sf.upload(s, id, localPath, url); err != nil {
|
||||
if err = sf.upload(s, id, source, isSync); err != nil {
|
||||
return
|
||||
}
|
||||
return sf.Apply(s)
|
||||
}
|
||||
|
||||
func (sf *sfile) UploadState(s *state.State, id string, source FileSource, isSync bool) (err error) {
|
||||
return sf.upload(s, id, source, isSync)
|
||||
}
|
||||
|
||||
func (sf *sfile) CreateAndUpload(ctx *state.Context, req pb.RpcBlockFileCreateAndUploadRequest) (newId string, err error) {
|
||||
s := sf.NewStateCtx(ctx)
|
||||
nb := simple.New(&model.Block{
|
||||
|
@ -77,7 +88,10 @@ func (sf *sfile) CreateAndUpload(ctx *state.Context, req pb.RpcBlockFileCreateAn
|
|||
if err = s.InsertTo(req.TargetId, req.Position, newId); err != nil {
|
||||
return
|
||||
}
|
||||
if err = sf.upload(s, newId, req.LocalPath, req.Url); err != nil {
|
||||
if err = sf.upload(s, newId, FileSource{
|
||||
Path: req.LocalPath,
|
||||
Url: req.Url,
|
||||
}, false); err != nil {
|
||||
return
|
||||
}
|
||||
if err = sf.Apply(s); err != nil {
|
||||
|
@ -86,22 +100,35 @@ func (sf *sfile) CreateAndUpload(ctx *state.Context, req pb.RpcBlockFileCreateAn
|
|||
return
|
||||
}
|
||||
|
||||
func (sf *sfile) upload(s *state.State, id, localPath, url string) (err error) {
|
||||
url, _ = uri.ProcessURI(url)
|
||||
func (sf *sfile) upload(s *state.State, id string, source FileSource, isSync bool) (err error) {
|
||||
b := s.Get(id)
|
||||
f, ok := b.(file.Block)
|
||||
if !ok {
|
||||
return fmt.Errorf("not a file block")
|
||||
}
|
||||
if err = f.Upload(sf.Anytype(), &updater{
|
||||
smartId: sf.Id(),
|
||||
source: sf.fileSource,
|
||||
}, localPath, url); err != nil {
|
||||
return
|
||||
upl := sf.newUploader().SetBlock(f)
|
||||
if source.Path != "" {
|
||||
upl.SetFile(source.Path)
|
||||
} else if source.Url != "" {
|
||||
upl.SetUrl(source.Url)
|
||||
} else if len(source.Bytes) > 0 {
|
||||
upl.SetBytes(source.Bytes).SetName(source.Name)
|
||||
}
|
||||
if isSync {
|
||||
return upl.Upload(context.TODO()).Err
|
||||
} else {
|
||||
upl.AsyncUpdates(sf.Id()).UploadAsync(context.TODO())
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (sf *sfile) newUploader() Uploader {
|
||||
return &uploader{
|
||||
service: sf.fileSource,
|
||||
anytype: sf.Anytype(),
|
||||
}
|
||||
}
|
||||
|
||||
func (sf *sfile) UpdateFile(id string, apply func(b file.Block) error) (err error) {
|
||||
s := sf.NewState()
|
||||
b := s.Get(id)
|
||||
|
@ -115,20 +142,6 @@ func (sf *sfile) UpdateFile(id string, apply func(b file.Block) error) (err erro
|
|||
return sf.Apply(s, smartblock.NoHistory)
|
||||
}
|
||||
|
||||
type updater struct {
|
||||
smartId string
|
||||
source FileSource
|
||||
}
|
||||
|
||||
func (u *updater) UpdateFileBlock(id string, apply func(f file.Block)) error {
|
||||
return u.source.DoFile(u.smartId, func(f File) error {
|
||||
return f.UpdateFile(id, func(b file.Block) error {
|
||||
apply(b)
|
||||
return nil
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func (sf *sfile) DropFiles(req pb.RpcExternalDropFilesRequest) (err error) {
|
||||
process := &dropFilesProcess{s: sf.fileSource}
|
||||
if err = process.Init(req.LocalFilePaths); err != nil {
|
||||
|
@ -203,13 +216,7 @@ func (sf *sfile) dropFilesSetInfo(info dropFileInfo) (err error) {
|
|||
f.SetState(model.BlockContentFile_Error)
|
||||
return nil
|
||||
}
|
||||
fc := f.Model().GetFile()
|
||||
fc.Type = info.file.Type
|
||||
fc.Mime = info.file.Mime
|
||||
fc.Hash = info.file.Hash
|
||||
fc.Name = info.file.Name
|
||||
fc.State = info.file.State
|
||||
fc.Size_ = info.file.Size_
|
||||
f.SetModel(info.file)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
@ -232,11 +239,12 @@ type dropFileInfo struct {
|
|||
type dropFilesHandler interface {
|
||||
dropFilesCreateStructure(targetId string, pos model.BlockPosition, entries []*dropFileEntry) (blockIds []string, err error)
|
||||
dropFilesSetInfo(info dropFileInfo) (err error)
|
||||
newUploader() Uploader
|
||||
}
|
||||
|
||||
type dropFilesProcess struct {
|
||||
id string
|
||||
s FileSource
|
||||
s BlockService
|
||||
root *dropFileEntry
|
||||
total, done int64
|
||||
cancel chan struct{}
|
||||
|
@ -450,17 +458,16 @@ func (dp *dropFilesProcess) addFilesWorker(wg *sync.WaitGroup, in chan *dropFile
|
|||
}
|
||||
|
||||
func (dp *dropFilesProcess) addFile(f *dropFileInfo) (err error) {
|
||||
var tempFile = file.NewFile(&model.Block{Content: &model.BlockContentOfFile{File: &model.BlockContentFile{}}}).(file.Block)
|
||||
u := file.NewUploader(dp.s.Anytype(), func(f func(file file.Block)) {
|
||||
f(tempFile)
|
||||
})
|
||||
u.DoAuto(f.path)
|
||||
fc := tempFile.Model().GetFile()
|
||||
if fc.State != model.BlockContentFile_Done {
|
||||
upl := &uploader{
|
||||
service: dp.s,
|
||||
anytype: dp.s.Anytype(),
|
||||
}
|
||||
res := upl.SetName(f.name).AutoType(true).SetFile(f.path).Upload(context.TODO())
|
||||
if res.Err != nil {
|
||||
f.err = fmt.Errorf("upload error")
|
||||
return
|
||||
}
|
||||
f.file = fc
|
||||
f.file = res.ToBlock().Model().GetFile()
|
||||
return
|
||||
}
|
||||
|
||||
|
|
1
core/block/editor/file/file_test.go
Normal file
1
core/block/editor/file/file_test.go
Normal file
|
@ -0,0 +1 @@
|
|||
package file_test
|
1
core/block/editor/file/testdata/test.txt
vendored
Normal file
1
core/block/editor/file/testdata/test.txt
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
12345
|
BIN
core/block/editor/file/testdata/unnamed.jpg
vendored
Normal file
BIN
core/block/editor/file/testdata/unnamed.jpg
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
305
core/block/editor/file/uploader.go
Normal file
305
core/block/editor/file/uploader.go
Normal file
|
@ -0,0 +1,305 @@
|
|||
package file
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"image"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/files"
|
||||
"github.com/anytypeio/go-anytype-library/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/anytype"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple/file"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/uri"
|
||||
"github.com/h2non/filetype"
|
||||
)
|
||||
|
||||
var (
|
||||
// limiting overall file upload goroutines
|
||||
uploadFilesLimiter = make(chan struct{}, 8)
|
||||
bufSize = 8192
|
||||
)
|
||||
|
||||
func init() {
|
||||
for i := 0; i < cap(uploadFilesLimiter); i++ {
|
||||
uploadFilesLimiter <- struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
func NewUploader(s BlockService) Uploader {
|
||||
return &uploader{
|
||||
service: s,
|
||||
anytype: s.Anytype(),
|
||||
}
|
||||
}
|
||||
|
||||
type Uploader interface {
|
||||
SetBlock(block file.Block) Uploader
|
||||
SetName(name string) Uploader
|
||||
SetType(tp model.BlockContentFileType) Uploader
|
||||
SetBytes(b []byte) Uploader
|
||||
SetUrl(url string) Uploader
|
||||
SetFile(path string) Uploader
|
||||
AddOptions(options ...files.AddOption) Uploader
|
||||
AutoType(enable bool) Uploader
|
||||
AsyncUpdates(smartBlockId string) Uploader
|
||||
|
||||
Upload(ctx context.Context) (result UploadResult)
|
||||
UploadAsync(todo context.Context) (ch chan UploadResult)
|
||||
}
|
||||
|
||||
type UploadResult struct {
|
||||
Name string
|
||||
Type model.BlockContentFileType
|
||||
Hash string
|
||||
MIME string
|
||||
Size int64
|
||||
Err error
|
||||
}
|
||||
|
||||
func (ur UploadResult) ToBlock() file.Block {
|
||||
state := model.BlockContentFile_Done
|
||||
if ur.Err != nil {
|
||||
state = model.BlockContentFile_Error
|
||||
ur.Name = ur.Err.Error()
|
||||
}
|
||||
return simple.New(&model.Block{
|
||||
Content: &model.BlockContentOfFile{
|
||||
File: &model.BlockContentFile{
|
||||
Hash: ur.Hash,
|
||||
Name: ur.Name,
|
||||
Type: ur.Type,
|
||||
Mime: ur.MIME,
|
||||
Size_: ur.Size,
|
||||
AddedAt: time.Now().Unix(),
|
||||
State: state,
|
||||
},
|
||||
},
|
||||
}).(file.Block)
|
||||
}
|
||||
|
||||
type uploader struct {
|
||||
service BlockService
|
||||
anytype anytype.Service
|
||||
block file.Block
|
||||
getReader func(ctx context.Context) (*bufioClose, error)
|
||||
name string
|
||||
typeDetect bool
|
||||
forceType bool
|
||||
smartBlockId string
|
||||
fileType model.BlockContentFileType
|
||||
opts []files.AddOption
|
||||
}
|
||||
|
||||
type bufioClose struct {
|
||||
*bufio.Reader
|
||||
close func() error
|
||||
}
|
||||
|
||||
func (bc *bufioClose) Close() error {
|
||||
if bc.close != nil {
|
||||
return bc.close()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (u *uploader) SetBlock(block file.Block) Uploader {
|
||||
u.block = block
|
||||
return u
|
||||
}
|
||||
|
||||
func (u *uploader) SetName(name string) Uploader {
|
||||
u.name = name
|
||||
return u
|
||||
}
|
||||
|
||||
func (u *uploader) SetType(tp model.BlockContentFileType) Uploader {
|
||||
u.fileType = tp
|
||||
u.forceType = true
|
||||
return u
|
||||
}
|
||||
|
||||
func (u *uploader) SetBytes(b []byte) Uploader {
|
||||
u.getReader = func(_ context.Context) (*bufioClose, error) {
|
||||
return &bufioClose{
|
||||
Reader: bufio.NewReaderSize(bytes.NewReader(b), bufSize),
|
||||
}, nil
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (u *uploader) AddOptions(options ...files.AddOption) Uploader {
|
||||
return u
|
||||
}
|
||||
|
||||
func (u *uploader) SetUrl(url string) Uploader {
|
||||
url, _ = uri.ProcessURI(url)
|
||||
u.name = filepath.Base(url)
|
||||
u.getReader = func(ctx context.Context) (*bufioClose, error) {
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &bufioClose{
|
||||
Reader: bufio.NewReaderSize(resp.Body, bufSize),
|
||||
close: resp.Body.Close,
|
||||
}, nil
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (u *uploader) SetFile(path string) Uploader {
|
||||
u.name = filepath.Base(path)
|
||||
u.getReader = func(ctx context.Context) (*bufioClose, error) {
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &bufioClose{
|
||||
Reader: bufio.NewReaderSize(f, bufSize),
|
||||
close: f.Close,
|
||||
}, nil
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (u *uploader) AutoType(enable bool) Uploader {
|
||||
u.typeDetect = enable
|
||||
return u
|
||||
}
|
||||
|
||||
func (u *uploader) AsyncUpdates(smartBlockId string) Uploader {
|
||||
u.smartBlockId = smartBlockId
|
||||
return u
|
||||
}
|
||||
|
||||
func (u *uploader) UploadAsync(ctx context.Context) (result chan UploadResult) {
|
||||
result = make(chan UploadResult, 1)
|
||||
if u.block != nil {
|
||||
u.block.SetState(model.BlockContentFile_Uploading)
|
||||
u.block = u.block.Copy().(file.Block)
|
||||
}
|
||||
go func() {
|
||||
result <- u.Upload(ctx)
|
||||
close(result)
|
||||
}()
|
||||
return
|
||||
}
|
||||
|
||||
func (u *uploader) Upload(ctx context.Context) (result UploadResult) {
|
||||
var err error
|
||||
defer func() {
|
||||
if err != nil {
|
||||
result.Err = err
|
||||
if u.block != nil {
|
||||
u.block.SetState(model.BlockContentFile_Error).SetName(err.Error())
|
||||
u.updateBlock()
|
||||
}
|
||||
}
|
||||
}()
|
||||
if u.getReader == nil {
|
||||
err = fmt.Errorf("uploader: empty source for upload")
|
||||
return
|
||||
}
|
||||
buf, err := u.getReader(ctx)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer buf.Close()
|
||||
if !u.forceType {
|
||||
if u.block != nil {
|
||||
u.fileType = u.block.Model().GetFile().GetType()
|
||||
}
|
||||
if u.typeDetect || u.fileType == model.BlockContentFile_None {
|
||||
u.fileType = u.detectType(buf)
|
||||
}
|
||||
}
|
||||
var opts = []files.AddOption{
|
||||
files.WithName(u.name),
|
||||
files.WithReader(buf),
|
||||
}
|
||||
if len(u.opts) > 0 {
|
||||
opts = append(opts, u.opts...)
|
||||
}
|
||||
|
||||
if u.fileType == model.BlockContentFile_Image {
|
||||
im, e := u.anytype.ImageAdd(ctx, opts...)
|
||||
if e == image.ErrFormat {
|
||||
log.Infof("can't add file '%s' as image: add as file", u.name)
|
||||
e = nil
|
||||
return u.SetType(model.BlockContentFile_File).Upload(ctx)
|
||||
}
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
result.Hash = im.Hash()
|
||||
} else {
|
||||
fl, e := u.anytype.FileAdd(ctx, opts...)
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
result.Hash = fl.Hash()
|
||||
if meta := fl.Meta(); meta != nil {
|
||||
result.MIME = meta.Media
|
||||
result.Size = meta.Size
|
||||
}
|
||||
}
|
||||
result.Type = u.fileType
|
||||
result.Name = u.name
|
||||
if u.block != nil {
|
||||
u.block.SetName(u.name).
|
||||
SetState(model.BlockContentFile_Done).
|
||||
SetType(u.fileType).SetHash(result.Hash).
|
||||
SetSize(result.Size).
|
||||
SetMIME(result.MIME)
|
||||
u.updateBlock()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (u *uploader) detectType(buf *bufioClose) model.BlockContentFileType {
|
||||
b, err := buf.Peek(8192)
|
||||
if err != nil && err != io.EOF {
|
||||
return model.BlockContentFile_File
|
||||
}
|
||||
tp, _ := filetype.Match(b)
|
||||
return u.detectTypeByMIME(tp.MIME.Value)
|
||||
}
|
||||
|
||||
func (u *uploader) detectTypeByMIME(mime string) model.BlockContentFileType {
|
||||
if strings.HasPrefix(mime, "image") {
|
||||
return model.BlockContentFile_Image
|
||||
}
|
||||
if strings.HasPrefix(mime, "video") {
|
||||
return model.BlockContentFile_Video
|
||||
}
|
||||
return model.BlockContentFile_File
|
||||
}
|
||||
|
||||
func (u *uploader) updateBlock() {
|
||||
if u.smartBlockId != "" && u.block != nil {
|
||||
err := u.service.DoFile(u.smartBlockId, func(f File) error {
|
||||
return f.UpdateFile(u.block.Model().Id, func(b file.Block) error {
|
||||
b.SetModel(u.block.Copy().Model().GetFile())
|
||||
return nil
|
||||
})
|
||||
})
|
||||
if err != nil {
|
||||
log.Warnf("upload file: can't update info: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
133
core/block/editor/file/uploader_test.go
Normal file
133
core/block/editor/file/uploader_test.go
Normal file
|
@ -0,0 +1,133 @@
|
|||
package file_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"image"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/core"
|
||||
"github.com/anytypeio/go-anytype-library/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/file"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple"
|
||||
file2 "github.com/anytypeio/go-anytype-middleware/core/block/simple/file"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/testMock"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/testMock/mockFile"
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/magiconair/properties/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestUploader_Upload(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
newBlock := func(tp model.BlockContentFileType) file2.Block {
|
||||
return simple.New(&model.Block{Content: &model.BlockContentOfFile{File: &model.BlockContentFile{Type: tp}}}).(file2.Block)
|
||||
}
|
||||
t.Run("empty source", func(t *testing.T) {
|
||||
fx := newFixture(t)
|
||||
defer fx.tearDown()
|
||||
res := fx.Upload(ctx)
|
||||
require.Error(t, res.Err)
|
||||
})
|
||||
t.Run("image by block type", func(t *testing.T) {
|
||||
fx := newFixture(t)
|
||||
defer fx.tearDown()
|
||||
fx.anytype.EXPECT().ImageAdd(gomock.Any(), gomock.Any()).Return(fx.newImage("123"), nil)
|
||||
b := newBlock(model.BlockContentFile_Image)
|
||||
res := fx.Uploader.SetBlock(b).SetFile("./testdata/unnamed.jpg").Upload(ctx)
|
||||
require.NoError(t, res.Err)
|
||||
assert.Equal(t, res.Hash, "123")
|
||||
assert.Equal(t, res.Name, "unnamed.jpg")
|
||||
assert.Equal(t, b.Model().GetFile().Name, "unnamed.jpg")
|
||||
})
|
||||
t.Run("image type detect", func(t *testing.T) {
|
||||
fx := newFixture(t)
|
||||
defer fx.tearDown()
|
||||
fx.anytype.EXPECT().ImageAdd(gomock.Any(), gomock.Any()).Return(fx.newImage("123"), nil)
|
||||
res := fx.Uploader.AutoType(true).SetFile("./testdata/unnamed.jpg").Upload(ctx)
|
||||
require.NoError(t, res.Err)
|
||||
})
|
||||
t.Run("image to file failover", func(t *testing.T) {
|
||||
fx := newFixture(t)
|
||||
defer fx.tearDown()
|
||||
meta := &core.FileMeta{
|
||||
Media: "text/text",
|
||||
Name: "test.txt",
|
||||
Size: 3,
|
||||
Added: time.Now(),
|
||||
}
|
||||
fx.anytype.EXPECT().ImageAdd(gomock.Any(), gomock.Any()).Return(nil, image.ErrFormat)
|
||||
fx.anytype.EXPECT().FileAdd(gomock.Any(), gomock.Any()).Return(fx.newFile("123", meta), nil)
|
||||
b := newBlock(model.BlockContentFile_Image)
|
||||
res := fx.Uploader.SetBlock(b).SetFile("./testdata/test.txt").Upload(ctx)
|
||||
require.NoError(t, res.Err)
|
||||
assert.Equal(t, res.Hash, "123")
|
||||
assert.Equal(t, res.Name, "test.txt")
|
||||
assert.Equal(t, b.Model().GetFile().Name, "test.txt")
|
||||
assert.Equal(t, b.Model().GetFile().Type, model.BlockContentFile_File)
|
||||
})
|
||||
t.Run("file from url", func(t *testing.T) {
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
http.ServeFile(w, r, "./testdata/unnamed.jpg")
|
||||
})
|
||||
serv := httptest.NewServer(mux)
|
||||
defer serv.Close()
|
||||
|
||||
fx := newFixture(t)
|
||||
defer fx.tearDown()
|
||||
fx.anytype.EXPECT().ImageAdd(gomock.Any(), gomock.Any()).Return(fx.newImage("123"), nil)
|
||||
res := fx.Uploader.AutoType(true).SetUrl(serv.URL + "/unnamed.jpg").Upload(ctx)
|
||||
require.NoError(t, res.Err)
|
||||
assert.Equal(t, res.Hash, "123")
|
||||
assert.Equal(t, res.Name, "unnamed.jpg")
|
||||
b := res.ToBlock()
|
||||
assert.Equal(t, b.Model().GetFile().Name, "unnamed.jpg")
|
||||
})
|
||||
t.Run("bytes", func(t *testing.T) {
|
||||
fx := newFixture(t)
|
||||
defer fx.tearDown()
|
||||
fx.anytype.EXPECT().FileAdd(gomock.Any(), gomock.Any()).Return(fx.newFile("123", &core.FileMeta{}), nil)
|
||||
res := fx.Uploader.SetBytes([]byte("my bytes")).SetName("filename").Upload(ctx)
|
||||
require.NoError(t, res.Err)
|
||||
assert.Equal(t, res.Hash, "123")
|
||||
assert.Equal(t, res.Name, "filename")
|
||||
})
|
||||
}
|
||||
|
||||
func newFixture(t *testing.T) *uplFixture {
|
||||
fx := &uplFixture{
|
||||
ctrl: gomock.NewController(t),
|
||||
}
|
||||
fx.anytype = testMock.NewMockService(fx.ctrl)
|
||||
fx.fileService = mockFile.NewMockBlockService(fx.ctrl)
|
||||
fx.fileService.EXPECT().Anytype().Return(fx.anytype).AnyTimes()
|
||||
fx.Uploader = file.NewUploader(fx.fileService)
|
||||
return fx
|
||||
}
|
||||
|
||||
type uplFixture struct {
|
||||
file.Uploader
|
||||
fileService *mockFile.MockBlockService
|
||||
anytype *testMock.MockService
|
||||
ctrl *gomock.Controller
|
||||
}
|
||||
|
||||
func (fx *uplFixture) newImage(hash string) *testMock.MockImage {
|
||||
im := testMock.NewMockImage(fx.ctrl)
|
||||
im.EXPECT().Hash().Return(hash).AnyTimes()
|
||||
return im
|
||||
}
|
||||
|
||||
func (fx *uplFixture) newFile(hash string, meta *core.FileMeta) *testMock.MockFile {
|
||||
f := testMock.NewMockFile(fx.ctrl)
|
||||
f.EXPECT().Hash().Return(hash).AnyTimes()
|
||||
f.EXPECT().Meta().Return(meta).AnyTimes()
|
||||
return f
|
||||
}
|
||||
|
||||
func (fx *uplFixture) tearDown() {
|
||||
fx.ctrl.Finish()
|
||||
}
|
|
@ -17,6 +17,7 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/anymark"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/smartblock"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/state"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/process"
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/pbtypes"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/slice"
|
||||
|
@ -62,11 +63,16 @@ type Services interface {
|
|||
CreateSmartBlock(req pb.RpcBlockCreatePageRequest) (pageId string, err error)
|
||||
SetDetails(req pb.RpcBlockSetDetailsRequest) (err error)
|
||||
SimplePaste(contextId string, anySlot []*model.Block) (err error)
|
||||
UploadBlockFile(ctx *state.Context, req pb.RpcBlockUploadRequest) error
|
||||
BookmarkFetch(ctx *state.Context, req pb.RpcBlockBookmarkFetchRequest) error
|
||||
UploadBlockFileSync(ctx *state.Context, req pb.RpcBlockUploadRequest) error
|
||||
BookmarkFetchSync(ctx *state.Context, req pb.RpcBlockBookmarkFetchRequest) error
|
||||
ProcessAdd(p process.Process) (err error)
|
||||
}
|
||||
|
||||
func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportMarkdownRequest) (rootLinks []*model.Block, err error) {
|
||||
progress := process.NewProgress(pb.ModelProcess_Import)
|
||||
defer progress.Finish()
|
||||
imp.ctrl.ProcessAdd(progress)
|
||||
progress.SetProgressMessage("read dir")
|
||||
s := imp.NewStateCtx(ctx)
|
||||
defer log.Debug("5. ImportMarkdown: all smartBlocks done")
|
||||
|
||||
|
@ -80,9 +86,17 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
filesCount := len(files)
|
||||
log.Debug("FILES COUNT:", filesCount)
|
||||
|
||||
progress.SetTotal(int64(filesCount) * 8) // 8 loops
|
||||
var pagesCreated int
|
||||
|
||||
progress.SetProgressMessage("process links (1)")
|
||||
for name, file := range files {
|
||||
select {
|
||||
case <-progress.Canceled():
|
||||
return nil, fmt.Errorf("canceled")
|
||||
default:
|
||||
}
|
||||
progress.AddDone(1)
|
||||
// index links in the root csv file
|
||||
if !file.isRootFile || !strings.EqualFold(filepath.Ext(name), ".csv") {
|
||||
continue
|
||||
|
@ -99,7 +113,14 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
}
|
||||
}
|
||||
|
||||
progress.SetProgressMessage("creating documents")
|
||||
for name, file := range files {
|
||||
select {
|
||||
case <-progress.Canceled():
|
||||
return nil, fmt.Errorf("canceled")
|
||||
default:
|
||||
}
|
||||
progress.AddDone(1)
|
||||
if !strings.EqualFold(filepath.Ext(name), ".md") {
|
||||
continue
|
||||
}
|
||||
|
@ -120,7 +141,14 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
|
||||
log.Debug("pages created:", pagesCreated)
|
||||
|
||||
progress.SetProgressMessage("set documents names")
|
||||
for name, file := range files {
|
||||
select {
|
||||
case <-progress.Canceled():
|
||||
return nil, fmt.Errorf("canceled")
|
||||
default:
|
||||
}
|
||||
progress.AddDone(1)
|
||||
var title string
|
||||
var emoji string
|
||||
|
||||
|
@ -183,8 +211,14 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
}
|
||||
|
||||
log.Debug("1. ImportMarkdown: all smartBlocks created")
|
||||
log.Debug("1. ImportMarkdown: all smartBlocks created")
|
||||
progress.SetProgressMessage("process links (2)")
|
||||
for _, file := range files {
|
||||
select {
|
||||
case <-progress.Canceled():
|
||||
return nil, fmt.Errorf("canceled")
|
||||
default:
|
||||
}
|
||||
progress.AddDone(1)
|
||||
if file.pageID == "" {
|
||||
// file is not a page
|
||||
continue
|
||||
|
@ -219,7 +253,14 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
}
|
||||
}
|
||||
|
||||
progress.SetProgressMessage("process csv")
|
||||
for name, file := range files {
|
||||
select {
|
||||
case <-progress.Canceled():
|
||||
return nil, fmt.Errorf("canceled")
|
||||
default:
|
||||
}
|
||||
progress.AddDone(1)
|
||||
// wrap root-level csv files with page
|
||||
if file.isRootFile && strings.EqualFold(filepath.Ext(name), ".csv") {
|
||||
pageID, err := imp.ctrl.CreateSmartBlock(pb.RpcBlockCreatePageRequest{})
|
||||
|
@ -276,7 +317,14 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
}
|
||||
|
||||
log.Debug("2. ImportMarkdown: start to paste blocks")
|
||||
progress.SetProgressMessage("create content")
|
||||
for name, file := range files {
|
||||
select {
|
||||
case <-progress.Canceled():
|
||||
return nil, fmt.Errorf("canceled")
|
||||
default:
|
||||
}
|
||||
progress.AddDone(1)
|
||||
if file.pageID == "" {
|
||||
// file is not a page
|
||||
continue
|
||||
|
@ -293,7 +341,14 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
}
|
||||
|
||||
log.Debug("3. ImportMarkdown: all blocks pasted. Start to upload files & fetch bookmarks")
|
||||
progress.SetProgressMessage("upload files")
|
||||
for name, file := range files {
|
||||
select {
|
||||
case <-progress.Canceled():
|
||||
return nil, fmt.Errorf("canceled")
|
||||
default:
|
||||
}
|
||||
progress.AddDone(1)
|
||||
log.Debug(" >>> current page:", name, " | linked: ", file.hasInboundLinks)
|
||||
if file.pageID == "" {
|
||||
continue
|
||||
|
@ -301,7 +356,7 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
|
||||
for _, b := range file.parsedBlocks {
|
||||
if bm := b.GetBookmark(); bm != nil {
|
||||
err = imp.ctrl.BookmarkFetch(ctx, pb.RpcBlockBookmarkFetchRequest{
|
||||
err = imp.ctrl.BookmarkFetchSync(ctx, pb.RpcBlockBookmarkFetchRequest{
|
||||
ContextId: file.pageID,
|
||||
BlockId: b.Id,
|
||||
Url: bm.Url,
|
||||
|
@ -314,7 +369,7 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
log.Debug(" page:", name, " | start to upload file :", f.Name)
|
||||
|
||||
if strings.HasPrefix(f.Name, "http://") || strings.HasPrefix(f.Name, "https://") {
|
||||
err = imp.ctrl.UploadBlockFile(ctx, pb.RpcBlockUploadRequest{
|
||||
err = imp.ctrl.UploadBlockFileSync(ctx, pb.RpcBlockUploadRequest{
|
||||
ContextId: file.pageID,
|
||||
BlockId: b.Id,
|
||||
Url: f.Name,
|
||||
|
@ -351,23 +406,27 @@ func (imp *importImpl) ImportMarkdown(ctx *state.Context, req pb.RpcBlockImportM
|
|||
targetFile.Close()
|
||||
tmpFile.Close()
|
||||
|
||||
err = imp.ctrl.UploadBlockFile(ctx, pb.RpcBlockUploadRequest{
|
||||
err = imp.ctrl.UploadBlockFileSync(ctx, pb.RpcBlockUploadRequest{
|
||||
ContextId: file.pageID,
|
||||
BlockId: b.Id,
|
||||
FilePath: tmpFile.Name(),
|
||||
Url: "",
|
||||
})
|
||||
|
||||
os.Remove(tmpFile.Name())
|
||||
if err != nil {
|
||||
return rootLinks, fmt.Errorf("can not import this file: %s. error: %s", f.Name, err)
|
||||
}
|
||||
|
||||
os.Remove(tmpFile.Name())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
progress.SetProgressMessage("process links (3)")
|
||||
for _, file := range files {
|
||||
select {
|
||||
case <-progress.Canceled():
|
||||
return nil, fmt.Errorf("canceled")
|
||||
default:
|
||||
}
|
||||
progress.AddDone(1)
|
||||
if file.pageID == "" {
|
||||
// not a page
|
||||
continue
|
||||
|
|
|
@ -12,15 +12,22 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/util/linkpreview"
|
||||
)
|
||||
|
||||
func NewPage(m meta.Service, fileSource file.FileSource, bCtrl bookmark.DoBookmark, importServices _import.Services, lp linkpreview.LinkPreview) *Page {
|
||||
func NewPage(
|
||||
m meta.Service,
|
||||
fileSource file.BlockService,
|
||||
bCtrl bookmark.DoBookmark,
|
||||
importServices _import.Services,
|
||||
lp linkpreview.LinkPreview,
|
||||
) *Page {
|
||||
sb := smartblock.New(m)
|
||||
f := file.NewFile(sb, fileSource)
|
||||
return &Page{
|
||||
SmartBlock: sb,
|
||||
Basic: basic.NewBasic(sb),
|
||||
IHistory: basic.NewHistory(sb),
|
||||
Text: stext.NewText(sb),
|
||||
File: file.NewFile(sb, fileSource),
|
||||
Clipboard: clipboard.NewClipboard(sb),
|
||||
File: f,
|
||||
Clipboard: clipboard.NewClipboard(sb, f),
|
||||
Bookmark: bookmark.NewBookmark(sb, lp, bCtrl),
|
||||
Import: _import.NewImport(sb, importServices),
|
||||
}
|
||||
|
|
|
@ -13,15 +13,16 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/util/linkpreview"
|
||||
)
|
||||
|
||||
func NewProfile(m meta.Service, fileSource file.FileSource, bCtrl bookmark.DoBookmark, lp linkpreview.LinkPreview, sendEvent func(e *pb.Event)) *Profile {
|
||||
func NewProfile(m meta.Service, fileSource file.BlockService, bCtrl bookmark.DoBookmark, lp linkpreview.LinkPreview, sendEvent func(e *pb.Event)) *Profile {
|
||||
sb := smartblock.New(m)
|
||||
f := file.NewFile(sb, fileSource)
|
||||
return &Profile{
|
||||
SmartBlock: sb,
|
||||
Basic: basic.NewBasic(sb),
|
||||
IHistory: basic.NewHistory(sb),
|
||||
Text: stext.NewText(sb),
|
||||
File: file.NewFile(sb, fileSource),
|
||||
Clipboard: clipboard.NewClipboard(sb),
|
||||
File: f,
|
||||
Clipboard: clipboard.NewClipboard(sb, f),
|
||||
Bookmark: bookmark.NewBookmark(sb, lp, bCtrl),
|
||||
sendEvent: sendEvent,
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/database"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/basic"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/dataview"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/smartblock"
|
||||
|
@ -15,15 +16,17 @@ import (
|
|||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func NewSet(ms meta.Service, sendEvent func(e *pb.Event)) *Set {
|
||||
sb := smartblock.New(ms)
|
||||
return &Set{
|
||||
SmartBlock: sb,
|
||||
Basic: basic.NewBasic(sb),
|
||||
IHistory: basic.NewHistory(sb),
|
||||
Dataview: dataview.NewDataview(sb, sendEvent),
|
||||
sendEvent: sendEvent,
|
||||
func NewSet(ms meta.Service, dbCtrl database.Ctrl) *Set {
|
||||
sb := &Set{
|
||||
SmartBlock: smartblock.New(ms),
|
||||
}
|
||||
|
||||
sb.Basic = basic.NewBasic(sb)
|
||||
sb.IHistory = basic.NewHistory(sb)
|
||||
sb.Dataview = dataview.NewDataview(sb)
|
||||
sb.Router = database.New(dbCtrl)
|
||||
|
||||
return sb
|
||||
}
|
||||
|
||||
type Set struct {
|
||||
|
@ -31,8 +34,7 @@ type Set struct {
|
|||
basic.Basic
|
||||
basic.IHistory
|
||||
dataview.Dataview
|
||||
|
||||
sendEvent func(e *pb.Event)
|
||||
database.Router
|
||||
}
|
||||
|
||||
func (p *Set) Init(s source.Source, _ bool) (err error) {
|
||||
|
|
|
@ -287,14 +287,17 @@ func (sb *smartBlock) updatePageStore(beforeSnippet string, act *undo.Action) (e
|
|||
if sb.Type() == pb.SmartBlockType_Archive {
|
||||
return
|
||||
}
|
||||
|
||||
var storeInfo struct {
|
||||
details *types.Struct
|
||||
snippet *string
|
||||
snippet string
|
||||
links []string
|
||||
}
|
||||
|
||||
if act == nil || act.Details != nil {
|
||||
storeInfo.details = pbtypes.CopyStruct(sb.Details())
|
||||
}
|
||||
|
||||
if hasDepIds(act) {
|
||||
if sb.checkSubscriptions() {
|
||||
storeInfo.links = make([]string, len(sb.depIds))
|
||||
|
@ -303,15 +306,16 @@ func (sb *smartBlock) updatePageStore(beforeSnippet string, act *undo.Action) (e
|
|||
}
|
||||
}
|
||||
|
||||
afterSnippet := sb.Doc.Snippet()
|
||||
if beforeSnippet != afterSnippet {
|
||||
storeInfo.snippet = &afterSnippet
|
||||
if afterSnippet := sb.Doc.Snippet(); beforeSnippet != afterSnippet {
|
||||
storeInfo.snippet = afterSnippet
|
||||
}
|
||||
|
||||
if at := sb.Anytype(); at != nil && sb.Type() != pb.SmartBlockType_Breadcrumbs {
|
||||
if storeInfo.links != nil || storeInfo.details != nil || storeInfo.snippet != nil {
|
||||
return at.PageStore().Update(sb.Id(), storeInfo.details, storeInfo.links, storeInfo.snippet)
|
||||
if storeInfo.links != nil || storeInfo.details != nil || len(storeInfo.snippet) > 0 {
|
||||
return at.PageStore().UpdatePage(sb.Id(), storeInfo.details, storeInfo.links, storeInfo.snippet)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -17,10 +17,15 @@ func NewDocFromSnapshot(rootId string, snapshot *pb.ChangeSnapshot) Doc {
|
|||
for _, b := range snapshot.Data.Blocks {
|
||||
blocks[b.Id] = simple.New(b)
|
||||
}
|
||||
fileKeys := make([]pb.ChangeFileKeys, 0, len(snapshot.FileKeys))
|
||||
for _, fk := range snapshot.FileKeys {
|
||||
fileKeys = append(fileKeys, *fk)
|
||||
}
|
||||
return &State{
|
||||
rootId: rootId,
|
||||
blocks: blocks,
|
||||
details: snapshot.Data.Details,
|
||||
rootId: rootId,
|
||||
blocks: blocks,
|
||||
details: snapshot.Data.Details,
|
||||
fileKeys: fileKeys,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
93
core/block/process/progress.go
Normal file
93
core/block/process/progress.go
Normal file
|
@ -0,0 +1,93 @@
|
|||
package process
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
)
|
||||
|
||||
func NewProgress(pType pb.ModelProcessType) *Progress {
|
||||
return &Progress{
|
||||
id: bson.NewObjectId().Hex(),
|
||||
done: make(chan struct{}),
|
||||
cancel: make(chan struct{}),
|
||||
pType: pType,
|
||||
}
|
||||
}
|
||||
|
||||
type Progress struct {
|
||||
id string
|
||||
done, cancel chan struct{}
|
||||
totalCount, doneCount int64
|
||||
|
||||
pType pb.ModelProcessType
|
||||
pMessage string
|
||||
m sync.Mutex
|
||||
}
|
||||
|
||||
func (p *Progress) SetTotal(total int64) {
|
||||
atomic.StoreInt64(&p.totalCount, total)
|
||||
}
|
||||
|
||||
func (p *Progress) SetDone(done int64) {
|
||||
atomic.StoreInt64(&p.doneCount, done)
|
||||
}
|
||||
|
||||
func (p *Progress) AddDone(delta int64) {
|
||||
atomic.AddInt64(&p.doneCount, delta)
|
||||
}
|
||||
|
||||
func (p *Progress) SetProgressMessage(msg string) {
|
||||
p.m.Lock()
|
||||
defer p.m.Unlock()
|
||||
p.pMessage = msg
|
||||
}
|
||||
|
||||
func (p *Progress) Canceled() chan struct{} {
|
||||
return p.cancel
|
||||
}
|
||||
|
||||
func (p *Progress) Finish() {
|
||||
close(p.done)
|
||||
}
|
||||
|
||||
func (p *Progress) Id() string {
|
||||
return p.id
|
||||
}
|
||||
|
||||
func (p *Progress) Cancel() (err error) {
|
||||
close(p.cancel)
|
||||
return
|
||||
}
|
||||
|
||||
func (p *Progress) Info() pb.ModelProcess {
|
||||
state := pb.ModelProcess_Running
|
||||
select {
|
||||
case <-p.done:
|
||||
state = pb.ModelProcess_Done
|
||||
default:
|
||||
}
|
||||
select {
|
||||
case <-p.cancel:
|
||||
state = pb.ModelProcess_Canceled
|
||||
default:
|
||||
}
|
||||
p.m.Lock()
|
||||
defer p.m.Unlock()
|
||||
return pb.ModelProcess{
|
||||
Id: p.id,
|
||||
Type: p.pType,
|
||||
State: state,
|
||||
Progress: &pb.ModelProcessProgress{
|
||||
Total: atomic.LoadInt64(&p.totalCount),
|
||||
Done: atomic.LoadInt64(&p.doneCount),
|
||||
Message: p.pMessage,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Progress) Done() chan struct{} {
|
||||
return p.done
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package block
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"sync"
|
||||
|
@ -30,7 +31,6 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/core/block/simple"
|
||||
_ "github.com/anytypeio/go-anytype-middleware/core/block/simple/bookmark"
|
||||
_ "github.com/anytypeio/go-anytype-middleware/core/block/simple/file"
|
||||
simpleFile "github.com/anytypeio/go-anytype-middleware/core/block/simple/file"
|
||||
|
||||
_ "github.com/anytypeio/go-anytype-middleware/core/block/simple/link"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple/text"
|
||||
|
@ -105,6 +105,7 @@ type Service interface {
|
|||
|
||||
UploadFile(req pb.RpcUploadFileRequest) (hash string, err error)
|
||||
UploadBlockFile(ctx *state.Context, req pb.RpcBlockUploadRequest) error
|
||||
UploadBlockFileSync(ctx *state.Context, req pb.RpcBlockUploadRequest) (err error)
|
||||
CreateAndUploadFile(ctx *state.Context, req pb.RpcBlockFileCreateAndUploadRequest) (id string, err error)
|
||||
DropFiles(req pb.RpcExternalDropFilesRequest) (err error)
|
||||
|
||||
|
@ -120,7 +121,12 @@ type Service interface {
|
|||
SetDataviewActiveView(ctx *state.Context, req pb.RpcBlockSetDataviewActiveViewRequest) error
|
||||
CreateDataviewView(ctx *state.Context, req pb.RpcBlockCreateDataviewViewRequest) (id string, err error)
|
||||
|
||||
CreateDataviewRecord(ctx *state.Context, req pb.RpcBlockCreateDataviewRecordRequest) (*types.Struct, error)
|
||||
UpdateDataviewRecord(ctx *state.Context, req pb.RpcBlockUpdateDataviewRecordRequest) error
|
||||
DeleteDataviewRecord(ctx *state.Context, req pb.RpcBlockDeleteDataviewRecordRequest) error
|
||||
|
||||
BookmarkFetch(ctx *state.Context, req pb.RpcBlockBookmarkFetchRequest) error
|
||||
BookmarkFetchSync(ctx *state.Context, req pb.RpcBlockBookmarkFetchRequest) (err error)
|
||||
BookmarkCreateAndFetch(ctx *state.Context, req pb.RpcBlockBookmarkCreateAndFetchRequest) (id string, err error)
|
||||
|
||||
ProcessAdd(p process.Process) (err error)
|
||||
|
@ -352,7 +358,6 @@ func (s *service) SetBreadcrumbs(ctx *state.Context, req pb.RpcBlockSetBreadcrum
|
|||
} else {
|
||||
return ErrUnexpectedBlockType
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -625,6 +630,35 @@ func (s *service) CreateDataviewView(ctx *state.Context, req pb.RpcBlockCreateDa
|
|||
return
|
||||
}
|
||||
|
||||
func (s *service) CreateDataviewRecord(ctx *state.Context, req pb.RpcBlockCreateDataviewRecordRequest) (rec *types.Struct, err error) {
|
||||
err = s.DoDataview(req.ContextId, func(b dataview.Dataview) error {
|
||||
cr, err := b.CreateRecord(ctx, req.BlockId, model.PageDetails{Details: req.Record})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
rec = cr.Details
|
||||
return nil
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (s *service) UpdateDataviewRecord(ctx *state.Context, req pb.RpcBlockUpdateDataviewRecordRequest) (err error) {
|
||||
err = s.DoDataview(req.ContextId, func(b dataview.Dataview) error {
|
||||
return b.UpdateRecord(ctx, req.BlockId, req.RecordId, model.PageDetails{Details: req.Record})
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (s *service) DeleteDataviewRecord(ctx *state.Context, req pb.RpcBlockDeleteDataviewRecordRequest) (err error) {
|
||||
err = s.DoDataview(req.ContextId, func(b dataview.Dataview) error {
|
||||
return b.DeleteRecord(ctx, req.BlockId, req.RecordId)
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (s *service) Copy(req pb.RpcBlockCopyRequest) (textSlot string, htmlSlot string, anySlot []*model.Block, err error) {
|
||||
err = s.DoClipboard(req.ContextId, func(cb clipboard.Clipboard) error {
|
||||
textSlot, htmlSlot, anySlot, err = cb.Copy(req)
|
||||
|
@ -758,10 +792,21 @@ func (s *service) SetAlign(ctx *state.Context, contextId string, align model.Blo
|
|||
}
|
||||
|
||||
func (s *service) UploadBlockFile(ctx *state.Context, req pb.RpcBlockUploadRequest) (err error) {
|
||||
<-uploadFilesLimiter
|
||||
defer func() { uploadFilesLimiter <- struct{}{} }()
|
||||
return s.DoFile(req.ContextId, func(b file.File) error {
|
||||
err = b.Upload(ctx, req.BlockId, req.FilePath, req.Url)
|
||||
err = b.Upload(ctx, req.BlockId, file.FileSource{
|
||||
Path: req.FilePath,
|
||||
Url: req.Url,
|
||||
}, false)
|
||||
return err
|
||||
})
|
||||
}
|
||||
|
||||
func (s *service) UploadBlockFileSync(ctx *state.Context, req pb.RpcBlockUploadRequest) (err error) {
|
||||
return s.DoFile(req.ContextId, func(b file.File) error {
|
||||
err = b.Upload(ctx, req.BlockId, file.FileSource{
|
||||
Path: req.FilePath,
|
||||
Url: req.Url,
|
||||
}, true)
|
||||
return err
|
||||
})
|
||||
}
|
||||
|
@ -775,22 +820,20 @@ func (s *service) CreateAndUploadFile(ctx *state.Context, req pb.RpcBlockFileCre
|
|||
}
|
||||
|
||||
func (s *service) UploadFile(req pb.RpcUploadFileRequest) (hash string, err error) {
|
||||
var tempFile = simpleFile.NewFile(&model.Block{Content: &model.BlockContentOfFile{File: &model.BlockContentFile{}}}).(simpleFile.Block)
|
||||
var opts []files.AddOption
|
||||
upl := file.NewUploader(s)
|
||||
if req.DisableEncryption {
|
||||
opts = append(opts, files.WithPlaintext(true))
|
||||
upl.AddOptions(files.WithPlaintext(true))
|
||||
}
|
||||
u := simpleFile.NewUploader(s.Anytype(), func(f func(file simpleFile.Block)) {
|
||||
f(tempFile)
|
||||
}, opts...)
|
||||
if err = u.DoType(req.LocalPath, req.Url, req.Type); err != nil {
|
||||
return
|
||||
if req.Type != model.BlockContentFile_None {
|
||||
upl.SetType(req.Type)
|
||||
} else {
|
||||
upl.AutoType(true)
|
||||
}
|
||||
result := tempFile.Model().GetFile()
|
||||
if result.State != model.BlockContentFile_Done {
|
||||
return "", fmt.Errorf("unexpected upload error")
|
||||
res := upl.SetFile(req.LocalPath).Upload(context.TODO())
|
||||
if res.Err != nil {
|
||||
return "", res.Err
|
||||
}
|
||||
return result.Hash, nil
|
||||
return res.Hash, nil
|
||||
}
|
||||
|
||||
func (s *service) DropFiles(req pb.RpcExternalDropFilesRequest) (err error) {
|
||||
|
@ -813,7 +856,13 @@ func (s *service) Redo(ctx *state.Context, req pb.RpcBlockRedoRequest) (err erro
|
|||
|
||||
func (s *service) BookmarkFetch(ctx *state.Context, req pb.RpcBlockBookmarkFetchRequest) (err error) {
|
||||
return s.DoBookmark(req.ContextId, func(b bookmark.Bookmark) error {
|
||||
return b.Fetch(ctx, req.BlockId, req.Url)
|
||||
return b.Fetch(ctx, req.BlockId, req.Url, false)
|
||||
})
|
||||
}
|
||||
|
||||
func (s *service) BookmarkFetchSync(ctx *state.Context, req pb.RpcBlockBookmarkFetchRequest) (err error) {
|
||||
return s.DoBookmark(req.ContextId, func(b bookmark.Bookmark) error {
|
||||
return b.Fetch(ctx, req.BlockId, req.Url, true)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -900,16 +949,14 @@ func (s *service) createSmartBlock(id string, initEmpty bool) (sb smartblock.Sma
|
|||
case pb.SmartBlockType_Archive:
|
||||
sb = editor.NewArchive(s.meta, s)
|
||||
case pb.SmartBlockType_Set:
|
||||
sb = editor.NewSet(s.meta, s.sendEvent)
|
||||
sb = editor.NewSet(s.meta, s)
|
||||
case pb.SmartBlockType_ProfilePage:
|
||||
sb = editor.NewProfile(s.meta, s, s, s.linkPreview, s.sendEvent)
|
||||
default:
|
||||
return nil, fmt.Errorf("unexpected smartblock type: %v", sc.Type())
|
||||
}
|
||||
|
||||
if err = sb.Init(sc, initEmpty); err != nil {
|
||||
return
|
||||
}
|
||||
err = sb.Init(sc, initEmpty)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"fmt"
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/files"
|
||||
|
@ -46,6 +47,7 @@ type FetchParams struct {
|
|||
Anytype anytype.Service
|
||||
Updater Updater
|
||||
LinkPreview linkpreview.LinkPreview
|
||||
Sync bool
|
||||
}
|
||||
|
||||
type Updater func(id string, apply func(b Block) error) (err error)
|
||||
|
@ -72,7 +74,11 @@ func (f *Bookmark) SetFaviconHash(hash string) {
|
|||
|
||||
func (f *Bookmark) Fetch(params FetchParams) (err error) {
|
||||
f.content.Url = params.Url
|
||||
go fetcher(f.Id, params)
|
||||
if !params.Sync {
|
||||
go fetcher(f.Id, params)
|
||||
} else {
|
||||
fetcher(f.Id, params)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -151,7 +157,7 @@ func (b *Bookmark) ApplyEvent(e *pb.EventBlockSetBookmark) (err error) {
|
|||
}
|
||||
|
||||
func fetcher(id string, params FetchParams) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
|
||||
data, err := params.LinkPreview.Fetch(ctx, params.Url)
|
||||
cancel()
|
||||
if err != nil {
|
||||
|
@ -167,9 +173,11 @@ func fetcher(id string, params FetchParams) {
|
|||
fmt.Println("can't set linkpreview data:", id, err)
|
||||
return
|
||||
}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
if data.ImageUrl != "" {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
hash, err := loadImage(params.Anytype, data.ImageUrl)
|
||||
if err != nil {
|
||||
fmt.Println("can't load image url:", data.ImageUrl, err)
|
||||
|
@ -186,7 +194,9 @@ func fetcher(id string, params FetchParams) {
|
|||
}()
|
||||
}
|
||||
if data.FaviconUrl != "" {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
hash, err := loadImage(params.Anytype, data.FaviconUrl)
|
||||
if err != nil {
|
||||
fmt.Println("can't load favicon url:", data.FaviconUrl, err)
|
||||
|
@ -202,6 +212,7 @@ func fetcher(id string, params FetchParams) {
|
|||
}
|
||||
}()
|
||||
}
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func (f *Bookmark) FillFileHashes(hashes []string) []string {
|
||||
|
|
|
@ -2,11 +2,9 @@ package file
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/core"
|
||||
"github.com/anytypeio/go-anytype-library/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/anytype"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple/base"
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
|
@ -30,10 +28,14 @@ func NewFile(m *model.Block) simple.Block {
|
|||
type Block interface {
|
||||
simple.Block
|
||||
simple.FileHashes
|
||||
Upload(stor anytype.Service, updater Updater, localPath, url string) (err error)
|
||||
SetFileData(hash string, meta core.FileMeta)
|
||||
SetImage(hash, name string)
|
||||
SetState(state model.BlockContentFileState)
|
||||
SetHash(hash string) Block
|
||||
SetName(name string) Block
|
||||
SetState(state model.BlockContentFileState) Block
|
||||
SetType(tp model.BlockContentFileType) Block
|
||||
SetSize(size int64) Block
|
||||
SetMIME(mime string) Block
|
||||
SetTime(tm time.Time) Block
|
||||
SetModel(m *model.BlockContentFile) Block
|
||||
ApplyEvent(e *pb.EventBlockSetFile) error
|
||||
}
|
||||
|
||||
|
@ -46,26 +48,50 @@ type File struct {
|
|||
content *model.BlockContentFile
|
||||
}
|
||||
|
||||
func (f *File) Upload(stor anytype.Service, updater Updater, localPath, url string) (err error) {
|
||||
if f.content.State != model.BlockContentFile_Empty && f.content.State != model.BlockContentFile_Error {
|
||||
return fmt.Errorf("block is not empty")
|
||||
}
|
||||
f.content.State = model.BlockContentFile_Uploading
|
||||
id := f.Id
|
||||
up := &uploader{
|
||||
updateFile: func(apply func(file Block)) {
|
||||
if e := updater.UpdateFileBlock(id, apply); e != nil {
|
||||
log.Warnf("can't update file block: %v", e)
|
||||
}
|
||||
},
|
||||
storage: stor,
|
||||
}
|
||||
if f.content.Type == model.BlockContentFile_Image {
|
||||
go up.DoImage(localPath, url)
|
||||
} else {
|
||||
go up.Do(localPath, url)
|
||||
}
|
||||
return
|
||||
func (f *File) SetHash(hash string) Block {
|
||||
f.content.Hash = hash
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *File) SetName(name string) Block {
|
||||
f.content.Name = name
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *File) SetState(state model.BlockContentFileState) Block {
|
||||
f.content.State = state
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *File) SetType(tp model.BlockContentFileType) Block {
|
||||
f.content.Type = tp
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *File) SetSize(size int64) Block {
|
||||
f.content.Size_ = size
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *File) SetMIME(mime string) Block {
|
||||
f.content.Mime = mime
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *File) SetTime(tm time.Time) Block {
|
||||
f.content.AddedAt = tm.Unix()
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *File) SetModel(m *model.BlockContentFile) Block {
|
||||
f.content.Hash = m.Hash
|
||||
f.content.Type = m.Type
|
||||
f.content.Name = m.Name
|
||||
f.content.AddedAt = m.AddedAt
|
||||
f.content.Mime = m.Mime
|
||||
f.content.Size_ = m.Size_
|
||||
f.content.State = m.State
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *File) Copy() simple.Block {
|
||||
|
@ -76,31 +102,6 @@ func (f *File) Copy() simple.Block {
|
|||
}
|
||||
}
|
||||
|
||||
func (f *File) SetState(state model.BlockContentFileState) {
|
||||
f.content.State = state
|
||||
}
|
||||
|
||||
func (f *File) SetFileData(hash string, meta core.FileMeta) {
|
||||
f.content.Size_ = meta.Size
|
||||
isVideoCT := strings.HasPrefix(meta.Media, "video/")
|
||||
if f.content.Type == model.BlockContentFile_Video && !isVideoCT {
|
||||
f.content.Type = model.BlockContentFile_File
|
||||
} else if f.content.Type == model.BlockContentFile_None || f.content.Type == model.BlockContentFile_Image {
|
||||
f.content.Type = model.BlockContentFile_File
|
||||
}
|
||||
f.content.State = model.BlockContentFile_Done
|
||||
f.content.Name = meta.Name
|
||||
f.content.Hash = hash
|
||||
f.content.Mime = meta.Media
|
||||
}
|
||||
|
||||
func (f *File) SetImage(hash, name string) {
|
||||
f.content.Type = model.BlockContentFile_Image
|
||||
f.content.State = model.BlockContentFile_Done
|
||||
f.content.Name = name
|
||||
f.content.Hash = hash
|
||||
}
|
||||
|
||||
func (f *File) Diff(b simple.Block) (msgs []*pb.EventMessage, err error) {
|
||||
file, ok := b.(*File)
|
||||
if !ok {
|
||||
|
|
|
@ -4,7 +4,6 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/core"
|
||||
"github.com/anytypeio/go-anytype-library/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple/base"
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
|
@ -29,18 +28,8 @@ func TestFile_Diff(t *testing.T) {
|
|||
b1 := testBlock()
|
||||
b2 := testBlock()
|
||||
tm := time.Now()
|
||||
b1.SetFileData("1", core.FileMeta{
|
||||
Media: "2",
|
||||
Name: "3",
|
||||
Size: 4,
|
||||
Added: tm,
|
||||
})
|
||||
b2.SetFileData("1", core.FileMeta{
|
||||
Media: "2",
|
||||
Name: "3",
|
||||
Size: 4,
|
||||
Added: tm,
|
||||
})
|
||||
b1.SetHash("1").SetMIME("2").SetName("3").SetSize(4).SetTime(tm)
|
||||
b2.SetHash("1").SetMIME("2").SetName("3").SetSize(4).SetTime(tm)
|
||||
d, err := b1.Diff(b2)
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, d, 0)
|
||||
|
@ -58,12 +47,7 @@ func TestFile_Diff(t *testing.T) {
|
|||
b2 := testBlock()
|
||||
|
||||
b2.SetState(model.BlockContentFile_Done)
|
||||
b2.SetFileData("hash", core.FileMeta{
|
||||
Media: "video/mpeg",
|
||||
Name: "image.mpg",
|
||||
Size: 3,
|
||||
Added: time.Now(),
|
||||
})
|
||||
b2.SetHash("hash").SetMIME("video/mpeg").SetName("image.mpg").SetSize(3).SetTime(time.Now()).SetType(model.BlockContentFile_Video)
|
||||
|
||||
diff, err := b1.Diff(b2)
|
||||
require.NoError(t, err)
|
||||
|
|
BIN
core/block/simple/file/testdata/b.jpg
vendored
BIN
core/block/simple/file/testdata/b.jpg
vendored
Binary file not shown.
Before Width: | Height: | Size: 16 KiB |
1
core/block/simple/file/testdata/test.txt
vendored
1
core/block/simple/file/testdata/test.txt
vendored
|
@ -1 +0,0 @@
|
|||
test
|
|
@ -1,137 +0,0 @@
|
|||
package file
|
||||
|
||||
import (
|
||||
"context"
|
||||
"image"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/anytypeio/go-anytype-middleware/util/uri"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/files"
|
||||
"github.com/anytypeio/go-anytype-library/logging"
|
||||
"github.com/anytypeio/go-anytype-library/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/anytype"
|
||||
"github.com/h2non/filetype"
|
||||
)
|
||||
|
||||
var log = logging.Logger("anytype-mw-file")
|
||||
|
||||
func NewUploader(a anytype.Service, fn func(f func(file Block)), opts ...files.AddOption) Uploader {
|
||||
return &uploader{
|
||||
updateFile: fn,
|
||||
storage: a,
|
||||
options: opts,
|
||||
}
|
||||
}
|
||||
|
||||
type Uploader interface {
|
||||
DoAuto(localPath string)
|
||||
DoType(localPath, url string, fType model.BlockContentFileType) (err error)
|
||||
}
|
||||
|
||||
type uploader struct {
|
||||
updateFile func(f func(file Block))
|
||||
storage anytype.Service
|
||||
isImage bool
|
||||
options []files.AddOption
|
||||
}
|
||||
|
||||
func (u *uploader) DoAuto(localPath string) {
|
||||
tp, _ := filetype.MatchFile(localPath)
|
||||
if strings.HasPrefix(tp.MIME.Value, "image") {
|
||||
u.DoImage(localPath, "")
|
||||
} else {
|
||||
u.Do(localPath, "")
|
||||
}
|
||||
}
|
||||
|
||||
func (u *uploader) DoType(localPath, url string, fType model.BlockContentFileType) (err error) {
|
||||
u.isImage = fType == model.BlockContentFile_Image
|
||||
url, _ = uri.ProcessURI(url)
|
||||
return u.do(localPath, url)
|
||||
}
|
||||
|
||||
func (u *uploader) DoImage(localPath, url string) {
|
||||
u.isImage = true
|
||||
err := u.do(localPath, url)
|
||||
if err == image.ErrFormat {
|
||||
log.Infof("can't decode image upload as file: %v", err)
|
||||
u.isImage = false
|
||||
err = u.do(localPath, url)
|
||||
}
|
||||
if err != nil {
|
||||
log.Warningf("upload file error: %v", err)
|
||||
u.updateFile(func(file Block) {
|
||||
file.SetState(model.BlockContentFile_Error)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (u *uploader) Do(localPath, url string) {
|
||||
if err := u.do(localPath, url); err != nil {
|
||||
log.Warnf("upload file error: %v", err)
|
||||
u.updateFile(func(file Block) {
|
||||
file.SetState(model.BlockContentFile_Error)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (u *uploader) do(localPath, url string) (err error) {
|
||||
if url != "" {
|
||||
return u.doUrl(url)
|
||||
} else {
|
||||
return u.doLocal(localPath)
|
||||
}
|
||||
}
|
||||
|
||||
func (u *uploader) doLocal(localPath string) (err error) {
|
||||
name := filepath.Base(localPath)
|
||||
f, err := os.Open(localPath)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return u.upload(f, name)
|
||||
}
|
||||
|
||||
func (u *uploader) doUrl(url string) (err error) {
|
||||
name := filepath.Base(url)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return u.upload(resp.Body, name)
|
||||
}
|
||||
|
||||
func (u *uploader) upload(rd io.ReadCloser, name string) (err error) {
|
||||
defer rd.Close()
|
||||
if u.isImage {
|
||||
return u.uploadImage(rd, name)
|
||||
}
|
||||
return u.uploadFile(rd, name)
|
||||
}
|
||||
|
||||
func (u *uploader) uploadImage(rd io.Reader, name string) (err error) {
|
||||
image, err := u.storage.ImageAdd(context.TODO(), append(u.options, files.WithReader(rd), files.WithName(name))...)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
u.updateFile(func(file Block) {
|
||||
file.SetImage(image.Hash(), name)
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (u *uploader) uploadFile(rd io.Reader, name string) (err error) {
|
||||
cf, err := u.storage.FileAdd(context.TODO(), append(u.options, files.WithReader(rd), files.WithName(name))...)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
u.updateFile(func(file Block) {
|
||||
file.SetFileData(cf.Hash(), *cf.Meta())
|
||||
})
|
||||
return
|
||||
}
|
|
@ -1,175 +0,0 @@
|
|||
package file
|
||||
|
||||
import (
|
||||
"image"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/anytypeio/go-anytype-library/core"
|
||||
"github.com/anytypeio/go-anytype-library/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/testMock"
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestUploader_Do(t *testing.T) {
|
||||
var (
|
||||
fileHash = "12345"
|
||||
fileMeta = &core.FileMeta{
|
||||
Media: "text/plain; charset=utf-8",
|
||||
Name: "test.txt",
|
||||
Size: 10,
|
||||
Added: time.Now(),
|
||||
}
|
||||
)
|
||||
|
||||
testFilepath, _ := filepath.Abs("./testdata/test.txt")
|
||||
t.Run("success local file", func(t *testing.T) {
|
||||
f := NewFile(&model.Block{
|
||||
Id: "test",
|
||||
Content: &model.BlockContentOfFile{File: &model.BlockContentFile{}},
|
||||
}).(*File)
|
||||
fx := newFixture(t, f)
|
||||
defer fx.ctrl.Finish()
|
||||
|
||||
file := testMock.NewMockFile(fx.ctrl)
|
||||
file.EXPECT().Hash().Return(fileHash).AnyTimes()
|
||||
file.EXPECT().Meta().Return(fileMeta).AnyTimes()
|
||||
|
||||
fx.anytype.EXPECT().FileAdd(gomock.Any(), gomock.Any()).Return(file, nil)
|
||||
|
||||
fx.mu.Lock()
|
||||
err := f.Upload(fx.anytype, fx, testFilepath, "")
|
||||
fx.mu.Unlock()
|
||||
require.NoError(t, err)
|
||||
|
||||
select {
|
||||
case <-time.After(time.Second * 2):
|
||||
t.Error("upload timeout")
|
||||
return
|
||||
case <-fx.done:
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("success url", func(t *testing.T) {
|
||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte("12345"))
|
||||
}))
|
||||
defer ts.Close()
|
||||
|
||||
f := NewFile(&model.Block{
|
||||
Id: "test",
|
||||
Content: &model.BlockContentOfFile{File: &model.BlockContentFile{}},
|
||||
}).(*File)
|
||||
fx := newFixture(t, f)
|
||||
defer fx.ctrl.Finish()
|
||||
|
||||
file := testMock.NewMockFile(fx.ctrl)
|
||||
file.EXPECT().Hash().Return(fileHash).AnyTimes()
|
||||
file.EXPECT().Meta().Return(fileMeta).AnyTimes()
|
||||
|
||||
fx.anytype.EXPECT().FileAdd(gomock.Any(), gomock.Any()).Return(file, nil)
|
||||
|
||||
fx.mu.Lock()
|
||||
err := f.Upload(fx.anytype, fx, "", ts.URL+"/http.txt")
|
||||
fx.mu.Unlock()
|
||||
require.NoError(t, err)
|
||||
|
||||
select {
|
||||
case <-time.After(time.Second * 2):
|
||||
t.Error("upload timeout")
|
||||
return
|
||||
case <-fx.done:
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("image file fallback", func(t *testing.T) {
|
||||
f := NewFile(&model.Block{
|
||||
Id: "test",
|
||||
Content: &model.BlockContentOfFile{File: &model.BlockContentFile{Type: model.BlockContentFile_Image}},
|
||||
}).(*File)
|
||||
fx := newFixture(t, f)
|
||||
defer fx.ctrl.Finish()
|
||||
|
||||
fx.anytype.EXPECT().ImageAdd(gomock.Any(), gomock.Any()).Return(nil, image.ErrFormat)
|
||||
|
||||
file := testMock.NewMockFile(fx.ctrl)
|
||||
file.EXPECT().Hash().Return(fileHash).AnyTimes()
|
||||
file.EXPECT().Meta().Return(fileMeta).AnyTimes()
|
||||
|
||||
fx.anytype.EXPECT().FileAdd(gomock.Any(), gomock.Any()).Return(file, nil)
|
||||
|
||||
fx.mu.Lock()
|
||||
err := f.Upload(fx.anytype, fx, testFilepath, "")
|
||||
fx.mu.Unlock()
|
||||
require.NoError(t, err)
|
||||
|
||||
select {
|
||||
case <-time.After(time.Second * 2):
|
||||
t.Error("upload timeout")
|
||||
return
|
||||
case <-fx.done:
|
||||
}
|
||||
})
|
||||
t.Run("image success", func(t *testing.T) {
|
||||
f := NewFile(&model.Block{
|
||||
Id: "test",
|
||||
Content: &model.BlockContentOfFile{File: &model.BlockContentFile{Type: model.BlockContentFile_Image}},
|
||||
}).(*File)
|
||||
fx := newFixture(t, f)
|
||||
defer fx.ctrl.Finish()
|
||||
|
||||
file := testMock.NewMockImage(fx.ctrl)
|
||||
file.EXPECT().Hash().Return(fileHash).AnyTimes()
|
||||
|
||||
fx.anytype.EXPECT().ImageAdd(gomock.Any(), gomock.Any()).Return(file, nil)
|
||||
|
||||
fx.mu.Lock()
|
||||
err := f.Upload(fx.anytype, fx, testFilepath, "")
|
||||
fx.mu.Unlock()
|
||||
require.NoError(t, err)
|
||||
|
||||
select {
|
||||
case <-time.After(time.Second * 2):
|
||||
t.Error("upload timeout")
|
||||
return
|
||||
case <-fx.done:
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func newFixture(t *testing.T, file *File) *fixture {
|
||||
ctrl := gomock.NewController(t)
|
||||
return &fixture{
|
||||
ctrl: ctrl,
|
||||
anytype: testMock.NewMockService(ctrl),
|
||||
file: file,
|
||||
t: t,
|
||||
done: make(chan struct{}),
|
||||
}
|
||||
}
|
||||
|
||||
type fixture struct {
|
||||
ctrl *gomock.Controller
|
||||
anytype *testMock.MockService
|
||||
file *File
|
||||
t *testing.T
|
||||
done chan struct{}
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
func (f *fixture) UpdateFileBlock(id string, apply func(f Block)) error {
|
||||
f.mu.Lock()
|
||||
defer f.mu.Unlock()
|
||||
assert.Equal(f.t, f.file.Id, id)
|
||||
apply(f.file)
|
||||
if f.file.content.State == model.BlockContentFile_Done || f.file.content.State == model.BlockContentFile_Error {
|
||||
close(f.done)
|
||||
}
|
||||
return nil
|
||||
}
|
|
@ -40,6 +40,10 @@ type Middleware struct {
|
|||
m sync.RWMutex
|
||||
}
|
||||
|
||||
func init() {
|
||||
logging.SetVersion(GitSummary)
|
||||
}
|
||||
|
||||
func New() *Middleware {
|
||||
return &Middleware{accountSearchCancelAndWait: func() {}}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import (
|
|||
)
|
||||
|
||||
func (mw *Middleware) LinkPreview(req *pb.RpcLinkPreviewRequest) *pb.RpcLinkPreviewResponse {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
|
||||
defer cancel()
|
||||
url, err := uri.ProcessURI(req.Url)
|
||||
if err != nil {
|
||||
|
@ -22,16 +22,6 @@ func (mw *Middleware) LinkPreview(req *pb.RpcLinkPreviewRequest) *pb.RpcLinkPrev
|
|||
}
|
||||
}
|
||||
|
||||
if !strings.HasPrefix(req.Url, "http") {
|
||||
// only http/https supported
|
||||
// todo: fixed linkpreview for email/tel?
|
||||
return &pb.RpcLinkPreviewResponse{
|
||||
Error: &pb.RpcLinkPreviewResponseError{
|
||||
Code: pb.RpcLinkPreviewResponseError_NULL,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
data, err := mw.linkPreview.Fetch(ctx, url)
|
||||
if err != nil {
|
||||
// trim the actual url from the error
|
||||
|
|
|
@ -24,7 +24,7 @@ func (mw *Middleware) LogSend(req *pb.RpcLogSendRequest) *pb.RpcLogSendResponse
|
|||
case pb.RpcLogSendRequest_INFO:
|
||||
log.Info(req.Message)
|
||||
case pb.RpcLogSendRequest_WARNING:
|
||||
log.Warning(req.Message)
|
||||
log.Warn(req.Message)
|
||||
case pb.RpcLogSendRequest_ERROR:
|
||||
log.Error(req.Message)
|
||||
}
|
||||
|
|
276
docs/proto.md
276
docs/proto.md
|
@ -69,6 +69,10 @@
|
|||
- [Rpc.Block.Copy.Response.Error](#anytype.Rpc.Block.Copy.Response.Error)
|
||||
- [Rpc.Block.Create](#anytype.Rpc.Block.Create)
|
||||
- [Rpc.Block.Create.Dataview](#anytype.Rpc.Block.Create.Dataview)
|
||||
- [Rpc.Block.Create.Dataview.Record](#anytype.Rpc.Block.Create.Dataview.Record)
|
||||
- [Rpc.Block.Create.Dataview.Record.Request](#anytype.Rpc.Block.Create.Dataview.Record.Request)
|
||||
- [Rpc.Block.Create.Dataview.Record.Response](#anytype.Rpc.Block.Create.Dataview.Record.Response)
|
||||
- [Rpc.Block.Create.Dataview.Record.Response.Error](#anytype.Rpc.Block.Create.Dataview.Record.Response.Error)
|
||||
- [Rpc.Block.Create.Dataview.View](#anytype.Rpc.Block.Create.Dataview.View)
|
||||
- [Rpc.Block.Create.Dataview.View.Request](#anytype.Rpc.Block.Create.Dataview.View.Request)
|
||||
- [Rpc.Block.Create.Dataview.View.Response](#anytype.Rpc.Block.Create.Dataview.View.Response)
|
||||
|
@ -86,6 +90,10 @@
|
|||
- [Rpc.Block.Cut.Response.Error](#anytype.Rpc.Block.Cut.Response.Error)
|
||||
- [Rpc.Block.Delete](#anytype.Rpc.Block.Delete)
|
||||
- [Rpc.Block.Delete.Dataview](#anytype.Rpc.Block.Delete.Dataview)
|
||||
- [Rpc.Block.Delete.Dataview.Record](#anytype.Rpc.Block.Delete.Dataview.Record)
|
||||
- [Rpc.Block.Delete.Dataview.Record.Request](#anytype.Rpc.Block.Delete.Dataview.Record.Request)
|
||||
- [Rpc.Block.Delete.Dataview.Record.Response](#anytype.Rpc.Block.Delete.Dataview.Record.Response)
|
||||
- [Rpc.Block.Delete.Dataview.Record.Response.Error](#anytype.Rpc.Block.Delete.Dataview.Record.Response.Error)
|
||||
- [Rpc.Block.Delete.Dataview.View](#anytype.Rpc.Block.Delete.Dataview.View)
|
||||
- [Rpc.Block.Delete.Dataview.View.Request](#anytype.Rpc.Block.Delete.Dataview.View.Request)
|
||||
- [Rpc.Block.Delete.Dataview.View.Response](#anytype.Rpc.Block.Delete.Dataview.View.Response)
|
||||
|
@ -130,6 +138,7 @@
|
|||
- [Rpc.Block.OpenBreadcrumbs.Response.Error](#anytype.Rpc.Block.OpenBreadcrumbs.Response.Error)
|
||||
- [Rpc.Block.Paste](#anytype.Rpc.Block.Paste)
|
||||
- [Rpc.Block.Paste.Request](#anytype.Rpc.Block.Paste.Request)
|
||||
- [Rpc.Block.Paste.Request.File](#anytype.Rpc.Block.Paste.Request.File)
|
||||
- [Rpc.Block.Paste.Response](#anytype.Rpc.Block.Paste.Response)
|
||||
- [Rpc.Block.Paste.Response.Error](#anytype.Rpc.Block.Paste.Response.Error)
|
||||
- [Rpc.Block.Redo](#anytype.Rpc.Block.Redo)
|
||||
|
@ -229,6 +238,12 @@
|
|||
- [Rpc.Block.Unlink.Request](#anytype.Rpc.Block.Unlink.Request)
|
||||
- [Rpc.Block.Unlink.Response](#anytype.Rpc.Block.Unlink.Response)
|
||||
- [Rpc.Block.Unlink.Response.Error](#anytype.Rpc.Block.Unlink.Response.Error)
|
||||
- [Rpc.Block.Update](#anytype.Rpc.Block.Update)
|
||||
- [Rpc.Block.Update.Dataview](#anytype.Rpc.Block.Update.Dataview)
|
||||
- [Rpc.Block.Update.Dataview.Record](#anytype.Rpc.Block.Update.Dataview.Record)
|
||||
- [Rpc.Block.Update.Dataview.Record.Request](#anytype.Rpc.Block.Update.Dataview.Record.Request)
|
||||
- [Rpc.Block.Update.Dataview.Record.Response](#anytype.Rpc.Block.Update.Dataview.Record.Response)
|
||||
- [Rpc.Block.Update.Dataview.Record.Response.Error](#anytype.Rpc.Block.Update.Dataview.Record.Response.Error)
|
||||
- [Rpc.Block.Upload](#anytype.Rpc.Block.Upload)
|
||||
- [Rpc.Block.Upload.Request](#anytype.Rpc.Block.Upload.Request)
|
||||
- [Rpc.Block.Upload.Response](#anytype.Rpc.Block.Upload.Response)
|
||||
|
@ -394,10 +409,12 @@
|
|||
- [Rpc.Block.Bookmark.Fetch.Response.Error.Code](#anytype.Rpc.Block.Bookmark.Fetch.Response.Error.Code)
|
||||
- [Rpc.Block.Close.Response.Error.Code](#anytype.Rpc.Block.Close.Response.Error.Code)
|
||||
- [Rpc.Block.Copy.Response.Error.Code](#anytype.Rpc.Block.Copy.Response.Error.Code)
|
||||
- [Rpc.Block.Create.Dataview.Record.Response.Error.Code](#anytype.Rpc.Block.Create.Dataview.Record.Response.Error.Code)
|
||||
- [Rpc.Block.Create.Dataview.View.Response.Error.Code](#anytype.Rpc.Block.Create.Dataview.View.Response.Error.Code)
|
||||
- [Rpc.Block.Create.Response.Error.Code](#anytype.Rpc.Block.Create.Response.Error.Code)
|
||||
- [Rpc.Block.CreatePage.Response.Error.Code](#anytype.Rpc.Block.CreatePage.Response.Error.Code)
|
||||
- [Rpc.Block.Cut.Response.Error.Code](#anytype.Rpc.Block.Cut.Response.Error.Code)
|
||||
- [Rpc.Block.Delete.Dataview.Record.Response.Error.Code](#anytype.Rpc.Block.Delete.Dataview.Record.Response.Error.Code)
|
||||
- [Rpc.Block.Delete.Dataview.View.Response.Error.Code](#anytype.Rpc.Block.Delete.Dataview.View.Response.Error.Code)
|
||||
- [Rpc.Block.Download.Response.Error.Code](#anytype.Rpc.Block.Download.Response.Error.Code)
|
||||
- [Rpc.Block.Export.Response.Error.Code](#anytype.Rpc.Block.Export.Response.Error.Code)
|
||||
|
@ -431,6 +448,7 @@
|
|||
- [Rpc.Block.Split.Response.Error.Code](#anytype.Rpc.Block.Split.Response.Error.Code)
|
||||
- [Rpc.Block.Undo.Response.Error.Code](#anytype.Rpc.Block.Undo.Response.Error.Code)
|
||||
- [Rpc.Block.Unlink.Response.Error.Code](#anytype.Rpc.Block.Unlink.Response.Error.Code)
|
||||
- [Rpc.Block.Update.Dataview.Record.Response.Error.Code](#anytype.Rpc.Block.Update.Dataview.Record.Response.Error.Code)
|
||||
- [Rpc.Block.Upload.Response.Error.Code](#anytype.Rpc.Block.Upload.Response.Error.Code)
|
||||
- [Rpc.BlockList.ConvertChildrenToPages.Response.Error.Code](#anytype.Rpc.BlockList.ConvertChildrenToPages.Response.Error.Code)
|
||||
- [Rpc.BlockList.Delete.Page.Response.Error.Code](#anytype.Rpc.BlockList.Delete.Page.Response.Error.Code)
|
||||
|
@ -733,6 +751,9 @@
|
|||
| BlockSetDataviewActiveView | [Rpc.Block.Set.Dataview.ActiveView.Request](#anytype.Rpc.Block.Set.Dataview.ActiveView.Request) | [Rpc.Block.Set.Dataview.ActiveView.Response](#anytype.Rpc.Block.Set.Dataview.ActiveView.Response) | |
|
||||
| BlockCreateDataviewView | [Rpc.Block.Create.Dataview.View.Request](#anytype.Rpc.Block.Create.Dataview.View.Request) | [Rpc.Block.Create.Dataview.View.Response](#anytype.Rpc.Block.Create.Dataview.View.Response) | |
|
||||
| BlockDeleteDataviewView | [Rpc.Block.Delete.Dataview.View.Request](#anytype.Rpc.Block.Delete.Dataview.View.Request) | [Rpc.Block.Delete.Dataview.View.Response](#anytype.Rpc.Block.Delete.Dataview.View.Response) | |
|
||||
| BlockCreateDataviewRecord | [Rpc.Block.Create.Dataview.Record.Request](#anytype.Rpc.Block.Create.Dataview.Record.Request) | [Rpc.Block.Create.Dataview.Record.Response](#anytype.Rpc.Block.Create.Dataview.Record.Response) | |
|
||||
| BlockUpdateDataviewRecord | [Rpc.Block.Update.Dataview.Record.Request](#anytype.Rpc.Block.Update.Dataview.Record.Request) | [Rpc.Block.Update.Dataview.Record.Response](#anytype.Rpc.Block.Update.Dataview.Record.Response) | |
|
||||
| BlockDeleteDataviewRecord | [Rpc.Block.Delete.Dataview.Record.Request](#anytype.Rpc.Block.Delete.Dataview.Record.Request) | [Rpc.Block.Delete.Dataview.Record.Response](#anytype.Rpc.Block.Delete.Dataview.Record.Response) | |
|
||||
| BlockBookmarkFetch | [Rpc.Block.Bookmark.Fetch.Request](#anytype.Rpc.Block.Bookmark.Fetch.Request) | [Rpc.Block.Bookmark.Fetch.Response](#anytype.Rpc.Block.Bookmark.Fetch.Response) | |
|
||||
| BlockBookmarkCreateAndFetch | [Rpc.Block.Bookmark.CreateAndFetch.Request](#anytype.Rpc.Block.Bookmark.CreateAndFetch.Request) | [Rpc.Block.Bookmark.CreateAndFetch.Response](#anytype.Rpc.Block.Bookmark.CreateAndFetch.Response) | |
|
||||
| BlockFileCreateAndUpload | [Rpc.Block.File.CreateAndUpload.Request](#anytype.Rpc.Block.File.CreateAndUpload.Request) | [Rpc.Block.File.CreateAndUpload.Response](#anytype.Rpc.Block.File.CreateAndUpload.Response) | |
|
||||
|
@ -1542,6 +1563,65 @@ Create a Smart/Internal block. Request can contain a block with a content, or it
|
|||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Create.Dataview.Record"></a>
|
||||
|
||||
### Rpc.Block.Create.Dataview.Record
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Create.Dataview.Record.Request"></a>
|
||||
|
||||
### Rpc.Block.Create.Dataview.Record.Request
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| contextId | [string](#string) | | |
|
||||
| blockId | [string](#string) | | |
|
||||
| record | [google.protobuf.Struct](#google.protobuf.Struct) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Create.Dataview.Record.Response"></a>
|
||||
|
||||
### Rpc.Block.Create.Dataview.Record.Response
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| error | [Rpc.Block.Create.Dataview.Record.Response.Error](#anytype.Rpc.Block.Create.Dataview.Record.Response.Error) | | |
|
||||
| record | [google.protobuf.Struct](#google.protobuf.Struct) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Create.Dataview.Record.Response.Error"></a>
|
||||
|
||||
### Rpc.Block.Create.Dataview.Record.Response.Error
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| code | [Rpc.Block.Create.Dataview.Record.Response.Error.Code](#anytype.Rpc.Block.Create.Dataview.Record.Response.Error.Code) | | |
|
||||
| description | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Create.Dataview.View"></a>
|
||||
|
||||
### Rpc.Block.Create.Dataview.View
|
||||
|
@ -1797,6 +1877,65 @@ common simple block command
|
|||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Delete.Dataview.Record"></a>
|
||||
|
||||
### Rpc.Block.Delete.Dataview.Record
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Delete.Dataview.Record.Request"></a>
|
||||
|
||||
### Rpc.Block.Delete.Dataview.Record.Request
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| contextId | [string](#string) | | |
|
||||
| blockId | [string](#string) | | |
|
||||
| recordId | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Delete.Dataview.Record.Response"></a>
|
||||
|
||||
### Rpc.Block.Delete.Dataview.Record.Response
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| error | [Rpc.Block.Delete.Dataview.Record.Response.Error](#anytype.Rpc.Block.Delete.Dataview.Record.Response.Error) | | |
|
||||
| event | [ResponseEvent](#anytype.ResponseEvent) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Delete.Dataview.Record.Response.Error"></a>
|
||||
|
||||
### Rpc.Block.Delete.Dataview.Record.Response.Error
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| code | [Rpc.Block.Delete.Dataview.Record.Response.Error.Code](#anytype.Rpc.Block.Delete.Dataview.Record.Response.Error.Code) | | |
|
||||
| description | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Delete.Dataview.View"></a>
|
||||
|
||||
### Rpc.Block.Delete.Dataview.View
|
||||
|
@ -2446,6 +2585,23 @@ Image/Video/File blocks then:
|
|||
| textSlot | [string](#string) | | |
|
||||
| htmlSlot | [string](#string) | | |
|
||||
| anySlot | [model.Block](#anytype.model.Block) | repeated | |
|
||||
| fileSlot | [Rpc.Block.Paste.Request.File](#anytype.Rpc.Block.Paste.Request.File) | repeated | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Paste.Request.File"></a>
|
||||
|
||||
### Rpc.Block.Paste.Request.File
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| name | [string](#string) | | |
|
||||
| data | [bytes](#bytes) | | |
|
||||
|
||||
|
||||
|
||||
|
@ -3874,6 +4030,85 @@ Remove blocks from the childrenIds of its parents
|
|||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Update"></a>
|
||||
|
||||
### Rpc.Block.Update
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Update.Dataview"></a>
|
||||
|
||||
### Rpc.Block.Update.Dataview
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Update.Dataview.Record"></a>
|
||||
|
||||
### Rpc.Block.Update.Dataview.Record
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Update.Dataview.Record.Request"></a>
|
||||
|
||||
### Rpc.Block.Update.Dataview.Record.Request
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| contextId | [string](#string) | | |
|
||||
| blockId | [string](#string) | | |
|
||||
| recordId | [string](#string) | | |
|
||||
| record | [google.protobuf.Struct](#google.protobuf.Struct) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Update.Dataview.Record.Response"></a>
|
||||
|
||||
### Rpc.Block.Update.Dataview.Record.Response
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| error | [Rpc.Block.Update.Dataview.Record.Response.Error](#anytype.Rpc.Block.Update.Dataview.Record.Response.Error) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Update.Dataview.Record.Response.Error"></a>
|
||||
|
||||
### Rpc.Block.Update.Dataview.Record.Response.Error
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| code | [Rpc.Block.Update.Dataview.Record.Response.Error.Code](#anytype.Rpc.Block.Update.Dataview.Record.Response.Error.Code) | | |
|
||||
| description | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Upload"></a>
|
||||
|
||||
### Rpc.Block.Upload
|
||||
|
@ -6187,6 +6422,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
|
|||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Create.Dataview.Record.Response.Error.Code"></a>
|
||||
|
||||
### Rpc.Block.Create.Dataview.Record.Response.Error.Code
|
||||
|
||||
|
||||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
| NULL | 0 | |
|
||||
| UNKNOWN_ERROR | 1 | |
|
||||
| BAD_INPUT | 2 | ... |
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Create.Dataview.View.Response.Error.Code"></a>
|
||||
|
||||
### Rpc.Block.Create.Dataview.View.Response.Error.Code
|
||||
|
@ -6239,6 +6487,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
|
|||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Delete.Dataview.Record.Response.Error.Code"></a>
|
||||
|
||||
### Rpc.Block.Delete.Dataview.Record.Response.Error.Code
|
||||
|
||||
|
||||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
| NULL | 0 | |
|
||||
| UNKNOWN_ERROR | 1 | |
|
||||
| BAD_INPUT | 2 | ... |
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Delete.Dataview.View.Response.Error.Code"></a>
|
||||
|
||||
### Rpc.Block.Delete.Dataview.View.Response.Error.Code
|
||||
|
@ -6671,6 +6932,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
|
|||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Update.Dataview.Record.Response.Error.Code"></a>
|
||||
|
||||
### Rpc.Block.Update.Dataview.Record.Response.Error.Code
|
||||
|
||||
|
||||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
| NULL | 0 | |
|
||||
| UNKNOWN_ERROR | 1 | |
|
||||
| BAD_INPUT | 2 | ... |
|
||||
|
||||
|
||||
|
||||
<a name="anytype.Rpc.Block.Upload.Response.Error.Code"></a>
|
||||
|
||||
### Rpc.Block.Upload.Response.Error.Code
|
||||
|
@ -8724,6 +8998,7 @@ Precondition: user A and user B opened the same block
|
|||
| ----- | ---- | ----- | ----------- |
|
||||
| total | [int64](#int64) | | |
|
||||
| done | [int64](#int64) | | |
|
||||
| message | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
@ -8771,6 +9046,7 @@ Precondition: user A and user B opened the same block
|
|||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
| DropFiles | 0 | |
|
||||
| Import | 1 | |
|
||||
|
||||
|
||||
|
||||
|
|
17
go.mod
17
go.mod
|
@ -5,7 +5,7 @@ go 1.13
|
|||
require (
|
||||
github.com/JohannesKaufmann/html-to-markdown v0.0.0-00010101000000-000000000000
|
||||
github.com/PuerkitoBio/goquery v1.5.1
|
||||
github.com/anytypeio/go-anytype-library v0.11.0
|
||||
github.com/anytypeio/go-anytype-library v0.11.9
|
||||
github.com/cheggaaa/mb v1.0.2
|
||||
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8
|
||||
github.com/gogo/protobuf v1.3.1
|
||||
|
@ -14,20 +14,23 @@ require (
|
|||
github.com/google/uuid v1.1.1
|
||||
github.com/h2non/filetype v1.1.0
|
||||
github.com/hashicorp/golang-lru v0.5.4
|
||||
github.com/improbable-eng/grpc-web v0.12.0
|
||||
github.com/improbable-eng/grpc-web v0.13.0
|
||||
github.com/magiconair/properties v1.8.0
|
||||
github.com/mauidude/go-readability v0.0.0-20141216012317-2f30b1a346f1
|
||||
github.com/mb0/diff v0.0.0-20131118162322-d8d9a906c24d
|
||||
github.com/microcosm-cc/bluemonday v1.0.3
|
||||
github.com/microcosm-cc/bluemonday v1.0.4
|
||||
github.com/otiai10/opengraph v1.1.2
|
||||
github.com/santhosh-tekuri/jsonschema/v2 v2.2.0
|
||||
github.com/stretchr/testify v1.6.1
|
||||
github.com/yosssi/gohtml v0.0.0-20190915184251-7ff6f235ecaf
|
||||
github.com/yuin/goldmark v1.1.30
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b // indirect
|
||||
golang.org/x/text v0.3.3
|
||||
google.golang.org/grpc v1.31.0-dev.0.20200627230533-68098483a7af
|
||||
google.golang.org/grpc v1.31.0
|
||||
)
|
||||
|
||||
replace github.com/JohannesKaufmann/html-to-markdown => github.com/anytypeio/html-to-markdown v0.0.0-20200617145221-2afd2a14bae1
|
||||
|
||||
replace github.com/textileio/go-threads => github.com/anytypeio/go-threads v0.1.18-0.20200805204901-9c9a659b6cd9
|
||||
replace github.com/textileio/go-threads => github.com/anytypeio/go-threads v0.1.23-forked
|
||||
|
||||
replace github.com/ipfs/go-log/v2 => github.com/anytypeio/go-log/v2 v2.1.2-0.20200810212702-264b187bb04f
|
||||
|
||||
replace gopkg.in/Graylog2/go-gelf.v2 => github.com/anytypeio/go-gelf v0.0.0-20200813115635-198b2af80f88
|
||||
|
|
160
go.sum
160
go.sum
|
@ -3,6 +3,7 @@ cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
|
|||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo=
|
||||
dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU=
|
||||
dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4=
|
||||
dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU=
|
||||
|
@ -13,6 +14,7 @@ github.com/AndreasBriese/bbloom v0.0.0-20190823232136-616930265c33 h1:2/E2IVdZoH
|
|||
github.com/AndreasBriese/bbloom v0.0.0-20190823232136-616930265c33/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
|
||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y=
|
||||
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
|
@ -24,8 +26,6 @@ github.com/Stebalien/go-bitfield v0.0.1/go.mod h1:GNjFpasyUVkHMsfEOk8EFLJ9syQ6SI
|
|||
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
|
||||
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 h1:w1UutsfOrms1J05zt7ISrnJIXKzwaspym5BTKGx93EI=
|
||||
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
|
||||
github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75 h1:3ILjVyslFbc4jl1w5TWuvvslFD/nDfR2H8tVaMVLrEY=
|
||||
github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE=
|
||||
github.com/alecthomas/jsonschema v0.0.0-20191017121752-4bb6e3fae4f2 h1:swGeCLPiUQ647AIRnFxnAHdzlg6IPpmU6QdkOPZINt8=
|
||||
github.com/alecthomas/jsonschema v0.0.0-20191017121752-4bb6e3fae4f2/go.mod h1:Juc2PrI3wtNfUwptSvAIeNx+HrETwHQs6nf+TkOJlOA=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
|
@ -35,14 +35,18 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
|
|||
github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo=
|
||||
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
|
||||
github.com/anytypeio/go-anytype-library v0.11.0 h1:Xcp5ae+x+dR2ax8N24Kjcg4eUXZQNEICgL5Mb9z07Ag=
|
||||
github.com/anytypeio/go-anytype-library v0.11.0/go.mod h1:GsY3/4kDrjKnsV7a6UiIfzI5T8LdUtituZcmXqb+d7Y=
|
||||
github.com/anytypeio/go-anytype-library v0.11.9 h1:Lc9pYOTw+cm19AAWLS85xXpqz+IdQtkU3k3T0V7WREE=
|
||||
github.com/anytypeio/go-anytype-library v0.11.9/go.mod h1:rINW+9c5nWDDDW6/6ITecFLyUGciJNNAP+ofASyr5yI=
|
||||
github.com/anytypeio/go-gelf v0.0.0-20200813115635-198b2af80f88 h1:akVlk/OGOw228alDyvlEEBoVoBCTziBcu4I+x7xH/HE=
|
||||
github.com/anytypeio/go-gelf v0.0.0-20200813115635-198b2af80f88/go.mod h1:EuPAem8b51iulSY3wBQJc0Shz+A2DmyREddzDt0fywM=
|
||||
github.com/anytypeio/go-log/v2 v2.1.2-0.20200810212702-264b187bb04f h1:aeyycLTPbhwjW2x/EkmuAgRzdX0bdwy+RStmevhQbhM=
|
||||
github.com/anytypeio/go-log/v2 v2.1.2-0.20200810212702-264b187bb04f/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM=
|
||||
github.com/anytypeio/go-slip10 v0.0.0-20200330112030-a352ca8495e4 h1:jB5Ke7NVoW52i65PtLFBr5Q5k6RskIY8L70pgnBcnWo=
|
||||
github.com/anytypeio/go-slip10 v0.0.0-20200330112030-a352ca8495e4/go.mod h1:/8GIEJBE5wmdgcE49JPdupnHNUf7bEn6C+aArfWqvw8=
|
||||
github.com/anytypeio/go-slip21 v0.0.0-20200218204727-e2e51e20ab51 h1:3Y+18zBC8LZgcL3l2dgoTEIzIUzCZa/kN0UV3ZWpbuA=
|
||||
github.com/anytypeio/go-slip21 v0.0.0-20200218204727-e2e51e20ab51/go.mod h1:SoKy+W8Mf6v7XBV30xFWkIFMs7UnXwsNGrGV12yVkEs=
|
||||
github.com/anytypeio/go-threads v0.1.18-0.20200805204901-9c9a659b6cd9 h1:v/1w1i4VsL+D6QaR74/GRoomBHpNCaPjLylpV/Xgy5k=
|
||||
github.com/anytypeio/go-threads v0.1.18-0.20200805204901-9c9a659b6cd9/go.mod h1:83K+AWy/d2riTTXbBtWTbWUPKg/qwgZmAy3Te2LPdtk=
|
||||
github.com/anytypeio/go-threads v0.1.23-forked h1:JoBVhjXfkDKg2UjiuTXg8lSVG5h0Q6K3sVwfRvT/Eq8=
|
||||
github.com/anytypeio/go-threads v0.1.23-forked/go.mod h1:SrSV9qV+vua22PyxIKaIWYNIIv3k1axTZ9ofpi3gTgw=
|
||||
github.com/anytypeio/html-to-markdown v0.0.0-20200617145221-2afd2a14bae1 h1:g/LEIEQ0ACBOKX9MhORhlmluUKvuxvrIDbGMI0cqF5A=
|
||||
github.com/anytypeio/html-to-markdown v0.0.0-20200617145221-2afd2a14bae1/go.mod h1:Qnhxlb4mi8T2624UtHX8EgDyYZXWbjQfLGuciFHZ+Go=
|
||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||
|
@ -125,11 +129,18 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm
|
|||
github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
|
||||
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA=
|
||||
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
|
||||
github.com/dgtony/collections v0.1.3 h1:jID0yM7JTu03sL8qgkgQ1Y2Oe+7N4/pm65jsW1exl5Q=
|
||||
github.com/dgtony/collections v0.1.3/go.mod h1:SK/v+w9XVqk0KTLoppgU8dIU9gptYdkU1r/apAdIRJA=
|
||||
github.com/disintegration/imaging v1.6.0 h1:nVPXRUUQ36Z7MNf0O77UzgnOb1mkMMor7lmJMJXc/mA=
|
||||
github.com/disintegration/imaging v1.6.0/go.mod h1:xuIt+sRxDFrHS0drzXUlCJthkJ8k7lkkUojDSR247MQ=
|
||||
github.com/dlclark/regexp2 v1.2.1 h1:Ff/S0snjr1oZHUNOkvA/gP6KUaMg5vDDl3Qnhjnwgm8=
|
||||
github.com/dlclark/regexp2 v1.2.1/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
|
||||
github.com/dop251/goja v0.0.0-20200818110326-5574b5dbd2b9 h1:IvLZvXQ6/ImP768AXulFJP3inzWW8/dCSkpG70bnADo=
|
||||
github.com/dop251/goja v0.0.0-20200818110326-5574b5dbd2b9/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA=
|
||||
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
|
||||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M=
|
||||
|
@ -150,10 +161,13 @@ github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0
|
|||
github.com/go-check/check v0.0.0-20180628173108-788fd7840127 h1:0gkP6mzaMqkmpcJYCFOLkIBwI7xFExG03bbkOkCvUPI=
|
||||
github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98=
|
||||
github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
||||
github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU=
|
||||
github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
||||
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
|
||||
|
@ -176,8 +190,6 @@ github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200j
|
|||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||
github.com/golang/mock v1.4.3 h1:GV+pQPG/EUUbkh47niozDcADz6go/dUwhVzdUQHIVRw=
|
||||
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||
github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc=
|
||||
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
|
@ -209,6 +221,8 @@ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO
|
|||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gopacket v1.1.17 h1:rMrlX2ZY2UbvT+sdz3+6J+pp2z+msCq9MxTU6ymxbBY=
|
||||
github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
||||
github.com/google/gopacket v1.1.18 h1:lum7VRA9kdlvBi7/v2p7/zcbkduHaCH/SVVyurs7OpY=
|
||||
github.com/google/gopacket v1.1.18/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||
|
@ -228,8 +242,8 @@ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad
|
|||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.2.0 h1:0IKlLyQ3Hs9nDaiK5cSHAGmcQEIC8l2Ts1u6x5Dfrqg=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.2.1 h1:V59tBiPuMkySHwJkuq/OYkK0WnOLwCwD3UkTbEMr12U=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.2.1/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
|
||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
|
||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||
|
@ -251,16 +265,16 @@ github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uG
|
|||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/hsanjuan/ipfs-lite v1.1.11 h1:t849+2QSESgLsXr1J+ThqhqVY48b46IfKvu0FBXfUsQ=
|
||||
github.com/hsanjuan/ipfs-lite v1.1.11/go.mod h1:pBcGBaLNk6/1TXbCAHmkRRbDieqUrjWJEkHdIUvwthc=
|
||||
github.com/hsanjuan/ipfs-lite v1.1.14 h1:fmPec8uJ1ZFmt52LNOr5dVedo5KS1FdyM0O+oNlhr1g=
|
||||
github.com/hsanjuan/ipfs-lite v1.1.14/go.mod h1:hv3SYATYfs7kh+l3fk8QcMkhY88983Q7kqnzpkY/qkg=
|
||||
github.com/hsanjuan/ipfs-lite v1.1.15 h1:OTNuR77Bhk2syGtP8BAlhW0ufNFA/J5kbx0YMur8kf8=
|
||||
github.com/hsanjuan/ipfs-lite v1.1.15/go.mod h1:LZffwuToye++XukPW/GUAw5XewT+t2lgZl8h/8RqFfs=
|
||||
github.com/huin/goupnp v0.0.0-20180415215157-1395d1447324/go.mod h1:MZ2ZmwcBpvOoJ22IJsc7va19ZwoheaBk43rKg12SKag=
|
||||
github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo=
|
||||
github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc=
|
||||
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o=
|
||||
github.com/improbable-eng/grpc-web v0.12.0 h1:GlCS+lMZzIkfouf7CNqY+qqpowdKuJLSLLcKVfM1oLc=
|
||||
github.com/improbable-eng/grpc-web v0.12.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs=
|
||||
github.com/improbable-eng/grpc-web v0.13.0 h1:7XqtaBWaOCH0cVGKHyvhtcuo6fgW32Y10yRKrDHFHOc=
|
||||
github.com/improbable-eng/grpc-web v0.13.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI=
|
||||
github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs=
|
||||
|
@ -272,7 +286,6 @@ github.com/ipfs/go-bitswap v0.1.2/go.mod h1:qxSWS4NXGs7jQ6zQvoPY3+NmOfHHG47mhkiL
|
|||
github.com/ipfs/go-bitswap v0.1.3/go.mod h1:YEQlFy0kkxops5Vy+OxWdRSEZIoS7I7KDIwoa5Chkps=
|
||||
github.com/ipfs/go-bitswap v0.1.8 h1:38X1mKXkiU6Nzw4TOSWD8eTVY5eX3slQunv3QEWfXKg=
|
||||
github.com/ipfs/go-bitswap v0.1.8/go.mod h1:TOWoxllhccevbWFUR2N7B1MTSVVge1s6XSMiCSA4MzM=
|
||||
github.com/ipfs/go-bitswap v0.2.13 h1:R8mUGpY0vwHljlnBeDE9PdR3DKKiPKevAMkq9qB8cyA=
|
||||
github.com/ipfs/go-bitswap v0.2.13/go.mod h1:SDXpLeKZagyVVc8/z7sGtmM/lz8lyAmSzrUx3Ge3GXw=
|
||||
github.com/ipfs/go-bitswap v0.2.19 h1:EhgRz8gqWQIBADY9gpqJOrfs5E1MtVfQFy1Vq8Z+Fq8=
|
||||
github.com/ipfs/go-bitswap v0.2.19/go.mod h1:C7TwBgHnu89Q8sHsTJP7IhUqF9XYLe71P4tT5adgmYo=
|
||||
|
@ -295,6 +308,8 @@ github.com/ipfs/go-cid v0.0.5 h1:o0Ix8e/ql7Zb5UVUJEUfjsWCIY8t48++9lR8qi6oiJU=
|
|||
github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog=
|
||||
github.com/ipfs/go-cid v0.0.6 h1:go0y+GcDOGeJIV01FeBsta4FHngoA4Wz7KMeLkXAhMs=
|
||||
github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
||||
github.com/ipfs/go-cid v0.0.7 h1:ysQJVJA3fNDF1qigJbsSQOdjhVLsOEoPdh0+R97k3jY=
|
||||
github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
||||
github.com/ipfs/go-cidutil v0.0.2 h1:CNOboQf1t7Qp0nuNh8QMmhJs0+Q//bRL1axtCnIB1Yo=
|
||||
github.com/ipfs/go-cidutil v0.0.2/go.mod h1:ewllrvrxG6AMYStla3GD7Cqn+XYSLqjK0vc+086tB6s=
|
||||
github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE=
|
||||
|
@ -306,6 +321,7 @@ github.com/ipfs/go-datastore v0.3.1 h1:SS1t869a6cctoSYmZXUk8eL6AzVXgASmKIWFNQkQ1
|
|||
github.com/ipfs/go-datastore v0.3.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw=
|
||||
github.com/ipfs/go-datastore v0.4.0/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA=
|
||||
github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA=
|
||||
github.com/ipfs/go-datastore v0.4.2/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA=
|
||||
github.com/ipfs/go-datastore v0.4.4 h1:rjvQ9+muFaJ+QZ7dN5B1MSDNQ0JVZKkkES/rMZmA8X8=
|
||||
github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA=
|
||||
github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk=
|
||||
|
@ -329,18 +345,18 @@ github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma
|
|||
github.com/ipfs/go-ipfs-blockstore v0.1.0 h1:V1GZorHFUIB6YgTJQdq7mcaIpUfCM3fCyVi+MTo9O88=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.1.0/go.mod h1:5aD0AvHPi7mZc6Ci1WCAhiBQu2IsfTduLl+422H6Rqw=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.1.4/go.mod h1:Jxm3XMVjh6R17WvxFEiyKBLUGr86HgIYJW/D/MwqeYQ=
|
||||
github.com/ipfs/go-ipfs-blockstore v1.0.0 h1:pmFp5sFYsYVvMOp9X01AK3s85usVcLvkBTRsN6SnfUA=
|
||||
github.com/ipfs/go-ipfs-blockstore v1.0.0/go.mod h1:knLVdhVU9L7CC4T+T4nvGdeUIPAXlnd9zmXfp+9MIjU=
|
||||
github.com/ipfs/go-ipfs-blockstore v1.0.1 h1:fnuVj4XdZp4yExhd0CnUwAiMNJHiPnfInhiuwz4lW1w=
|
||||
github.com/ipfs/go-ipfs-blockstore v1.0.1/go.mod h1:MGNZlHNEnR4KGgPHM3/k8lBySIOK2Ve+0KjZubKlaOE=
|
||||
github.com/ipfs/go-ipfs-blocksutil v0.0.1 h1:Eh/H4pc1hsvhzsQoMEP3Bke/aW5P5rVM1IWFJMcGIPQ=
|
||||
github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk=
|
||||
github.com/ipfs/go-ipfs-chunker v0.0.1 h1:cHUUxKFQ99pozdahi+uSC/3Y6HeRpi9oTeUHbE27SEw=
|
||||
github.com/ipfs/go-ipfs-chunker v0.0.1/go.mod h1:tWewYK0we3+rMbOh7pPFGDyypCtvGcBFymgY4rSDLAw=
|
||||
github.com/ipfs/go-ipfs-chunker v0.0.5 h1:ojCf7HV/m+uS2vhUGWcogIIxiO5ubl5O57Q7NapWLY8=
|
||||
github.com/ipfs/go-ipfs-chunker v0.0.5/go.mod h1:jhgdF8vxRHycr00k13FM8Y0E+6BoalYeobXmUyTreP8=
|
||||
github.com/ipfs/go-ipfs-config v0.5.2 h1:SPWiMNo7IOW0k+meO3PIprggp/PbZGUiO57L7HQ/sOY=
|
||||
github.com/ipfs/go-ipfs-config v0.5.2/go.mod h1:nSLCFtlaL+2rbl3F+9D4gQZQbT1LjRKx7TJg/IHz6oM=
|
||||
github.com/ipfs/go-ipfs-config v0.7.2 h1:bqr5pxx5qOrnfhlCQZGwa75L5xotQr79Ly+C0qp0PgE=
|
||||
github.com/ipfs/go-ipfs-config v0.7.2/go.mod h1:GQUxqb0NfkZmEU92PxqqqLVVFTLpoGGUlBaTyDaAqrE=
|
||||
github.com/ipfs/go-ipfs-config v0.9.0 h1:qTXJ9CyOyQv1LFJUMysxz8fi6RxxnP9QqcmiobuANvw=
|
||||
github.com/ipfs/go-ipfs-config v0.9.0/go.mod h1:GQUxqb0NfkZmEU92PxqqqLVVFTLpoGGUlBaTyDaAqrE=
|
||||
github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw=
|
||||
github.com/ipfs/go-ipfs-delay v0.0.1 h1:r/UXYyRcddO6thwOnhiznIAiSvxMECGgtv35Xs1IeRQ=
|
||||
github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw=
|
||||
|
@ -366,7 +382,6 @@ github.com/ipfs/go-ipfs-pq v0.0.1 h1:zgUotX8dcAB/w/HidJh1zzc1yFq6Vm8J7T2F4itj/RU
|
|||
github.com/ipfs/go-ipfs-pq v0.0.1/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY=
|
||||
github.com/ipfs/go-ipfs-pq v0.0.2 h1:e1vOOW6MuOwG2lqxcLA+wEn93i/9laCY8sXAw76jFOY=
|
||||
github.com/ipfs/go-ipfs-pq v0.0.2/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY=
|
||||
github.com/ipfs/go-ipfs-provider v0.4.2 h1:FIsBFXKVo8ZXP8XNVnjhZWPjMRLFJeV07BSNVDpJXVY=
|
||||
github.com/ipfs/go-ipfs-provider v0.4.2/go.mod h1:rcQBVqfblDQRk5LaCtf2uxuKxMJxvKmF5pLS0pO4au4=
|
||||
github.com/ipfs/go-ipfs-provider v0.4.3 h1:k54OHXZcFBkhL6l3GnPS9PfpaLeLqZjVASG1bgfBdfQ=
|
||||
github.com/ipfs/go-ipfs-provider v0.4.3/go.mod h1:rcQBVqfblDQRk5LaCtf2uxuKxMJxvKmF5pLS0pO4au4=
|
||||
|
@ -397,13 +412,6 @@ github.com/ipfs/go-log v1.0.3 h1:Gg7SUYSZ7BrqaKMwM+hRgcAkKv4QLfzP4XPQt5Sx/OI=
|
|||
github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A=
|
||||
github.com/ipfs/go-log v1.0.4 h1:6nLQdX4W8P9yZZFH7mO+X/PzjN8Laozm/lMJ6esdgzY=
|
||||
github.com/ipfs/go-log v1.0.4/go.mod h1:oDCg2FkjogeFOhqqb+N39l2RpTNPL6F/StPkB3kPgcs=
|
||||
github.com/ipfs/go-log/v2 v2.0.2/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0=
|
||||
github.com/ipfs/go-log/v2 v2.0.3 h1:Q2gXcBoCALyLN/pUQlz1qgu0x3uFV6FzP9oXhpfyJpc=
|
||||
github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0=
|
||||
github.com/ipfs/go-log/v2 v2.0.5 h1:fL4YI+1g5V/b1Yxr1qAiXTMg1H8z9vx/VmJxBuQMHvU=
|
||||
github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw=
|
||||
github.com/ipfs/go-log/v2 v2.1.1 h1:G4TtqN+V9y9HY9TA6BwbCVyyBZ2B9MbCjR2MtGx8FR0=
|
||||
github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM=
|
||||
github.com/ipfs/go-merkledag v0.0.3/go.mod h1:Oc5kIXLHokkE1hWGMBHw+oxehkAaTOqtEb7Zbh6BhLA=
|
||||
github.com/ipfs/go-merkledag v0.0.6/go.mod h1:QYPdnlvkOg7GnQRofu9XZimC5ZW5Wi3bKys/4GQQfto=
|
||||
github.com/ipfs/go-merkledag v0.2.3 h1:aMdkK9G1hEeNvn3VXfiEMLY0iJnbiQQUHnM0HFJREsE=
|
||||
|
@ -517,10 +525,10 @@ github.com/libp2p/go-libp2p v0.7.4/go.mod h1:oXsBlTLF1q7pxr+9w6lqzS1ILpyHsaBPniV
|
|||
github.com/libp2p/go-libp2p v0.8.2/go.mod h1:NQDA/F/qArMHGe0J7sDScaKjW8Jh4y/ozQqBbYJ+BnA=
|
||||
github.com/libp2p/go-libp2p v0.8.3 h1:IFWeNzxkBaNO1N8stN9ayFGdC6RmVuSsKd5bou7qpK0=
|
||||
github.com/libp2p/go-libp2p v0.8.3/go.mod h1:EsH1A+8yoWK+L4iKcbPYu6MPluZ+CHWI9El8cTaefiM=
|
||||
github.com/libp2p/go-libp2p v0.9.5 h1:BNF5p9iwCukccf1WBWrGGVHicMrFVe1+wkBo1c8/Jew=
|
||||
github.com/libp2p/go-libp2p v0.9.5/go.mod h1:FiFGiems39cIOLqfoThr/5IEw+QAjBdCVAqv7rtTQGs=
|
||||
github.com/libp2p/go-libp2p v0.10.0 h1:7ooOvK1wi8eLpyTppy8TeH43UHy5uI75GAHGJxenUi0=
|
||||
github.com/libp2p/go-libp2p v0.10.0/go.mod h1:yBJNpb+mGJdgrwbKAKrhPU0u3ogyNFTfjJ6bdM+Q/G8=
|
||||
github.com/libp2p/go-libp2p v0.10.3 h1:Bc8/VjmC+pICtK6xG8YgVutZvCdK0MsroWCHP+6AdFQ=
|
||||
github.com/libp2p/go-libp2p v0.10.3/go.mod h1:0ER6iPSaPeQjryNgOnm9bLNpMJCYmuw54xJXsVR17eE=
|
||||
github.com/libp2p/go-libp2p-autonat v0.0.2/go.mod h1:fs71q5Xk+pdnKU014o2iq1RhMs9/PMaG5zXRFNnIIT4=
|
||||
github.com/libp2p/go-libp2p-autonat v0.0.6/go.mod h1:uZneLdOkZHro35xIhpbtTzLlgYturpu4J5+0cZK3MqE=
|
||||
github.com/libp2p/go-libp2p-autonat v0.1.0 h1:aCWAu43Ri4nU0ZPO7NyLzUvvfqd0nE3dX0R/ZGYVgOU=
|
||||
|
@ -534,12 +542,16 @@ github.com/libp2p/go-libp2p-autonat v0.2.2 h1:4dlgcEEugTFWSvdG2UIFxhnOMpX76QaZSR
|
|||
github.com/libp2p/go-libp2p-autonat v0.2.2/go.mod h1:HsM62HkqZmHR2k1xgX34WuWDzk/nBwNHoeyyT4IWV6A=
|
||||
github.com/libp2p/go-libp2p-autonat v0.2.3 h1:w46bKK3KTOUWDe5mDYMRjJu1uryqBp8HCNDp/TWMqKw=
|
||||
github.com/libp2p/go-libp2p-autonat v0.2.3/go.mod h1:2U6bNWCNsAG9LEbwccBDQbjzQ8Krdjge1jLTE9rdoMM=
|
||||
github.com/libp2p/go-libp2p-autonat v0.3.2 h1:OhDSwVVaq7liTaRIsFFYvsaPp0pn2yi0WazejZ4DUmo=
|
||||
github.com/libp2p/go-libp2p-autonat v0.3.2/go.mod h1:0OzOi1/cVc7UcxfOddemYD5vzEqi4fwRbnZcJGLi68U=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.0.1/go.mod h1:Ibpbw/7cPPYwFb7PACIWdvxxv0t0XCCI10t7czjAjTc=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.1.4 h1:I96SWjR4rK9irDHcHq3XHN6hawCRTPUADzkJacgZLvk=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.1.4/go.mod h1:oJF0saYsAXQCSfDq254GMNmLNz6ZTHTOvtF4ZydUvwU=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.1.6 h1:CkPp1/zaCrCnBo0AdsQA0O1VkUYoUOtyHOnoa8gKIcE=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.1.6/go.mod h1:jONCAJqEP+Z8T6EQviGL4JsQcLx1LgTGtVqFNY8EMfQ=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.2.0 h1:3EsGAi0CBGcZ33GwRuXEYJLLPoVWyXJ1bcJzAJjINkk=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.2.0/go.mod h1:eduNKXGTioTuQAUcZ5epXi9vMl+t4d8ugUBRQ4SqaNQ=
|
||||
github.com/libp2p/go-libp2p-circuit v0.0.1/go.mod h1:Dqm0s/BiV63j8EEAs8hr1H5HudqvCAeXxDyic59lCwE=
|
||||
github.com/libp2p/go-libp2p-circuit v0.0.9/go.mod h1:uU+IBvEQzCu953/ps7bYzC/D/R0Ho2A9LfKVVCatlqU=
|
||||
github.com/libp2p/go-libp2p-circuit v0.1.0/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8=
|
||||
|
@ -553,7 +565,8 @@ github.com/libp2p/go-libp2p-circuit v0.2.2 h1:87RLabJ9lrhoiSDDZyCJ80ZlI5TLJMwfyo
|
|||
github.com/libp2p/go-libp2p-circuit v0.2.2/go.mod h1:nkG3iE01tR3FoQ2nMm06IUrCpCyJp1Eo4A1xYdpjfs4=
|
||||
github.com/libp2p/go-libp2p-circuit v0.2.3 h1:3Uw1fPHWrp1tgIhBz0vSOxRUmnKL8L/NGUyEd5WfSGM=
|
||||
github.com/libp2p/go-libp2p-circuit v0.2.3/go.mod h1:nkG3iE01tR3FoQ2nMm06IUrCpCyJp1Eo4A1xYdpjfs4=
|
||||
github.com/libp2p/go-libp2p-connmgr v0.2.1 h1:1ed0HFhCb39sIMK7QYgRBW0vibBBqFQMs4xt9a9AalY=
|
||||
github.com/libp2p/go-libp2p-circuit v0.3.1 h1:69ENDoGnNN45BNDnBd+8SXSetDuw0eJFcGmOvvtOgBw=
|
||||
github.com/libp2p/go-libp2p-circuit v0.3.1/go.mod h1:8RMIlivu1+RxhebipJwFDA45DasLx+kkrp4IlJj53F4=
|
||||
github.com/libp2p/go-libp2p-connmgr v0.2.1/go.mod h1:JReKEFcgzSHKT9lL3rhYcUtXBs9uMIiMKJGM1tl3xJE=
|
||||
github.com/libp2p/go-libp2p-connmgr v0.2.3/go.mod h1:Gqjg29zI8CwXX21zRxy6gOg8VYu3zVerJRt2KyktzH4=
|
||||
github.com/libp2p/go-libp2p-connmgr v0.2.4 h1:TMS0vc0TCBomtQJyWr7fYxcVYYhx+q/2gF++G5Jkl/w=
|
||||
|
@ -585,6 +598,8 @@ github.com/libp2p/go-libp2p-core v0.5.7 h1:QK3xRwFxqd0Xd9bSZL+8yZ8ncZZbl6Zngd/+Y
|
|||
github.com/libp2p/go-libp2p-core v0.5.7/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo=
|
||||
github.com/libp2p/go-libp2p-core v0.6.0 h1:u03qofNYTBN+yVg08PuAKylZogVf0xcTEeM8skGf+ak=
|
||||
github.com/libp2p/go-libp2p-core v0.6.0/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo=
|
||||
github.com/libp2p/go-libp2p-core v0.6.1 h1:XS+Goh+QegCDojUZp00CaPMfiEADCrLjNZskWE7pvqs=
|
||||
github.com/libp2p/go-libp2p-core v0.6.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8=
|
||||
github.com/libp2p/go-libp2p-crypto v0.0.1/go.mod h1:yJkNyDmO341d5wwXxDUGO0LykUVT72ImHNUqh5D/dBE=
|
||||
github.com/libp2p/go-libp2p-crypto v0.0.2/go.mod h1:eETI5OUfBnvARGOHrJz2eWNyTUxEGZnBxMcbUjfIj4I=
|
||||
github.com/libp2p/go-libp2p-crypto v0.1.0 h1:k9MFy+o2zGDNGsaoZl0MA3iZ75qXxr9OOoAZF+sD5OQ=
|
||||
|
@ -599,6 +614,8 @@ github.com/libp2p/go-libp2p-discovery v0.3.0 h1:+JnYBRLzZQtRq0mK3xhyjBwHytLmJXMT
|
|||
github.com/libp2p/go-libp2p-discovery v0.3.0/go.mod h1:o03drFnz9BVAZdzC/QUQ+NeQOu38Fu7LJGEOK2gQltw=
|
||||
github.com/libp2p/go-libp2p-discovery v0.4.0 h1:dK78UhopBk48mlHtRCzbdLm3q/81g77FahEBTjcqQT8=
|
||||
github.com/libp2p/go-libp2p-discovery v0.4.0/go.mod h1:bZ0aJSrFc/eX2llP0ryhb1kpgkPyTo23SJ5b7UQCMh4=
|
||||
github.com/libp2p/go-libp2p-discovery v0.5.0 h1:Qfl+e5+lfDgwdrXdu4YNCWyEo3fWuP+WgN9mN0iWviQ=
|
||||
github.com/libp2p/go-libp2p-discovery v0.5.0/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug=
|
||||
github.com/libp2p/go-libp2p-gostream v0.2.0 h1:YGLebbo8KfylSkuralCCyas/hVrgWjc+cfnLMCZWvEs=
|
||||
github.com/libp2p/go-libp2p-gostream v0.2.0/go.mod h1:nN/Aw00orrADXaXgNCeYjCtQrk6eT20PX/G8F12NW/s=
|
||||
github.com/libp2p/go-libp2p-host v0.0.1/go.mod h1:qWd+H1yuU0m5CwzAkvbSjqKairayEHdR5MMl7Cwa7Go=
|
||||
|
@ -607,11 +624,9 @@ github.com/libp2p/go-libp2p-interface-connmgr v0.0.1/go.mod h1:GarlRLH0LdeWcLnYM
|
|||
github.com/libp2p/go-libp2p-interface-connmgr v0.0.4/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k=
|
||||
github.com/libp2p/go-libp2p-interface-connmgr v0.0.5/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k=
|
||||
github.com/libp2p/go-libp2p-interface-pnet v0.0.1/go.mod h1:el9jHpQAXK5dnTpKA4yfCNBZXvrzdOU75zz+C6ryp3k=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.7.10 h1:Usixca9o8e3t+pSdHkzyWdU+WSbeTaMvpIcXxQrbImE=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.7.10/go.mod h1:COi43/398wedaaNzvnbnWQ8qeG629Nu7Aj0WixHmD3A=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.8.2 h1:s7y38B+hdj1AkNR3PCTpvNqBsZHxOf7hoUy7+fNlSZQ=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.8.2/go.mod h1:u3rbYbp3CSraAHD5s81CJ3hHozKTud/UOXfAgh93Gek=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.4.1 h1:6FyzbQuGLPzbMv3HiD232zqscIz5iB8ppJwb380+OGI=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.8.3 h1:ceK5ML6s/I8UAcw6veoNsuEHdHvfo88leU/5uWOIFWs=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.8.3/go.mod h1:HnYYy8taJWESkqiESd1ngb9XX/XGGsMA5G0Vj2HoSh4=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.4.1/go.mod h1:7sCeZx2GkNK1S6lQnGUW5JYZCFPnXzAZCCBBS70lytY=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.4.2 h1:wg+VPpCtY61bCasGRexCuXOmEmdKjN+k1w+JtTwu9gA=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.4.2/go.mod h1:7sCeZx2GkNK1S6lQnGUW5JYZCFPnXzAZCCBBS70lytY=
|
||||
|
@ -627,6 +642,8 @@ github.com/libp2p/go-libp2p-mplex v0.2.2 h1:+Ld7YDAfVERQ0E+qqjE7o6fHwKuM0SqTzYiw
|
|||
github.com/libp2p/go-libp2p-mplex v0.2.2/go.mod h1:74S9eum0tVQdAfFiKxAyKzNdSuLqw5oadDq7+L/FELo=
|
||||
github.com/libp2p/go-libp2p-mplex v0.2.3 h1:2zijwaJvpdesST2MXpI5w9wWFRgYtMcpRX7rrw0jmOo=
|
||||
github.com/libp2p/go-libp2p-mplex v0.2.3/go.mod h1:CK3p2+9qH9x+7ER/gWWDYJ3QW5ZxWDkm+dVvjfuG3ek=
|
||||
github.com/libp2p/go-libp2p-mplex v0.2.4 h1:XFFXaN4jhqnIuJVjYOR3k6bnRj0mFfJOlIuDVww+4Zo=
|
||||
github.com/libp2p/go-libp2p-mplex v0.2.4/go.mod h1:mI7iOezdWFOisvUwaYd3IDrJ4oVmgoXK8H331ui39CE=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.2/go.mod h1:QrjXQSD5Dj4IJOdEcjHRkWTSomyxRo6HnUkf/TfQpLQ=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.4 h1:+KXK324yaY701On8a0aGjTnw8467kW3ExKcqW2wwmyw=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY=
|
||||
|
@ -668,8 +685,6 @@ github.com/libp2p/go-libp2p-pubsub v0.2.4 h1:O4BcaKpPQ9p82yTBtzIzgDFoOXkqhrQpfcV
|
|||
github.com/libp2p/go-libp2p-pubsub v0.2.4/go.mod h1:1tJwAfySvZQ49R9uTVlkwtSTMVLeQQdrnLTJrr91gVc=
|
||||
github.com/libp2p/go-libp2p-pubsub v0.3.1 h1:7Hyv2d8BK/x1HGRJTZ8X++VQEP+WqDTSwpUSZGTVLYA=
|
||||
github.com/libp2p/go-libp2p-pubsub v0.3.1/go.mod h1:TxPOBuo1FPdsTjFnv+FGZbNbWYsp74Culx+4ViQpato=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.3.7 h1:F9hxonkJvMipNim8swrvRk2uL9s8pqzHz0M6eMf8L58=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.3.7/go.mod h1:Kr4aDtnfHHNeENn5J+sZIVc+t8HpQn9W6BOxhVGHbgI=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.5.0 h1:BUN1lgYNUrtv4WLLQ5rQmC9MCJ6uEXusezGvYRNoJXE=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.5.0/go.mod h1:IEcuC5MLxvZ5KuHKjRu+dr3LjCT1Be3rcD/4d8JrX8M=
|
||||
github.com/libp2p/go-libp2p-record v0.0.1/go.mod h1:grzqg263Rug/sRex85QrDOLntdFAymLDLm7lxMgU79Q=
|
||||
|
@ -679,7 +694,6 @@ github.com/libp2p/go-libp2p-record v0.1.2/go.mod h1:pal0eNcT5nqZaTV7UGhqeGqxFgGd
|
|||
github.com/libp2p/go-libp2p-record v0.1.3 h1:R27hoScIhQf/A8XJZ8lYpnqh9LatJ5YbHs28kCIfql0=
|
||||
github.com/libp2p/go-libp2p-record v0.1.3/go.mod h1:yNUff/adKIfPnYQXgp6FQmNu3gLJ6EMg7+/vv2+9pY4=
|
||||
github.com/libp2p/go-libp2p-routing v0.0.1/go.mod h1:N51q3yTr4Zdr7V8Jt2JIktVU+3xBBylx1MZeVA6t1Ys=
|
||||
github.com/libp2p/go-libp2p-routing-helpers v0.2.1 h1:tV5fxxkl1cEEFXIv9yl5OGbLjEwngtq1qf5G/beLRvQ=
|
||||
github.com/libp2p/go-libp2p-routing-helpers v0.2.1/go.mod h1:rTLUHlGDZbXHANJAWP2xW7ruPNJLj41/GnCBiR+qgjU=
|
||||
github.com/libp2p/go-libp2p-routing-helpers v0.2.3 h1:xY61alxJ6PurSi+MXbywZpelvuU4U4p/gPTxjqCqTzY=
|
||||
github.com/libp2p/go-libp2p-routing-helpers v0.2.3/go.mod h1:795bh+9YeoFl99rMASoiVgHdi5bjack0N1+AFAdbvBw=
|
||||
|
@ -700,10 +714,10 @@ github.com/libp2p/go-libp2p-swarm v0.2.2/go.mod h1:fvmtQ0T1nErXym1/aa1uJEyN7JzaT
|
|||
github.com/libp2p/go-libp2p-swarm v0.2.3 h1:uVkCb8Blfg7HQ/f30TyHn1g/uCwXsAET7pU0U59gx/A=
|
||||
github.com/libp2p/go-libp2p-swarm v0.2.3/go.mod h1:P2VO/EpxRyDxtChXz/VPVXyTnszHvokHKRhfkEgFKNM=
|
||||
github.com/libp2p/go-libp2p-swarm v0.2.4/go.mod h1:/xIpHFPPh3wmSthtxdGbkHZ0OET1h/GGZes8Wku/M5Y=
|
||||
github.com/libp2p/go-libp2p-swarm v0.2.6 h1:UhMXIa+yCOALQyceENEIStMlbTCzOM6aWo6vw8QW17Q=
|
||||
github.com/libp2p/go-libp2p-swarm v0.2.6/go.mod h1:F9hrkZjO7dDbcEiYii/fAB1QdpLuU6h1pa4P5VNsEgc=
|
||||
github.com/libp2p/go-libp2p-swarm v0.2.7 h1:4lV/sf7f0NuVqunOpt1I11+Z54+xp+m0eeAvxj/LyRc=
|
||||
github.com/libp2p/go-libp2p-swarm v0.2.7/go.mod h1:ZSJ0Q+oq/B1JgfPHJAT2HTall+xYRNYp1xs4S2FBWKA=
|
||||
github.com/libp2p/go-libp2p-swarm v0.2.8 h1:cIUUvytBzNQmGSjnXFlI6UpoBGsaud82mJPIJVfkDlg=
|
||||
github.com/libp2p/go-libp2p-swarm v0.2.8/go.mod h1:JQKMGSth4SMqonruY0a8yjlPVIkb0mdNSwckW7OYziM=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.1/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
|
@ -712,6 +726,8 @@ github.com/libp2p/go-libp2p-testing v0.1.0 h1:WaFRj/t3HdMZGNZqnU2pS7pDRBmMeoDx7/
|
|||
github.com/libp2p/go-libp2p-testing v0.1.0/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0=
|
||||
github.com/libp2p/go-libp2p-testing v0.1.1 h1:U03z3HnGI7Ni8Xx6ONVZvUFOAzWYmolWf5W5jAOPNmU=
|
||||
github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0=
|
||||
github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8 h1:v4dvk7YEW8buwCdIVWnhpv0Hp/AAJKRWIxBhmLRZrsk=
|
||||
github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc=
|
||||
github.com/libp2p/go-libp2p-tls v0.1.3 h1:twKMhMu44jQO+HgQK9X8NHO5HkeJu2QbhLzLJpa8oNM=
|
||||
github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M=
|
||||
github.com/libp2p/go-libp2p-transport v0.0.1/go.mod h1:UzbUs9X+PHOSw7S3ZmeOxfnwaQY5vGDzZmKPod3N3tk=
|
||||
|
@ -754,6 +770,8 @@ github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+
|
|||
github.com/libp2p/go-msgio v0.0.3/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
|
||||
github.com/libp2p/go-msgio v0.0.4 h1:agEFehY3zWJFUHK6SEMR7UYmk2z6kC3oeCM7ybLhguA=
|
||||
github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
|
||||
github.com/libp2p/go-msgio v0.0.6 h1:lQ7Uc0kS1wb1EfRxO2Eir/RJoHkHn7t6o+EiwsYIKJA=
|
||||
github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA=
|
||||
github.com/libp2p/go-nat v0.0.3 h1:l6fKV+p0Xa354EqQOQP+d8CivdLM4kl5GxC1hSc/UeI=
|
||||
github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI=
|
||||
github.com/libp2p/go-nat v0.0.4 h1:KbizNnq8YIf7+Hn7+VFL/xE0eDrkPru2zIO9NMwL8UQ=
|
||||
|
@ -762,12 +780,16 @@ github.com/libp2p/go-nat v0.0.5 h1:qxnwkco8RLKqVh1NmjQ+tJ8p8khNLFxuElYG/TwqW4Q=
|
|||
github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU=
|
||||
github.com/libp2p/go-netroute v0.1.2 h1:UHhB35chwgvcRI392znJA3RCBtZ3MpE3ahNCN5MR4Xg=
|
||||
github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk=
|
||||
github.com/libp2p/go-netroute v0.1.3 h1:1ngWRx61us/EpaKkdqkMjKk/ufr/JlIFYQAxV2XX8Ig=
|
||||
github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk=
|
||||
github.com/libp2p/go-openssl v0.0.2/go.mod h1:v8Zw2ijCSWBQi8Pq5GAixw6DbFfa9u6VIYDXnvOXkc0=
|
||||
github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
|
||||
github.com/libp2p/go-openssl v0.0.4 h1:d27YZvLoTyMhIN4njrkr8zMDOM4lfpHIp6A+TK9fovg=
|
||||
github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
|
||||
github.com/libp2p/go-openssl v0.0.5 h1:pQkejVhF0xp08D4CQUcw8t+BFJeXowja6RVcb5p++EA=
|
||||
github.com/libp2p/go-openssl v0.0.5/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
|
||||
github.com/libp2p/go-openssl v0.0.7 h1:eCAzdLejcNVBzP/iZM9vqHnQm+XyCEbSSIheIPRGNsw=
|
||||
github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
|
||||
github.com/libp2p/go-reuseport v0.0.1 h1:7PhkfH73VXfPJYKQ6JwS5I/eVcoyYi9IMNGc6FWpFLw=
|
||||
github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.1/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs=
|
||||
|
@ -814,12 +836,8 @@ github.com/libp2p/go-yamux v1.3.0/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZ
|
|||
github.com/libp2p/go-yamux v1.3.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow=
|
||||
github.com/libp2p/go-yamux v1.3.5 h1:ibuz4naPAully0pN6J/kmUARiqLpnDQIzI/8GCOrljg=
|
||||
github.com/libp2p/go-yamux v1.3.5/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow=
|
||||
github.com/libp2p/go-yamux v1.3.6 h1:O5qcBXRcfqecvQ/My9NqDNHB3/5t58yuJYqthcKhhgE=
|
||||
github.com/libp2p/go-yamux v1.3.6/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow=
|
||||
github.com/libp2p/go-yamux v1.3.7 h1:v40A1eSPJDIZwz2AvrV3cxpTZEGDP11QJbukmEhYyQI=
|
||||
github.com/libp2p/go-yamux v1.3.7/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE=
|
||||
github.com/lucas-clemente/quic-go v0.15.7 h1:Pu7To5/G9JoP1mwlrcIvfV8ByPBlCzif3MCl8+1W83I=
|
||||
github.com/lucas-clemente/quic-go v0.15.7/go.mod h1:Myi1OyS0FOjL3not4BxT7KN29bRkcMUV5JVVFLKtDp8=
|
||||
github.com/lucas-clemente/quic-go v0.16.0 h1:jJw36wfzGJhmOhAOaOC2lS36WgeqXQszH47A7spo1LI=
|
||||
github.com/lucas-clemente/quic-go v0.16.0/go.mod h1:I0+fcNTdb9eS1ZcjQZbDVPGchJ86chcIxPALn9lEJqE=
|
||||
github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
|
||||
|
@ -852,13 +870,15 @@ github.com/mb0/diff v0.0.0-20131118162322-d8d9a906c24d h1:eAS2t2Vy+6psf9LZ4T5WXW
|
|||
github.com/mb0/diff v0.0.0-20131118162322-d8d9a906c24d/go.mod h1:3YMHqrw2Qu3Liy82v4QdAG17e9k91HZ7w3hqlpWqhDo=
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
|
||||
github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
|
||||
github.com/microcosm-cc/bluemonday v1.0.3 h1:EjVH7OqbU219kdm8acbveoclh2zZFqPJTJw6VUlTLAQ=
|
||||
github.com/microcosm-cc/bluemonday v1.0.3/go.mod h1:8iwZnFn2CDDNZ0r6UXhF4xawGvzaqzCRa1n3/lO3W2w=
|
||||
github.com/microcosm-cc/bluemonday v1.0.4 h1:p0L+CTpo/PLFdkoPcJemLXG+fpMD7pYOoDEq1axMbGg=
|
||||
github.com/microcosm-cc/bluemonday v1.0.4/go.mod h1:8iwZnFn2CDDNZ0r6UXhF4xawGvzaqzCRa1n3/lO3W2w=
|
||||
github.com/miekg/dns v1.1.4/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||
github.com/miekg/dns v1.1.12 h1:WMhc1ik4LNkTg8U9l3hI1LvxKmIL+f1+WV/SZtCbDDA=
|
||||
github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||
github.com/miekg/dns v1.1.28 h1:gQhy5bsJa8zTlVI8lywCTZp1lguor+xevFoYlzeCTQY=
|
||||
github.com/miekg/dns v1.1.28/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
||||
github.com/miekg/dns v1.1.30 h1:Qww6FseFn8PRfw07jueqIXqodm0JKiiKuK0DeXSqfyo=
|
||||
github.com/miekg/dns v1.1.30/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
||||
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g=
|
||||
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
|
||||
github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U=
|
||||
|
@ -879,6 +899,8 @@ github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVq
|
|||
github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
||||
github.com/mr-tron/base58 v1.1.3 h1:v+sk57XuaCKGXpWtVBX8YJzO7hMGx4Aajh4TQbdEFdc=
|
||||
github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
||||
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
|
||||
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
||||
github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI=
|
||||
github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA=
|
||||
github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4=
|
||||
|
@ -929,17 +951,23 @@ github.com/multiformats/go-multihash v0.0.10 h1:lMoNbh2Ssd9PUF74Nz008KGzGPlfeV6w
|
|||
github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew=
|
||||
github.com/multiformats/go-multihash v0.0.13 h1:06x+mk/zj1FoMsgNejLpy6QTvJqlSt/BhLEy87zidlc=
|
||||
github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
||||
github.com/multiformats/go-multihash v0.0.14 h1:QoBceQYQQtNUuf6s7wHxnE2c8bhbMqhfGzNI032se/I=
|
||||
github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
||||
github.com/multiformats/go-multistream v0.0.1/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg=
|
||||
github.com/multiformats/go-multistream v0.0.4/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg=
|
||||
github.com/multiformats/go-multistream v0.1.0 h1:UpO6jrsjqs46mqAK3n6wKRYFhugss9ArzbyUzU+4wkQ=
|
||||
github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg=
|
||||
github.com/multiformats/go-multistream v0.1.1 h1:JlAdpIFhBhGRLxe9W6Om0w++Gd6KMWoFPZL/dEnm9nI=
|
||||
github.com/multiformats/go-multistream v0.1.1/go.mod h1:KmHZ40hzVxiaiwlj3MEbYgK9JFk2/9UktWZAF54Du38=
|
||||
github.com/multiformats/go-multistream v0.1.2 h1:knyamLYMPFPngQjGQ0lhnlys3jtVR/3xV6TREUJr+fE=
|
||||
github.com/multiformats/go-multistream v0.1.2/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k=
|
||||
github.com/multiformats/go-varint v0.0.1 h1:TR/0rdQtnNxuN2IhiB639xC3tWM4IUi7DkTBVTdGW/M=
|
||||
github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/multiformats/go-varint v0.0.5 h1:XVZwSo04Cs3j/jS0uAEPpT3JY6DzMcVLLoWOSnCxOjg=
|
||||
github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY=
|
||||
github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
|
@ -969,6 +997,8 @@ github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoT
|
|||
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
|
||||
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
|
||||
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
|
||||
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
|
||||
github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95 h1:+OLn68pqasWca0z5ryit9KGfp3sUsW4Lqg32iRMJyzs=
|
||||
github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
|
||||
|
@ -976,8 +1006,6 @@ github.com/otiai10/marmoset v0.4.0 h1:Hg59lQI7qQowBEdsAJ/+VDTEospTBzXX/A1Gsw4mlv
|
|||
github.com/otiai10/marmoset v0.4.0/go.mod h1:t2q6dXWZ9YcFdRREDApX4bCmfQnL3isJ2dgl8ychlXg=
|
||||
github.com/otiai10/mint v1.3.0 h1:Ady6MKVezQwHBkGzLFbrsywyp09Ah7rkmfjV3Bcr5uc=
|
||||
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
|
||||
github.com/otiai10/opengraph v1.1.1 h1:zaHbzhegXGqxVpiI7xlQQ0vKBWvHJbagnUjDC40sFtQ=
|
||||
github.com/otiai10/opengraph v1.1.1/go.mod h1:ZMbPcfiSRSsg3+yrWZCXrgYL6kEK4KpH4GG1iyIvEXs=
|
||||
github.com/otiai10/opengraph v1.1.2 h1:ajv2DTAh62p6wv1bXxnje+9K/AATJROtjnmk6Ml7Ro8=
|
||||
github.com/otiai10/opengraph v1.1.2/go.mod h1:ZMbPcfiSRSsg3+yrWZCXrgYL6kEK4KpH4GG1iyIvEXs=
|
||||
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
|
||||
|
@ -1092,6 +1120,10 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
|
|||
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
|
||||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
|
||||
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
|
||||
github.com/textileio/go-datastore v0.4.5-0.20200819232101-baa577bf9422 h1:DNpznzcn7pd1Cn2fdKHfPPw62r8Ii4DGVnQRu9Jbvok=
|
||||
github.com/textileio/go-datastore v0.4.5-0.20200819232101-baa577bf9422/go.mod h1:/38mp5DMgxCZrb5wpgPlWGXuZ99/ur8wgHDSXU5zCjU=
|
||||
github.com/textileio/go-ds-badger v0.2.5-0.20200819232634-de89720b5d6a h1:AdjNdwIWrZAUrXfC9IHG8eKhRlJarXZoN9CmGlfTeLA=
|
||||
github.com/textileio/go-ds-badger v0.2.5-0.20200819232634-de89720b5d6a/go.mod h1:0kLVpG7eeM95s4rS78lQe4eG5DCk+cnU8xas2nPSdZY=
|
||||
github.com/tidwall/gjson v1.3.5 h1:2oW9FBNu8qt9jy5URgrzsVx/T/KSn3qn/smJQ0crlDQ=
|
||||
github.com/tidwall/gjson v1.3.5/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls=
|
||||
github.com/tidwall/match v1.0.1 h1:PnKP62LPNxHKTwvHHZZzdOAOCtsJTjo6dZLCwpKm5xc=
|
||||
|
@ -1145,8 +1177,6 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:
|
|||
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
|
||||
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
||||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
|
||||
github.com/yosssi/gohtml v0.0.0-20190915184251-7ff6f235ecaf h1:VA200mPTYh9FWY8zKX5ctXCtNk78HUez8ecTdsQGhoo=
|
||||
github.com/yosssi/gohtml v0.0.0-20190915184251-7ff6f235ecaf/go.mod h1:+ccdNT0xMY1dtc5XBxumbYfOUhmduiGudqaDgD2rVRE=
|
||||
github.com/yuin/goldmark v1.1.30 h1:j4d4Lw3zqZelDhBksEo3BnWg9xhXRQGJPPSL6OApZjI=
|
||||
github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
|
||||
|
@ -1156,6 +1186,8 @@ go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=
|
|||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8=
|
||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto=
|
||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=
|
||||
|
@ -1200,8 +1232,11 @@ golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPh
|
|||
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 h1:cg5LA/zNPRzIXIWSCxQW10Rvpy94aQh3LT/ShoCpkHw=
|
||||
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
|
||||
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81 h1:00VmoueYNlNz/aHIilyyQz/MHSqGoWJzpFv/HW8xpzI=
|
||||
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
|
@ -1210,8 +1245,11 @@ golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvx
|
|||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b h1:GgiSbuUyC0BlbUmHQBgFqu32eiRR/CEYdjOjOd4zE6Y=
|
||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180524181706-dfa909b99c79/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
@ -1235,11 +1273,11 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
|
|||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190926025831-c00fd9afed17/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200320220750-118fecf932d8 h1:1+zQlQqEEhUeStBTi653GZAnAuivZq/2hz+Iz+OP7rg=
|
||||
golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200519113804-d87ec0cfa476 h1:E7ct1C6/33eOdrGZKMoyntcEvs2dwZnDe30crG5vpYU=
|
||||
golang.org/x/net v0.0.0-20200519113804-d87ec0cfa476/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
|
@ -1255,6 +1293,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEha
|
|||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o=
|
||||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
|
@ -1266,6 +1306,7 @@ golang.org/x/sys v0.0.0-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5h
|
|||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190302025703-b6889370fb10/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
@ -1279,6 +1320,7 @@ golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
@ -1287,9 +1329,8 @@ golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8=
|
||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 h1:DYfZAGf2WMFjMxbgTjaC+2HC7NkNAQs+6Q8b9WEB/F4=
|
||||
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 h1:ogLJMz+qpzav7lGMh10LMvAkM/fAoGlaiiHYiFYdm80=
|
||||
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
|
@ -1319,6 +1360,8 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn
|
|||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191216052735-49a3e744a425 h1:VvQyQJN0tSuecqgcIxMWnnfG5kSmgy9KZR9sW3W5QeA=
|
||||
golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa h1:5E4dL8+NgFOgjwbTKz+OOEGGhP+ectTmF842l6KjupQ=
|
||||
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA=
|
||||
|
@ -1342,8 +1385,9 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn
|
|||
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20191206224255-0243a4be9c8f h1:naitw5DILWPQvG0oG04mR9jF8fmKpRdW3E3zzKA4D0Y=
|
||||
google.golang.org/genproto v0.0.0-20191206224255-0243a4be9c8f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200428115010-c45acf45369a h1:ykRcNp3dotYGpAEIYeWCGaefklVjVy/rnSvM3zNh6j8=
|
||||
google.golang.org/genproto v0.0.0-20200428115010-c45acf45369a/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
||||
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
||||
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
|
||||
|
@ -1352,10 +1396,10 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi
|
|||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.29.0 h1:2pJjwYOdkZ9HlN4sWRYBg9ttH5bCOlsueaM+b/oYjwo=
|
||||
google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
|
||||
google.golang.org/grpc v1.31.0-dev.0.20200627230533-68098483a7af h1:EOya8wgpd1imzaei+Mg6FNARQy0DaQUMrZZjBec++eY=
|
||||
google.golang.org/grpc v1.31.0-dev.0.20200627230533-68098483a7af/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
|
||||
google.golang.org/grpc v1.31.0 h1:T7P4R73V3SSDPhH7WW7ATbfViLtmamH0DKrP3f9AuDI=
|
||||
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
|
|
|
@ -81,7 +81,7 @@ func main() {
|
|||
}
|
||||
webaddr = webLis.Addr().String()
|
||||
|
||||
server := grpc.NewServer()
|
||||
server := grpc.NewServer(grpc.MaxRecvMsgSize(20 * 1024 * 1024))
|
||||
lib.RegisterClientCommandsServer(server, mw)
|
||||
|
||||
webrpc := grpcweb.WrapServer(
|
||||
|
|
|
@ -24,118 +24,121 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
|||
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
|
||||
|
||||
var fileDescriptor_93a29dc403579097 = []byte{
|
||||
// 1764 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x99, 0xcf, 0x6f, 0xdc, 0x40,
|
||||
0x15, 0xc7, 0xbb, 0x02, 0xd1, 0x32, 0x0d, 0x81, 0x1a, 0x28, 0x6d, 0x50, 0x37, 0xfd, 0x49, 0x9b,
|
||||
0xb4, 0x71, 0x4a, 0x4a, 0xb9, 0x81, 0x94, 0x6c, 0x7e, 0x34, 0x22, 0x4d, 0x43, 0x36, 0x4d, 0xa4,
|
||||
0x0a, 0x04, 0x5e, 0xef, 0xcb, 0xee, 0xb0, 0xde, 0x19, 0xd7, 0x9e, 0xdd, 0x34, 0x12, 0x5c, 0x90,
|
||||
0xe0, 0x86, 0xd4, 0x03, 0x7f, 0x14, 0xc7, 0x1e, 0x39, 0xa2, 0xf6, 0x1f, 0x41, 0x33, 0x7e, 0xfe,
|
||||
0x35, 0x3b, 0x33, 0xeb, 0x1c, 0xda, 0xaa, 0x7e, 0x9f, 0xf7, 0xfd, 0xbe, 0xb1, 0xe7, 0x8d, 0xc7,
|
||||
0xb3, 0x64, 0x39, 0xee, 0xad, 0xc7, 0x09, 0x17, 0x3c, 0x5d, 0x4f, 0x21, 0x99, 0xd2, 0x10, 0xf2,
|
||||
0x7f, 0x7d, 0x75, 0xd9, 0xbb, 0x1e, 0xb0, 0x4b, 0x71, 0x19, 0xc3, 0xd2, 0x9d, 0x92, 0x0c, 0xf9,
|
||||
0x78, 0x1c, 0xb0, 0x7e, 0x9a, 0x21, 0x4b, 0xb7, 0xcb, 0x08, 0x4c, 0x81, 0x09, 0xbc, 0xbe, 0xf1,
|
||||
0xef, 0xdf, 0x92, 0xc5, 0x4e, 0x44, 0x81, 0x89, 0x0e, 0x26, 0x78, 0x67, 0x64, 0xe1, 0x2c, 0x88,
|
||||
0x22, 0x10, 0x9d, 0x04, 0x02, 0x01, 0xde, 0x43, 0x1f, 0xe5, 0xfd, 0xe3, 0x38, 0xf4, 0xb3, 0x90,
|
||||
0x9f, 0xc5, 0xfc, 0x63, 0xf8, 0x38, 0x81, 0x54, 0x2c, 0x3d, 0x72, 0x32, 0x69, 0xcc, 0x59, 0x0a,
|
||||
0xde, 0x07, 0xf2, 0x83, 0x2c, 0x72, 0x0c, 0x21, 0x9f, 0x42, 0xe2, 0x19, 0xb3, 0x30, 0x58, 0x48,
|
||||
0x3f, 0x76, 0x43, 0xa8, 0xfd, 0x47, 0xb2, 0xb8, 0x19, 0x86, 0x7c, 0xc2, 0x0a, 0xf1, 0x7a, 0x1e,
|
||||
0x06, 0x67, 0xd4, 0x9f, 0xcc, 0xa1, 0xca, 0xd2, 0x31, 0x86, 0x37, 0xe5, 0x91, 0x31, 0x4f, 0xbb,
|
||||
0x2b, 0x8f, 0xdd, 0xd0, 0x8c, 0x76, 0x17, 0x22, 0x08, 0x85, 0x45, 0x3b, 0x0b, 0xce, 0xd1, 0x2e,
|
||||
0x20, 0xd4, 0x3e, 0x21, 0x37, 0x73, 0x6d, 0xc1, 0x63, 0xef, 0x81, 0x39, 0x49, 0xf0, 0xb8, 0xd0,
|
||||
0x7d, 0xe8, 0x42, 0x50, 0x35, 0x24, 0x0b, 0xfb, 0xe3, 0x60, 0x00, 0x7b, 0x20, 0xb6, 0x22, 0xde,
|
||||
0xf3, 0x9e, 0xd5, 0x72, 0xf6, 0xe3, 0xf3, 0xd4, 0x57, 0x71, 0x7f, 0x0f, 0x84, 0x2f, 0x89, 0x42,
|
||||
0x7d, 0xa5, 0x01, 0x89, 0x26, 0xbf, 0x27, 0xe4, 0x14, 0x92, 0x94, 0x72, 0xb6, 0x07, 0xc2, 0xbb,
|
||||
0x5f, 0x4b, 0xc4, 0x80, 0xca, 0xca, 0xa5, 0x1f, 0x38, 0x08, 0x94, 0x7c, 0x43, 0xae, 0x1f, 0xf0,
|
||||
0x41, 0x17, 0x58, 0xdf, 0xbb, 0x57, 0xa3, 0x0f, 0xf8, 0xc0, 0x97, 0x97, 0x0b, 0xb1, 0xb6, 0x2d,
|
||||
0x8c, 0x4a, 0x87, 0xe4, 0xfb, 0x1d, 0xce, 0xce, 0xe9, 0x40, 0xd6, 0xb6, 0x5c, 0x83, 0xb3, 0xeb,
|
||||
0xb5, 0xd2, 0xee, 0xdb, 0x01, 0xd4, 0xdb, 0x27, 0x37, 0xba, 0xc3, 0x89, 0xe8, 0xf3, 0x0b, 0xa6,
|
||||
0x95, 0x96, 0x5f, 0xb6, 0x94, 0x56, 0x09, 0xa3, 0xd4, 0x39, 0xb9, 0xb5, 0xf3, 0x49, 0x40, 0xc2,
|
||||
0x82, 0x68, 0x3b, 0xe1, 0xf1, 0x2e, 0x8d, 0x20, 0xf5, 0x9e, 0xd6, 0x92, 0xaa, 0x71, 0x5f, 0x01,
|
||||
0x85, 0xfa, 0xb3, 0xf9, 0x20, 0xfa, 0x44, 0xe4, 0xc7, 0xd5, 0x70, 0x87, 0x33, 0x01, 0x4c, 0x78,
|
||||
0x2b, 0x76, 0x01, 0x44, 0x0a, 0xaf, 0xd5, 0x26, 0x28, 0xba, 0x1d, 0x93, 0x9b, 0x07, 0x94, 0x8d,
|
||||
0x8e, 0x12, 0x98, 0x52, 0xb8, 0xd0, 0xa6, 0x43, 0x25, 0x62, 0x99, 0x0e, 0x75, 0x02, 0x35, 0xdf,
|
||||
0x11, 0xf2, 0x3e, 0x8e, 0x78, 0xd0, 0x97, 0x23, 0xd3, 0x9e, 0x62, 0x19, 0xb0, 0x3c, 0xc5, 0x1a,
|
||||
0x50, 0x76, 0xdb, 0x56, 0xc4, 0xc3, 0x51, 0x16, 0xd3, 0xba, 0x4d, 0x45, 0x30, 0xcd, 0xd2, 0x6d,
|
||||
0x1a, 0x82, 0xaa, 0x67, 0x64, 0x41, 0x05, 0x8e, 0x21, 0x8e, 0x82, 0x50, 0x5f, 0x8f, 0xb3, 0x1c,
|
||||
0x8c, 0x59, 0xd6, 0x63, 0x9d, 0x29, 0x27, 0xb1, 0x8a, 0xbc, 0x8b, 0x81, 0x69, 0xc3, 0xcf, 0x32,
|
||||
0x64, 0xc0, 0x32, 0xfc, 0x1a, 0x80, 0x7a, 0x9c, 0xfc, 0x44, 0x5d, 0xde, 0x03, 0x71, 0x34, 0xe9,
|
||||
0x45, 0x34, 0x3c, 0x83, 0xde, 0xfb, 0xe3, 0x03, 0x6f, 0xd5, 0x90, 0xa9, 0x31, 0x85, 0xcb, 0xf3,
|
||||
0x46, 0xac, 0x66, 0x28, 0xcb, 0xd8, 0x4a, 0x20, 0xe8, 0x87, 0xc9, 0x64, 0xdc, 0x4b, 0x8d, 0x86,
|
||||
0x1a, 0xe3, 0x34, 0x9c, 0x65, 0xcb, 0x39, 0xaf, 0x88, 0x2e, 0x88, 0xaa, 0xdf, 0x8a, 0x41, 0xa3,
|
||||
0x8e, 0x58, 0xe6, 0xbc, 0x05, 0xd5, 0xa6, 0x13, 0xbe, 0x72, 0x4c, 0xd3, 0x49, 0x7b, 0xe1, 0x3c,
|
||||
0x74, 0x21, 0xa8, 0xfa, 0x67, 0xf2, 0xc3, 0x8a, 0xea, 0x51, 0x30, 0x00, 0xef, 0x89, 0x35, 0x4d,
|
||||
0x86, 0x0b, 0xf5, 0x5f, 0xcc, 0xc3, 0xf4, 0x36, 0x60, 0x11, 0x65, 0x23, 0x73, 0x1b, 0xa8, 0x90,
|
||||
0xbb, 0x0d, 0x72, 0xa4, 0x7c, 0x1f, 0x64, 0x75, 0x47, 0x3c, 0x05, 0xcf, 0x34, 0x1b, 0x55, 0xc4,
|
||||
0xb2, 0x00, 0xd4, 0x89, 0xf2, 0xcd, 0xab, 0xae, 0x6f, 0xf3, 0x0b, 0xa6, 0x3a, 0xd6, 0xd4, 0x36,
|
||||
0x79, 0xd0, 0xf2, 0xe6, 0x9d, 0x81, 0x50, 0xfb, 0x0f, 0xa8, 0xbd, 0x07, 0xe2, 0x6d, 0x90, 0x8c,
|
||||
0x52, 0xef, 0xb1, 0x79, 0x66, 0xfb, 0x2a, 0x6a, 0xd9, 0x8f, 0xcc, 0x52, 0x5a, 0xeb, 0xbe, 0x67,
|
||||
0x7d, 0x6e, 0x6c, 0x5d, 0x19, 0x70, 0xb6, 0x2e, 0x02, 0x9a, 0xde, 0x31, 0x58, 0xf4, 0x64, 0xc0,
|
||||
0xa9, 0x87, 0x00, 0xea, 0xfd, 0x89, 0x2c, 0xe6, 0x8d, 0xb2, 0x4b, 0x21, 0xea, 0xa7, 0xc6, 0x39,
|
||||
0xd6, 0x05, 0xe1, 0x67, 0x61, 0xe7, 0x1c, 0xab, 0x61, 0x68, 0xf0, 0x11, 0x5b, 0xbf, 0x2b, 0x77,
|
||||
0x93, 0xa9, 0x48, 0x68, 0x28, 0x28, 0x67, 0xa9, 0xf7, 0xdc, 0x92, 0x5f, 0x85, 0x0a, 0xb3, 0x17,
|
||||
0xcd, 0x60, 0xb4, 0xec, 0x61, 0xe3, 0x74, 0x41, 0x6c, 0x83, 0x08, 0x68, 0x94, 0x7a, 0xb6, 0x6a,
|
||||
0x31, 0x5e, 0x18, 0x3d, 0x9d, 0xcb, 0xa1, 0xc7, 0x25, 0xb9, 0x9d, 0x7b, 0xc8, 0x9e, 0xda, 0x4f,
|
||||
0x37, 0x93, 0x70, 0x48, 0xa7, 0xd0, 0xf7, 0x7c, 0x8b, 0x84, 0x6a, 0xbd, 0x92, 0x2b, 0x2c, 0xd7,
|
||||
0x1b, 0xf3, 0x5a, 0x33, 0x1c, 0xd0, 0x54, 0xbc, 0xe5, 0x53, 0x30, 0x35, 0x83, 0x8c, 0xf9, 0x32,
|
||||
0xe8, 0x6a, 0x86, 0x2a, 0x84, 0xda, 0x13, 0x1c, 0x56, 0xae, 0x7d, 0xc2, 0x0f, 0xe1, 0x42, 0x2d,
|
||||
0x3d, 0x2f, 0x1c, 0xf9, 0x05, 0x55, 0xb8, 0xad, 0x35, 0xa4, 0xd1, 0xf6, 0x73, 0x8b, 0x2c, 0x17,
|
||||
0x50, 0x87, 0xb3, 0x29, 0x24, 0xa2, 0x33, 0xa4, 0x51, 0x3f, 0x01, 0x76, 0xc2, 0x25, 0x9b, 0x7a,
|
||||
0xaf, 0x2d, 0x92, 0x66, 0xbc, 0xa8, 0xe4, 0xd7, 0x57, 0x4d, 0xc3, 0x92, 0x46, 0xc4, 0x2b, 0xe0,
|
||||
0xb2, 0x39, 0x56, 0x2c, 0x6a, 0x86, 0x06, 0x59, 0x6d, 0x82, 0xa2, 0xd9, 0x94, 0xfc, 0xb4, 0x6a,
|
||||
0x76, 0x02, 0x9f, 0x44, 0x57, 0x5c, 0x46, 0xe0, 0xad, 0x39, 0x44, 0x24, 0xe5, 0x2b, 0xac, 0xf0,
|
||||
0xf4, 0x9b, 0xe2, 0xe8, 0x4b, 0x2b, 0x83, 0xdc, 0x9e, 0xc4, 0x11, 0x0d, 0xe5, 0xfb, 0xeb, 0x99,
|
||||
0x45, 0xa5, 0x20, 0x2c, 0x5f, 0x09, 0x66, 0x12, 0xad, 0xfe, 0xd9, 0x22, 0x3f, 0xaf, 0x8e, 0x71,
|
||||
0x2b, 0x08, 0x47, 0x83, 0x84, 0x4f, 0x58, 0xbf, 0xc3, 0x23, 0x9e, 0x78, 0x1b, 0x8e, 0xd2, 0x35,
|
||||
0xb6, 0xb0, 0x7f, 0x75, 0xa5, 0x1c, 0x2c, 0x64, 0x48, 0x6e, 0x55, 0xeb, 0xd8, 0x8c, 0xe8, 0x80,
|
||||
0x59, 0x87, 0x2c, 0x95, 0x14, 0x31, 0x77, 0xc8, 0x55, 0x12, 0x9d, 0x52, 0x5c, 0xfa, 0xd0, 0x69,
|
||||
0x9b, 0x4e, 0xb3, 0x87, 0xfa, 0xc2, 0x21, 0xb1, 0x4d, 0xa7, 0xda, 0x33, 0x5d, 0x6b, 0x48, 0xa3,
|
||||
0xe9, 0x3f, 0x5a, 0x64, 0xa9, 0xea, 0xaa, 0xad, 0x4e, 0xae, 0xdb, 0x6c, 0x5b, 0xa1, 0x5e, 0x5d,
|
||||
0x29, 0x07, 0xeb, 0x60, 0xb8, 0x03, 0x53, 0x53, 0x0b, 0x22, 0xc0, 0x1d, 0x8c, 0xad, 0x2b, 0x32,
|
||||
0xc4, 0xaf, 0x2d, 0x22, 0xcf, 0x1b, 0xb1, 0xe8, 0x37, 0x20, 0x3f, 0xca, 0x17, 0x64, 0x39, 0xd3,
|
||||
0xe5, 0x1f, 0xd3, 0x53, 0x2d, 0x5b, 0x41, 0xfd, 0xe5, 0x78, 0xaa, 0x33, 0x24, 0x1a, 0xfd, 0x05,
|
||||
0xe7, 0x0f, 0x1a, 0x65, 0xb3, 0xd7, 0x99, 0x5f, 0x9f, 0xb4, 0xab, 0x4d, 0x50, 0xfb, 0xba, 0x90,
|
||||
0xf9, 0xcd, 0x5d, 0x17, 0xea, 0x9e, 0x7e, 0x53, 0xdc, 0x3c, 0x73, 0x25, 0x22, 0xf7, 0x35, 0xce,
|
||||
0x99, 0xab, 0x74, 0x24, 0xd5, 0x68, 0xe6, 0x56, 0x69, 0xf3, 0x8d, 0xcd, 0x7a, 0xc5, 0x79, 0x63,
|
||||
0xeb, 0x8d, 0xb2, 0xda, 0x04, 0x45, 0xaf, 0xb8, 0xfc, 0x3e, 0x50, 0x37, 0x75, 0x08, 0xe1, 0x08,
|
||||
0xfa, 0xd6, 0x4d, 0x49, 0x76, 0x8f, 0x32, 0x68, 0xee, 0xa6, 0x44, 0x83, 0xb5, 0x5d, 0x71, 0x37,
|
||||
0x8e, 0xa8, 0x30, 0xee, 0x8a, 0x55, 0xc4, 0xb9, 0x2b, 0xce, 0x09, 0x4d, 0xf2, 0x2d, 0x24, 0x03,
|
||||
0xf3, 0x46, 0x5b, 0x45, 0x9c, 0x92, 0x39, 0xa1, 0x6d, 0x2f, 0x3b, 0x3c, 0xbe, 0x34, 0x6e, 0x2f,
|
||||
0x65, 0xc0, 0xb9, 0xbd, 0x44, 0x40, 0x2b, 0xf1, 0x28, 0x48, 0x85, 0xb9, 0x44, 0x15, 0x71, 0x96,
|
||||
0x98, 0x13, 0x28, 0xf9, 0x3b, 0x72, 0x23, 0x2b, 0x71, 0x22, 0xbc, 0xb6, 0xa9, 0x80, 0x49, 0x79,
|
||||
0x13, 0x97, 0xad, 0x71, 0xed, 0x0b, 0x68, 0xe7, 0x53, 0xcc, 0x13, 0x61, 0xfc, 0x02, 0xca, 0x42,
|
||||
0xce, 0x2f, 0xa0, 0x02, 0xd1, 0xbe, 0x3e, 0xf7, 0xc7, 0xf2, 0xba, 0x9c, 0xe5, 0xea, 0xbc, 0xc8,
|
||||
0x34, 0x97, 0xeb, 0x88, 0x73, 0x2e, 0xcf, 0xa0, 0xb3, 0x2b, 0xdf, 0x2e, 0x8d, 0xe0, 0x30, 0x18,
|
||||
0x83, 0x75, 0xe5, 0x53, 0xc7, 0x20, 0x92, 0x98, 0xbb, 0xf2, 0x55, 0xc9, 0xd9, 0x06, 0x55, 0x67,
|
||||
0x81, 0xca, 0xc9, 0x96, 0x9f, 0x9d, 0x16, 0xd6, 0xac, 0x56, 0x9b, 0xa0, 0xe8, 0x35, 0xc6, 0x9d,
|
||||
0x49, 0xee, 0x75, 0x46, 0xfb, 0x62, 0xe8, 0xb9, 0x15, 0x14, 0xe3, 0x3c, 0x2f, 0x98, 0x65, 0x67,
|
||||
0x87, 0x76, 0x4a, 0xfb, 0xc0, 0x9d, 0x43, 0x53, 0x44, 0xb3, 0xa1, 0xd5, 0xd0, 0xd9, 0xa1, 0xa9,
|
||||
0xb0, 0x7b, 0x68, 0x99, 0x42, 0xb3, 0xa1, 0xd5, 0x59, 0xb4, 0xfb, 0x7b, 0x8b, 0xdc, 0xcd, 0xfd,
|
||||
0x0e, 0x28, 0x1b, 0x9d, 0x04, 0xc9, 0x40, 0x1d, 0x07, 0x87, 0xa3, 0xfd, 0xbe, 0xf7, 0x4b, 0x8b,
|
||||
0x94, 0x24, 0xfd, 0x1a, 0x5a, 0xb8, 0x6f, 0x5c, 0x25, 0x45, 0x7b, 0xa1, 0xc8, 0x6d, 0x50, 0x20,
|
||||
0x82, 0x29, 0x85, 0x8b, 0x53, 0x0a, 0x17, 0x9e, 0x6d, 0x0d, 0xcd, 0x21, 0xff, 0xb4, 0x7a, 0x54,
|
||||
0xb8, 0xd6, 0x90, 0xd6, 0xb7, 0x42, 0x15, 0xd7, 0xcd, 0x50, 0xd0, 0x29, 0x28, 0xef, 0x8d, 0x79,
|
||||
0x6a, 0x25, 0xeb, 0xda, 0x0a, 0x39, 0x72, 0xb0, 0x8e, 0xbf, 0x92, 0x9f, 0x55, 0x0e, 0x72, 0x6a,
|
||||
0xe3, 0x5f, 0xb7, 0x9f, 0x03, 0x99, 0x6f, 0xc1, 0xcb, 0xe6, 0x09, 0x9a, 0x7b, 0xb6, 0x6b, 0x9a,
|
||||
0xeb, 0x8e, 0x9b, 0xab, 0xe6, 0xee, 0x96, 0x04, 0xed, 0x33, 0x6a, 0x8b, 0xf3, 0xd1, 0x38, 0x48,
|
||||
0x46, 0xbb, 0x20, 0xc2, 0xa1, 0xb1, 0xb3, 0x72, 0xc2, 0x57, 0x88, 0xb3, 0xb3, 0x66, 0x50, 0xfd,
|
||||
0x1b, 0x23, 0x07, 0xb2, 0x3b, 0xb3, 0xc9, 0xfa, 0x99, 0xed, 0x86, 0x4b, 0xab, 0xce, 0x3a, 0x9f,
|
||||
0xb8, 0x3d, 0x07, 0x0b, 0xf9, 0x1b, 0xb9, 0xa3, 0x48, 0xb9, 0x88, 0x16, 0x0c, 0x1e, 0x36, 0x9b,
|
||||
0x6e, 0xba, 0x5a, 0x6c, 0x35, 0xd0, 0x79, 0xd3, 0x2d, 0x09, 0xe5, 0xfb, 0xe7, 0x30, 0x98, 0xd2,
|
||||
0x41, 0x20, 0x28, 0x67, 0x72, 0xcb, 0x95, 0x7d, 0x41, 0xd7, 0xef, 0x7a, 0x49, 0xf8, 0x05, 0x62,
|
||||
0xb9, 0xeb, 0x16, 0x14, 0xdd, 0xfe, 0xd5, 0x22, 0xed, 0x92, 0xd8, 0xc3, 0x4f, 0x0e, 0x76, 0xce,
|
||||
0xcf, 0xa8, 0x18, 0xca, 0x45, 0x21, 0xf5, 0x7e, 0x65, 0x93, 0x33, 0xd1, 0x45, 0x11, 0xaf, 0xaf,
|
||||
0x98, 0x85, 0xf5, 0xfc, 0x86, 0x7c, 0xf7, 0x88, 0xb2, 0x81, 0x77, 0xb7, 0x96, 0x2e, 0x2f, 0x15,
|
||||
0xca, 0x4b, 0xa6, 0x50, 0x79, 0xbc, 0x72, 0x94, 0xf0, 0x10, 0xd2, 0xb4, 0x13, 0xb0, 0x10, 0x22,
|
||||
0xed, 0x78, 0x05, 0x63, 0x7e, 0x16, 0xb4, 0x1c, 0xaf, 0xcc, 0x40, 0xe5, 0x76, 0xe3, 0x0d, 0x4d,
|
||||
0x05, 0x4f, 0x2e, 0xbb, 0x43, 0x7e, 0xa1, 0x6d, 0x37, 0x30, 0xe2, 0xcb, 0x90, 0x65, 0xbb, 0xa1,
|
||||
0x21, 0xe5, 0x41, 0x31, 0x06, 0xf0, 0xc7, 0x34, 0xfd, 0x10, 0x2f, 0x4f, 0xcb, 0xc3, 0x96, 0x43,
|
||||
0x3c, 0x03, 0x56, 0xfe, 0x54, 0x95, 0xd7, 0x0d, 0x02, 0xc3, 0xda, 0x4f, 0x55, 0x45, 0x69, 0x05,
|
||||
0x60, 0xf9, 0xa9, 0xca, 0x08, 0xa2, 0xcf, 0x4b, 0xb2, 0x20, 0x27, 0x18, 0xb0, 0x1d, 0xf5, 0xd3,
|
||||
0xb7, 0xb7, 0x58, 0x64, 0xee, 0x8c, 0x63, 0x71, 0xb9, 0x54, 0xf9, 0xbf, 0x04, 0x5e, 0xb6, 0xb6,
|
||||
0xee, 0xfd, 0xe7, 0x6b, 0xbb, 0xf5, 0xe5, 0x6b, 0xbb, 0xf5, 0xbf, 0xaf, 0xed, 0xd6, 0xe7, 0x6f,
|
||||
0xed, 0x6b, 0x5f, 0xbe, 0xb5, 0xaf, 0xfd, 0xf7, 0x5b, 0xfb, 0xda, 0x87, 0xef, 0x44, 0xb4, 0xd7,
|
||||
0xfb, 0x9e, 0xfa, 0xf1, 0xfc, 0xd5, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xda, 0xf5, 0xab, 0x74,
|
||||
0x9a, 0x1f, 0x00, 0x00,
|
||||
// 1816 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x9a, 0xdf, 0x73, 0x1c, 0x47,
|
||||
0x11, 0xc7, 0x7d, 0x05, 0x45, 0xc2, 0x44, 0x08, 0xb2, 0x40, 0x48, 0x44, 0xe5, 0x94, 0x38, 0x0e,
|
||||
0xb1, 0x64, 0x6b, 0x65, 0x64, 0xc2, 0x1b, 0x0f, 0xd2, 0xe9, 0x87, 0x55, 0xc8, 0xb2, 0xb8, 0xd3,
|
||||
0x8f, 0x2a, 0x17, 0x14, 0xec, 0xed, 0xb6, 0xee, 0x86, 0xdb, 0x9b, 0x59, 0xef, 0xce, 0x9d, 0xac,
|
||||
0x2a, 0x78, 0xa1, 0x0a, 0xde, 0xa8, 0xf2, 0xff, 0xc0, 0x3f, 0xc3, 0xa3, 0x1f, 0x79, 0xa4, 0xec,
|
||||
0x7f, 0x24, 0x35, 0xb3, 0xbd, 0xbf, 0xe6, 0x66, 0xe6, 0x56, 0x0f, 0x49, 0x2a, 0xdb, 0x9f, 0xfe,
|
||||
0x76, 0xcf, 0x6e, 0xf7, 0x6c, 0xef, 0x9c, 0xc8, 0x7a, 0x32, 0xdc, 0x4e, 0x52, 0x2e, 0x78, 0xb6,
|
||||
0x9d, 0x41, 0x3a, 0xa7, 0x21, 0x14, 0xff, 0xf5, 0xd5, 0x65, 0xef, 0x83, 0x80, 0xdd, 0x8a, 0xdb,
|
||||
0x04, 0xd6, 0x3e, 0xad, 0xc8, 0x90, 0x4f, 0xa7, 0x01, 0x8b, 0xb2, 0x1c, 0x59, 0xfb, 0xa4, 0xb2,
|
||||
0xc0, 0x1c, 0x98, 0xc0, 0xeb, 0x3b, 0xff, 0xd9, 0x25, 0xab, 0xbd, 0x98, 0x02, 0x13, 0x3d, 0x74,
|
||||
0xf0, 0xae, 0xc8, 0xca, 0x55, 0x10, 0xc7, 0x20, 0x7a, 0x29, 0x04, 0x02, 0xbc, 0xfb, 0x3e, 0xca,
|
||||
0xfb, 0xfd, 0x24, 0xf4, 0x73, 0x93, 0x9f, 0xdb, 0xfc, 0x3e, 0xbc, 0x9a, 0x41, 0x26, 0xd6, 0xbe,
|
||||
0x72, 0x32, 0x59, 0xc2, 0x59, 0x06, 0xde, 0x4b, 0xf2, 0xa3, 0xdc, 0xd2, 0x87, 0x90, 0xcf, 0x21,
|
||||
0xf5, 0x8c, 0x5e, 0x68, 0x2c, 0xa5, 0x1f, 0xb8, 0x21, 0xd4, 0xfe, 0x13, 0x59, 0xdd, 0x0d, 0x43,
|
||||
0x3e, 0x63, 0xa5, 0x78, 0xd3, 0x0f, 0x8d, 0x0b, 0xea, 0x5f, 0x2f, 0xa1, 0xaa, 0xd4, 0xd1, 0x86,
|
||||
0x37, 0xe5, 0x2b, 0xa3, 0x9f, 0x76, 0x57, 0x1e, 0xb8, 0xa1, 0x05, 0xed, 0x01, 0xc4, 0x10, 0x0a,
|
||||
0x8b, 0x76, 0x6e, 0x5c, 0xa2, 0x5d, 0x42, 0xa8, 0x7d, 0x4e, 0x3e, 0x2a, 0xb4, 0x05, 0x4f, 0xbc,
|
||||
0x2f, 0xcd, 0x4e, 0x82, 0x27, 0xa5, 0xee, 0x7d, 0x17, 0x82, 0xaa, 0x21, 0x59, 0x39, 0x9e, 0x06,
|
||||
0x23, 0x38, 0x02, 0xb1, 0x17, 0xf3, 0xa1, 0xf7, 0xb0, 0xe1, 0x73, 0x9c, 0x5c, 0x67, 0xbe, 0xb2,
|
||||
0xfb, 0x47, 0x20, 0x7c, 0x49, 0x94, 0xea, 0x1b, 0x2d, 0x48, 0x0c, 0xf2, 0x07, 0x42, 0x2e, 0x21,
|
||||
0xcd, 0x28, 0x67, 0x47, 0x20, 0xbc, 0x2f, 0x1a, 0x8e, 0x68, 0x50, 0x5e, 0x85, 0xf4, 0x97, 0x0e,
|
||||
0x02, 0x25, 0x9f, 0x91, 0x0f, 0x4e, 0xf8, 0x68, 0x00, 0x2c, 0xf2, 0x3e, 0x6f, 0xd0, 0x27, 0x7c,
|
||||
0xe4, 0xcb, 0xcb, 0xa5, 0x58, 0xd7, 0x66, 0x46, 0xa5, 0x53, 0xf2, 0xc3, 0x1e, 0x67, 0xd7, 0x74,
|
||||
0x24, 0x73, 0x5b, 0x6f, 0xc0, 0xf9, 0xf5, 0x46, 0x6a, 0x5f, 0xd8, 0x01, 0xd4, 0x3b, 0x26, 0x1f,
|
||||
0x0e, 0xc6, 0x33, 0x11, 0xf1, 0x1b, 0xa6, 0xa5, 0x56, 0x5c, 0xb6, 0xa4, 0x56, 0x33, 0xa3, 0xd4,
|
||||
0x35, 0xf9, 0xf8, 0xe0, 0xb5, 0x80, 0x94, 0x05, 0xf1, 0x7e, 0xca, 0x93, 0x43, 0x1a, 0x43, 0xe6,
|
||||
0x7d, 0xd3, 0x70, 0xaa, 0xdb, 0x7d, 0x05, 0x94, 0xea, 0x0f, 0x97, 0x83, 0x18, 0x27, 0x26, 0x3f,
|
||||
0xad, 0x9b, 0x7b, 0x9c, 0x09, 0x60, 0xc2, 0xdb, 0xb0, 0x0b, 0x20, 0x52, 0xc6, 0xda, 0x6c, 0x83,
|
||||
0x62, 0xb4, 0x3e, 0xf9, 0xe8, 0x84, 0xb2, 0xc9, 0x59, 0x0a, 0x73, 0x0a, 0x37, 0x5a, 0x39, 0xd4,
|
||||
0x2c, 0x96, 0x72, 0x68, 0x12, 0xa8, 0xf9, 0x82, 0x90, 0x8b, 0x24, 0xe6, 0x41, 0x24, 0x57, 0xa6,
|
||||
0x3d, 0xc5, 0xca, 0x60, 0x79, 0x8a, 0x0d, 0xa0, 0xea, 0xb6, 0xbd, 0x98, 0x87, 0x93, 0xdc, 0xa6,
|
||||
0x75, 0x9b, 0xb2, 0xa0, 0x9b, 0xa5, 0xdb, 0x34, 0x04, 0x55, 0xaf, 0xc8, 0x8a, 0x32, 0xf4, 0x21,
|
||||
0x89, 0x83, 0x50, 0xdf, 0x8f, 0x73, 0x1f, 0xb4, 0x59, 0xf6, 0x63, 0x9d, 0xa9, 0x8a, 0x58, 0x59,
|
||||
0x5e, 0x24, 0xc0, 0xb4, 0xe5, 0xe7, 0x1e, 0xd2, 0x60, 0x59, 0x7e, 0x03, 0x40, 0x3d, 0x4e, 0x7e,
|
||||
0xa6, 0x2e, 0x1f, 0x81, 0x38, 0x9b, 0x0d, 0x63, 0x1a, 0x5e, 0xc1, 0xf0, 0xa2, 0x7f, 0xe2, 0x6d,
|
||||
0x1a, 0x3c, 0x35, 0xa6, 0x8c, 0xf2, 0xa8, 0x15, 0xab, 0x05, 0x94, 0x69, 0xec, 0xa5, 0x10, 0x44,
|
||||
0x61, 0x3a, 0x9b, 0x0e, 0x33, 0x63, 0x40, 0x8d, 0x71, 0x06, 0x5c, 0x64, 0xab, 0x9a, 0x57, 0xc4,
|
||||
0x00, 0x44, 0x3d, 0xde, 0x86, 0x41, 0xa3, 0x89, 0x58, 0x6a, 0xde, 0x82, 0x6a, 0xe5, 0x84, 0xaf,
|
||||
0x1c, 0x53, 0x39, 0x69, 0x2f, 0x9c, 0xfb, 0x2e, 0x04, 0x55, 0xff, 0x42, 0x7e, 0x5c, 0x53, 0x3d,
|
||||
0x0b, 0x46, 0xe0, 0x7d, 0x6d, 0x75, 0x93, 0xe6, 0x52, 0xfd, 0x57, 0xcb, 0x30, 0xbd, 0x0d, 0x58,
|
||||
0x4c, 0xd9, 0xc4, 0xdc, 0x06, 0xca, 0xe4, 0x6e, 0x83, 0x02, 0xa9, 0xde, 0x07, 0x79, 0xde, 0x31,
|
||||
0xcf, 0xc0, 0x33, 0x55, 0xa3, 0xb2, 0x58, 0x36, 0x80, 0x26, 0x51, 0xbd, 0x79, 0xd5, 0xf5, 0x7d,
|
||||
0x7e, 0xc3, 0x54, 0xc7, 0x9a, 0xda, 0xa6, 0x30, 0x5a, 0xde, 0xbc, 0x0b, 0x10, 0x6a, 0xff, 0x11,
|
||||
0xb5, 0x8f, 0x40, 0x3c, 0x0f, 0xd2, 0x49, 0xe6, 0x3d, 0x30, 0x57, 0xb6, 0xaf, 0xac, 0x96, 0x79,
|
||||
0x64, 0x91, 0xd2, 0x5a, 0xf7, 0x82, 0x45, 0xdc, 0xd8, 0xba, 0xd2, 0xe0, 0x6c, 0x5d, 0x04, 0x34,
|
||||
0xbd, 0x3e, 0x58, 0xf4, 0xa4, 0xc1, 0xa9, 0x87, 0x00, 0xea, 0xfd, 0x99, 0xac, 0x16, 0x8d, 0x72,
|
||||
0x48, 0x21, 0x8e, 0x32, 0x63, 0x8d, 0x0d, 0x40, 0xf8, 0xb9, 0xd9, 0x59, 0x63, 0x0d, 0x0c, 0x03,
|
||||
0xbc, 0xc2, 0xd6, 0x1f, 0xc8, 0x69, 0x32, 0x13, 0x29, 0x0d, 0x05, 0xe5, 0x2c, 0xf3, 0x1e, 0x59,
|
||||
0xfc, 0xeb, 0x50, 0x19, 0xec, 0x71, 0x3b, 0x18, 0x43, 0x0e, 0xb1, 0x71, 0x06, 0x20, 0xf6, 0x41,
|
||||
0x04, 0x34, 0xce, 0x3c, 0x5b, 0xb6, 0x68, 0x2f, 0x03, 0x7d, 0xb3, 0x94, 0xc3, 0x18, 0xb7, 0xe4,
|
||||
0x93, 0x22, 0x86, 0xec, 0xa9, 0xe3, 0x6c, 0x37, 0x0d, 0xc7, 0x74, 0x0e, 0x91, 0xe7, 0x5b, 0x24,
|
||||
0x54, 0xeb, 0x55, 0x5c, 0x19, 0x72, 0xbb, 0x35, 0xaf, 0x35, 0xc3, 0x09, 0xcd, 0xc4, 0x73, 0x3e,
|
||||
0x07, 0x53, 0x33, 0x48, 0x9b, 0x2f, 0x8d, 0xae, 0x66, 0xa8, 0x43, 0xa8, 0x3d, 0xc3, 0x65, 0x15,
|
||||
0xda, 0xe7, 0xfc, 0x14, 0x6e, 0xd4, 0xd6, 0xf3, 0xd8, 0xe1, 0x5f, 0x52, 0x65, 0xb4, 0xad, 0x96,
|
||||
0x34, 0x86, 0x7d, 0xd3, 0x21, 0xeb, 0x25, 0xd4, 0xe3, 0x6c, 0x0e, 0xa9, 0xe8, 0x8d, 0x69, 0x1c,
|
||||
0xa5, 0xc0, 0xce, 0xb9, 0x64, 0x33, 0xef, 0x5b, 0x8b, 0xa4, 0x19, 0x2f, 0x33, 0xf9, 0xed, 0x5d,
|
||||
0xdd, 0x30, 0xa5, 0x09, 0xf1, 0x4a, 0xb8, 0x6a, 0x8e, 0x0d, 0x8b, 0x9a, 0xa1, 0x41, 0x36, 0xdb,
|
||||
0xa0, 0x18, 0x6c, 0x4e, 0x7e, 0x5e, 0x0f, 0x76, 0x0e, 0xaf, 0xc5, 0x40, 0xdc, 0xc6, 0xe0, 0x6d,
|
||||
0x39, 0x44, 0x24, 0xe5, 0x2b, 0xac, 0x8c, 0xe9, 0xb7, 0xc5, 0x31, 0x2e, 0xad, 0x2d, 0x72, 0x7f,
|
||||
0x96, 0xc4, 0x34, 0x94, 0xef, 0xaf, 0x87, 0x16, 0x95, 0x92, 0xb0, 0x7c, 0x25, 0x98, 0x49, 0x0c,
|
||||
0xf5, 0xaf, 0x0e, 0xf9, 0x65, 0x7d, 0x8d, 0x7b, 0x41, 0x38, 0x19, 0xa5, 0x7c, 0xc6, 0xa2, 0x1e,
|
||||
0x8f, 0x79, 0xea, 0xed, 0x38, 0x52, 0xd7, 0xd8, 0x32, 0xfc, 0xd3, 0x3b, 0xf9, 0x60, 0x22, 0x63,
|
||||
0xf2, 0x71, 0x3d, 0x8f, 0xdd, 0x98, 0x8e, 0x98, 0x75, 0xc9, 0x52, 0x49, 0x11, 0x4b, 0x97, 0x5c,
|
||||
0x27, 0x31, 0x52, 0x86, 0x5b, 0x1f, 0x46, 0xda, 0xa7, 0xf3, 0xfc, 0xa1, 0x3e, 0x76, 0x48, 0xec,
|
||||
0xd3, 0xb9, 0xf6, 0x4c, 0xb7, 0x5a, 0xd2, 0x18, 0xf4, 0x9f, 0x1d, 0xb2, 0x56, 0x8f, 0xaa, 0xed,
|
||||
0x4e, 0xae, 0xdb, 0x6c, 0xdb, 0xa1, 0x9e, 0xde, 0xc9, 0x07, 0xf3, 0x60, 0x38, 0x81, 0xa9, 0xd2,
|
||||
0x82, 0x18, 0x70, 0x82, 0xb1, 0x75, 0x45, 0x8e, 0xf8, 0x8d, 0x4d, 0xe4, 0x51, 0x2b, 0x16, 0xe3,
|
||||
0x8d, 0xc8, 0x4f, 0x8a, 0x0d, 0x59, 0x56, 0xba, 0xfc, 0xc7, 0xf4, 0x54, 0xab, 0x56, 0x50, 0xff,
|
||||
0x72, 0x3c, 0xd5, 0x05, 0x12, 0x03, 0xfd, 0x15, 0xeb, 0x07, 0x03, 0xe5, 0xd5, 0xeb, 0xf4, 0x6f,
|
||||
0x16, 0xed, 0x66, 0x1b, 0xd4, 0xbe, 0x2f, 0xe4, 0xf1, 0x96, 0xee, 0x0b, 0xcd, 0x98, 0x7e, 0x5b,
|
||||
0xdc, 0x5c, 0xb9, 0x12, 0x91, 0x73, 0x8d, 0xb3, 0x72, 0x95, 0x8e, 0xa4, 0x5a, 0x55, 0x6e, 0x9d,
|
||||
0x36, 0xdf, 0xd8, 0xbc, 0x57, 0x9c, 0x37, 0xb6, 0xd9, 0x28, 0x9b, 0x6d, 0x50, 0x8c, 0x95, 0x54,
|
||||
0xdf, 0x07, 0xea, 0xa6, 0x8e, 0x21, 0x9c, 0x40, 0x64, 0x1d, 0x4a, 0xf2, 0x7b, 0x94, 0x43, 0x4b,
|
||||
0x87, 0x12, 0x0d, 0xd6, 0xa6, 0xe2, 0x41, 0x12, 0x53, 0x61, 0x9c, 0x8a, 0x95, 0xc5, 0x39, 0x15,
|
||||
0x17, 0x84, 0x26, 0xf9, 0x1c, 0xd2, 0x91, 0x79, 0xd0, 0x56, 0x16, 0xa7, 0x64, 0x41, 0x68, 0xe3,
|
||||
0x65, 0x8f, 0x27, 0xb7, 0xc6, 0xf1, 0x52, 0x1a, 0x9c, 0xe3, 0x25, 0x02, 0x5a, 0x8a, 0x67, 0x41,
|
||||
0x26, 0xcc, 0x29, 0x2a, 0x8b, 0x33, 0xc5, 0x82, 0x40, 0xc9, 0xdf, 0x93, 0x0f, 0xf3, 0x14, 0x67,
|
||||
0xc2, 0xeb, 0x9a, 0x12, 0x98, 0x55, 0x37, 0x71, 0xdd, 0x6a, 0xd7, 0xbe, 0x80, 0x0e, 0x5e, 0x27,
|
||||
0x3c, 0x15, 0xc6, 0x2f, 0xa0, 0xdc, 0xe4, 0xfc, 0x02, 0x2a, 0x11, 0xed, 0xeb, 0xf3, 0x78, 0x2a,
|
||||
0xaf, 0xcb, 0x2a, 0x57, 0xe7, 0x45, 0xa6, 0x5a, 0x6e, 0x22, 0xce, 0x5a, 0x5e, 0x40, 0x17, 0x77,
|
||||
0xbe, 0x43, 0x1a, 0xc3, 0x69, 0x30, 0x05, 0xeb, 0xce, 0xa7, 0x8e, 0x41, 0x24, 0xb1, 0x74, 0xe7,
|
||||
0xab, 0x93, 0x8b, 0x0d, 0xaa, 0xce, 0x02, 0x55, 0x24, 0x9b, 0x7f, 0x7e, 0x5a, 0xd8, 0x08, 0xb5,
|
||||
0xd9, 0x06, 0xc5, 0x58, 0x53, 0x9c, 0x4c, 0x8a, 0x58, 0x57, 0x34, 0x12, 0x63, 0xcf, 0xad, 0xa0,
|
||||
0x18, 0xe7, 0x79, 0xc1, 0x22, 0xbb, 0xb8, 0xb4, 0x4b, 0x1a, 0x01, 0x77, 0x2e, 0x4d, 0x11, 0xed,
|
||||
0x96, 0xd6, 0x40, 0x17, 0x97, 0xa6, 0xcc, 0xee, 0xa5, 0xe5, 0x0a, 0xed, 0x96, 0xd6, 0x64, 0x31,
|
||||
0xdc, 0x3f, 0x3a, 0xe4, 0xb3, 0x22, 0xde, 0x09, 0x65, 0x93, 0xf3, 0x20, 0x1d, 0xa9, 0xe3, 0xe0,
|
||||
0x70, 0x72, 0x1c, 0x79, 0xbf, 0xb6, 0x48, 0x49, 0xd2, 0x6f, 0xa0, 0x65, 0xf4, 0x9d, 0xbb, 0xb8,
|
||||
0x68, 0x2f, 0x14, 0x39, 0x06, 0x05, 0x22, 0x98, 0x53, 0xb8, 0xb9, 0xa4, 0x70, 0xe3, 0xd9, 0xf6,
|
||||
0xd0, 0x02, 0xf2, 0x2f, 0xeb, 0x47, 0x85, 0x5b, 0x2d, 0x69, 0x7d, 0x14, 0xaa, 0x45, 0xdd, 0x0d,
|
||||
0x05, 0x9d, 0x83, 0x8a, 0xbd, 0xb3, 0x4c, 0xad, 0x62, 0x5d, 0xa3, 0x90, 0xc3, 0x07, 0xf3, 0xf8,
|
||||
0x1b, 0xf9, 0x45, 0xed, 0x20, 0xa7, 0xb1, 0xfe, 0x6d, 0xfb, 0x39, 0x90, 0xf9, 0x16, 0x3c, 0x69,
|
||||
0xef, 0xa0, 0x45, 0xcf, 0xa7, 0xa6, 0xa5, 0xd1, 0x71, 0xb8, 0x6a, 0x1f, 0xdd, 0xe2, 0xa0, 0x57,
|
||||
0x5f, 0x73, 0xf1, 0x7d, 0x08, 0x79, 0x6a, 0xae, 0x3e, 0x7d, 0x35, 0x39, 0xea, 0xac, 0x3e, 0xab,
|
||||
0x8b, 0x9e, 0xc4, 0x45, 0x12, 0xb5, 0x4b, 0x22, 0x07, 0xef, 0x94, 0x84, 0xd5, 0x45, 0x4f, 0xa2,
|
||||
0xf9, 0x20, 0x1c, 0x49, 0xe8, 0x77, 0xb6, 0x45, 0x12, 0x56, 0x17, 0xed, 0xab, 0x76, 0x8f, 0xf3,
|
||||
0xc9, 0x34, 0x48, 0x27, 0x87, 0x20, 0xc2, 0xb1, 0x71, 0xa3, 0x2b, 0x08, 0x5f, 0x21, 0xce, 0x8d,
|
||||
0x6e, 0x01, 0xd5, 0x3f, 0xf9, 0x0a, 0x20, 0x7f, 0x4e, 0xbb, 0x2c, 0xca, 0xc3, 0xee, 0xb8, 0xb4,
|
||||
0x9a, 0xac, 0xb3, 0x01, 0xed, 0x3e, 0x98, 0xc8, 0xdf, 0xc9, 0xa7, 0x8a, 0x94, 0xef, 0xb4, 0x92,
|
||||
0xc1, 0xb3, 0x7f, 0x53, 0x0f, 0xa8, 0x77, 0x9f, 0x06, 0x3a, 0x7b, 0xc0, 0xe2, 0x50, 0x8d, 0x03,
|
||||
0xa7, 0xc1, 0x9c, 0x8e, 0x02, 0x41, 0x39, 0x93, 0x13, 0x70, 0x7e, 0xa0, 0xd1, 0xbc, 0xeb, 0x15,
|
||||
0xe1, 0x97, 0x88, 0xe5, 0xae, 0x5b, 0x50, 0x8c, 0xf6, 0xef, 0x0e, 0xe9, 0x56, 0xc4, 0x11, 0x7e,
|
||||
0x01, 0xb2, 0x6b, 0x7e, 0x45, 0xc5, 0x58, 0xee, 0xd1, 0x99, 0xf7, 0x1b, 0x9b, 0x9c, 0x89, 0x2e,
|
||||
0x93, 0xf8, 0xf6, 0x8e, 0x5e, 0x98, 0xcf, 0xef, 0xc8, 0xf7, 0xcf, 0x28, 0x1b, 0x79, 0x9f, 0x35,
|
||||
0xdc, 0xe5, 0xa5, 0x52, 0x79, 0xcd, 0x64, 0xaa, 0x4e, 0xbb, 0xce, 0x52, 0x1e, 0x42, 0x96, 0xf5,
|
||||
0x02, 0x16, 0x42, 0xac, 0x9d, 0x76, 0xa1, 0xcd, 0xcf, 0x8d, 0x96, 0xd3, 0xae, 0x05, 0xa8, 0x9a,
|
||||
0xfe, 0x9e, 0xd1, 0x4c, 0xf0, 0xf4, 0x76, 0x30, 0xe6, 0x37, 0xda, 0xf4, 0x87, 0x16, 0x5f, 0x9a,
|
||||
0x2c, 0xd3, 0x9f, 0x86, 0x54, 0xe7, 0xf6, 0x68, 0xc0, 0xdf, 0x36, 0xf5, 0x33, 0xd5, 0xc2, 0xad,
|
||||
0x30, 0x5b, 0xce, 0x54, 0x0d, 0x58, 0xf5, 0xcb, 0x61, 0x91, 0x37, 0x08, 0x34, 0x6b, 0xbf, 0x1c,
|
||||
0x96, 0xa9, 0x95, 0x80, 0xe5, 0x97, 0x43, 0x23, 0x88, 0x71, 0x9e, 0x90, 0x15, 0x59, 0x60, 0xc0,
|
||||
0x0e, 0xd4, 0x5f, 0x22, 0x78, 0xab, 0xa5, 0xe7, 0xc1, 0x34, 0x11, 0xb7, 0x6b, 0xb5, 0xff, 0x97,
|
||||
0xc0, 0x93, 0xce, 0xde, 0xe7, 0xff, 0x7d, 0xd7, 0xed, 0xbc, 0x7d, 0xd7, 0xed, 0xfc, 0xff, 0x5d,
|
||||
0xb7, 0xf3, 0xe6, 0x7d, 0xf7, 0xde, 0xdb, 0xf7, 0xdd, 0x7b, 0xff, 0x7b, 0xdf, 0xbd, 0xf7, 0xf2,
|
||||
0x7b, 0x31, 0x1d, 0x0e, 0x7f, 0xa0, 0xfe, 0x96, 0xe1, 0xe9, 0x77, 0x01, 0x00, 0x00, 0xff, 0xff,
|
||||
0x5d, 0x44, 0x0b, 0x40, 0x29, 0x21, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
|
@ -212,6 +215,9 @@ type ClientCommandsHandler interface {
|
|||
BlockSetDataviewActiveView(*pb.RpcBlockSetDataviewActiveViewRequest) *pb.RpcBlockSetDataviewActiveViewResponse
|
||||
BlockCreateDataviewView(*pb.RpcBlockCreateDataviewViewRequest) *pb.RpcBlockCreateDataviewViewResponse
|
||||
BlockDeleteDataviewView(*pb.RpcBlockDeleteDataviewViewRequest) *pb.RpcBlockDeleteDataviewViewResponse
|
||||
BlockCreateDataviewRecord(*pb.RpcBlockCreateDataviewRecordRequest) *pb.RpcBlockCreateDataviewRecordResponse
|
||||
BlockUpdateDataviewRecord(*pb.RpcBlockUpdateDataviewRecordRequest) *pb.RpcBlockUpdateDataviewRecordResponse
|
||||
BlockDeleteDataviewRecord(*pb.RpcBlockDeleteDataviewRecordRequest) *pb.RpcBlockDeleteDataviewRecordResponse
|
||||
BlockBookmarkFetch(*pb.RpcBlockBookmarkFetchRequest) *pb.RpcBlockBookmarkFetchResponse
|
||||
BlockBookmarkCreateAndFetch(*pb.RpcBlockBookmarkCreateAndFetchRequest) *pb.RpcBlockBookmarkCreateAndFetchResponse
|
||||
BlockFileCreateAndUpload(*pb.RpcBlockFileCreateAndUploadRequest) *pb.RpcBlockFileCreateAndUploadResponse
|
||||
|
@ -900,6 +906,36 @@ func BlockDeleteDataviewView(b []byte) []byte {
|
|||
return resp
|
||||
}
|
||||
|
||||
func BlockCreateDataviewRecord(b []byte) []byte {
|
||||
in := new(pb.RpcBlockCreateDataviewRecordRequest)
|
||||
if err := in.Unmarshal(b); err != nil {
|
||||
resp, _ := (&pb.RpcBlockCreateDataviewRecordResponse{Error: &pb.RpcBlockCreateDataviewRecordResponseError{Code: pb.RpcBlockCreateDataviewRecordResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
|
||||
return resp
|
||||
}
|
||||
resp, _ := clientCommandsHandler.BlockCreateDataviewRecord(in).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
func BlockUpdateDataviewRecord(b []byte) []byte {
|
||||
in := new(pb.RpcBlockUpdateDataviewRecordRequest)
|
||||
if err := in.Unmarshal(b); err != nil {
|
||||
resp, _ := (&pb.RpcBlockUpdateDataviewRecordResponse{Error: &pb.RpcBlockUpdateDataviewRecordResponseError{Code: pb.RpcBlockUpdateDataviewRecordResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
|
||||
return resp
|
||||
}
|
||||
resp, _ := clientCommandsHandler.BlockUpdateDataviewRecord(in).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
func BlockDeleteDataviewRecord(b []byte) []byte {
|
||||
in := new(pb.RpcBlockDeleteDataviewRecordRequest)
|
||||
if err := in.Unmarshal(b); err != nil {
|
||||
resp, _ := (&pb.RpcBlockDeleteDataviewRecordResponse{Error: &pb.RpcBlockDeleteDataviewRecordResponseError{Code: pb.RpcBlockDeleteDataviewRecordResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
|
||||
return resp
|
||||
}
|
||||
resp, _ := clientCommandsHandler.BlockDeleteDataviewRecord(in).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
func BlockBookmarkFetch(b []byte) []byte {
|
||||
in := new(pb.RpcBlockBookmarkFetchRequest)
|
||||
if err := in.Unmarshal(b); err != nil {
|
||||
|
@ -1138,6 +1174,12 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) {
|
|||
cd = BlockCreateDataviewView(data)
|
||||
case "BlockDeleteDataviewView":
|
||||
cd = BlockDeleteDataviewView(data)
|
||||
case "BlockCreateDataviewRecord":
|
||||
cd = BlockCreateDataviewRecord(data)
|
||||
case "BlockUpdateDataviewRecord":
|
||||
cd = BlockUpdateDataviewRecord(data)
|
||||
case "BlockDeleteDataviewRecord":
|
||||
cd = BlockDeleteDataviewRecord(data)
|
||||
case "BlockBookmarkFetch":
|
||||
cd = BlockBookmarkFetch(data)
|
||||
case "BlockBookmarkCreateAndFetch":
|
||||
|
|
3893
pb/commands.pb.go
3893
pb/commands.pb.go
File diff suppressed because it is too large
Load diff
391
pb/events.pb.go
391
pb/events.pb.go
|
@ -65,14 +65,17 @@ type ModelProcessType int32
|
|||
|
||||
const (
|
||||
ModelProcess_DropFiles ModelProcessType = 0
|
||||
ModelProcess_Import ModelProcessType = 1
|
||||
)
|
||||
|
||||
var ModelProcessType_name = map[int32]string{
|
||||
0: "DropFiles",
|
||||
1: "Import",
|
||||
}
|
||||
|
||||
var ModelProcessType_value = map[string]int32{
|
||||
"DropFiles": 0,
|
||||
"Import": 1,
|
||||
}
|
||||
|
||||
func (x ModelProcessType) String() string {
|
||||
|
@ -5482,8 +5485,9 @@ func (m *ModelProcess) GetProgress() *ModelProcessProgress {
|
|||
}
|
||||
|
||||
type ModelProcessProgress struct {
|
||||
Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`
|
||||
Done int64 `protobuf:"varint,2,opt,name=done,proto3" json:"done,omitempty"`
|
||||
Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`
|
||||
Done int64 `protobuf:"varint,2,opt,name=done,proto3" json:"done,omitempty"`
|
||||
Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
|
||||
}
|
||||
|
||||
func (m *ModelProcessProgress) Reset() { *m = ModelProcessProgress{} }
|
||||
|
@ -5533,6 +5537,13 @@ func (m *ModelProcessProgress) GetDone() int64 {
|
|||
return 0
|
||||
}
|
||||
|
||||
func (m *ModelProcessProgress) GetMessage() string {
|
||||
if m != nil {
|
||||
return m.Message
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterEnum("anytype.SmartBlockType", SmartBlockType_name, SmartBlockType_value)
|
||||
proto.RegisterEnum("anytype.ModelProcessType", ModelProcessType_name, ModelProcessType_value)
|
||||
|
@ -5642,172 +5653,173 @@ func init() {
|
|||
func init() { proto.RegisterFile("pb/protos/events.proto", fileDescriptor_a966342d378ae5f5) }
|
||||
|
||||
var fileDescriptor_a966342d378ae5f5 = []byte{
|
||||
// 2628 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcb, 0x6f, 0xdc, 0xc6,
|
||||
0x1d, 0xde, 0x07, 0x57, 0xbb, 0xfb, 0x5b, 0x4b, 0xda, 0x4c, 0xdc, 0x98, 0x65, 0x64, 0x59, 0x96,
|
||||
0x9f, 0xf1, 0x63, 0x95, 0xc8, 0x49, 0x64, 0x2b, 0x7e, 0x44, 0x96, 0x6c, 0xac, 0x12, 0x5b, 0x56,
|
||||
0x47, 0x56, 0x5b, 0xa4, 0x3e, 0x94, 0x5a, 0x8e, 0x56, 0x84, 0xb8, 0xe4, 0x82, 0xa4, 0x64, 0x2b,
|
||||
0xd7, 0xde, 0x8a, 0xb6, 0xe8, 0xa1, 0x48, 0x51, 0xa0, 0x3d, 0xf5, 0xd4, 0x4b, 0x2f, 0x45, 0x81,
|
||||
0xfe, 0x09, 0x2d, 0x7a, 0xc9, 0xa5, 0x40, 0x8e, 0x85, 0x7d, 0xe9, 0x35, 0xff, 0x41, 0x31, 0x0f,
|
||||
0x92, 0x33, 0x14, 0xb9, 0x94, 0x82, 0x04, 0x68, 0x91, 0xdc, 0x76, 0x66, 0xbe, 0xef, 0x9b, 0x99,
|
||||
0xdf, 0xfc, 0x38, 0xf3, 0x91, 0xb3, 0xf0, 0xc6, 0x70, 0x6b, 0x6e, 0xe8, 0x7b, 0xa1, 0x17, 0xcc,
|
||||
0x91, 0x7d, 0xe2, 0x86, 0x41, 0x87, 0x95, 0x50, 0xdd, 0x74, 0x0f, 0xc2, 0x83, 0x21, 0x31, 0x3e,
|
||||
0xde, 0x27, 0xae, 0xe5, 0xf9, 0x73, 0x7d, 0x3b, 0xdc, 0xd9, 0xdb, 0xea, 0xf4, 0xbc, 0xc1, 0x9c,
|
||||
0x68, 0xb2, 0xbd, 0xb9, 0xbe, 0x77, 0x5d, 0x14, 0xae, 0x3b, 0xf6, 0x96, 0x6f, 0xfa, 0x07, 0x73,
|
||||
0xc3, 0xad, 0xb9, 0x81, 0x67, 0x11, 0x27, 0x52, 0x65, 0x05, 0xa1, 0x6a, 0x4c, 0xf5, 0x3d, 0xaf,
|
||||
0xef, 0x10, 0xde, 0xb6, 0xb5, 0xb7, 0x3d, 0x17, 0x84, 0xfe, 0x5e, 0x2f, 0xe4, 0xad, 0xb3, 0x9f,
|
||||
0xad, 0x41, 0xed, 0x01, 0x1d, 0x04, 0x9a, 0x87, 0xc6, 0x80, 0x04, 0x81, 0xd9, 0x27, 0x81, 0x5e,
|
||||
0x9e, 0xa9, 0x5e, 0x6e, 0xcd, 0xbf, 0xd1, 0x11, 0x1d, 0x75, 0x18, 0xa2, 0xf3, 0x98, 0x37, 0xe3,
|
||||
0x18, 0x87, 0xa6, 0xa0, 0xd9, 0xf3, 0xdc, 0x90, 0xbc, 0x08, 0x57, 0x2d, 0xbd, 0x32, 0x53, 0xbe,
|
||||
0xdc, 0xc4, 0x49, 0x05, 0x7a, 0x17, 0x9a, 0xb6, 0x6b, 0x87, 0xb6, 0x19, 0x7a, 0xbe, 0x5e, 0x9d,
|
||||
0x29, 0x2b, 0x92, 0x6c, 0x8c, 0x9d, 0xa5, 0x5e, 0xcf, 0xdb, 0x73, 0x43, 0x9c, 0x00, 0x8d, 0xdf,
|
||||
0xbd, 0x06, 0x75, 0xd1, 0x13, 0xba, 0x07, 0x2d, 0x93, 0x23, 0x36, 0x76, 0xbc, 0xe7, 0x7a, 0x99,
|
||||
0x69, 0xbc, 0x99, 0x1a, 0x96, 0xd0, 0xe8, 0x50, 0x48, 0xb7, 0x84, 0x65, 0x06, 0x5a, 0x85, 0x09,
|
||||
0x51, 0x5c, 0x21, 0xa1, 0x69, 0x3b, 0x81, 0xfe, 0x0f, 0x2e, 0x32, 0x9d, 0x23, 0x22, 0x60, 0xdd,
|
||||
0x12, 0x4e, 0x11, 0xd1, 0xfb, 0xd0, 0xd8, 0x72, 0xbc, 0xde, 0xee, 0x92, 0xc5, 0xa7, 0xda, 0x9a,
|
||||
0xd7, 0x53, 0x1a, 0xf7, 0x69, 0x73, 0x67, 0xc9, 0xb2, 0xba, 0x25, 0x1c, 0x63, 0xe9, 0x1c, 0xd8,
|
||||
0xef, 0x15, 0xe2, 0x90, 0x90, 0x88, 0x38, 0xbc, 0x99, 0x49, 0xe5, 0x10, 0x3a, 0x07, 0x89, 0x81,
|
||||
0x56, 0xa0, 0xb5, 0x6d, 0x3b, 0x24, 0xd8, 0x1c, 0x3a, 0x9e, 0x69, 0xe9, 0x1a, 0x13, 0x98, 0xc9,
|
||||
0x14, 0x78, 0x98, 0xe0, 0xa8, 0x8a, 0x44, 0x43, 0x77, 0xa1, 0x39, 0x30, 0xfd, 0xdd, 0x60, 0xd5,
|
||||
0xdd, 0xf6, 0xf4, 0x5a, 0x66, 0x0c, 0xb8, 0xc6, 0xe3, 0x08, 0xd5, 0x2d, 0xe1, 0x84, 0x42, 0x23,
|
||||
0xc9, 0x06, 0xb5, 0x41, 0xc2, 0x87, 0x36, 0x71, 0xac, 0x40, 0x1f, 0x63, 0x22, 0x67, 0x32, 0x45,
|
||||
0x36, 0x48, 0xd8, 0xe1, 0x30, 0x1a, 0x49, 0x95, 0x88, 0x7e, 0x0c, 0xaf, 0x47, 0x35, 0xcb, 0x3b,
|
||||
0xb6, 0x63, 0xf9, 0xc4, 0x5d, 0xb5, 0x02, 0xbd, 0xce, 0xf4, 0xce, 0xe7, 0xea, 0x49, 0xd8, 0x6e,
|
||||
0x09, 0x67, 0x49, 0xa0, 0x9f, 0xc0, 0xc9, 0xa8, 0x1a, 0x93, 0x20, 0xf4, 0xed, 0x5e, 0x68, 0x7b,
|
||||
0x6e, 0xa0, 0x37, 0x98, 0xf4, 0x85, 0x5c, 0x69, 0x19, 0xdc, 0x2d, 0xe1, 0x4c, 0x11, 0x64, 0xc1,
|
||||
0xa9, 0xa8, 0xfe, 0xbe, 0xd9, 0xdb, 0xed, 0xfb, 0xde, 0x9e, 0x6b, 0x2d, 0x7b, 0x8e, 0xe7, 0xeb,
|
||||
0x4d, 0xa6, 0x7f, 0x39, 0x57, 0x3f, 0x85, 0xef, 0x96, 0x70, 0x9e, 0x14, 0x5a, 0x86, 0x13, 0x51,
|
||||
0xd3, 0x53, 0xf2, 0x22, 0xd4, 0x81, 0x49, 0x9f, 0xce, 0x95, 0xa6, 0xa0, 0x6e, 0x09, 0x2b, 0x24,
|
||||
0x59, 0x84, 0xa6, 0x84, 0xde, 0x2a, 0x10, 0xa1, 0x20, 0x59, 0x84, 0x96, 0x65, 0x91, 0x47, 0xb6,
|
||||
0xbb, 0xab, 0x8f, 0x17, 0x88, 0x50, 0x90, 0x2c, 0x42, 0xcb, 0xe8, 0x09, 0xb4, 0xe3, 0x99, 0x7a,
|
||||
0xde, 0x2e, 0xcd, 0x27, 0x7d, 0x82, 0x09, 0x9d, 0xcd, 0x8f, 0x96, 0x00, 0x76, 0x4b, 0xf8, 0x10,
|
||||
0x19, 0x3d, 0x84, 0xf1, 0xa8, 0x6e, 0xc9, 0xb1, 0xfb, 0xae, 0x3e, 0x39, 0x22, 0x97, 0xa9, 0x1a,
|
||||
0x43, 0x75, 0x4b, 0x58, 0xa5, 0xa1, 0x47, 0x30, 0x19, 0x55, 0x44, 0x5b, 0x43, 0x7b, 0xc4, 0x93,
|
||||
0x45, 0x95, 0x92, 0xbd, 0x21, 0x4d, 0x45, 0x1f, 0x8a, 0x87, 0x9c, 0x56, 0xd9, 0xfb, 0xfa, 0x6b,
|
||||
0x4c, 0x69, 0x2a, 0x5f, 0xc9, 0xde, 0x8f, 0x9f, 0x72, 0x4e, 0x41, 0x24, 0xc9, 0xae, 0x15, 0x33,
|
||||
0x34, 0xf7, 0x6d, 0xf2, 0x1c, 0x93, 0x9e, 0xe7, 0x5b, 0x81, 0x8e, 0x98, 0xda, 0x5b, 0xf9, 0x6a,
|
||||
0x02, 0xdf, 0x11, 0x04, 0x39, 0xbd, 0x52, 0x5a, 0xe8, 0x59, 0xf2, 0x84, 0x44, 0x4d, 0x3f, 0xb4,
|
||||
0xc9, 0x73, 0xfd, 0x75, 0xd6, 0xc7, 0xc5, 0xe2, 0x3e, 0x28, 0x5a, 0x7e, 0x44, 0x64, 0x95, 0x78,
|
||||
0x12, 0x7c, 0xe7, 0x52, 0x3a, 0x38, 0x39, 0x62, 0x12, 0x1c, 0x7e, 0xa8, 0x8f, 0x3c, 0x2d, 0x74,
|
||||
0x0b, 0x9a, 0xbc, 0x7b, 0x7a, 0x28, 0x4c, 0x33, 0xe1, 0xef, 0x67, 0x8f, 0x9c, 0x1f, 0x09, 0x09,
|
||||
0x9a, 0xa6, 0xcf, 0x5e, 0x40, 0x7c, 0xd6, 0xfc, 0x91, 0x67, 0xbb, 0xfa, 0x99, 0xcc, 0xf4, 0xd9,
|
||||
0x0c, 0x88, 0x2f, 0x34, 0x28, 0x8a, 0xa6, 0x8f, 0x42, 0x53, 0x74, 0x1e, 0x91, 0xed, 0x50, 0x9f,
|
||||
0x29, 0xd2, 0xa1, 0x28, 0x45, 0x87, 0x56, 0xd0, 0x1d, 0x2b, 0xae, 0xd8, 0x20, 0x0e, 0xe9, 0x85,
|
||||
0xd8, 0x74, 0xfb, 0x44, 0x3f, 0x9b, 0xb9, 0x63, 0x49, 0x72, 0x12, 0x98, 0x2e, 0x47, 0x96, 0x08,
|
||||
0xda, 0x04, 0x14, 0xd7, 0xd3, 0x7d, 0x81, 0x4b, 0xcf, 0x32, 0xe9, 0x73, 0xf9, 0xd2, 0x31, 0xb4,
|
||||
0x5b, 0xc2, 0x19, 0x02, 0xe8, 0x2d, 0xd0, 0x86, 0xb6, 0xdb, 0xd7, 0x2d, 0x26, 0xf4, 0x7a, 0x4a,
|
||||
0x68, 0xdd, 0x76, 0xfb, 0xdd, 0x12, 0x66, 0x10, 0x74, 0x1b, 0x60, 0xe8, 0x7b, 0x3d, 0x12, 0x04,
|
||||
0x6b, 0xe4, 0xb9, 0x4e, 0x18, 0xc1, 0x48, 0x13, 0x38, 0xa0, 0xb3, 0xc6, 0x16, 0x5d, 0xc2, 0xa3,
|
||||
0x07, 0x30, 0x2e, 0x4a, 0x9b, 0x43, 0xcb, 0x0c, 0x89, 0xbe, 0x9d, 0xb9, 0x05, 0x45, 0x02, 0x1c,
|
||||
0x44, 0x63, 0xac, 0xb0, 0xe8, 0x09, 0x2c, 0x2a, 0x56, 0x3c, 0x97, 0xe8, 0xfd, 0xcc, 0x13, 0x38,
|
||||
0x12, 0xa1, 0x10, 0xfa, 0x6c, 0x4a, 0x8c, 0xfb, 0x75, 0xa8, 0xed, 0x9b, 0xce, 0x1e, 0x31, 0xfe,
|
||||
0x5a, 0x86, 0xba, 0x70, 0x0a, 0xc6, 0x1a, 0x68, 0x2c, 0xa3, 0x4e, 0x42, 0xcd, 0x76, 0x2d, 0xf2,
|
||||
0x82, 0xb9, 0x93, 0x1a, 0xe6, 0x05, 0xf4, 0x36, 0xd4, 0x85, 0x7f, 0x10, 0x66, 0x21, 0xcf, 0xf9,
|
||||
0x44, 0x30, 0xe3, 0x13, 0xa8, 0x47, 0xbb, 0xc9, 0x14, 0x34, 0x87, 0xbe, 0x47, 0x4f, 0xef, 0x55,
|
||||
0x8b, 0xc9, 0x36, 0x71, 0x52, 0x81, 0xde, 0x81, 0xba, 0x25, 0x76, 0x2c, 0x2e, 0x7d, 0xaa, 0xc3,
|
||||
0x2d, 0x5e, 0x27, 0xb2, 0x78, 0x9d, 0x0d, 0x66, 0xf1, 0x70, 0x84, 0x33, 0x5e, 0xbd, 0x07, 0x35,
|
||||
0xb6, 0x88, 0xc6, 0x0d, 0xa8, 0x52, 0x53, 0x72, 0x0d, 0xc6, 0xd8, 0x33, 0x11, 0x59, 0xbd, 0x93,
|
||||
0xa9, 0xd1, 0x31, 0x30, 0x16, 0x18, 0x3a, 0x6d, 0x3e, 0xd7, 0x37, 0x60, 0xcc, 0xf7, 0xbc, 0x30,
|
||||
0x1e, 0x95, 0x28, 0x49, 0x72, 0x95, 0x62, 0x39, 0xb4, 0x98, 0x4c, 0xa0, 0xca, 0xe0, 0x85, 0x5b,
|
||||
0x6e, 0x3c, 0x13, 0x74, 0x15, 0x34, 0x0a, 0x64, 0x2e, 0x68, 0x62, 0xfe, 0x54, 0x4c, 0xdc, 0x18,
|
||||
0x98, 0x7e, 0xc8, 0xf3, 0xf4, 0x60, 0x48, 0x30, 0x03, 0x19, 0xcb, 0xd0, 0x92, 0x1c, 0x11, 0xd2,
|
||||
0xa1, 0xce, 0x46, 0x10, 0x0f, 0x3f, 0x2a, 0x22, 0x03, 0x1a, 0x34, 0xb8, 0xeb, 0x66, 0xb8, 0xc3,
|
||||
0x66, 0xd0, 0xc4, 0x71, 0xd9, 0xf8, 0x29, 0x8c, 0x09, 0x23, 0x66, 0x08, 0x07, 0x48, 0xcd, 0x4a,
|
||||
0x99, 0xa3, 0xa2, 0xb2, 0xb1, 0x08, 0x8d, 0x68, 0x8b, 0x32, 0x3a, 0xa0, 0xb1, 0x6d, 0x6a, 0x02,
|
||||
0x2a, 0x76, 0xd4, 0x55, 0xc5, 0xb6, 0x68, 0xf4, 0x68, 0x7b, 0x6c, 0x95, 0x45, 0xc9, 0x78, 0x06,
|
||||
0xcd, 0xd8, 0x74, 0xa1, 0x27, 0x70, 0x42, 0x98, 0x2e, 0xfe, 0xb4, 0xd2, 0x8e, 0x26, 0xe6, 0xaf,
|
||||
0x66, 0x05, 0xb4, 0xb3, 0x4c, 0xad, 0xb6, 0xcb, 0x3d, 0x00, 0xf3, 0x6d, 0x1d, 0x36, 0x79, 0x45,
|
||||
0xc0, 0xf8, 0x85, 0x01, 0xd5, 0x0d, 0x12, 0x1a, 0x8f, 0x92, 0xfc, 0x4a, 0x0f, 0xec, 0x2b, 0x64,
|
||||
0xd4, 0x1f, 0xaa, 0xd2, 0x84, 0xbf, 0x2c, 0x43, 0x3d, 0x3a, 0x60, 0x8e, 0x38, 0x69, 0xda, 0xe7,
|
||||
0x1e, 0x7b, 0x3c, 0x2d, 0x91, 0x04, 0xf9, 0x7d, 0x0a, 0x1c, 0xba, 0x01, 0x0d, 0xdb, 0x0d, 0x88,
|
||||
0x4f, 0x39, 0xda, 0x68, 0x4e, 0x0c, 0x44, 0x17, 0x61, 0x82, 0xff, 0x5e, 0xf7, 0x02, 0x9b, 0x1a,
|
||||
0x39, 0x66, 0x7e, 0xc7, 0x71, 0xaa, 0x96, 0x26, 0x87, 0x4f, 0x06, 0xde, 0x3e, 0xb1, 0xf4, 0x31,
|
||||
0xb6, 0xb6, 0x51, 0x91, 0x3e, 0xe0, 0xa1, 0x17, 0x9a, 0x0e, 0x33, 0xa8, 0xe3, 0x98, 0x17, 0x8c,
|
||||
0xdf, 0x97, 0x8f, 0xb7, 0xca, 0xe8, 0x2e, 0x68, 0xf4, 0x97, 0x78, 0x01, 0xb8, 0x32, 0x72, 0x41,
|
||||
0x95, 0x93, 0x10, 0x33, 0x1e, 0xd5, 0xf5, 0xb6, 0xb7, 0x03, 0x12, 0xb2, 0xdc, 0x1f, 0xc7, 0xa2,
|
||||
0x44, 0x87, 0xe7, 0xd8, 0x03, 0x3b, 0x14, 0xf3, 0xe2, 0x05, 0x63, 0x15, 0xc6, 0x84, 0xdb, 0x4e,
|
||||
0x8f, 0x6f, 0x0e, 0xc6, 0xb6, 0xb9, 0x81, 0x2f, 0x58, 0x6b, 0x01, 0x33, 0xee, 0x41, 0x4b, 0xf6,
|
||||
0xd8, 0x69, 0xbd, 0x19, 0x68, 0xf5, 0x24, 0x17, 0xcf, 0x1f, 0x1f, 0xb9, 0xca, 0x20, 0x70, 0x42,
|
||||
0x31, 0xd2, 0x69, 0x85, 0x07, 0x70, 0xc2, 0x97, 0xdd, 0x7a, 0x25, 0xe5, 0x0f, 0xe5, 0x08, 0xc9,
|
||||
0x42, 0x58, 0xa1, 0x19, 0x1f, 0xc3, 0x64, 0xda, 0x4c, 0xa7, 0x7b, 0xba, 0x0c, 0x93, 0x5b, 0x29,
|
||||
0xeb, 0xce, 0x17, 0x29, 0x5d, 0x6d, 0xac, 0x42, 0x8d, 0xfb, 0xc4, 0xb4, 0xc4, 0xdb, 0x50, 0x33,
|
||||
0x99, 0xef, 0xac, 0xb0, 0x1d, 0xc8, 0xc8, 0x1c, 0x25, 0xa3, 0x62, 0x0e, 0x34, 0xfe, 0xac, 0x81,
|
||||
0xc6, 0x5c, 0x79, 0x5a, 0xea, 0x7d, 0xd0, 0xe8, 0x9b, 0xb2, 0x98, 0xef, 0xec, 0x48, 0x8b, 0xcf,
|
||||
0x0f, 0x65, 0x86, 0x47, 0xb7, 0xa0, 0x16, 0x84, 0x07, 0x4e, 0xf4, 0x2e, 0x79, 0x6e, 0x34, 0x71,
|
||||
0x83, 0x42, 0x31, 0x67, 0x50, 0x2a, 0xdb, 0x1c, 0xc4, 0x5b, 0x64, 0x01, 0x95, 0xed, 0x4a, 0x98,
|
||||
0x33, 0xd0, 0x3d, 0xa8, 0xf7, 0x76, 0x48, 0x6f, 0x97, 0x58, 0xe2, 0xf5, 0xf1, 0xc2, 0x68, 0xf2,
|
||||
0x32, 0x07, 0xe3, 0x88, 0x45, 0xfb, 0xee, 0xb1, 0x90, 0x8f, 0x1d, 0xa5, 0x6f, 0xb6, 0x0c, 0x98,
|
||||
0x33, 0x8c, 0x29, 0x11, 0xc1, 0x93, 0xe2, 0x20, 0x16, 0x41, 0x14, 0xa7, 0xf2, 0x43, 0xa8, 0xb1,
|
||||
0x49, 0xa2, 0x3b, 0x72, 0xf3, 0xc4, 0xfc, 0xa5, 0xe2, 0x4d, 0x53, 0x04, 0x27, 0xd6, 0x61, 0x33,
|
||||
0x56, 0x75, 0x5a, 0x47, 0xd1, 0x11, 0x91, 0xe2, 0x3a, 0x67, 0xa0, 0x2e, 0x26, 0xaf, 0x0e, 0xb8,
|
||||
0x11, 0x01, 0x4e, 0x43, 0x8d, 0xe7, 0x67, 0xf6, 0x7c, 0x3e, 0x2b, 0x43, 0x95, 0xbe, 0x12, 0xa4,
|
||||
0xf3, 0xe5, 0x66, 0xb4, 0xee, 0x45, 0x09, 0xb3, 0x62, 0xef, 0x2b, 0xcb, 0x6e, 0x3c, 0x88, 0x22,
|
||||
0x74, 0x5b, 0x8d, 0xd0, 0xc5, 0xd1, 0xbb, 0x50, 0x22, 0xc3, 0x07, 0xf6, 0xab, 0x1a, 0x68, 0xec,
|
||||
0xd5, 0x30, 0x2b, 0x93, 0xe9, 0xa9, 0x5c, 0x34, 0x30, 0x4a, 0xee, 0x24, 0x07, 0x34, 0xcf, 0x64,
|
||||
0x33, 0x2c, 0xce, 0x64, 0x46, 0xdc, 0xa0, 0x50, 0xcc, 0x19, 0xb4, 0xcb, 0x81, 0x3d, 0x20, 0x22,
|
||||
0x91, 0x0b, 0xba, 0x7c, 0x6c, 0x0f, 0x08, 0x66, 0x78, 0xca, 0xdb, 0x31, 0x83, 0x1d, 0x91, 0xc3,
|
||||
0x05, 0xbc, 0xae, 0x19, 0xec, 0x60, 0x86, 0xa7, 0x3c, 0xd7, 0x1c, 0x10, 0x91, 0xbc, 0x05, 0xbc,
|
||||
0x35, 0x93, 0xf6, 0x47, 0xf1, 0x94, 0x17, 0xd8, 0x9f, 0x12, 0xf1, 0x75, 0xa3, 0x80, 0xb7, 0x61,
|
||||
0x7f, 0x4a, 0x30, 0xc3, 0xd3, 0x94, 0xa7, 0x2a, 0x39, 0x29, 0x72, 0x1a, 0x6a, 0x3f, 0xb2, 0xad,
|
||||
0x70, 0x47, 0x6d, 0xae, 0x29, 0x4f, 0x04, 0x8d, 0xd2, 0xb1, 0x9e, 0x08, 0x39, 0xc8, 0x5c, 0x67,
|
||||
0x05, 0x34, 0xba, 0x5a, 0xc7, 0x4b, 0x9b, 0x64, 0x91, 0x85, 0xca, 0x14, 0x68, 0x34, 0x90, 0x39,
|
||||
0x53, 0x99, 0x02, 0x8d, 0x2e, 0x4f, 0x7e, 0x2b, 0x0d, 0x8a, 0xda, 0x5a, 0x8d, 0x5a, 0x7f, 0x5e,
|
||||
0x05, 0x8d, 0x7d, 0x66, 0x48, 0x27, 0xe4, 0x0f, 0x60, 0x3c, 0x34, 0xfd, 0x3e, 0xe1, 0x96, 0x70,
|
||||
0x35, 0xfa, 0x62, 0x77, 0x75, 0xe4, 0xc7, 0x8b, 0xce, 0x53, 0x99, 0x82, 0x55, 0x85, 0xa3, 0xef,
|
||||
0xba, 0x4c, 0x4a, 0xd9, 0x75, 0x6f, 0xc7, 0x47, 0xae, 0x56, 0xf0, 0x8d, 0x8b, 0x71, 0xf9, 0xc1,
|
||||
0x1d, 0x9f, 0xbf, 0x17, 0x60, 0x5c, 0x19, 0xd8, 0xd7, 0xba, 0x0b, 0xca, 0x83, 0xe5, 0x3a, 0x0b,
|
||||
0xb1, 0x73, 0xb8, 0xae, 0x6e, 0x83, 0xb9, 0x46, 0x41, 0x10, 0xff, 0x58, 0x83, 0x46, 0xfc, 0x99,
|
||||
0x26, 0xbd, 0x20, 0x0b, 0x50, 0xdd, 0xf3, 0x1d, 0xb1, 0x0c, 0x17, 0x0a, 0x3f, 0xfd, 0x74, 0x36,
|
||||
0x7d, 0x07, 0x53, 0x06, 0x9d, 0x4d, 0x68, 0x87, 0x71, 0xd8, 0x2f, 0x15, 0x53, 0x9f, 0x52, 0x38,
|
||||
0xe6, 0x2c, 0xf4, 0x04, 0x5a, 0x16, 0x09, 0x7a, 0xbe, 0x3d, 0x64, 0xde, 0x8f, 0xc7, 0xff, 0x7a,
|
||||
0xb1, 0xc8, 0x4a, 0x42, 0xc2, 0xb2, 0x02, 0x5a, 0x85, 0xa6, 0x3d, 0x30, 0xfb, 0xa4, 0x9b, 0x6c,
|
||||
0x22, 0x57, 0x8b, 0xe5, 0x56, 0x23, 0x0a, 0x4e, 0xd8, 0x74, 0x6c, 0xdb, 0xe6, 0xbe, 0xdd, 0xf3,
|
||||
0x5c, 0x26, 0x36, 0x76, 0xd4, 0xb1, 0x3d, 0x4c, 0x48, 0x58, 0x56, 0x40, 0x8b, 0x62, 0x1b, 0xae,
|
||||
0x17, 0x7c, 0xcc, 0x49, 0x42, 0x95, 0xbc, 0x2b, 0xbd, 0x09, 0xd5, 0x4d, 0xdf, 0xc9, 0xdf, 0x6e,
|
||||
0x58, 0x54, 0x73, 0x9a, 0xcf, 0x41, 0x4b, 0x8a, 0x57, 0x0e, 0xe8, 0x2c, 0x34, 0xe3, 0x28, 0xe4,
|
||||
0xeb, 0x48, 0x73, 0xcb, 0x01, 0xdd, 0x11, 0x7b, 0xd2, 0x7b, 0x6a, 0x9a, 0x9f, 0x49, 0xa5, 0x39,
|
||||
0x4d, 0xec, 0x75, 0x9f, 0x30, 0x17, 0x2d, 0x6f, 0x46, 0x5f, 0x9c, 0x62, 0x67, 0x98, 0xf3, 0x35,
|
||||
0xbf, 0x0f, 0x3d, 0x85, 0x49, 0x6a, 0xda, 0xb7, 0xcc, 0x80, 0xe4, 0xbd, 0x09, 0xbd, 0x43, 0xdf,
|
||||
0x30, 0xf8, 0x17, 0xbd, 0x4a, 0xc1, 0x1b, 0x8f, 0xc0, 0x7d, 0xe7, 0xe2, 0xff, 0x77, 0x5c, 0xfc,
|
||||
0x5f, 0xf2, 0x5c, 0xfc, 0x82, 0xe2, 0xe2, 0xcf, 0xe5, 0xdd, 0xcb, 0x38, 0x87, 0x6c, 0xfc, 0xa2,
|
||||
0x7a, 0xa0, 0x9c, 0x2f, 0x60, 0x2a, 0x27, 0xca, 0xa2, 0xea, 0xe3, 0x8b, 0xb8, 0x8a, 0x91, 0xff,
|
||||
0x30, 0x6d, 0xe4, 0x2f, 0x16, 0xb0, 0x0f, 0x39, 0xf9, 0x45, 0xd5, 0xc9, 0x17, 0xf5, 0xfe, 0x2d,
|
||||
0xb6, 0xf2, 0xbf, 0xcd, 0xb1, 0xf2, 0xb7, 0x54, 0x2b, 0x3f, 0x22, 0x6b, 0xbe, 0x29, 0x2f, 0xff,
|
||||
0x9b, 0x3c, 0x2f, 0xbf, 0xa0, 0x78, 0xf9, 0x11, 0x23, 0x4b, 0x9b, 0xf9, 0x45, 0xd5, 0xcc, 0x9f,
|
||||
0x2f, 0x60, 0x2a, 0x6e, 0x7e, 0x41, 0x71, 0xf3, 0x45, 0x9d, 0x4a, 0x76, 0x7e, 0x41, 0xb1, 0xf3,
|
||||
0x45, 0x44, 0xc9, 0xcf, 0x2f, 0x28, 0x7e, 0xbe, 0x88, 0x28, 0x19, 0xfa, 0x05, 0xc5, 0xd0, 0x17,
|
||||
0x11, 0xbf, 0x73, 0xf4, 0xc7, 0x73, 0xf4, 0xbf, 0xcc, 0x73, 0xf4, 0x38, 0xdb, 0xd1, 0x5f, 0xcb,
|
||||
0x8f, 0x7f, 0xb1, 0xa5, 0x3f, 0xfa, 0x0e, 0x7c, 0xd8, 0xd3, 0xdf, 0x49, 0x79, 0xfa, 0x0b, 0x05,
|
||||
0xe4, 0xff, 0x53, 0x53, 0xff, 0xa7, 0x51, 0xa6, 0xfe, 0xa6, 0x6c, 0xea, 0x47, 0x9c, 0x22, 0x87,
|
||||
0x5d, 0xfd, 0x5d, 0xd5, 0xd5, 0x5f, 0x3e, 0x02, 0x57, 0xb1, 0xf5, 0xeb, 0x59, 0xb6, 0xbe, 0x73,
|
||||
0x04, 0x95, 0x5c, 0x5f, 0xff, 0xd1, 0x61, 0x5f, 0x7f, 0xed, 0x08, 0x7a, 0x99, 0xc6, 0x7e, 0x3d,
|
||||
0xcb, 0xd8, 0x1f, 0x65, 0x74, 0xb9, 0xce, 0xfe, 0x03, 0xc5, 0xd9, 0x5f, 0x3a, 0x4a, 0xb8, 0xbe,
|
||||
0x7d, 0xd6, 0xfe, 0xcb, 0x0a, 0x68, 0x9b, 0x01, 0xf1, 0x8d, 0xff, 0x54, 0xa2, 0xeb, 0xae, 0x9b,
|
||||
0xa0, 0xb1, 0xeb, 0x5a, 0xe9, 0x3a, 0xae, 0x9c, 0xba, 0x8e, 0x53, 0xfe, 0xff, 0x93, 0x5c, 0xc7,
|
||||
0xdd, 0x04, 0x8d, 0x5d, 0xd0, 0x1e, 0x9f, 0xf9, 0xb3, 0x32, 0x34, 0x93, 0xcb, 0xd2, 0x63, 0xf3,
|
||||
0xe5, 0x6b, 0xaa, 0x8a, 0x7a, 0x4d, 0x75, 0x05, 0x6a, 0x3e, 0xbb, 0x14, 0xe2, 0x4f, 0x4d, 0xfa,
|
||||
0x96, 0x8d, 0x75, 0x88, 0x39, 0xc4, 0x20, 0xd0, 0x92, 0xaf, 0x82, 0x8f, 0x3f, 0x8c, 0xf3, 0xe2,
|
||||
0x8f, 0x16, 0xab, 0x56, 0xb0, 0xe4, 0xfb, 0xe6, 0x81, 0x78, 0x27, 0x50, 0x2b, 0xe9, 0x6e, 0xbe,
|
||||
0x6e, 0xbb, 0xfd, 0xec, 0x5b, 0x50, 0xe3, 0x6f, 0x65, 0xa8, 0x8b, 0x8b, 0x55, 0x63, 0x01, 0xaa,
|
||||
0x6b, 0xe4, 0x39, 0x1d, 0x88, 0xb8, 0x5a, 0x3d, 0x34, 0x90, 0xc7, 0x6c, 0x16, 0x02, 0x8f, 0x23,
|
||||
0x98, 0xb1, 0x08, 0x63, 0xe2, 0x22, 0xf7, 0xf8, 0xdc, 0x9b, 0xa0, 0xad, 0x78, 0xee, 0x57, 0x60,
|
||||
0xce, 0x9a, 0x30, 0x8e, 0x49, 0x30, 0xf4, 0xdc, 0x80, 0x7c, 0x43, 0xff, 0x8f, 0x9b, 0xfd, 0x57,
|
||||
0x05, 0x6a, 0xac, 0x77, 0xe3, 0x9f, 0x95, 0x38, 0x4e, 0x19, 0x6f, 0x7a, 0x89, 0x1f, 0x9b, 0x90,
|
||||
0xae, 0xad, 0x95, 0x71, 0xcb, 0x3e, 0x6c, 0x5e, 0xf6, 0x61, 0x13, 0xd2, 0xbf, 0x50, 0x54, 0x86,
|
||||
0xe2, 0xbf, 0x3e, 0x80, 0xc6, 0xd0, 0xf7, 0xfa, 0x3e, 0x0d, 0x90, 0x96, 0xfa, 0x5f, 0x97, 0x4a,
|
||||
0x5b, 0x17, 0x30, 0x1c, 0x13, 0x8c, 0x77, 0xa1, 0x11, 0xd5, 0x26, 0x97, 0x65, 0xe2, 0x54, 0x67,
|
||||
0x05, 0x84, 0x40, 0xb3, 0x3c, 0x97, 0xcf, 0xa1, 0x8a, 0xd9, 0xef, 0xd9, 0xef, 0x89, 0x87, 0x7d,
|
||||
0x1c, 0x9a, 0x2b, 0xbe, 0x37, 0x64, 0x17, 0xb5, 0xed, 0xd2, 0xec, 0x52, 0x64, 0x74, 0x1a, 0xa0,
|
||||
0xad, 0x79, 0x2e, 0x69, 0x97, 0x50, 0x0b, 0xea, 0x78, 0xcf, 0x75, 0x6d, 0xb7, 0xdf, 0x2e, 0xd3,
|
||||
0x6a, 0xba, 0xa2, 0xed, 0x0a, 0x3a, 0x01, 0x8d, 0x65, 0xd3, 0xed, 0x11, 0x87, 0x58, 0xed, 0x2a,
|
||||
0x6a, 0x42, 0xed, 0x81, 0xef, 0x7b, 0x7e, 0x5b, 0xbb, 0xf2, 0x0c, 0x26, 0xd4, 0xeb, 0x60, 0x4a,
|
||||
0x5a, 0x37, 0xfb, 0x54, 0xab, 0x01, 0x5a, 0xd7, 0x1b, 0x90, 0x76, 0x19, 0x4d, 0x42, 0x6b, 0x9d,
|
||||
0xdf, 0xa9, 0xb3, 0xa6, 0x0a, 0xed, 0x66, 0xc9, 0xef, 0xed, 0xd8, 0xfb, 0xa4, 0x5d, 0xa5, 0xad,
|
||||
0xf7, 0x7d, 0x62, 0x5a, 0x3d, 0x7f, 0x6f, 0xb0, 0x15, 0xb4, 0x35, 0x54, 0x67, 0xb7, 0xa8, 0xed,
|
||||
0xda, 0xfd, 0xa9, 0xbf, 0xbf, 0x9c, 0x2e, 0x7f, 0xfe, 0x72, 0xba, 0xfc, 0xef, 0x97, 0xd3, 0xe5,
|
||||
0x5f, 0xbf, 0x9a, 0x2e, 0x7d, 0xfe, 0x6a, 0xba, 0xf4, 0xc5, 0xab, 0xe9, 0xd2, 0x27, 0x95, 0xe1,
|
||||
0xd6, 0xd6, 0x18, 0x3b, 0x47, 0x6f, 0xfc, 0x37, 0x00, 0x00, 0xff, 0xff, 0x95, 0x8f, 0x1a, 0x02,
|
||||
0xe4, 0x29, 0x00, 0x00,
|
||||
// 2644 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0xdc, 0xc6,
|
||||
0xf9, 0xde, 0x0f, 0xee, 0xd7, 0xbb, 0x96, 0xb4, 0x99, 0x18, 0x36, 0x7f, 0xb4, 0x2c, 0xcb, 0xf2,
|
||||
0x67, 0xfc, 0xb1, 0x4a, 0xe4, 0x5f, 0x22, 0x5b, 0xf1, 0x47, 0x64, 0xc9, 0xc6, 0x6e, 0x62, 0xcb,
|
||||
0xea, 0xc8, 0x6a, 0x8b, 0xd4, 0x87, 0x52, 0xcb, 0xd1, 0x8a, 0xd0, 0x2e, 0xb9, 0x20, 0x29, 0xd9,
|
||||
0xca, 0xb5, 0xb7, 0xa2, 0x2d, 0x7a, 0x28, 0x52, 0x14, 0x68, 0x4f, 0x3d, 0xf5, 0xd2, 0x4b, 0x51,
|
||||
0xa0, 0x7f, 0x42, 0x7b, 0xcb, 0x31, 0xc7, 0xc2, 0xbe, 0xf4, 0x9a, 0x73, 0x2f, 0xc5, 0x7c, 0x90,
|
||||
0x9c, 0xa1, 0xc8, 0xa5, 0x14, 0x24, 0x40, 0x8b, 0xe4, 0xb6, 0x33, 0xf3, 0x3c, 0xcf, 0xcc, 0xbc,
|
||||
0xf3, 0x72, 0xe6, 0x21, 0x67, 0xe1, 0xd4, 0x68, 0x6b, 0x7e, 0xe4, 0xb9, 0x81, 0xeb, 0xcf, 0x93,
|
||||
0x7d, 0xe2, 0x04, 0x7e, 0x9b, 0x95, 0x50, 0xcd, 0x74, 0x0e, 0x82, 0x83, 0x11, 0x31, 0x3e, 0xd9,
|
||||
0x27, 0x8e, 0xe5, 0x7a, 0xf3, 0x7d, 0x3b, 0xd8, 0xd9, 0xdb, 0x6a, 0xf7, 0xdc, 0xe1, 0xbc, 0x68,
|
||||
0xb2, 0xdd, 0xf9, 0xbe, 0x7b, 0x53, 0x14, 0x6e, 0x0e, 0xec, 0x2d, 0xcf, 0xf4, 0x0e, 0xe6, 0x47,
|
||||
0x5b, 0xf3, 0x43, 0xd7, 0x22, 0x83, 0x50, 0x95, 0x15, 0x84, 0xaa, 0x31, 0xdd, 0x77, 0xdd, 0xfe,
|
||||
0x80, 0xf0, 0xb6, 0xad, 0xbd, 0xed, 0x79, 0x3f, 0xf0, 0xf6, 0x7a, 0x01, 0x6f, 0x9d, 0xfb, 0x7c,
|
||||
0x0d, 0x2a, 0x8f, 0xe8, 0x20, 0xd0, 0x02, 0xd4, 0x87, 0xc4, 0xf7, 0xcd, 0x3e, 0xf1, 0xf5, 0xe2,
|
||||
0x6c, 0xf9, 0x6a, 0x73, 0xe1, 0x54, 0x5b, 0x74, 0xd4, 0x66, 0x88, 0xf6, 0x53, 0xde, 0x8c, 0x23,
|
||||
0x1c, 0x9a, 0x86, 0x46, 0xcf, 0x75, 0x02, 0xf2, 0x2a, 0xe8, 0x5a, 0x7a, 0x69, 0xb6, 0x78, 0xb5,
|
||||
0x81, 0xe3, 0x0a, 0xf4, 0xff, 0xd0, 0xb0, 0x1d, 0x3b, 0xb0, 0xcd, 0xc0, 0xf5, 0xf4, 0xf2, 0x6c,
|
||||
0x51, 0x91, 0x64, 0x63, 0x6c, 0x2f, 0xf7, 0x7a, 0xee, 0x9e, 0x13, 0xe0, 0x18, 0x68, 0xfc, 0xee,
|
||||
0x2d, 0xa8, 0x89, 0x9e, 0xd0, 0x03, 0x68, 0x9a, 0x1c, 0xb1, 0xb1, 0xe3, 0xbe, 0xd4, 0x8b, 0x4c,
|
||||
0xe3, 0x4c, 0x62, 0x58, 0x42, 0xa3, 0x4d, 0x21, 0x9d, 0x02, 0x96, 0x19, 0xa8, 0x0b, 0x93, 0xa2,
|
||||
0xb8, 0x4a, 0x02, 0xd3, 0x1e, 0xf8, 0xfa, 0x3f, 0xb8, 0xc8, 0x4c, 0x86, 0x88, 0x80, 0x75, 0x0a,
|
||||
0x38, 0x41, 0x44, 0x1f, 0x40, 0x7d, 0x6b, 0xe0, 0xf6, 0x76, 0x97, 0x2d, 0x3e, 0xd5, 0xe6, 0x82,
|
||||
0x9e, 0xd0, 0x78, 0x48, 0x9b, 0xdb, 0xcb, 0x96, 0xd5, 0x29, 0xe0, 0x08, 0x4b, 0xe7, 0xc0, 0x7e,
|
||||
0xaf, 0x92, 0x01, 0x09, 0x88, 0x88, 0xc3, 0x99, 0x54, 0x2a, 0x87, 0xd0, 0x39, 0x48, 0x0c, 0xb4,
|
||||
0x0a, 0xcd, 0x6d, 0x7b, 0x40, 0xfc, 0xcd, 0xd1, 0xc0, 0x35, 0x2d, 0x5d, 0x63, 0x02, 0xb3, 0xa9,
|
||||
0x02, 0x8f, 0x63, 0x1c, 0x55, 0x91, 0x68, 0xe8, 0x3e, 0x34, 0x86, 0xa6, 0xb7, 0xeb, 0x77, 0x9d,
|
||||
0x6d, 0x57, 0xaf, 0xa4, 0xc6, 0x80, 0x6b, 0x3c, 0x0d, 0x51, 0x9d, 0x02, 0x8e, 0x29, 0x34, 0x92,
|
||||
0x6c, 0x50, 0x1b, 0x24, 0x78, 0x6c, 0x93, 0x81, 0xe5, 0xeb, 0x55, 0x26, 0x72, 0x2e, 0x55, 0x64,
|
||||
0x83, 0x04, 0x6d, 0x0e, 0xa3, 0x91, 0x54, 0x89, 0xe8, 0xc7, 0xf0, 0x76, 0x58, 0xb3, 0xb2, 0x63,
|
||||
0x0f, 0x2c, 0x8f, 0x38, 0x5d, 0xcb, 0xd7, 0x6b, 0x4c, 0xef, 0x62, 0xa6, 0x9e, 0x84, 0xed, 0x14,
|
||||
0x70, 0x9a, 0x04, 0xfa, 0x09, 0x9c, 0x0c, 0xab, 0x31, 0xf1, 0x03, 0xcf, 0xee, 0x05, 0xb6, 0xeb,
|
||||
0xf8, 0x7a, 0x9d, 0x49, 0x5f, 0xca, 0x94, 0x96, 0xc1, 0x9d, 0x02, 0x4e, 0x15, 0x41, 0x16, 0x9c,
|
||||
0x0e, 0xeb, 0x1f, 0x9a, 0xbd, 0xdd, 0xbe, 0xe7, 0xee, 0x39, 0xd6, 0x8a, 0x3b, 0x70, 0x3d, 0xbd,
|
||||
0xc1, 0xf4, 0xaf, 0x66, 0xea, 0x27, 0xf0, 0x9d, 0x02, 0xce, 0x92, 0x42, 0x2b, 0x70, 0x22, 0x6c,
|
||||
0x7a, 0x4e, 0x5e, 0x05, 0x3a, 0x30, 0xe9, 0xb3, 0x99, 0xd2, 0x14, 0xd4, 0x29, 0x60, 0x85, 0x24,
|
||||
0x8b, 0xd0, 0x94, 0xd0, 0x9b, 0x39, 0x22, 0x14, 0x24, 0x8b, 0xd0, 0xb2, 0x2c, 0xf2, 0xc4, 0x76,
|
||||
0x76, 0xf5, 0x89, 0x1c, 0x11, 0x0a, 0x92, 0x45, 0x68, 0x19, 0x3d, 0x83, 0x56, 0x34, 0x53, 0xd7,
|
||||
0xdd, 0xa5, 0xf9, 0xa4, 0x4f, 0x32, 0xa1, 0xf3, 0xd9, 0xd1, 0x12, 0xc0, 0x4e, 0x01, 0x1f, 0x22,
|
||||
0xa3, 0xc7, 0x30, 0x11, 0xd6, 0x2d, 0x0f, 0xec, 0xbe, 0xa3, 0x4f, 0x8d, 0xc9, 0x65, 0xaa, 0xc6,
|
||||
0x50, 0x9d, 0x02, 0x56, 0x69, 0xe8, 0x09, 0x4c, 0x85, 0x15, 0xe1, 0xd6, 0xd0, 0x1a, 0xf3, 0x64,
|
||||
0x51, 0xa5, 0x78, 0x6f, 0x48, 0x52, 0xd1, 0x47, 0xe2, 0x21, 0xa7, 0x55, 0xf6, 0xbe, 0xfe, 0x16,
|
||||
0x53, 0x9a, 0xce, 0x56, 0xb2, 0xf7, 0xa3, 0xa7, 0x9c, 0x53, 0x10, 0x89, 0xb3, 0x6b, 0xd5, 0x0c,
|
||||
0xcc, 0x7d, 0x9b, 0xbc, 0xc4, 0xa4, 0xe7, 0x7a, 0x96, 0xaf, 0x23, 0xa6, 0xf6, 0x4e, 0xb6, 0x9a,
|
||||
0xc0, 0xb7, 0x05, 0x41, 0x4e, 0xaf, 0x84, 0x16, 0x7a, 0x11, 0x3f, 0x21, 0x61, 0xd3, 0x0f, 0x6d,
|
||||
0xf2, 0x52, 0x7f, 0x9b, 0xf5, 0x71, 0x39, 0xbf, 0x0f, 0x8a, 0x96, 0x1f, 0x11, 0x59, 0x25, 0x9a,
|
||||
0x04, 0xdf, 0xb9, 0x94, 0x0e, 0x4e, 0x8e, 0x99, 0x04, 0x87, 0x1f, 0xea, 0x23, 0x4b, 0x0b, 0xdd,
|
||||
0x81, 0x06, 0xef, 0x9e, 0x1e, 0x0a, 0x33, 0x4c, 0xf8, 0xff, 0xd2, 0x47, 0xce, 0x8f, 0x84, 0x18,
|
||||
0x4d, 0xd3, 0x67, 0xcf, 0x27, 0x1e, 0x6b, 0xfe, 0xd8, 0xb5, 0x1d, 0xfd, 0x5c, 0x6a, 0xfa, 0x6c,
|
||||
0xfa, 0xc4, 0x13, 0x1a, 0x14, 0x45, 0xd3, 0x47, 0xa1, 0x29, 0x3a, 0x4f, 0xc8, 0x76, 0xa0, 0xcf,
|
||||
0xe6, 0xe9, 0x50, 0x94, 0xa2, 0x43, 0x2b, 0xe8, 0x8e, 0x15, 0x55, 0x6c, 0x90, 0x01, 0xe9, 0x05,
|
||||
0xd8, 0x74, 0xfa, 0x44, 0x3f, 0x9f, 0xba, 0x63, 0x49, 0x72, 0x12, 0x98, 0x2e, 0x47, 0x9a, 0x08,
|
||||
0xda, 0x04, 0x14, 0xd5, 0xd3, 0x7d, 0x81, 0x4b, 0xcf, 0x31, 0xe9, 0x0b, 0xd9, 0xd2, 0x11, 0xb4,
|
||||
0x53, 0xc0, 0x29, 0x02, 0xe8, 0x1d, 0xd0, 0x46, 0xb6, 0xd3, 0xd7, 0x2d, 0x26, 0xf4, 0x76, 0x42,
|
||||
0x68, 0xdd, 0x76, 0xfa, 0x9d, 0x02, 0x66, 0x10, 0x74, 0x17, 0x60, 0xe4, 0xb9, 0x3d, 0xe2, 0xfb,
|
||||
0x6b, 0xe4, 0xa5, 0x4e, 0x18, 0xc1, 0x48, 0x12, 0x38, 0xa0, 0xbd, 0xc6, 0x16, 0x5d, 0xc2, 0xa3,
|
||||
0x47, 0x30, 0x21, 0x4a, 0x9b, 0x23, 0xcb, 0x0c, 0x88, 0xbe, 0x9d, 0xba, 0x05, 0x85, 0x02, 0x1c,
|
||||
0x44, 0x63, 0xac, 0xb0, 0xe8, 0x09, 0x2c, 0x2a, 0x56, 0x5d, 0x87, 0xe8, 0xfd, 0xd4, 0x13, 0x38,
|
||||
0x14, 0xa1, 0x10, 0xfa, 0x6c, 0x4a, 0x8c, 0x87, 0x35, 0xa8, 0xec, 0x9b, 0x83, 0x3d, 0x62, 0xfc,
|
||||
0xb5, 0x08, 0x35, 0xe1, 0x14, 0x8c, 0x35, 0xd0, 0x58, 0x46, 0x9d, 0x84, 0x8a, 0xed, 0x58, 0xe4,
|
||||
0x15, 0x73, 0x27, 0x15, 0xcc, 0x0b, 0xe8, 0x5d, 0xa8, 0x09, 0xff, 0x20, 0xcc, 0x42, 0x96, 0xf3,
|
||||
0x09, 0x61, 0xc6, 0xa7, 0x50, 0x0b, 0x77, 0x93, 0x69, 0x68, 0x8c, 0x3c, 0x97, 0x9e, 0xde, 0x5d,
|
||||
0x8b, 0xc9, 0x36, 0x70, 0x5c, 0x81, 0xde, 0x83, 0x9a, 0x25, 0x76, 0x2c, 0x2e, 0x7d, 0xba, 0xcd,
|
||||
0x2d, 0x5e, 0x3b, 0xb4, 0x78, 0xed, 0x0d, 0x66, 0xf1, 0x70, 0x88, 0x33, 0xde, 0xbc, 0x0f, 0x15,
|
||||
0xb6, 0x88, 0xc6, 0x2d, 0x28, 0x53, 0x53, 0x72, 0x03, 0xaa, 0xec, 0x99, 0x08, 0xad, 0xde, 0xc9,
|
||||
0xc4, 0xe8, 0x18, 0x18, 0x0b, 0x0c, 0x9d, 0x36, 0x9f, 0xeb, 0x29, 0xa8, 0x7a, 0xae, 0x1b, 0x44,
|
||||
0xa3, 0x12, 0x25, 0x49, 0xae, 0x94, 0x2f, 0x87, 0x96, 0xe2, 0x09, 0x94, 0x19, 0x3c, 0x77, 0xcb,
|
||||
0x8d, 0x66, 0x82, 0xae, 0x83, 0x46, 0x81, 0xcc, 0x05, 0x4d, 0x2e, 0x9c, 0x8e, 0x88, 0x1b, 0x43,
|
||||
0xd3, 0x0b, 0x78, 0x9e, 0x1e, 0x8c, 0x08, 0x66, 0x20, 0x63, 0x05, 0x9a, 0x92, 0x23, 0x42, 0x3a,
|
||||
0xd4, 0xd8, 0x08, 0xa2, 0xe1, 0x87, 0x45, 0x64, 0x40, 0x9d, 0x06, 0x77, 0xdd, 0x0c, 0x76, 0xd8,
|
||||
0x0c, 0x1a, 0x38, 0x2a, 0x1b, 0x3f, 0x85, 0xaa, 0x30, 0x62, 0x86, 0x70, 0x80, 0xd4, 0xac, 0x14,
|
||||
0x39, 0x2a, 0x2c, 0x1b, 0x4b, 0x50, 0x0f, 0xb7, 0x28, 0xa3, 0x0d, 0x1a, 0xdb, 0xa6, 0x26, 0xa1,
|
||||
0x64, 0x87, 0x5d, 0x95, 0x6c, 0x8b, 0x46, 0x8f, 0xb6, 0x47, 0x56, 0x59, 0x94, 0x8c, 0x17, 0xd0,
|
||||
0x88, 0x4c, 0x17, 0x7a, 0x06, 0x27, 0x84, 0xe9, 0xe2, 0x4f, 0x2b, 0xed, 0x68, 0x72, 0xe1, 0x7a,
|
||||
0x5a, 0x40, 0xdb, 0x2b, 0xd4, 0x6a, 0x3b, 0xdc, 0x03, 0x30, 0xdf, 0xd6, 0x66, 0x93, 0x57, 0x04,
|
||||
0x8c, 0x5f, 0x18, 0x50, 0xde, 0x20, 0x81, 0xf1, 0x24, 0xce, 0xaf, 0xe4, 0xc0, 0xbe, 0x46, 0x46,
|
||||
0xfd, 0xa1, 0x2c, 0x4d, 0xf8, 0xab, 0x22, 0xd4, 0xc2, 0x03, 0xe6, 0x88, 0x93, 0xa6, 0x7d, 0xee,
|
||||
0xb1, 0xc7, 0xd3, 0x12, 0x49, 0x90, 0xdd, 0xa7, 0xc0, 0xa1, 0x5b, 0x50, 0xb7, 0x1d, 0x9f, 0x78,
|
||||
0x94, 0xa3, 0x8d, 0xe7, 0x44, 0x40, 0x74, 0x19, 0x26, 0xf9, 0xef, 0x75, 0xd7, 0xb7, 0xa9, 0x91,
|
||||
0x63, 0xe6, 0x77, 0x02, 0x27, 0x6a, 0x69, 0x72, 0x78, 0x64, 0xe8, 0xee, 0x13, 0x4b, 0xaf, 0xb2,
|
||||
0xb5, 0x0d, 0x8b, 0xf4, 0x01, 0x0f, 0xdc, 0xc0, 0x1c, 0x30, 0x83, 0x3a, 0x81, 0x79, 0xc1, 0xf8,
|
||||
0x7d, 0xf1, 0x78, 0xab, 0x8c, 0xee, 0x83, 0x46, 0x7f, 0x89, 0x17, 0x80, 0x6b, 0x63, 0x17, 0x54,
|
||||
0x39, 0x09, 0x31, 0xe3, 0x51, 0x5d, 0x77, 0x7b, 0xdb, 0x27, 0x01, 0xcb, 0xfd, 0x09, 0x2c, 0x4a,
|
||||
0x74, 0x78, 0x03, 0x7b, 0x68, 0x07, 0x62, 0x5e, 0xbc, 0x60, 0x74, 0xa1, 0x2a, 0xdc, 0x76, 0x72,
|
||||
0x7c, 0xf3, 0x50, 0xdd, 0xe6, 0x06, 0x3e, 0x67, 0xad, 0x05, 0xcc, 0x78, 0x00, 0x4d, 0xd9, 0x63,
|
||||
0x27, 0xf5, 0x66, 0xa1, 0xd9, 0x93, 0x5c, 0x3c, 0x7f, 0x7c, 0xe4, 0x2a, 0x83, 0xc0, 0x09, 0xc5,
|
||||
0x48, 0x27, 0x15, 0x1e, 0xc1, 0x09, 0x4f, 0x76, 0xeb, 0xa5, 0x84, 0x3f, 0x94, 0x23, 0x24, 0x0b,
|
||||
0x61, 0x85, 0x66, 0x7c, 0x02, 0x53, 0x49, 0x33, 0x9d, 0xec, 0xe9, 0x2a, 0x4c, 0x6d, 0x25, 0xac,
|
||||
0x3b, 0x5f, 0xa4, 0x64, 0xb5, 0xd1, 0x85, 0x0a, 0xf7, 0x89, 0x49, 0x89, 0x77, 0xa1, 0x62, 0x32,
|
||||
0xdf, 0x59, 0x62, 0x3b, 0x90, 0x91, 0x3a, 0x4a, 0x46, 0xc5, 0x1c, 0x68, 0xfc, 0x59, 0x03, 0x8d,
|
||||
0xb9, 0xf2, 0xa4, 0xd4, 0x07, 0xa0, 0xd1, 0x37, 0x65, 0x31, 0xdf, 0xb9, 0xb1, 0x16, 0x9f, 0x1f,
|
||||
0xca, 0x0c, 0x8f, 0xee, 0x40, 0xc5, 0x0f, 0x0e, 0x06, 0xe1, 0xbb, 0xe4, 0x85, 0xf1, 0xc4, 0x0d,
|
||||
0x0a, 0xc5, 0x9c, 0x41, 0xa9, 0x6c, 0x73, 0x10, 0x6f, 0x91, 0x39, 0x54, 0xb6, 0x2b, 0x61, 0xce,
|
||||
0x40, 0x0f, 0xa0, 0xd6, 0xdb, 0x21, 0xbd, 0x5d, 0x62, 0x89, 0xd7, 0xc7, 0x4b, 0xe3, 0xc9, 0x2b,
|
||||
0x1c, 0x8c, 0x43, 0x16, 0xed, 0xbb, 0xc7, 0x42, 0x5e, 0x3d, 0x4a, 0xdf, 0x6c, 0x19, 0x30, 0x67,
|
||||
0x18, 0xd3, 0x22, 0x82, 0x27, 0xc5, 0x41, 0x2c, 0x82, 0x28, 0x4e, 0xe5, 0xc7, 0x50, 0x61, 0x93,
|
||||
0x44, 0xf7, 0xe4, 0xe6, 0xc9, 0x85, 0x2b, 0xf9, 0x9b, 0xa6, 0x08, 0x4e, 0xa4, 0xc3, 0x66, 0xac,
|
||||
0xea, 0x34, 0x8f, 0xa2, 0x23, 0x22, 0xc5, 0x75, 0xce, 0x41, 0x4d, 0x4c, 0x5e, 0x1d, 0x70, 0x3d,
|
||||
0x04, 0x9c, 0x85, 0x0a, 0xcf, 0xcf, 0xf4, 0xf9, 0x7c, 0x5e, 0x84, 0x32, 0x7d, 0x25, 0x48, 0xe6,
|
||||
0xcb, 0xed, 0x70, 0xdd, 0xf3, 0x12, 0x66, 0xd5, 0xde, 0x57, 0x96, 0xdd, 0x78, 0x14, 0x46, 0xe8,
|
||||
0xae, 0x1a, 0xa1, 0xcb, 0xe3, 0x77, 0xa1, 0x58, 0x86, 0x0f, 0xec, 0x57, 0x15, 0xd0, 0xd8, 0xab,
|
||||
0x61, 0x5a, 0x26, 0xd3, 0x53, 0x39, 0x6f, 0x60, 0x94, 0xdc, 0x8e, 0x0f, 0x68, 0x9e, 0xc9, 0x66,
|
||||
0x90, 0x9f, 0xc9, 0x8c, 0xb8, 0x41, 0xa1, 0x98, 0x33, 0x68, 0x97, 0x43, 0x7b, 0x48, 0x44, 0x22,
|
||||
0xe7, 0x74, 0xf9, 0xd4, 0x1e, 0x12, 0xcc, 0xf0, 0x94, 0xb7, 0x63, 0xfa, 0x3b, 0x22, 0x87, 0x73,
|
||||
0x78, 0x1d, 0xd3, 0xdf, 0xc1, 0x0c, 0x4f, 0x79, 0x8e, 0x39, 0x24, 0x22, 0x79, 0x73, 0x78, 0x6b,
|
||||
0x26, 0xed, 0x8f, 0xe2, 0x29, 0xcf, 0xb7, 0x3f, 0x23, 0xe2, 0xeb, 0x46, 0x0e, 0x6f, 0xc3, 0xfe,
|
||||
0x8c, 0x60, 0x86, 0xa7, 0x29, 0x4f, 0x55, 0x32, 0x52, 0xe4, 0x2c, 0x54, 0x7e, 0x64, 0x5b, 0xc1,
|
||||
0x8e, 0xda, 0x5c, 0x51, 0x9e, 0x08, 0x1a, 0xa5, 0x63, 0x3d, 0x11, 0x72, 0x90, 0xb9, 0xce, 0x2a,
|
||||
0x68, 0x74, 0xb5, 0x8e, 0x97, 0x36, 0xf1, 0x22, 0x0b, 0x95, 0x69, 0xd0, 0x68, 0x20, 0x33, 0xa6,
|
||||
0x32, 0x0d, 0x1a, 0x5d, 0x9e, 0xec, 0x56, 0x1a, 0x14, 0xb5, 0xb5, 0x1c, 0xb6, 0xfe, 0xbc, 0x0c,
|
||||
0x1a, 0xfb, 0xcc, 0x90, 0x4c, 0xc8, 0x1f, 0xc0, 0x44, 0x60, 0x7a, 0x7d, 0xc2, 0x2d, 0x61, 0x37,
|
||||
0xfc, 0x62, 0x77, 0x7d, 0xec, 0xc7, 0x8b, 0xf6, 0x73, 0x99, 0x82, 0x55, 0x85, 0xa3, 0xef, 0xba,
|
||||
0x4c, 0x4a, 0xd9, 0x75, 0xef, 0x46, 0x47, 0xae, 0x96, 0xf3, 0x8d, 0x8b, 0x71, 0xf9, 0xc1, 0x1d,
|
||||
0x9d, 0xbf, 0x97, 0x60, 0x42, 0x19, 0xd8, 0x37, 0xba, 0x0b, 0xca, 0x83, 0xe5, 0x3a, 0x8b, 0x91,
|
||||
0x73, 0xb8, 0xa9, 0x6e, 0x83, 0x99, 0x46, 0x41, 0x10, 0xff, 0x58, 0x81, 0x7a, 0xf4, 0x99, 0x26,
|
||||
0xb9, 0x20, 0x8b, 0x50, 0xde, 0xf3, 0x06, 0x62, 0x19, 0x2e, 0xe5, 0x7e, 0xfa, 0x69, 0x6f, 0x7a,
|
||||
0x03, 0x4c, 0x19, 0x74, 0x36, 0x81, 0x1d, 0x44, 0x61, 0xbf, 0x92, 0x4f, 0x7d, 0x4e, 0xe1, 0x98,
|
||||
0xb3, 0xd0, 0x33, 0x68, 0x5a, 0xc4, 0xef, 0x79, 0xf6, 0x88, 0x79, 0x3f, 0x1e, 0xff, 0x9b, 0xf9,
|
||||
0x22, 0xab, 0x31, 0x09, 0xcb, 0x0a, 0xa8, 0x0b, 0x0d, 0x7b, 0x68, 0xf6, 0x49, 0x27, 0xde, 0x44,
|
||||
0xae, 0xe7, 0xcb, 0x75, 0x43, 0x0a, 0x8e, 0xd9, 0x74, 0x6c, 0xdb, 0xe6, 0xbe, 0xdd, 0x73, 0x1d,
|
||||
0x26, 0x56, 0x3d, 0xea, 0xd8, 0x1e, 0xc7, 0x24, 0x2c, 0x2b, 0xa0, 0x25, 0xb1, 0x0d, 0xd7, 0x72,
|
||||
0x3e, 0xe6, 0xc4, 0xa1, 0x8a, 0xdf, 0x95, 0xce, 0x40, 0x79, 0xd3, 0x1b, 0x64, 0x6f, 0x37, 0x2c,
|
||||
0xaa, 0x19, 0xcd, 0x17, 0xa0, 0x29, 0xc5, 0x2b, 0x03, 0x74, 0x1e, 0x1a, 0x51, 0x14, 0xb2, 0x75,
|
||||
0xa4, 0xb9, 0x65, 0x80, 0xee, 0x89, 0x3d, 0xe9, 0x7d, 0x35, 0xcd, 0xcf, 0x25, 0xd2, 0x9c, 0x26,
|
||||
0xf6, 0xba, 0x47, 0x98, 0x8b, 0x96, 0x37, 0xa3, 0x2f, 0x4f, 0xb3, 0x33, 0x6c, 0xf0, 0x0d, 0xbf,
|
||||
0x0f, 0x3d, 0x87, 0x29, 0x6a, 0xda, 0xb7, 0x4c, 0x9f, 0x64, 0xbd, 0x09, 0xbd, 0x47, 0xdf, 0x30,
|
||||
0xf8, 0x17, 0xbd, 0x52, 0xce, 0x1b, 0x8f, 0xc0, 0x7d, 0xef, 0xe2, 0xff, 0x7b, 0x5c, 0xfc, 0x5f,
|
||||
0xb2, 0x5c, 0xfc, 0xa2, 0xe2, 0xe2, 0x2f, 0x64, 0xdd, 0xcb, 0x0c, 0x0e, 0xd9, 0xf8, 0x25, 0xf5,
|
||||
0x40, 0xb9, 0x98, 0xc3, 0x54, 0x4e, 0x94, 0x25, 0xd5, 0xc7, 0xe7, 0x71, 0x15, 0x23, 0xff, 0x51,
|
||||
0xd2, 0xc8, 0x5f, 0xce, 0x61, 0x1f, 0x72, 0xf2, 0x4b, 0xaa, 0x93, 0xcf, 0xeb, 0xfd, 0x3b, 0x6c,
|
||||
0xe5, 0x7f, 0x9b, 0x61, 0xe5, 0xef, 0xa8, 0x56, 0x7e, 0x4c, 0xd6, 0x7c, 0x5b, 0x5e, 0xfe, 0x37,
|
||||
0x59, 0x5e, 0x7e, 0x51, 0xf1, 0xf2, 0x63, 0x46, 0x96, 0x34, 0xf3, 0x4b, 0xaa, 0x99, 0xbf, 0x98,
|
||||
0xc3, 0x54, 0xdc, 0xfc, 0xa2, 0xe2, 0xe6, 0xf3, 0x3a, 0x95, 0xec, 0xfc, 0xa2, 0x62, 0xe7, 0xf3,
|
||||
0x88, 0x92, 0x9f, 0x5f, 0x54, 0xfc, 0x7c, 0x1e, 0x51, 0x32, 0xf4, 0x8b, 0x8a, 0xa1, 0xcf, 0x23,
|
||||
0x7e, 0xef, 0xe8, 0x8f, 0xe7, 0xe8, 0x7f, 0x99, 0xe5, 0xe8, 0x71, 0xba, 0xa3, 0xbf, 0x91, 0x1d,
|
||||
0xff, 0x7c, 0x4b, 0x7f, 0xf4, 0x1d, 0xf8, 0xb0, 0xa7, 0xbf, 0x97, 0xf0, 0xf4, 0x97, 0x72, 0xc8,
|
||||
0xff, 0xa3, 0xa6, 0xfe, 0x4f, 0xe3, 0x4c, 0xfd, 0x6d, 0xd9, 0xd4, 0x8f, 0x39, 0x45, 0x0e, 0xbb,
|
||||
0xfa, 0xfb, 0xaa, 0xab, 0xbf, 0x7a, 0x04, 0xae, 0x62, 0xeb, 0xd7, 0xd3, 0x6c, 0x7d, 0xfb, 0x08,
|
||||
0x2a, 0x99, 0xbe, 0xfe, 0xe3, 0xc3, 0xbe, 0xfe, 0xc6, 0x11, 0xf4, 0x52, 0x8d, 0xfd, 0x7a, 0x9a,
|
||||
0xb1, 0x3f, 0xca, 0xe8, 0x32, 0x9d, 0xfd, 0x87, 0x8a, 0xb3, 0xbf, 0x72, 0x94, 0x70, 0x7d, 0xf7,
|
||||
0xac, 0xfd, 0x57, 0x25, 0xd0, 0x36, 0x7d, 0xe2, 0x19, 0xff, 0x2a, 0x85, 0xd7, 0x5d, 0xb7, 0x41,
|
||||
0x63, 0xd7, 0xb5, 0xd2, 0x75, 0x5c, 0x31, 0x71, 0x1d, 0xa7, 0xfc, 0xff, 0x27, 0xbe, 0x8e, 0xbb,
|
||||
0x0d, 0x1a, 0xbb, 0xa0, 0x3d, 0x3e, 0xf3, 0x67, 0x45, 0x68, 0xc4, 0x97, 0xa5, 0xc7, 0xe6, 0xcb,
|
||||
0xd7, 0x54, 0x25, 0xf5, 0x9a, 0xea, 0x1a, 0x54, 0x3c, 0x76, 0x29, 0xc4, 0x9f, 0x9a, 0xe4, 0x2d,
|
||||
0x1b, 0xeb, 0x10, 0x73, 0x88, 0x41, 0xa0, 0x29, 0x5f, 0x05, 0x1f, 0x7f, 0x18, 0x17, 0xc5, 0x1f,
|
||||
0x2d, 0xba, 0x96, 0xbf, 0xec, 0x79, 0xe6, 0x81, 0x78, 0x27, 0x50, 0x2b, 0xe9, 0x6e, 0xbe, 0x6e,
|
||||
0x3b, 0xfd, 0xf4, 0x5b, 0x50, 0xe3, 0x6f, 0x45, 0xa8, 0x89, 0x8b, 0x55, 0x63, 0x11, 0xca, 0x6b,
|
||||
0xe4, 0x25, 0x1d, 0x88, 0xb8, 0x5a, 0x3d, 0x34, 0x90, 0xa7, 0x6c, 0x16, 0x02, 0x8f, 0x43, 0x98,
|
||||
0xb1, 0x04, 0x55, 0x71, 0x91, 0x7b, 0x7c, 0xee, 0x6d, 0xd0, 0x56, 0x5d, 0xe7, 0x6b, 0x30, 0xe7,
|
||||
0x4c, 0x98, 0xc0, 0xc4, 0x1f, 0xb9, 0x8e, 0x4f, 0xbe, 0xa5, 0xff, 0xc7, 0xcd, 0xfd, 0xbb, 0x04,
|
||||
0x15, 0xd6, 0x3b, 0xcd, 0xdc, 0x30, 0x4e, 0x29, 0x6f, 0x7a, 0xb1, 0x1f, 0x9b, 0x94, 0xae, 0xad,
|
||||
0x95, 0x71, 0xcb, 0x3e, 0x6c, 0x41, 0xf6, 0x61, 0x93, 0xd2, 0xbf, 0x50, 0x54, 0x86, 0xe2, 0xbf,
|
||||
0x3e, 0x84, 0xfa, 0xc8, 0x73, 0xfb, 0x1e, 0x0d, 0x90, 0x96, 0xf8, 0x5f, 0x97, 0x4a, 0x5b, 0x17,
|
||||
0x30, 0x1c, 0x11, 0x8c, 0x35, 0xa8, 0x87, 0xb5, 0xf1, 0x65, 0x99, 0x38, 0xd5, 0x59, 0x01, 0x21,
|
||||
0xd0, 0x2c, 0xd7, 0xe1, 0x73, 0x28, 0x63, 0xf6, 0x9b, 0xa6, 0xb9, 0x88, 0x13, 0x1b, 0x68, 0x03,
|
||||
0x87, 0xc5, 0xb9, 0xf3, 0x62, 0x1b, 0x98, 0x80, 0xc6, 0xaa, 0xe7, 0x8e, 0xd8, 0x15, 0x6e, 0xab,
|
||||
0x80, 0x00, 0xaa, 0xdd, 0xe1, 0xc8, 0xf5, 0x82, 0x56, 0x71, 0x6e, 0x39, 0xb4, 0x43, 0x75, 0xd0,
|
||||
0xd6, 0x5c, 0x87, 0xb4, 0x0a, 0xa8, 0x09, 0x35, 0xbc, 0xe7, 0x38, 0xb6, 0xd3, 0x6f, 0x15, 0x69,
|
||||
0x35, 0x5d, 0xf7, 0x56, 0x09, 0x9d, 0x80, 0xfa, 0x8a, 0xe9, 0xf4, 0xc8, 0x80, 0x58, 0xad, 0x32,
|
||||
0x6a, 0x40, 0xe5, 0x91, 0xe7, 0xb9, 0x5e, 0x4b, 0xbb, 0xf6, 0x02, 0x26, 0xd5, 0x4b, 0x63, 0x4a,
|
||||
0x5a, 0x37, 0xfb, 0x54, 0xab, 0x0e, 0x5a, 0xc7, 0x1d, 0x92, 0x56, 0x11, 0x4d, 0x41, 0x73, 0x9d,
|
||||
0xdf, 0xbc, 0xb3, 0xa6, 0x12, 0xed, 0x66, 0xd9, 0xeb, 0xed, 0xd8, 0xfb, 0xa4, 0x55, 0xa6, 0xad,
|
||||
0x0f, 0x3d, 0x62, 0x5a, 0x3d, 0x6f, 0x6f, 0xb8, 0xe5, 0xb7, 0x34, 0x54, 0x63, 0x77, 0xad, 0xad,
|
||||
0xca, 0xc3, 0xe9, 0xbf, 0xbf, 0x9e, 0x29, 0x7e, 0xf1, 0x7a, 0xa6, 0xf8, 0xcf, 0xd7, 0x33, 0xc5,
|
||||
0x5f, 0xbf, 0x99, 0x29, 0x7c, 0xf1, 0x66, 0xa6, 0xf0, 0xe5, 0x9b, 0x99, 0xc2, 0xa7, 0xa5, 0xd1,
|
||||
0xd6, 0x56, 0x95, 0x9d, 0xb6, 0xb7, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x63, 0x4b, 0x0b, 0x65,
|
||||
0x0a, 0x2a, 0x00, 0x00,
|
||||
}
|
||||
|
||||
func (m *Event) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -10294,6 +10306,13 @@ func (m *ModelProcessProgress) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if len(m.Message) > 0 {
|
||||
i -= len(m.Message)
|
||||
copy(dAtA[i:], m.Message)
|
||||
i = encodeVarintEvents(dAtA, i, uint64(len(m.Message)))
|
||||
i--
|
||||
dAtA[i] = 0x1a
|
||||
}
|
||||
if m.Done != 0 {
|
||||
i = encodeVarintEvents(dAtA, i, uint64(m.Done))
|
||||
i--
|
||||
|
@ -12250,6 +12269,10 @@ func (m *ModelProcessProgress) Size() (n int) {
|
|||
if m.Done != 0 {
|
||||
n += 1 + sovEvents(uint64(m.Done))
|
||||
}
|
||||
l = len(m.Message)
|
||||
if l > 0 {
|
||||
n += 1 + l + sovEvents(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
|
@ -23934,6 +23957,38 @@ func (m *ModelProcessProgress) Unmarshal(dAtA []byte) error {
|
|||
break
|
||||
}
|
||||
}
|
||||
case 3:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
|
||||
}
|
||||
var stringLen uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvents
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
stringLen |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
intStringLen := int(stringLen)
|
||||
if intStringLen < 0 {
|
||||
return ErrInvalidLengthEvents
|
||||
}
|
||||
postIndex := iNdEx + intStringLen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthEvents
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.Message = string(dAtA[iNdEx:postIndex])
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipEvents(dAtA[iNdEx:])
|
||||
|
|
|
@ -532,6 +532,12 @@ message Rpc {
|
|||
string textSlot = 6;
|
||||
string htmlSlot = 7;
|
||||
repeated anytype.model.Block anySlot = 8;
|
||||
repeated File fileSlot = 9;
|
||||
|
||||
message File {
|
||||
string name = 1;
|
||||
bytes data = 2;
|
||||
}
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
@ -1415,6 +1421,31 @@ message Rpc {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
message Record {
|
||||
message Request {
|
||||
string contextId = 1;
|
||||
string blockId = 2;
|
||||
google.protobuf.Struct record = 3;
|
||||
}
|
||||
|
||||
message Response {
|
||||
Error error = 1;
|
||||
google.protobuf.Struct record = 2;
|
||||
|
||||
message Error {
|
||||
Code code = 1;
|
||||
string description = 2;
|
||||
|
||||
enum Code {
|
||||
NULL = 0;
|
||||
UNKNOWN_ERROR = 1;
|
||||
BAD_INPUT = 2;
|
||||
// ...
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// common simple block command
|
||||
|
@ -1500,6 +1531,35 @@ message Rpc {
|
|||
}
|
||||
}
|
||||
|
||||
message Update {
|
||||
message Dataview{
|
||||
message Record {
|
||||
message Request {
|
||||
string contextId = 1;
|
||||
string blockId = 2;
|
||||
string recordId = 3;
|
||||
google.protobuf.Struct record = 4;
|
||||
}
|
||||
|
||||
message Response {
|
||||
Error error = 1;
|
||||
|
||||
message Error {
|
||||
Code code = 1;
|
||||
string description = 2;
|
||||
|
||||
enum Code {
|
||||
NULL = 0;
|
||||
UNKNOWN_ERROR = 1;
|
||||
BAD_INPUT = 2;
|
||||
// ...
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message Delete {
|
||||
message Dataview {
|
||||
message View {
|
||||
|
@ -1526,6 +1586,31 @@ message Rpc {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
message Record {
|
||||
message Request {
|
||||
string contextId = 1;
|
||||
string blockId = 2;
|
||||
string recordId = 3;
|
||||
}
|
||||
|
||||
message Response {
|
||||
Error error = 1;
|
||||
ResponseEvent event = 2;
|
||||
|
||||
message Error {
|
||||
Code code = 1;
|
||||
string description = 2;
|
||||
|
||||
enum Code {
|
||||
NULL = 0;
|
||||
UNKNOWN_ERROR = 1;
|
||||
BAD_INPUT = 2;
|
||||
// ...
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -581,6 +581,7 @@ message Model {
|
|||
|
||||
enum Type {
|
||||
DropFiles = 0;
|
||||
Import = 1;
|
||||
}
|
||||
|
||||
enum State {
|
||||
|
@ -594,6 +595,7 @@ message Model {
|
|||
message Progress {
|
||||
int64 total = 1;
|
||||
int64 done = 2;
|
||||
string message = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -90,6 +90,10 @@ service ClientCommands {
|
|||
rpc BlockCreateDataviewView (anytype.Rpc.Block.Create.Dataview.View.Request) returns (anytype.Rpc.Block.Create.Dataview.View.Response);
|
||||
rpc BlockDeleteDataviewView (anytype.Rpc.Block.Delete.Dataview.View.Request) returns (anytype.Rpc.Block.Delete.Dataview.View.Response);
|
||||
|
||||
rpc BlockCreateDataviewRecord (anytype.Rpc.Block.Create.Dataview.Record.Request) returns (anytype.Rpc.Block.Create.Dataview.Record.Response);
|
||||
rpc BlockUpdateDataviewRecord (anytype.Rpc.Block.Update.Dataview.Record.Request) returns (anytype.Rpc.Block.Update.Dataview.Record.Response);
|
||||
rpc BlockDeleteDataviewRecord (anytype.Rpc.Block.Delete.Dataview.Record.Request) returns (anytype.Rpc.Block.Delete.Dataview.Record.Response);
|
||||
|
||||
rpc BlockBookmarkFetch (anytype.Rpc.Block.Bookmark.Fetch.Request) returns (anytype.Rpc.Block.Bookmark.Fetch.Response);
|
||||
rpc BlockBookmarkCreateAndFetch (anytype.Rpc.Block.Bookmark.CreateAndFetch.Request) returns (anytype.Rpc.Block.Bookmark.CreateAndFetch.Response);
|
||||
rpc BlockFileCreateAndUpload (anytype.Rpc.Block.File.CreateAndUpload.Request) returns (anytype.Rpc.Block.File.CreateAndUpload.Response);
|
||||
|
|
|
@ -49,6 +49,12 @@ func (l *linkPreview) Fetch(ctx context.Context, fetchUrl string) (model.LinkPre
|
|||
if len(res.Description) == 0 {
|
||||
res.Description = l.findContent(rt.lastBody)
|
||||
}
|
||||
if !utf8.ValidString(res.Title) {
|
||||
res.Title = ""
|
||||
}
|
||||
if !utf8.ValidString(res.Description) {
|
||||
res.Description = ""
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
|
|
2
util/testMock/mockFile/file.go
Normal file
2
util/testMock/mockFile/file.go
Normal file
|
@ -0,0 +1,2 @@
|
|||
//go:generate mockgen -package mockFile -destination file_mock.go github.com/anytypeio/go-anytype-middleware/core/block/editor/file BlockService
|
||||
package mockFile
|
Loading…
Add table
Add a link
Reference in a new issue