Skip to content

Commit ba55d40

Browse files
committed
gojs: add gojs runtime and task type
1 parent cefc470 commit ba55d40

File tree

8 files changed

+5120
-0
lines changed

8 files changed

+5120
-0
lines changed

Dockerfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ RUN esbuild wasi/mod.ts \
3737
--bundle \
3838
--external:util \
3939
--format=esm
40+
RUN esbuild gojs/mod.ts \
41+
--outfile=gojs/worker/lib.js \
42+
--bundle \
43+
--external:util \
44+
--format=esm
4045

4146
FROM tinygo/tinygo:0.39.0 AS wasm-tinygo
4247
WORKDIR /build

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ js:
7979
$(DOCKER_CMD) rm -f wanix-build-js
8080
$(DOCKER_CMD) create --name wanix-build-js wanix-build-js
8181
$(DOCKER_CMD) cp wanix-build-js:/build/runtime/wasi/worker/lib.js runtime/wasi/worker/lib.js
82+
$(DOCKER_CMD) cp wanix-build-js:/build/runtime/gojs/worker/lib.js runtime/gojs/worker/lib.js
8283
$(DOCKER_CMD) cp wanix-build-js:/build/runtime/assets/wanix.min.js runtime/assets/wanix.min.js
8384
$(DOCKER_CMD) cp wanix-build-js:/build/runtime/assets/wanix.js runtime/assets/wanix.js
8485
$(DOCKER_CMD) cp wanix-build-js:/build/runtime/assets/wanix.handle.js runtime/assets/wanix.handle.js

runtime/gojs/mod.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { WanixHandle } from "../handle.js";

runtime/gojs/worker/embed.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//go:build js && wasm
2+
3+
package worker
4+
5+
import (
6+
"embed"
7+
"encoding/base64"
8+
"fmt"
9+
"io/fs"
10+
"strings"
11+
"syscall/js"
12+
)
13+
14+
//go:embed lib.js worker.js
15+
var Dir embed.FS
16+
17+
func BlobURL() string {
18+
lib, err := fs.ReadFile(Dir, "lib.js")
19+
if err != nil {
20+
panic(err)
21+
}
22+
worker, err := fs.ReadFile(Dir, "worker.js")
23+
if err != nil {
24+
panic(err)
25+
}
26+
libImport := fmt.Sprintf("data:text/javascript;base64,%s", base64.StdEncoding.EncodeToString(lib))
27+
workerSrc := strings.Replace(string(worker), "./lib.js", libImport, 1)
28+
blob := js.Global().Get("Blob").New(js.ValueOf([]any{workerSrc}), js.ValueOf(map[string]any{"type": "text/javascript"}))
29+
url := js.Global().Get("URL").Call("createObjectURL", blob)
30+
return url.String()
31+
}

0 commit comments

Comments
 (0)