Skip to content

Commit 8c27318

Browse files
docs(examples): add js helpers go example
1 parent c6ed29b commit 8c27318

File tree

2 files changed

+83
-1
lines changed

2 files changed

+83
-1
lines changed

docs/examples/js/main.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"time"
6+
7+
"github.com/akshayganeshen/napi-go"
8+
"github.com/akshayganeshen/napi-go/entry"
9+
"github.com/akshayganeshen/napi-go/js"
10+
)
11+
12+
func init() {
13+
entry.Export("getMap", GetMapHandler)
14+
entry.Export("getCallback", js.AsCallback(GetCallback))
15+
entry.Export("getArray", js.AsCallback(GetArray))
16+
entry.Export("getPromiseResolve", js.AsCallback(GetPromiseResolve))
17+
entry.Export("getPromiseReject", js.AsCallback(GetPromiseReject))
18+
}
19+
20+
func GetMapHandler(env napi.Env, info napi.CallbackInfo) napi.Value {
21+
jsEnv := js.AsEnv(env)
22+
23+
return jsEnv.ValueOf(
24+
map[string]any{
25+
"string": "hello world",
26+
"number": 123,
27+
"bool": false,
28+
"undefined": jsEnv.Undefined(),
29+
"null": nil,
30+
"function": jsEnv.FuncOf(
31+
func(env js.Env, this js.Value, args []js.Value) any {
32+
return "hello world"
33+
},
34+
),
35+
},
36+
).Value
37+
}
38+
39+
func GetCallback(env js.Env, this js.Value, args []js.Value) any {
40+
return func(env js.Env, this js.Value, args []js.Value) any {
41+
return map[string]any{
42+
"this": this,
43+
"args": args,
44+
}
45+
}
46+
}
47+
48+
func GetArray(env js.Env, this js.Value, args []js.Value) any {
49+
return []any{
50+
"hello world",
51+
123,
52+
true,
53+
map[string]any{
54+
"key": "value",
55+
},
56+
}
57+
}
58+
59+
func GetPromiseResolve(env js.Env, this js.Value, args []js.Value) any {
60+
promise := env.NewPromise()
61+
62+
go func() {
63+
time.Sleep(time.Second)
64+
promise.Resolve("resolved")
65+
}()
66+
67+
return promise
68+
}
69+
70+
func GetPromiseReject(env js.Env, this js.Value, args []js.Value) any {
71+
promise := env.NewPromise()
72+
73+
go func() {
74+
time.Sleep(time.Second)
75+
promise.Reject(fmt.Errorf("rejected"))
76+
}()
77+
78+
return promise
79+
}
80+
81+
func main() {}

makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ EXAMPLE_PACKAGES = \
66
async-promise \
77
callback \
88
describe-args \
9-
hello-world
9+
hello-world \
10+
js
1011

1112
NAPI_LIB_SUFFIX = .node
1213

0 commit comments

Comments
 (0)