diff --git a/bindings/broadcast.go b/bindings/broadcast.go deleted file mode 100644 index 98f85ec63aa6ea1c27ae9d2657d0c8dffbd9b8bd..0000000000000000000000000000000000000000 --- a/bindings/broadcast.go +++ /dev/null @@ -1,16 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Copyright © 2020 xx network SEZC // -// // -// Use of this source code is governed by a license that can be found in the // -// LICENSE file // -//////////////////////////////////////////////////////////////////////////////// - -package bindings - -import ( - "gitlab.com/elixxir/client/bindings" -) - -type Channel struct { - api *bindings.Channel -} diff --git a/main.go b/main.go index 6859b94572fbb62267f9a4471f95646b79795896..2bbdef83f6ea721a6c39fef2e320d799d5642040 100644 --- a/main.go +++ b/main.go @@ -11,10 +11,8 @@ package main import ( "fmt" - "gitlab.com/elixxir/xxdk-wasm/bindings" + "gitlab.com/elixxir/xxdk-wasm/wasm" "os" - "os/signal" - "syscall" "syscall/js" ) @@ -22,64 +20,63 @@ func main() { fmt.Println("Go Web Assembly") // wasm/cmix.go - js.Global().Set("NewCmix", js.FuncOf(bindings.NewCmix)) - js.Global().Set("LoadCmix", js.FuncOf(bindings.LoadCmix)) + js.Global().Set("NewCmix", js.FuncOf(wasm.NewCmix)) + js.Global().Set("LoadCmix", js.FuncOf(wasm.LoadCmix)) // wasm/e2e.go - js.Global().Set("Login", js.FuncOf(bindings.Login)) - js.Global().Set("LoginEphemeral", js.FuncOf(bindings.LoginEphemeral)) + js.Global().Set("Login", js.FuncOf(wasm.Login)) + js.Global().Set("LoginEphemeral", js.FuncOf(wasm.LoginEphemeral)) // wasm/identity.go js.Global().Set("StoreReceptionIdentity", - js.FuncOf(bindings.StoreReceptionIdentity)) + js.FuncOf(wasm.StoreReceptionIdentity)) js.Global().Set("LoadReceptionIdentity", - js.FuncOf(bindings.LoadReceptionIdentity)) + js.FuncOf(wasm.LoadReceptionIdentity)) js.Global().Set("GetIDFromContact", - js.FuncOf(bindings.GetIDFromContact)) + js.FuncOf(wasm.GetIDFromContact)) js.Global().Set("GetPubkeyFromContact", - js.FuncOf(bindings.GetPubkeyFromContact)) + js.FuncOf(wasm.GetPubkeyFromContact)) js.Global().Set("SetFactsOnContact", - js.FuncOf(bindings.SetFactsOnContact)) + js.FuncOf(wasm.SetFactsOnContact)) js.Global().Set("GetFactsFromContact", - js.FuncOf(bindings.GetFactsFromContact)) + js.FuncOf(wasm.GetFactsFromContact)) // wasm/params.go js.Global().Set("GetDefaultCMixParams", - js.FuncOf(bindings.GetDefaultCMixParams)) + js.FuncOf(wasm.GetDefaultCMixParams)) js.Global().Set("GetDefaultE2EParams", - js.FuncOf(bindings.GetDefaultE2EParams)) + js.FuncOf(wasm.GetDefaultE2EParams)) js.Global().Set("GetDefaultFileTransferParams", - js.FuncOf(bindings.GetDefaultFileTransferParams)) + js.FuncOf(wasm.GetDefaultFileTransferParams)) js.Global().Set("GetDefaultSingleUseParams", - js.FuncOf(bindings.GetDefaultSingleUseParams)) + js.FuncOf(wasm.GetDefaultSingleUseParams)) js.Global().Set("GetDefaultE2eFileTransferParams", - js.FuncOf(bindings.GetDefaultE2eFileTransferParams)) + js.FuncOf(wasm.GetDefaultE2eFileTransferParams)) // wasm/logging.go - js.Global().Set("LogLevel", js.FuncOf(bindings.LogLevel)) - js.Global().Set("RegisterLogWriter", js.FuncOf(bindings.RegisterLogWriter)) - js.Global().Set("EnableGrpcLogs", js.FuncOf(bindings.EnableGrpcLogs)) + js.Global().Set("LogLevel", js.FuncOf(wasm.LogLevel)) + js.Global().Set("RegisterLogWriter", js.FuncOf(wasm.RegisterLogWriter)) + js.Global().Set("EnableGrpcLogs", js.FuncOf(wasm.EnableGrpcLogs)) // wasm/ndf.go js.Global().Set("DownloadAndVerifySignedNdfWithUrl", - js.FuncOf(bindings.DownloadAndVerifySignedNdfWithUrl)) + js.FuncOf(wasm.DownloadAndVerifySignedNdfWithUrl)) // wasm/version.go - js.Global().Set("GetVersion", js.FuncOf(bindings.GetVersion)) - js.Global().Set("GetGitVersion", js.FuncOf(bindings.GetGitVersion)) - js.Global().Set("GetDependencies", js.FuncOf(bindings.GetDependencies)) + js.Global().Set("GetVersion", js.FuncOf(wasm.GetVersion)) + js.Global().Set("GetGitVersion", js.FuncOf(wasm.GetGitVersion)) + js.Global().Set("GetDependencies", js.FuncOf(wasm.GetDependencies)) // wasm/secrets.go - js.Global().Set("GenerateSecret", js.FuncOf(bindings.GenerateSecret)) + js.Global().Set("GenerateSecret", js.FuncOf(wasm.GenerateSecret)) // wasm/dummy.go js.Global().Set("NewDummyTrafficManager", - js.FuncOf(bindings.NewDummyTrafficManager)) + js.FuncOf(wasm.NewDummyTrafficManager)) - // Wait until the user terminates the program - c := make(chan os.Signal) - signal.Notify(c, os.Interrupt, syscall.SIGTERM) - <-c + // bindings/broadcast + js.Global().Set("NewBroadcastChannel", js.FuncOf(wasm.NewBroadcastChannel)) + <-make(chan bool) os.Exit(0) } diff --git a/wasm/broadcast.go b/wasm/broadcast.go new file mode 100644 index 0000000000000000000000000000000000000000..65152f1b054fa02840e43141d29f03cf0e863cff --- /dev/null +++ b/wasm/broadcast.go @@ -0,0 +1,170 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright © 2020 xx network SEZC // +// // +// Use of this source code is governed by a license that can be found in the // +// LICENSE file // +//////////////////////////////////////////////////////////////////////////////// + +//go:build js && wasm + +package wasm + +import ( + "gitlab.com/elixxir/client/bindings" + "syscall/js" +) + +type Channel struct { + api *bindings.Channel +} + +// newE2eJS creates a new Javascript compatible object (map[string]interface{}) +// that matches the E2e structure. +func newChannelJS(api *bindings.Channel) map[string]interface{} { + c := Channel{api} + chMap := map[string]interface{}{ + "Listen": c.Listen, + "Broadcast": c.Broadcast, + "BroadcastAsymmetric": c.BroadcastAsymmetric, + "MaxPayloadSize": c.MaxPayloadSize, + "MaxAsymmetricPayloadSize": c.MaxAsymmetricPayloadSize, + "Get": c.Get, + "Stop": c.Stop, + } + + return chMap +} + +// NewBroadcastChannel creates a bindings-layer broadcast channel and starts +// listening for new messages +// +// Parameters: +// - args[0] - ID of Cmix object in tracker (int). +// - args[1] - JSON of [bindings.ChannelDef] (Uint8Array). +// +// Returns: +// - Javascript representation of the Channel object. +// - Throws a TypeError if creation fails. +func NewBroadcastChannel(_ js.Value, args []js.Value) interface{} { + channelDefinition := CopyBytesToGo(args[1]) + + api, err := bindings.NewBroadcastChannel(args[0].Int(), channelDefinition) + if err != nil { + Throw(TypeError, err.Error()) + return nil + } + + return newChannelJS(api) +} + +// broadcastListener wraps Javascript callbacks to adhere to the +// [bindings.BroadcastListener] interface. +type broadcastListener struct { + callback func(args ...interface{}) js.Value +} + +func (bl *broadcastListener) Callback(payload []byte, err error) { + bl.callback(CopyBytesToJS(payload), err.Error()) +} + +// Listen registers a BroadcastListener for a given method. This allows users to +// handle incoming broadcast messages. +// +// Parameters: +// - args[0] - Javascript object that has functions that implement the +// [bindings.BroadcastListener] interface. +// - args[1] - number corresponding to broadcast.Method constant, 0 for +// symmetric or 1 for asymmetric (int). +// +// Returns: +// - Throws a TypeError if registering the listener fails. +func (c *Channel) Listen(_ js.Value, args []js.Value) interface{} { + err := c.api.Listen(&broadcastListener{args[0].Invoke}, args[1].Int()) + if err != nil { + Throw(TypeError, err.Error()) + return nil + } + + return nil +} + +// Broadcast sends a given payload over the broadcast channel using symmetric +// broadcast. +// +// Parameters: +// - args[0] - payload (Uint8Array). +// +// Returns: +// - JSON of [bindings.BroadcastReport], which can be passed into +// Cmix.WaitForRoundResult to see if the broadcast succeeded (Uint8Array). +// - Throws a TypeError if broadcasting fails. +func (c *Channel) Broadcast(_ js.Value, args []js.Value) interface{} { + report, err := c.api.Broadcast(CopyBytesToGo(args[0])) + if err != nil { + Throw(TypeError, err.Error()) + return nil + } + + return CopyBytesToJS(report) +} + +// BroadcastAsymmetric sends a given payload over the broadcast channel using +// asymmetric broadcast. This mode of encryption requires a private key. +// +// Parameters: +// - args[0] - payload (Uint8Array). +// - args[1] - private key (Uint8Array). +// +// Returns: +// - JSON of [bindings.BroadcastReport], which can be passed into +// Cmix.WaitForRoundResult to see if the broadcast succeeded (Uint8Array). +// - Throws a TypeError if broadcasting fails. +func (c *Channel) BroadcastAsymmetric(_ js.Value, args []js.Value) interface{} { + report, err := c.api.BroadcastAsymmetric( + CopyBytesToGo(args[0]), CopyBytesToGo(args[1])) + if err != nil { + Throw(TypeError, err.Error()) + return nil + } + + return CopyBytesToJS(report) +} + +// MaxPayloadSize returns the maximum possible payload size which can be +// broadcast. +// +// Returns: +// - int +func (c *Channel) MaxPayloadSize(js.Value, []js.Value) interface{} { + return c.api.MaxPayloadSize() +} + +// MaxAsymmetricPayloadSize returns the maximum possible payload size which can +// be broadcast. +// +// Returns: +// - int +func (c *Channel) MaxAsymmetricPayloadSize(js.Value, []js.Value) interface{} { + return c.api.MaxAsymmetricPayloadSize() +} + +// Get returns the JSON of the channel definition. +// +// Returns: +// - JSON of [bindings.ChannelDef] (Uint8Array). +// - Throws a TypeError if marshalling fails. +func (c *Channel) Get(js.Value, []js.Value) interface{} { + def, err := c.api.Get() + if err != nil { + Throw(TypeError, err.Error()) + return nil + } + + return CopyBytesToJS(def) +} + +// Stop stops the channel from listening for more messages. +func (c *Channel) Stop(js.Value, []js.Value) interface{} { + c.api.Stop() + return nil +} diff --git a/wasm/broadcast_test.go b/wasm/broadcast_test.go new file mode 100644 index 0000000000000000000000000000000000000000..39600d7fcb81f2d5137bfd9c874768ce8a4666ae --- /dev/null +++ b/wasm/broadcast_test.go @@ -0,0 +1,27 @@ +package wasm + +import ( + "gitlab.com/elixxir/client/bindings" + "reflect" + "testing" +) + +// Tests that the map representing Channel returned by newChannelJS contains +// all of the methods on Channel. +func Test_newChannelJS(t *testing.T) { + chanType := reflect.TypeOf(&Channel{}) + + ch := newChannelJS(&bindings.Channel{}) + if len(ch) != chanType.NumMethod() { + t.Errorf("Channel JS object does not have all methods."+ + "\nexpected: %d\nreceived: %d", chanType.NumMethod(), len(ch)) + } + + for i := 0; i < chanType.NumMethod(); i++ { + method := chanType.Method(i) + + if _, exists := ch[method.Name]; !exists { + t.Errorf("Method %s does not exist.", method.Name) + } + } +} diff --git a/bindings/cmix.go b/wasm/cmix.go similarity index 97% rename from bindings/cmix.go rename to wasm/cmix.go index 34c8fe96ccd94d2d14b53f357a98dd43e99d9356..c27142f629949b322ddeab5ff9480f7e01c590d4 100644 --- a/bindings/cmix.go +++ b/wasm/cmix.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" @@ -22,8 +22,8 @@ type Cmix struct { // newCmixJS creates a new Javascript compatible object (map[string]interface{}) // that matches the Cmix structure. -func newCmixJS(net *bindings.Cmix) map[string]interface{} { - c := Cmix{net} +func newCmixJS(api *bindings.Cmix) map[string]interface{} { + c := Cmix{api} cmix := map[string]interface{}{ // cmix.go "GetID": js.FuncOf(c.GetID), diff --git a/bindings/cmix_test.go b/wasm/cmix_test.go similarity index 98% rename from bindings/cmix_test.go rename to wasm/cmix_test.go index d6b2c1217110ec65fee64f72ebe0c082e6f5dd4a..06df7c4e4fedbc77b2068a74c3553d5557acdc6e 100644 --- a/bindings/cmix_test.go +++ b/wasm/cmix_test.go @@ -8,7 +8,7 @@ //go:build js && wasm // +build js,wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" diff --git a/bindings/connect.go b/wasm/connect.go similarity index 98% rename from bindings/connect.go rename to wasm/connect.go index 119b73ca4835b37c1fe3f53838299e4858ed1fb5..3d053cf988a4fae554fdf8fb35fab77e1a7b9914 100644 --- a/bindings/connect.go +++ b/wasm/connect.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" @@ -64,6 +64,7 @@ func (c *Cmix) Connect(_ js.Value, args []js.Value) interface{} { conn, err := c.api.Connect(args[0].Int(), recipientContact, e2eParamsJSON) if err != nil { Throw(TypeError, err.Error()) + return nil } return newConnectJS(conn) @@ -88,6 +89,7 @@ func (c *Connection) SendE2E(_ js.Value, args []js.Value) interface{} { sendReport, err := c.c.SendE2E(args[0].Int(), CopyBytesToGo(args[1])) if err != nil { Throw(TypeError, err.Error()) + return nil } return CopyBytesToJS(sendReport) } @@ -100,6 +102,7 @@ func (c *Connection) Close(js.Value, []js.Value) interface{} { err := c.c.Close() if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -137,6 +140,7 @@ func (c *Connection) RegisterListener(_ js.Value, args []js.Value) interface{} { &listener{args[1].Get("Hear").Invoke, args[1].Get("Name").Invoke}) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil diff --git a/bindings/connect_test.go b/wasm/connect_test.go similarity index 98% rename from bindings/connect_test.go rename to wasm/connect_test.go index 79804450bdcfe504c6ecf23901e0a1f8dd13a766..fc0d35e81e9e6f1ded28bb4ae9409f25b01326fd 100644 --- a/bindings/connect_test.go +++ b/wasm/connect_test.go @@ -5,7 +5,7 @@ // LICENSE file // //////////////////////////////////////////////////////////////////////////////// -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" diff --git a/bindings/delivery.go b/wasm/delivery.go similarity index 98% rename from bindings/delivery.go rename to wasm/delivery.go index f66f44466f2ca9fb54f2fb601fc1bbd551d9f876..8bf3dcbe79a272cb2cd206e2457042bca78de1fe 100644 --- a/bindings/delivery.go +++ b/wasm/delivery.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "syscall/js" @@ -53,6 +53,7 @@ func (c *Cmix) WaitForRoundResult(_ js.Value, args []js.Value) interface{} { err := c.api.WaitForRoundResult(roundList, mdc, args[2].Int()) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil diff --git a/bindings/dummy.go b/wasm/dummy.go similarity index 99% rename from bindings/dummy.go rename to wasm/dummy.go index b538669a502b41cc1667d3dbe6128279837cf493..449facb27aa4a872bd99b25de5a81295fe08b098 100644 --- a/bindings/dummy.go +++ b/wasm/dummy.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" @@ -57,6 +57,7 @@ func NewDummyTrafficManager(_ js.Value, args []js.Value) interface{} { args[0].Int(), args[1].Int(), args[2].Int(), args[3].Int()) if err != nil { Throw(TypeError, err.Error()) + return nil } return newDummyTrafficJS(dt) @@ -80,6 +81,7 @@ func (dt *DummyTraffic) SetStatus(_ js.Value, args []js.Value) interface{} { err := dt.api.SetStatus(args[0].Bool()) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil diff --git a/bindings/e2e.go b/wasm/e2e.go similarity index 98% rename from bindings/e2e.go rename to wasm/e2e.go index b1016b923a5b6aa7f2d9ad30d1dda941c1ba1970..4abdf18b8c7b77187ae8c0e75147b09db9de6f80 100644 --- a/bindings/e2e.go +++ b/wasm/e2e.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" @@ -22,8 +22,8 @@ type E2e struct { // newE2eJS creates a new Javascript compatible object (map[string]interface{}) // that matches the E2e structure. -func newE2eJS(newE2E *bindings.E2e) map[string]interface{} { - e := E2e{newE2E} +func newE2eJS(api *bindings.E2e) map[string]interface{} { + e := E2e{api} e2e := map[string]interface{}{ // e2e.go "GetID": js.FuncOf(e.GetID), diff --git a/bindings/e2eAuth.go b/wasm/e2eAuth.go similarity index 98% rename from bindings/e2eAuth.go rename to wasm/e2eAuth.go index 70f6e19ec2975d946126729a873e43defa7f5ddd..5093228d1e4b5b261e2f3df0737da85e433df36d 100644 --- a/bindings/e2eAuth.go +++ b/wasm/e2eAuth.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "syscall/js" @@ -44,6 +44,7 @@ func (e *E2e) Request(_ js.Value, args []js.Value) interface{} { rid, err := e.api.Request(partnerContact, factsListJson) if err != nil { Throw(TypeError, err.Error()) + return nil } return rid @@ -76,6 +77,7 @@ func (e *E2e) Confirm(_ js.Value, args []js.Value) interface{} { rid, err := e.api.Confirm(partnerContact) if err != nil { Throw(TypeError, err.Error()) + return nil } return rid @@ -106,6 +108,7 @@ func (e *E2e) Reset(_ js.Value, args []js.Value) interface{} { rid, err := e.api.Reset(partnerContact) if err != nil { Throw(TypeError, err.Error()) + return nil } return rid @@ -130,6 +133,7 @@ func (e *E2e) ReplayConfirm(_ js.Value, args []js.Value) interface{} { rid, err := e.api.ReplayConfirm(partnerContact) if err != nil { Throw(TypeError, err.Error()) + return nil } return rid @@ -154,6 +158,7 @@ func (e *E2e) DeleteRequest(_ js.Value, args []js.Value) interface{} { err := e.api.DeleteRequest(partnerContact) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -167,6 +172,7 @@ func (e *E2e) DeleteAllRequests(js.Value, []js.Value) interface{} { err := e.api.DeleteAllRequests() if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -180,6 +186,7 @@ func (e *E2e) DeleteSentRequests(js.Value, []js.Value) interface{} { err := e.api.DeleteSentRequests() if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -193,6 +200,7 @@ func (e *E2e) DeleteReceiveRequests(js.Value, []js.Value) interface{} { err := e.api.DeleteReceiveRequests() if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -211,6 +219,7 @@ func (e *E2e) GetReceivedRequest(_ js.Value, args []js.Value) interface{} { c, err := e.api.GetReceivedRequest(partnerContact) if err != nil { Throw(TypeError, err.Error()) + return nil } return CopyBytesToJS(c) @@ -233,6 +242,7 @@ func (e *E2e) VerifyOwnership(_ js.Value, args []js.Value) interface{} { receivedContact, verifiedContact, args[2].Int()) if err != nil { Throw(TypeError, err.Error()) + return nil } return isValid @@ -254,6 +264,7 @@ func (e *E2e) AddPartnerCallback(_ js.Value, args []js.Value) interface{} { err := e.api.AddPartnerCallback(partnerID, callbacks) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -272,6 +283,7 @@ func (e *E2e) DeletePartnerCallback(_ js.Value, args []js.Value) interface{} { err := e.api.DeletePartnerCallback(partnerID) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil diff --git a/bindings/e2eHandler.go b/wasm/e2eHandler.go similarity index 98% rename from bindings/e2eHandler.go rename to wasm/e2eHandler.go index b57908a1641d6f63a7c616da1ef810a400d69b03..07d137a07250dd2c6a286cf0559c9be8f2ab9d79 100644 --- a/bindings/e2eHandler.go +++ b/wasm/e2eHandler.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "syscall/js" @@ -31,6 +31,7 @@ func (e *E2e) GetAllPartnerIDs(js.Value, []js.Value) interface{} { partnerIDs, err := e.api.GetAllPartnerIDs() if err != nil { Throw(TypeError, err.Error()) + return nil } return CopyBytesToJS(partnerIDs) } @@ -83,6 +84,7 @@ func (e *E2e) GetHistoricalDHPrivkey(js.Value, []js.Value) interface{} { privKey, err := e.api.GetHistoricalDHPrivkey() if err != nil { Throw(TypeError, err.Error()) + return nil } return CopyBytesToJS(privKey) } @@ -97,6 +99,7 @@ func (e *E2e) GetHistoricalDHPubkey(js.Value, []js.Value) interface{} { pubKey, err := e.api.GetHistoricalDHPubkey() if err != nil { Throw(TypeError, err.Error()) + return nil } return CopyBytesToJS(pubKey) } @@ -114,6 +117,7 @@ func (e *E2e) HasAuthenticatedChannel(_ js.Value, args []js.Value) interface{} { exists, err := e.api.HasAuthenticatedChannel(CopyBytesToGo(args[0])) if err != nil { Throw(TypeError, err.Error()) + return nil } return exists } @@ -129,6 +133,7 @@ func (e *E2e) RemoveService(_ js.Value, args []js.Value) interface{} { err := e.api.RemoveService(args[0].String()) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -156,6 +161,7 @@ func (e *E2e) SendE2E(_ js.Value, args []js.Value) interface{} { args[0].Int(), recipientId, payload, e2eParams) if err != nil { Throw(TypeError, err.Error()) + return nil } return CopyBytesToJS(sendReport) @@ -200,6 +206,7 @@ func (e *E2e) AddService(_ js.Value, args []js.Value) interface{} { err := e.api.AddService(args[0].String(), p) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -224,6 +231,7 @@ func (e *E2e) RegisterListener(_ js.Value, args []js.Value) interface{} { err := e.api.RegisterListener(recipientId, args[1].Int(), l) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil diff --git a/bindings/e2e_test.go b/wasm/e2e_test.go similarity index 98% rename from bindings/e2e_test.go rename to wasm/e2e_test.go index d0b6fd180d1ca93a7148c5f635b9b7922bfc124a..ef6323ace17bb56f2bf6d30556c4d859dcd01377 100644 --- a/bindings/e2e_test.go +++ b/wasm/e2e_test.go @@ -8,7 +8,7 @@ //go:build js && wasm // +build js,wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" diff --git a/bindings/follow.go b/wasm/follow.go similarity index 99% rename from bindings/follow.go rename to wasm/follow.go index c00f263a987eb4ada1466799dbecc659968e6893..bd713b14260542ea2b05a554f83c6f16b64996f6 100644 --- a/bindings/follow.go +++ b/wasm/follow.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "syscall/js" @@ -56,6 +56,7 @@ func (c *Cmix) StartNetworkFollower(_ js.Value, args []js.Value) interface{} { err := c.api.StartNetworkFollower(args[0].Int()) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -73,6 +74,7 @@ func (c *Cmix) StopNetworkFollower(js.Value, []js.Value) interface{} { err := c.api.StopNetworkFollower() if err != nil { Throw(TypeError, err.Error()) + return nil } return nil @@ -114,6 +116,7 @@ func (c *Cmix) GetNodeRegistrationStatus(js.Value, []js.Value) interface{} { b, err := c.api.GetNodeRegistrationStatus() if err != nil { Throw(TypeError, err.Error()) + return nil } return CopyBytesToJS(b) diff --git a/bindings/identity.go b/wasm/identity.go similarity index 99% rename from bindings/identity.go rename to wasm/identity.go index cdc18e5eee626e543e311a84049d9dfb85e1642d..eb532493c6a6fb98391132c30916cbfadc7c5571 100644 --- a/bindings/identity.go +++ b/wasm/identity.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" diff --git a/bindings/logging.go b/wasm/logging.go similarity index 98% rename from bindings/logging.go rename to wasm/logging.go index 82199fb634bfb97ca7bc77879036617535e815c6..b36aae95b6d48da48d747e13f08c37029750a805 100644 --- a/bindings/logging.go +++ b/wasm/logging.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" @@ -38,6 +38,7 @@ func LogLevel(_ js.Value, args []js.Value) interface{} { err := bindings.LogLevel(args[0].Int()) if err != nil { Throw(TypeError, err.Error()) + return nil } return nil diff --git a/bindings/ndf.go b/wasm/ndf.go similarity index 97% rename from bindings/ndf.go rename to wasm/ndf.go index 76d33f0132aa40e81a00a22197db2a58fe0beb12..163f915fc7d83ec0243802aef35aac843e730a55 100644 --- a/bindings/ndf.go +++ b/wasm/ndf.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" @@ -29,6 +29,7 @@ func DownloadAndVerifySignedNdfWithUrl(_ js.Value, args []js.Value) interface{} args[0].String(), args[1].String()) if err != nil { Throw(TypeError, err.Error()) + return nil } return CopyBytesToJS(ndf) diff --git a/bindings/params.go b/wasm/params.go similarity index 99% rename from bindings/params.go rename to wasm/params.go index c16ce5d1dccfe13ee13a362bb8ab0a903df5a2b3..97dc5d851ae4930807168093222ae00c2cf7d09b 100644 --- a/bindings/params.go +++ b/wasm/params.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" diff --git a/bindings/secrets.go b/wasm/secrets.go similarity index 98% rename from bindings/secrets.go rename to wasm/secrets.go index c1d62731af45c9d446cd5b4bc911b6640d403269..31be71691ee7ae1b7e85a5ccffc63a9e066161ac 100644 --- a/bindings/secrets.go +++ b/wasm/secrets.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" diff --git a/bindings/utils.go b/wasm/utils.go similarity index 98% rename from bindings/utils.go rename to wasm/utils.go index 16236e4bf6d23889d254b3b386acf62a3613b6ba..7b0e32df9b70b854ec1263ee9a307447ff47022d 100644 --- a/bindings/utils.go +++ b/wasm/utils.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "encoding/json" @@ -31,6 +31,7 @@ func JsonToJS(src []byte) js.Value { err := json.Unmarshal(src, &inInterface) if err != nil { Throw(TypeError, err.Error()) + return js.ValueOf(nil) } return js.ValueOf(inInterface) diff --git a/bindings/version.go b/wasm/version.go similarity index 98% rename from bindings/version.go rename to wasm/version.go index c0a6a0bc4d3c5cbc0c1c44fde97c0bd7f822b8fc..31019233c8e95aadf85b57862d5b79605d758c26 100644 --- a/bindings/version.go +++ b/wasm/version.go @@ -7,7 +7,7 @@ //go:build js && wasm -package bindings +package wasm import ( "gitlab.com/elixxir/client/bindings" diff --git a/bindings/wasm_js.s b/wasm/wasm_js.s similarity index 100% rename from bindings/wasm_js.s rename to wasm/wasm_js.s