github.com/0chain/gosdk@v1.17.11/wasmsdk/jsbridge/object.go (about)

     1  //go:build js && wasm
     2  // +build js,wasm
     3  
     4  package jsbridge
     5  
     6  import (
     7  	"encoding/json"
     8  	"fmt"
     9  	"syscall/js"
    10  )
    11  
    12  func NewArray(items ...interface{}) js.Value {
    13  
    14  	defer func() {
    15  		if r := recover(); r != nil {
    16  			fmt.Println("NewStrings: ", r)
    17  		}
    18  	}()
    19  
    20  	list := js.Global().Get("Array").New()
    21  
    22  	for _, it := range items {
    23  		list.Call("push", js.ValueOf(it))
    24  	}
    25  
    26  	return list
    27  }
    28  
    29  func NewJsError(message interface{}) js.Value {
    30  	return js.ValueOf(map[string]interface{}{
    31  		"error": fmt.Sprint(message),
    32  	})
    33  }
    34  
    35  func NewObject(obj interface{}) js.Value {
    36  	buf, err := json.Marshal(obj)
    37  	if err != nil {
    38  		return js.Null()
    39  	}
    40  
    41  	j := js.Global().Get("JSON")
    42  
    43  	return j.Call("parse", string(buf))
    44  }
    45  
    46  func NewBytes(buf []byte) js.Value {
    47  
    48  	uint8Array := js.Global().Get("Uint8Array").New(len(buf))
    49  
    50  	js.CopyBytesToJS(uint8Array, buf)
    51  
    52  	return uint8Array
    53  }
    54  
    55  // var arrayBuffer = new ArrayBuffer(100);
    56  // var uint8Array = new Uint8Array(arrayBuffer);
    57  // for (var i = 0; i < 100; i++) {
    58  // 	uint8Array[i] = i;
    59  // }
    60  
    61  // var blob = new Blob([uint8Array], { type: "image/png" });
    62  // var blobVal = URL.createObjectURL(blob);
    63  // func CreateObjectURL(buf []byte) string {
    64  // 	j := js.Global().Get("URL")
    65  
    66  // 	options := js.Global().Get("Object").New()
    67  // 	options.Set("type", "")
    68  
    69  // 	blob := js.Global().Get("Blob").New(args ...interface{})
    70  
    71  // 	u := j.Call("createObjectURL", object)
    72  
    73  // 	return u.String()
    74  // }