Skip to content

Commit dce9150

Browse files
committed
feat: initial promise implementation
1 parent 1f6ca3d commit dce9150

9 files changed

Lines changed: 868 additions & 1 deletion

File tree

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ gen:
2929
rm ./ucan/invocation/datamodel/*_gen.*.go || true
3030
cd ./ucan/invocation/datamodel/gen && go run ./main.go
3131

32+
rm ./ucan/promise/datamodel/*_gen.go || true
33+
cd ./ucan/promise/datamodel/gen && go run ./main.go
34+
3235
rm ./ucan/receipt/datamodel/*_gen.go || true
3336
cd ./ucan/receipt/datamodel/gen && go run ./main.go
3437

ipld/datamodel/any.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,18 @@ func (a *Any) MarshalCBOR(w io.Writer) error {
8686

8787
rt := reflect.TypeOf(a.Value)
8888
switch rt.Kind() {
89+
// case reflect.Map:
90+
// if rt.Key().Kind() == reflect.String {
91+
// rv := reflect.ValueOf(a.Value)
92+
// m := make(Map, rv.Len())
93+
// for _, rk := range rv.MapKeys() {
94+
// m[rk.String()] = rv.MapIndex(rk).Interface()
95+
// }
96+
// if err := m.MarshalCBOR(w); err != nil {
97+
// return fmt.Errorf("marshaling map: %w", err)
98+
// }
99+
// return nil
100+
// }
89101
case reflect.Slice:
90102
cw := cbg.NewCborWriter(w)
91103
s := reflect.ValueOf(a.Value)
@@ -95,7 +107,7 @@ func (a *Any) MarshalCBOR(w io.Writer) error {
95107
for i := range s.Len() {
96108
a := Any{Value: s.Index(i).Interface()}
97109
if err := a.MarshalCBOR(w); err != nil {
98-
return fmt.Errorf("marshalling slice index: %d: %w", i, err)
110+
return fmt.Errorf("marshaling slice index: %d: %w", i, err)
99111
}
100112
}
101113
return nil
@@ -226,6 +238,18 @@ func (a *Any) MarshalDagJSON(w io.Writer) error {
226238

227239
rt := reflect.TypeOf(a.Value)
228240
switch rt.Kind() {
241+
// case reflect.Map:
242+
// if rt.Key().Kind() == reflect.String {
243+
// rv := reflect.ValueOf(a.Value)
244+
// m := make(Map, rv.Len())
245+
// for _, rk := range rv.MapKeys() {
246+
// m[rk.String()] = rv.MapIndex(rk).Interface()
247+
// }
248+
// if err := m.MarshalDagJSON(w); err != nil {
249+
// return fmt.Errorf("marshaling map: %w", err)
250+
// }
251+
// return nil
252+
// }
229253
case reflect.Slice:
230254
if err := jw.WriteArrayOpen(); err != nil {
231255
return err

ipld/datamodel/any_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ func TestAny(t *testing.T) {
2626
"str": "X",
2727
"bytes": []byte{2},
2828
},
29+
// map[string]cid.Cid{
30+
// "await/ok": testutil.RandomCID(t),
31+
// },
2932
}
3033

3134
for _, v := range values {

ucan/promise/datamodel/cbor_gen.go

Lines changed: 308 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)