48 lines
966 B
Go
48 lines
966 B
Go
//go:build js && wasm
|
|
// +build js,wasm
|
|
|
|
package idb
|
|
|
|
import (
|
|
"github.com/hack-pad/safejs"
|
|
)
|
|
|
|
func sliceFromStrings(strs []string) []interface{} {
|
|
values := make([]interface{}, 0, len(strs))
|
|
for _, s := range strs {
|
|
values = append(values, s)
|
|
}
|
|
return values
|
|
}
|
|
|
|
func stringsFromArray(arr safejs.Value) ([]string, error) {
|
|
var strs []string
|
|
iterErr := iterArray(arr, func(i int, value safejs.Value) (bool, error) {
|
|
str, err := value.String()
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
strs = append(strs, str)
|
|
return true, nil
|
|
})
|
|
return strs, iterErr
|
|
}
|
|
|
|
func iterArray(arr safejs.Value, visit func(i int, value safejs.Value) (keepGoing bool, visitErr error)) (err error) {
|
|
length, err := arr.Length()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for i := 0; i < length; i++ {
|
|
index, err := arr.Index(i)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
keepGoing, visitErr := visit(i, index)
|
|
if !keepGoing || visitErr != nil {
|
|
return visitErr
|
|
}
|
|
}
|
|
return nil
|
|
}
|