strings.go raw
1 //go:build js && wasm
2 // +build js,wasm
3
4 package idb
5
6 import (
7 "github.com/hack-pad/safejs"
8 )
9
10 func sliceFromStrings(strs []string) []interface{} {
11 values := make([]interface{}, 0, len(strs))
12 for _, s := range strs {
13 values = append(values, s)
14 }
15 return values
16 }
17
18 func stringsFromArray(arr safejs.Value) ([]string, error) {
19 var strs []string
20 iterErr := iterArray(arr, func(i int, value safejs.Value) (bool, error) {
21 str, err := value.String()
22 if err != nil {
23 return false, err
24 }
25 strs = append(strs, str)
26 return true, nil
27 })
28 return strs, iterErr
29 }
30
31 func iterArray(arr safejs.Value, visit func(i int, value safejs.Value) (keepGoing bool, visitErr error)) (err error) {
32 length, err := arr.Length()
33 if err != nil {
34 return err
35 }
36 for i := 0; i < length; i++ {
37 index, err := arr.Index(i)
38 if err != nil {
39 return err
40 }
41 keepGoing, visitErr := visit(i, index)
42 if !keepGoing || visitErr != nil {
43 return visitErr
44 }
45 }
46 return nil
47 }
48