diff --git a/api/tangled/cbor_gen.go b/api/tangled/cbor_gen.go --- a/api/tangled/cbor_gen.go +++ b/api/tangled/cbor_gen.go @@ -866,17 +866,8 @@ } cw := cbg.NewCborWriter(w) - fieldCount := 4 - if t.Subject == nil { - fieldCount-- - } - - if t.SubjectDid == nil { - fieldCount-- - } - - if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil { + if _, err := cw.Write([]byte{163}); err != nil { return err } @@ -899,36 +890,20 @@ return err } - // t.Subject (string) (string) - if t.Subject != nil { + // t.Subject (tangled.FeedStar_Subject) (struct) + if len("subject") > 1000000 { + return xerrors.Errorf("Value in field \"subject\" was too long") + } - if len("subject") > 1000000 { - return xerrors.Errorf("Value in field \"subject\" was too long") - } + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("subject"))); err != nil { + return err + } + if _, err := cw.WriteString(string("subject")); err != nil { + return err + } - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("subject"))); err != nil { - return err - } - if _, err := cw.WriteString(string("subject")); err != nil { - return err - } - - if t.Subject == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.Subject) > 1000000 { - return xerrors.Errorf("Value in field t.Subject was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Subject))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.Subject)); err != nil { - return err - } - } + if err := t.Subject.MarshalCBOR(cw); err != nil { + return err } // t.CreatedAt (string) (string) @@ -952,38 +927,6 @@ } if _, err := cw.WriteString(string(t.CreatedAt)); err != nil { return err - } - - // t.SubjectDid (string) (string) - if t.SubjectDid != nil { - - if len("subjectDid") > 1000000 { - return xerrors.Errorf("Value in field \"subjectDid\" was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("subjectDid"))); err != nil { - return err - } - if _, err := cw.WriteString(string("subjectDid")); err != nil { - return err - } - - if t.SubjectDid == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.SubjectDid) > 1000000 { - return xerrors.Errorf("Value in field t.SubjectDid was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.SubjectDid))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.SubjectDid)); err != nil { - return err - } - } } return nil } @@ -1013,7 +956,7 @@ n := extra - nameBuf := make([]byte, 10) + nameBuf := make([]byte, 9) for i := uint64(0); i < n; i++ { nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) if err != nil { @@ -1040,10 +983,11 @@ t.LexiconTypeID = string(sval) } - // t.Subject (string) (string) + // t.Subject (tangled.FeedStar_Subject) (struct) case "subject": { + b, err := cr.ReadByte() if err != nil { return err @@ -1052,14 +996,12 @@ if err := cr.UnreadByte(); err != nil { return err } - - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err + t.Subject = new(FeedStar_Subject) + if err := t.Subject.UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Subject pointer: %w", err) } - - t.Subject = (*string)(&sval) } + } // t.CreatedAt (string) (string) case "createdAt": @@ -1072,26 +1014,265 @@ t.CreatedAt = string(sval) } - // t.SubjectDid (string) (string) - case "subjectDid": + + default: + // Field doesn't exist on this type, so ignore it + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { + return err + } + } + } + + return nil +} +func (t *FeedStar_Repo) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + + cw := cbg.NewCborWriter(w) + + if _, err := cw.Write([]byte{162}); err != nil { + return err + } + + // t.Did (string) (string) + if len("did") > 1000000 { + return xerrors.Errorf("Value in field \"did\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("did"))); err != nil { + return err + } + if _, err := cw.WriteString(string("did")); err != nil { + return err + } + + if len(t.Did) > 1000000 { + return xerrors.Errorf("Value in field t.Did was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Did))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.Did)); err != nil { + return err + } + + // t.LexiconTypeID (string) (string) + if len("$type") > 1000000 { + return xerrors.Errorf("Value in field \"$type\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { + return err + } + if _, err := cw.WriteString(string("$type")); err != nil { + return err + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.feed.star#repo"))); err != nil { + return err + } + if _, err := cw.WriteString(string("sh.tangled.feed.star#repo")); err != nil { + return err + } + return nil +} + +func (t *FeedStar_Repo) UnmarshalCBOR(r io.Reader) (err error) { + *t = FeedStar_Repo{} + + cr := cbg.NewCborReader(r) + + maj, extra, err := cr.ReadHeader() + if err != nil { + return err + } + defer func() { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + }() + + if maj != cbg.MajMap { + return fmt.Errorf("cbor input should be of type map") + } + + if extra > cbg.MaxLength { + return fmt.Errorf("FeedStar_Repo: map struct too large (%d)", extra) + } + + n := extra + + nameBuf := make([]byte, 5) + for i := uint64(0); i < n; i++ { + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) + if err != nil { + return err + } + + if !ok { + // Field doesn't exist on this type, so ignore it + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { + return err + } + continue + } + + switch string(nameBuf[:nameLen]) { + // t.Did (string) (string) + case "did": { - b, err := cr.ReadByte() + sval, err := cbg.ReadStringWithMax(cr, 1000000) if err != nil { return err } - if b != cbg.CborNull[0] { - if err := cr.UnreadByte(); err != nil { - return err - } - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } + t.Did = string(sval) + } + // t.LexiconTypeID (string) (string) + case "$type": - t.SubjectDid = (*string)(&sval) + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err } + + t.LexiconTypeID = string(sval) + } + + default: + // Field doesn't exist on this type, so ignore it + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { + return err + } + } + } + + return nil +} +func (t *FeedStar_String) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + + cw := cbg.NewCborWriter(w) + + if _, err := cw.Write([]byte{162}); err != nil { + return err + } + + // t.Uri (string) (string) + if len("uri") > 1000000 { + return xerrors.Errorf("Value in field \"uri\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("uri"))); err != nil { + return err + } + if _, err := cw.WriteString(string("uri")); err != nil { + return err + } + + if len(t.Uri) > 1000000 { + return xerrors.Errorf("Value in field t.Uri was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Uri))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.Uri)); err != nil { + return err + } + + // t.LexiconTypeID (string) (string) + if len("$type") > 1000000 { + return xerrors.Errorf("Value in field \"$type\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { + return err + } + if _, err := cw.WriteString(string("$type")); err != nil { + return err + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.feed.star#string"))); err != nil { + return err + } + if _, err := cw.WriteString(string("sh.tangled.feed.star#string")); err != nil { + return err + } + return nil +} + +func (t *FeedStar_String) UnmarshalCBOR(r io.Reader) (err error) { + *t = FeedStar_String{} + + cr := cbg.NewCborReader(r) + + maj, extra, err := cr.ReadHeader() + if err != nil { + return err + } + defer func() { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + }() + + if maj != cbg.MajMap { + return fmt.Errorf("cbor input should be of type map") + } + + if extra > cbg.MaxLength { + return fmt.Errorf("FeedStar_String: map struct too large (%d)", extra) + } + + n := extra + + nameBuf := make([]byte, 5) + for i := uint64(0); i < n; i++ { + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) + if err != nil { + return err + } + + if !ok { + // Field doesn't exist on this type, so ignore it + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { + return err + } + continue + } + + switch string(nameBuf[:nameLen]) { + // t.Uri (string) (string) + case "uri": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.Uri = string(sval) + } + // t.LexiconTypeID (string) (string) + case "$type": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.LexiconTypeID = string(sval) } default: @@ -1111,13 +1292,9 @@ } cw := cbg.NewCborWriter(w) - fieldCount := 9 + fieldCount := 8 if t.OwnerDid == nil { - fieldCount-- - } - - if t.RepoDid == nil { fieldCount-- } @@ -1161,6 +1338,29 @@ } if err := t.Meta.MarshalCBOR(cw); err != nil { + return err + } + + // t.Repo (string) (string) + if len("repo") > 1000000 { + return xerrors.Errorf("Value in field \"repo\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repo"))); err != nil { + return err + } + if _, err := cw.WriteString(string("repo")); err != nil { + return err + } + + if len(t.Repo) > 1000000 { + return xerrors.Errorf("Value in field t.Repo was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Repo))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.Repo)); err != nil { return err } @@ -1229,38 +1429,6 @@ return err } - // t.RepoDid (string) (string) - if t.RepoDid != nil { - - if len("repoDid") > 1000000 { - return xerrors.Errorf("Value in field \"repoDid\" was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repoDid"))); err != nil { - return err - } - if _, err := cw.WriteString(string("repoDid")); err != nil { - return err - } - - if t.RepoDid == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.RepoDid) > 1000000 { - return xerrors.Errorf("Value in field t.RepoDid was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.RepoDid))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.RepoDid)); err != nil { - return err - } - } - } - // t.OwnerDid (string) (string) if t.OwnerDid != nil { @@ -1291,29 +1459,6 @@ return err } } - } - - // t.RepoName (string) (string) - if len("repoName") > 1000000 { - return xerrors.Errorf("Value in field \"repoName\" was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repoName"))); err != nil { - return err - } - if _, err := cw.WriteString(string("repoName")); err != nil { - return err - } - - if len(t.RepoName) > 1000000 { - return xerrors.Errorf("Value in field t.RepoName was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.RepoName))); err != nil { - return err - } - if _, err := cw.WriteString(string(t.RepoName)); err != nil { - return err } // t.CommitterDid (string) (string) @@ -1413,6 +1558,17 @@ } } + // t.Repo (string) (string) + case "repo": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.Repo = string(sval) + } // t.LexiconTypeID (string) (string) case "$type": @@ -1446,27 +1602,6 @@ t.OldSha = string(sval) } - // t.RepoDid (string) (string) - case "repoDid": - - { - b, err := cr.ReadByte() - if err != nil { - return err - } - if b != cbg.CborNull[0] { - if err := cr.UnreadByte(); err != nil { - return err - } - - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } - - t.RepoDid = (*string)(&sval) - } - } // t.OwnerDid (string) (string) case "ownerDid": @@ -1487,17 +1622,6 @@ t.OwnerDid = (*string)(&sval) } - } - // t.RepoName (string) (string) - case "repoName": - - { - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } - - t.RepoName = string(sval) } // t.CommitterDid (string) (string) case "committerDid": @@ -6518,6 +6642,10 @@ fieldCount-- } + if t.Name == nil { + fieldCount-- + } + if t.RepoDid == nil { fieldCount-- } @@ -6566,26 +6694,35 @@ } // t.Name (string) (string) - if len("name") > 1000000 { - return xerrors.Errorf("Value in field \"name\" was too long") - } + if t.Name != nil { - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("name"))); err != nil { - return err - } - if _, err := cw.WriteString(string("name")); err != nil { - return err - } + if len("name") > 1000000 { + return xerrors.Errorf("Value in field \"name\" was too long") + } - if len(t.Name) > 1000000 { - return xerrors.Errorf("Value in field t.Name was too long") - } + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("name"))); err != nil { + return err + } + if _, err := cw.WriteString(string("name")); err != nil { + return err + } - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Name))); err != nil { - return err - } - if _, err := cw.WriteString(string(t.Name)); err != nil { - return err + if t.Name == nil { + if _, err := cw.Write(cbg.CborNull); err != nil { + return err + } + } else { + if len(*t.Name) > 1000000 { + return xerrors.Errorf("Value in field t.Name was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Name))); err != nil { + return err + } + if _, err := cw.WriteString(string(*t.Name)); err != nil { + return err + } + } } // t.LexiconTypeID (string) (string) @@ -6920,12 +7057,22 @@ case "name": { - sval, err := cbg.ReadStringWithMax(cr, 1000000) + b, err := cr.ReadByte() if err != nil { return err } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } - t.Name = string(sval) + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.Name = (*string)(&sval) + } } // t.LexiconTypeID (string) (string) case "$type": @@ -7522,50 +7669,32 @@ } cw := cbg.NewCborWriter(w) - fieldCount := 5 - if t.Repo == nil { - fieldCount-- - } - - if t.RepoDid == nil { - fieldCount-- - } - - if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil { + if _, err := cw.Write([]byte{164}); err != nil { return err } // t.Repo (string) (string) - if t.Repo != nil { + if len("repo") > 1000000 { + return xerrors.Errorf("Value in field \"repo\" was too long") + } - if len("repo") > 1000000 { - return xerrors.Errorf("Value in field \"repo\" was too long") - } + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repo"))); err != nil { + return err + } + if _, err := cw.WriteString(string("repo")); err != nil { + return err + } - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repo"))); err != nil { - return err - } - if _, err := cw.WriteString(string("repo")); err != nil { - return err - } + if len(t.Repo) > 1000000 { + return xerrors.Errorf("Value in field t.Repo was too long") + } - if t.Repo == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.Repo) > 1000000 { - return xerrors.Errorf("Value in field t.Repo was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Repo))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.Repo)); err != nil { - return err - } - } + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Repo))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.Repo)); err != nil { + return err } // t.LexiconTypeID (string) (string) @@ -7585,38 +7714,6 @@ } if _, err := cw.WriteString(string("sh.tangled.repo.collaborator")); err != nil { return err - } - - // t.RepoDid (string) (string) - if t.RepoDid != nil { - - if len("repoDid") > 1000000 { - return xerrors.Errorf("Value in field \"repoDid\" was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repoDid"))); err != nil { - return err - } - if _, err := cw.WriteString(string("repoDid")); err != nil { - return err - } - - if t.RepoDid == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.RepoDid) > 1000000 { - return xerrors.Errorf("Value in field t.RepoDid was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.RepoDid))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.RepoDid)); err != nil { - return err - } - } } // t.Subject (string) (string) @@ -7712,22 +7809,12 @@ case "repo": { - b, err := cr.ReadByte() + sval, err := cbg.ReadStringWithMax(cr, 1000000) if err != nil { return err } - if b != cbg.CborNull[0] { - if err := cr.UnreadByte(); err != nil { - return err - } - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } - - t.Repo = (*string)(&sval) - } + t.Repo = string(sval) } // t.LexiconTypeID (string) (string) case "$type": @@ -7739,27 +7826,6 @@ } t.LexiconTypeID = string(sval) - } - // t.RepoDid (string) (string) - case "repoDid": - - { - b, err := cr.ReadByte() - if err != nil { - return err - } - if b != cbg.CborNull[0] { - if err := cr.UnreadByte(); err != nil { - return err - } - - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } - - t.RepoDid = (*string)(&sval) - } } // t.Subject (string) (string) case "subject": @@ -7801,7 +7867,7 @@ } cw := cbg.NewCborWriter(w) - fieldCount := 8 + fieldCount := 7 if t.Body == nil { fieldCount-- @@ -7812,14 +7878,6 @@ } if t.References == nil { - fieldCount-- - } - - if t.Repo == nil { - fieldCount-- - } - - if t.RepoDid == nil { fieldCount-- } @@ -7860,35 +7918,26 @@ } // t.Repo (string) (string) - if t.Repo != nil { + if len("repo") > 1000000 { + return xerrors.Errorf("Value in field \"repo\" was too long") + } - if len("repo") > 1000000 { - return xerrors.Errorf("Value in field \"repo\" was too long") - } + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repo"))); err != nil { + return err + } + if _, err := cw.WriteString(string("repo")); err != nil { + return err + } - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repo"))); err != nil { - return err - } - if _, err := cw.WriteString(string("repo")); err != nil { - return err - } + if len(t.Repo) > 1000000 { + return xerrors.Errorf("Value in field t.Repo was too long") + } - if t.Repo == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.Repo) > 1000000 { - return xerrors.Errorf("Value in field t.Repo was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Repo))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.Repo)); err != nil { - return err - } - } + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Repo))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.Repo)); err != nil { + return err } // t.LexiconTypeID (string) (string) @@ -7931,38 +7980,6 @@ } if _, err := cw.WriteString(string(t.Title)); err != nil { return err - } - - // t.RepoDid (string) (string) - if t.RepoDid != nil { - - if len("repoDid") > 1000000 { - return xerrors.Errorf("Value in field \"repoDid\" was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repoDid"))); err != nil { - return err - } - if _, err := cw.WriteString(string("repoDid")); err != nil { - return err - } - - if t.RepoDid == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.RepoDid) > 1000000 { - return xerrors.Errorf("Value in field t.RepoDid was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.RepoDid))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.RepoDid)); err != nil { - return err - } - } } // t.Mentions ([]string) (slice) @@ -8128,22 +8145,12 @@ case "repo": { - b, err := cr.ReadByte() + sval, err := cbg.ReadStringWithMax(cr, 1000000) if err != nil { return err } - if b != cbg.CborNull[0] { - if err := cr.UnreadByte(); err != nil { - return err - } - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } - - t.Repo = (*string)(&sval) - } + t.Repo = string(sval) } // t.LexiconTypeID (string) (string) case "$type": @@ -8166,27 +8173,6 @@ } t.Title = string(sval) - } - // t.RepoDid (string) (string) - case "repoDid": - - { - b, err := cr.ReadByte() - if err != nil { - return err - } - if b != cbg.CborNull[0] { - if err := cr.UnreadByte(); err != nil { - return err - } - - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } - - t.RepoDid = (*string)(&sval) - } } // t.Mentions ([]string) (slice) case "mentions": @@ -9965,13 +9951,9 @@ } cw := cbg.NewCborWriter(w) - fieldCount := 3 + fieldCount := 2 if t.Repo == nil { - fieldCount-- - } - - if t.RepoDid == nil { fieldCount-- } @@ -10033,38 +10015,6 @@ if _, err := cw.WriteString(string(t.Branch)); err != nil { return err } - - // t.RepoDid (string) (string) - if t.RepoDid != nil { - - if len("repoDid") > 1000000 { - return xerrors.Errorf("Value in field \"repoDid\" was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repoDid"))); err != nil { - return err - } - if _, err := cw.WriteString(string("repoDid")); err != nil { - return err - } - - if t.RepoDid == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.RepoDid) > 1000000 { - return xerrors.Errorf("Value in field t.RepoDid was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.RepoDid))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.RepoDid)); err != nil { - return err - } - } - } return nil } @@ -10093,7 +10043,7 @@ n := extra - nameBuf := make([]byte, 7) + nameBuf := make([]byte, 6) for i := uint64(0); i < n; i++ { nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) if err != nil { @@ -10140,27 +10090,6 @@ } t.Branch = string(sval) - } - // t.RepoDid (string) (string) - case "repoDid": - - { - b, err := cr.ReadByte() - if err != nil { - return err - } - if b != cbg.CborNull[0] { - if err := cr.UnreadByte(); err != nil { - return err - } - - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } - - t.RepoDid = (*string)(&sval) - } } default: @@ -10344,50 +10273,32 @@ } cw := cbg.NewCborWriter(w) - fieldCount := 3 - if t.Repo == nil { - fieldCount-- - } - - if t.RepoDid == nil { - fieldCount-- - } - - if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil { + if _, err := cw.Write([]byte{162}); err != nil { return err } // t.Repo (string) (string) - if t.Repo != nil { + if len("repo") > 1000000 { + return xerrors.Errorf("Value in field \"repo\" was too long") + } - if len("repo") > 1000000 { - return xerrors.Errorf("Value in field \"repo\" was too long") - } + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repo"))); err != nil { + return err + } + if _, err := cw.WriteString(string("repo")); err != nil { + return err + } - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repo"))); err != nil { - return err - } - if _, err := cw.WriteString(string("repo")); err != nil { - return err - } + if len(t.Repo) > 1000000 { + return xerrors.Errorf("Value in field t.Repo was too long") + } - if t.Repo == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.Repo) > 1000000 { - return xerrors.Errorf("Value in field t.Repo was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Repo))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.Repo)); err != nil { - return err - } - } + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Repo))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.Repo)); err != nil { + return err } // t.Branch (string) (string) @@ -10411,38 +10322,6 @@ } if _, err := cw.WriteString(string(t.Branch)); err != nil { return err - } - - // t.RepoDid (string) (string) - if t.RepoDid != nil { - - if len("repoDid") > 1000000 { - return xerrors.Errorf("Value in field \"repoDid\" was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repoDid"))); err != nil { - return err - } - if _, err := cw.WriteString(string("repoDid")); err != nil { - return err - } - - if t.RepoDid == nil { - if _, err := cw.Write(cbg.CborNull); err != nil { - return err - } - } else { - if len(*t.RepoDid) > 1000000 { - return xerrors.Errorf("Value in field t.RepoDid was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.RepoDid))); err != nil { - return err - } - if _, err := cw.WriteString(string(*t.RepoDid)); err != nil { - return err - } - } } return nil } @@ -10472,7 +10351,7 @@ n := extra - nameBuf := make([]byte, 7) + nameBuf := make([]byte, 6) for i := uint64(0); i < n; i++ { nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) if err != nil { @@ -10492,22 +10371,12 @@ case "repo": { - b, err := cr.ReadByte() + sval, err := cbg.ReadStringWithMax(cr, 1000000) if err != nil { return err } - if b != cbg.CborNull[0] { - if err := cr.UnreadByte(); err != nil { - return err - } - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } - - t.Repo = (*string)(&sval) - } + t.Repo = string(sval) } // t.Branch (string) (string) case "branch": @@ -10519,27 +10388,6 @@ } t.Branch = string(sval) - } - // t.RepoDid (string) (string) - case "repoDid": - - { - b, err := cr.ReadByte() - if err != nil { - return err - } - if b != cbg.CborNull[0] { - if err := cr.UnreadByte(); err != nil { - return err - } - - sval, err := cbg.ReadStringWithMax(cr, 1000000) - if err != nil { - return err - } - - t.RepoDid = (*string)(&sval) - } } default: diff --git a/api/tangled/feedstar.go b/api/tangled/feedstar.go --- a/api/tangled/feedstar.go +++ b/api/tangled/feedstar.go @@ -5,7 +5,13 @@ // schema: sh.tangled.feed.star import ( + "bytes" + "encoding/json" + "fmt" + "io" + "github.com/bluesky-social/indigo/lex/util" + cbg "github.com/whyrusleeping/cbor-gen" ) const ( @@ -17,8 +23,91 @@ } // // RECORDTYPE: FeedStar type FeedStar struct { - LexiconTypeID string `json:"$type,const=sh.tangled.feed.star" cborgen:"$type,const=sh.tangled.feed.star"` - CreatedAt string `json:"createdAt" cborgen:"createdAt"` - Subject *string `json:"subject,omitempty" cborgen:"subject,omitempty"` - SubjectDid *string `json:"subjectDid,omitempty" cborgen:"subjectDid,omitempty"` + LexiconTypeID string `json:"$type,const=sh.tangled.feed.star" cborgen:"$type,const=sh.tangled.feed.star"` + CreatedAt string `json:"createdAt" cborgen:"createdAt"` + Subject *FeedStar_Subject `json:"subject" cborgen:"subject"` +} + +// FeedStar_Repo is a "repo" in the sh.tangled.feed.star schema. +// +// RECORDTYPE: FeedStar_Repo +type FeedStar_Repo struct { + LexiconTypeID string `json:"$type,const=sh.tangled.feed.star#repo" cborgen:"$type,const=sh.tangled.feed.star#repo"` + Did string `json:"did" cborgen:"did"` +} + +// FeedStar_String is a "string" in the sh.tangled.feed.star schema. +// +// RECORDTYPE: FeedStar_String +type FeedStar_String struct { + LexiconTypeID string `json:"$type,const=sh.tangled.feed.star#string" cborgen:"$type,const=sh.tangled.feed.star#string"` + Uri string `json:"uri" cborgen:"uri"` +} + +type FeedStar_Subject struct { + FeedStar_Repo *FeedStar_Repo + FeedStar_String *FeedStar_String +} + +func (t *FeedStar_Subject) MarshalJSON() ([]byte, error) { + if t.FeedStar_Repo != nil { + t.FeedStar_Repo.LexiconTypeID = "sh.tangled.feed.star#repo" + return json.Marshal(t.FeedStar_Repo) + } + if t.FeedStar_String != nil { + t.FeedStar_String.LexiconTypeID = "sh.tangled.feed.star#string" + return json.Marshal(t.FeedStar_String) + } + return nil, fmt.Errorf("cannot marshal empty enum") +} +func (t *FeedStar_Subject) UnmarshalJSON(b []byte) error { + typ, err := util.TypeExtract(b) + if err != nil { + return err + } + + switch typ { + case "sh.tangled.feed.star#repo": + t.FeedStar_Repo = new(FeedStar_Repo) + return json.Unmarshal(b, t.FeedStar_Repo) + case "sh.tangled.feed.star#string": + t.FeedStar_String = new(FeedStar_String) + return json.Unmarshal(b, t.FeedStar_String) + + default: + return fmt.Errorf("closed enums must have a matching value") + } +} + +func (t *FeedStar_Subject) MarshalCBOR(w io.Writer) error { + + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + if t.FeedStar_Repo != nil { + return t.FeedStar_Repo.MarshalCBOR(w) + } + if t.FeedStar_String != nil { + return t.FeedStar_String.MarshalCBOR(w) + } + return fmt.Errorf("cannot cbor marshal empty enum") +} +func (t *FeedStar_Subject) UnmarshalCBOR(r io.Reader) error { + typ, b, err := util.CborTypeExtractReader(r) + if err != nil { + return err + } + + switch typ { + case "sh.tangled.feed.star#repo": + t.FeedStar_Repo = new(FeedStar_Repo) + return t.FeedStar_Repo.UnmarshalCBOR(bytes.NewReader(b)) + case "sh.tangled.feed.star#string": + t.FeedStar_String = new(FeedStar_String) + return t.FeedStar_String.UnmarshalCBOR(bytes.NewReader(b)) + + default: + return fmt.Errorf("closed enums must have a matching value") + } } diff --git a/api/tangled/gitrefUpdate.go b/api/tangled/gitrefUpdate.go --- a/api/tangled/gitrefUpdate.go +++ b/api/tangled/gitrefUpdate.go @@ -29,10 +29,8 @@ OwnerDid *string `json:"ownerDid,omitempty" cborgen:"ownerDid,omitempty"` // ref: Ref being updated Ref string `json:"ref" cborgen:"ref"` - // repoDid: DID of the repo itself - RepoDid *string `json:"repoDid,omitempty" cborgen:"repoDid,omitempty"` - // repoName: name of the repo - RepoName string `json:"repoName" cborgen:"repoName"` + // repo: DID of the repo itself + Repo string `json:"repo" cborgen:"repo"` } // GitRefUpdate_CommitCountBreakdown is a "commitCountBreakdown" in the sh.tangled.git.refUpdate schema. diff --git a/api/tangled/repocollaborator.go b/api/tangled/repocollaborator.go --- a/api/tangled/repocollaborator.go +++ b/api/tangled/repocollaborator.go @@ -19,8 +19,7 @@ type RepoCollaborator struct { LexiconTypeID string `json:"$type,const=sh.tangled.repo.collaborator" cborgen:"$type,const=sh.tangled.repo.collaborator"` CreatedAt string `json:"createdAt" cborgen:"createdAt"` - // repo: repo to add this user to - Repo *string `json:"repo,omitempty" cborgen:"repo,omitempty"` - RepoDid *string `json:"repoDid,omitempty" cborgen:"repoDid,omitempty"` - Subject string `json:"subject" cborgen:"subject"` + // repo: repo DID to add this user to + Repo string `json:"repo" cborgen:"repo"` + Subject string `json:"subject" cborgen:"subject"` } diff --git a/api/tangled/repoissue.go b/api/tangled/repoissue.go --- a/api/tangled/repoissue.go +++ b/api/tangled/repoissue.go @@ -22,7 +22,6 @@ CreatedAt string `json:"createdAt" cborgen:"createdAt"` Mentions []string `json:"mentions,omitempty" cborgen:"mentions,omitempty"` References []string `json:"references,omitempty" cborgen:"references,omitempty"` - Repo *string `json:"repo,omitempty" cborgen:"repo,omitempty"` - RepoDid *string `json:"repoDid,omitempty" cborgen:"repoDid,omitempty"` + Repo string `json:"repo" cborgen:"repo"` Title string `json:"title" cborgen:"title"` } diff --git a/api/tangled/repopull.go b/api/tangled/repopull.go --- a/api/tangled/repopull.go +++ b/api/tangled/repopull.go @@ -39,14 +39,12 @@ // RepoPull_Source is a "source" in the sh.tangled.repo.pull schema. type RepoPull_Source struct { - Branch string `json:"branch" cborgen:"branch"` - Repo *string `json:"repo,omitempty" cborgen:"repo,omitempty"` - RepoDid *string `json:"repoDid,omitempty" cborgen:"repoDid,omitempty"` + Branch string `json:"branch" cborgen:"branch"` + Repo *string `json:"repo,omitempty" cborgen:"repo,omitempty"` } // RepoPull_Target is a "target" in the sh.tangled.repo.pull schema. type RepoPull_Target struct { - Branch string `json:"branch" cborgen:"branch"` - Repo *string `json:"repo,omitempty" cborgen:"repo,omitempty"` - RepoDid *string `json:"repoDid,omitempty" cborgen:"repoDid,omitempty"` + Branch string `json:"branch" cborgen:"branch"` + Repo string `json:"repo" cborgen:"repo"` } diff --git a/api/tangled/tangledrepo.go b/api/tangled/tangledrepo.go --- a/api/tangled/tangledrepo.go +++ b/api/tangled/tangledrepo.go @@ -24,8 +24,8 @@ Knot string `json:"knot" cborgen:"knot"` // labels: List of labels that this repo subscribes to Labels []string `json:"labels,omitempty" cborgen:"labels,omitempty"` - // name: name of the repo - Name string `json:"name" cborgen:"name"` + // name: Cosmetic name of the repo. + Name *string `json:"name,omitempty" cborgen:"name,omitempty"` // repoDid: DID of the repo itself, if assigned RepoDid *string `json:"repoDid,omitempty" cborgen:"repoDid,omitempty"` // source: source of the repo diff --git a/cmd/cborgen/cborgen.go b/cmd/cborgen/cborgen.go --- a/cmd/cborgen/cborgen.go +++ b/cmd/cborgen/cborgen.go @@ -17,6 +17,8 @@ tangled.ActorProfile{}, tangled.FeedReaction{}, tangled.FeedStar{}, + tangled.FeedStar_Repo{}, + tangled.FeedStar_String{}, tangled.GitRefUpdate{}, tangled.GitRefUpdate_CommitCountBreakdown{}, tangled.GitRefUpdate_IndividualEmailCommitCount{}, diff --git a/knotserver/xrpc/merge.go b/knotserver/xrpc/merge.go --- a/knotserver/xrpc/merge.go +++ b/knotserver/xrpc/merge.go @@ -118,9 +118,8 @@ go func() { refUpdate := tangled.GitRefUpdate{ - RepoDid: &repoDid, + Repo: repoDid, OwnerDid: &data.Did, - RepoName: data.Name, Ref: data.Branch, OldSha: oldSha.String(), NewSha: newSha.String(), diff --git a/lexicons/feed/star.json b/lexicons/feed/star.json --- a/lexicons/feed/star.json +++ b/lexicons/feed/star.json @@ -10,21 +10,39 @@ "record": { "type": "object", "required": [ + "subject", "createdAt" ], "properties": { "subject": { - "type": "string", - "format": "at-uri" - }, - "subjectDid": { - "type": "string", - "format": "did" + "type": "union", + "refs": ["#repo", "#string"], + "closed": true }, "createdAt": { "type": "string", "format": "datetime" } + } + } + }, + "repo": { + "type": "object", + "required": ["did"], + "properties": { + "did": { + "type": "string", + "format": "did" + } + } + }, + "string": { + "type": "object", + "required": ["uri"], + "properties": { + "uri": { + "type": "string", + "format": "at-uri" } } } diff --git a/lexicons/git/refUpdate.json b/lexicons/git/refUpdate.json --- a/lexicons/git/refUpdate.json +++ b/lexicons/git/refUpdate.json @@ -11,7 +11,7 @@ "required": [ "ref", "committerDid", - "repoName", + "repo", "oldSha", "newSha", "meta" @@ -33,14 +33,10 @@ "description": "did of the owner of the repo", "format": "did" }, - "repoDid": { + "repo": { "type": "string", "description": "DID of the repo itself", "format": "did" - }, - "repoName": { - "type": "string", - "description": "name of the repo" }, "oldSha": { "type": "string", diff --git a/lexicons/issue/issue.json b/lexicons/issue/issue.json --- a/lexicons/issue/issue.json +++ b/lexicons/issue/issue.json @@ -9,13 +9,9 @@ "key": "tid", "record": { "type": "object", - "required": ["title", "createdAt"], + "required": ["repo", "title", "createdAt"], "properties": { "repo": { - "type": "string", - "format": "at-uri" - }, - "repoDid": { "type": "string", "format": "did" }, diff --git a/lexicons/pulls/pull.json b/lexicons/pulls/pull.json --- a/lexicons/pulls/pull.json +++ b/lexicons/pulls/pull.json @@ -65,14 +65,11 @@ "target": { "type": "object", "required": [ + "repo", "branch" ], "properties": { "repo": { - "type": "string", - "format": "at-uri" - }, - "repoDid": { "type": "string", "format": "did" }, @@ -91,10 +88,6 @@ "type": "string" }, "repo": { - "type": "string", - "format": "at-uri" - }, - "repoDid": { "type": "string", "format": "did" } diff --git a/lexicons/repo/collaborator.json b/lexicons/repo/collaborator.json --- a/lexicons/repo/collaborator.json +++ b/lexicons/repo/collaborator.json @@ -11,6 +11,7 @@ "type": "object", "required": [ "subject", + "repo", "createdAt" ], "properties": { @@ -20,11 +21,7 @@ }, "repo": { "type": "string", - "description": "repo to add this user to", - "format": "at-uri" - }, - "repoDid": { - "type": "string", + "description": "repo DID to add this user to", "format": "did" }, "createdAt": { diff --git a/lexicons/repo/repo.json b/lexicons/repo/repo.json --- a/lexicons/repo/repo.json +++ b/lexicons/repo/repo.json @@ -6,18 +6,17 @@ "defs": { "main": { "type": "record", - "key": "tid", + "key": "any", "record": { "type": "object", "required": [ - "name", "knot", "createdAt" ], "properties": { "name": { "type": "string", - "description": "name of the repo" + "description": "Cosmetic name of the repo." }, "knot": { "type": "string",