From dcd562c12acda3f86b5514d0b7cadd2050c31f5c Mon Sep 17 00:00:00 2001
From: Jono Wenger <jono@elixxir.io>
Date: Fri, 9 Sep 2022 12:04:50 -0700
Subject: [PATCH] Add JsToJson to convert from a javascript object to JSON

---
 utils/utils.go | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/utils/utils.go b/utils/utils.go
index 1d7f9ca5..816f4f67 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -25,6 +25,7 @@ import (
 
 var (
 	Error      = js.Global().Get("Error")
+	JSON       = js.Global().Get("JSON")
 	Promise    = js.Global().Get("Promise")
 	Uint8Array = js.Global().Get("Uint8Array")
 )
@@ -62,15 +63,20 @@ func WrapCB(parent js.Value, m string) func(args ...interface{}) js.Value {
 }
 
 // JsonToJS converts a marshalled JSON bytes to a Javascript object.
-func JsonToJS(src []byte) js.Value {
+func JsonToJS(src []byte) (js.Value, error) {
 	var inInterface map[string]interface{}
 	err := json.Unmarshal(src, &inInterface)
 	if err != nil {
 		Throw(TypeError, err)
-		return js.ValueOf(nil)
+		return js.ValueOf(nil), err
 	}
 
-	return js.ValueOf(inInterface)
+	return js.ValueOf(inInterface), nil
+}
+
+// JsToJson converts the Javascript value to JSON.
+func JsToJson(value js.Value) string {
+	return JSON.Call("stringify", value).String()
 }
 
 type PromiseFn func(resolve, reject func(args ...interface{}) js.Value)
-- 
GitLab