porting all github actions from bluesky-social/indigo to tangled CI

mst: expose NodeData and TreeEntry types

+11 -11
mst/cbor_gen.go
··· 18 18 var _ = math.E 19 19 var _ = sort.Sort 20 20 21 - func (t *nodeData) MarshalCBOR(w io.Writer) error { 21 + func (t *NodeData) MarshalCBOR(w io.Writer) error { 22 22 if t == nil { 23 23 _, err := w.Write(cbg.CborNull) 24 24 return err ··· 30 30 return err 31 31 } 32 32 33 - // t.Entries ([]mst.treeEntry) (slice) 33 + // t.Entries ([]mst.TreeEntry) (slice) 34 34 if len("e") > 1000000 { 35 35 return xerrors.Errorf("Value in field \"e\" was too long") 36 36 } ··· 81 81 return nil 82 82 } 83 83 84 - func (t *nodeData) UnmarshalCBOR(r io.Reader) (err error) { 85 - *t = nodeData{} 84 + func (t *NodeData) UnmarshalCBOR(r io.Reader) (err error) { 85 + *t = NodeData{} 86 86 87 87 cr := cbg.NewCborReader(r) 88 88 ··· 101 101 } 102 102 103 103 if extra > cbg.MaxLength { 104 - return fmt.Errorf("nodeData: map struct too large (%d)", extra) 104 + return fmt.Errorf("NodeData: map struct too large (%d)", extra) 105 105 } 106 106 107 107 n := extra ··· 122 122 } 123 123 124 124 switch string(nameBuf[:nameLen]) { 125 - // t.Entries ([]mst.treeEntry) (slice) 125 + // t.Entries ([]mst.TreeEntry) (slice) 126 126 case "e": 127 127 128 128 maj, extra, err = cr.ReadHeader() ··· 139 139 } 140 140 141 141 if extra > 0 { 142 - t.Entries = make([]treeEntry, extra) 142 + t.Entries = make([]TreeEntry, extra) 143 143 } 144 144 145 145 for i := 0; i < int(extra); i++ { ··· 195 195 196 196 return nil 197 197 } 198 - func (t *treeEntry) MarshalCBOR(w io.Writer) error { 198 + func (t *TreeEntry) MarshalCBOR(w io.Writer) error { 199 199 if t == nil { 200 200 _, err := w.Write(cbg.CborNull) 201 201 return err ··· 294 294 return nil 295 295 } 296 296 297 - func (t *treeEntry) UnmarshalCBOR(r io.Reader) (err error) { 298 - *t = treeEntry{} 297 + func (t *TreeEntry) UnmarshalCBOR(r io.Reader) (err error) { 298 + *t = TreeEntry{} 299 299 300 300 cr := cbg.NewCborReader(r) 301 301 ··· 314 314 } 315 315 316 316 if extra > cbg.MaxLength { 317 - return fmt.Errorf("treeEntry: map struct too large (%d)", extra) 317 + return fmt.Errorf("TreeEntry: map struct too large (%d)", extra) 318 318 } 319 319 320 320 n := extra
+8 -8
mst/mst.go
··· 105 105 // the CBOR codec. 106 106 func CBORTypes() []reflect.Type { 107 107 return []reflect.Type{ 108 - reflect.TypeOf(nodeData{}), 109 - reflect.TypeOf(treeEntry{}), 108 + reflect.TypeOf(NodeData{}), 109 + reflect.TypeOf(TreeEntry{}), 110 110 } 111 111 } 112 112 113 113 // MST tree node as gets serialized to CBOR. Note that the CBOR fields are all 114 114 // single-character. 115 - type nodeData struct { 115 + type NodeData struct { 116 116 Left *cid.Cid `cborgen:"l"` // [nullable] pointer to lower-level subtree to the "left" of this path/key 117 - Entries []treeEntry `cborgen:"e"` // ordered list of entries at this node 117 + Entries []TreeEntry `cborgen:"e"` // ordered list of entries at this node 118 118 } 119 119 120 - // treeEntry are elements of nodeData's Entries. 121 - type treeEntry struct { 120 + // TreeEntry are elements of NodeData's Entries. 121 + type TreeEntry struct { 122 122 PrefixLen int64 `cborgen:"p"` // count of characters shared with previous path/key in tree 123 123 KeySuffix []byte `cborgen:"k"` // remaining part of path/key (appended to "previous key") 124 124 Val cid.Cid `cborgen:"v"` // CID pointer at this path/key ··· 189 189 // otherwise this is a virtual/pointer struct and we need to hydrate from 190 190 // blockstore before returning entries 191 191 if mst.pointer != cid.Undef { 192 - var nd nodeData 192 + var nd NodeData 193 193 if err := mst.cst.Get(ctx, mst.pointer, &nd); err != nil { 194 194 return nil, err 195 195 } ··· 210 210 } 211 211 212 212 // golang-specific helper that calls in to deserializeNodeData 213 - func entriesFromNodeData(ctx context.Context, nd *nodeData, cst cbor.IpldStore) ([]nodeEntry, error) { 213 + func entriesFromNodeData(ctx context.Context, nd *NodeData, cst cbor.IpldStore) ([]nodeEntry, error) { 214 214 layer := -1 215 215 if len(nd.Entries) > 0 { 216 216 // NOTE(bnewbold): can compute the layer on the first KeySuffix, because for the first entry that field is a complete key
+2 -2
mst/mst_interop_test.go
··· 166 166 t.Fatal(err) 167 167 } 168 168 169 - simple_nd := nodeData{ 169 + simple_nd := NodeData{ 170 170 Left: nil, 171 - Entries: []treeEntry{ 171 + Entries: []TreeEntry{ 172 172 { 173 173 PrefixLen: 0, 174 174 KeySuffix: []byte("com.example.record/3jqfcqzm3fo2j"),
+4 -4
mst/mst_util.go
··· 66 66 } 67 67 68 68 // Typescript: deserializeNodeData(storage, data, layer) 69 - func deserializeNodeData(ctx context.Context, cst cbor.IpldStore, nd *nodeData, layer int) ([]nodeEntry, error) { 69 + func deserializeNodeData(ctx context.Context, cst cbor.IpldStore, nd *NodeData, layer int) ([]nodeEntry, error) { 70 70 entries := []nodeEntry{} 71 71 if nd.Left != nil { 72 72 // Note: like Typescript, this is actually a lazy load ··· 111 111 } 112 112 113 113 // Typescript: serializeNodeData(entries) -> NodeData 114 - func serializeNodeData(entries []nodeEntry) (*nodeData, error) { 115 - var data nodeData 114 + func serializeNodeData(entries []nodeEntry) (*NodeData, error) { 115 + var data NodeData 116 116 117 117 i := 0 118 118 if len(entries) > 0 && entries[0].isTree() { ··· 157 157 } 158 158 159 159 prefixLen := countPrefixLen(lastKey, leaf.Key) 160 - data.Entries = append(data.Entries, treeEntry{ 160 + data.Entries = append(data.Entries, TreeEntry{ 161 161 PrefixLen: int64(prefixLen), 162 162 KeySuffix: []byte(leaf.Key)[prefixLen:], 163 163 Val: leaf.Val,