diff --git a/examples/env/.gitignore b/examples/env/.gitignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/examples/env/.gitignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/examples/env/Makefile b/examples/env/Makefile new file mode 100644 index 0000000..320ddc3 --- /dev/null +++ b/examples/env/Makefile @@ -0,0 +1,12 @@ +.PHONY: dev +dev: + wrangler dev + +.PHONY: build +build: + mkdir -p dist + tinygo build -o ./dist/app.wasm -target wasm ./... + +.PHONY: publish +publish: + wrangler publish diff --git a/examples/env/README.md b/examples/env/README.md new file mode 100644 index 0000000..764e78c --- /dev/null +++ b/examples/env/README.md @@ -0,0 +1,32 @@ +# env + +* This app returns a message set as `MY_ENV` in wrangler.toml. + +## Demo + +* https://env.syumai.workers.dev/ + +## Development + +### Requirements + +This project requires these tools to be installed globally. + +* wrangler +* tinygo + +### Commands + +``` +make dev # run dev server +make build # build Go Wasm binary +make publish # publish worker +``` + +## Author + +syumai + +## License + +MIT diff --git a/examples/env/go.mod b/examples/env/go.mod new file mode 100644 index 0000000..c81f2f4 --- /dev/null +++ b/examples/env/go.mod @@ -0,0 +1,7 @@ +module github.com/syumai/workers/examples/env + +go 1.18 + +require github.com/syumai/workers v0.0.0 + +replace github.com/syumai/workers => ../../ diff --git a/examples/env/go.sum b/examples/env/go.sum new file mode 100644 index 0000000..e69de29 diff --git a/examples/env/main.go b/examples/env/main.go new file mode 100644 index 0000000..75fc630 --- /dev/null +++ b/examples/env/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "fmt" + "net/http" + "syscall/js" + + "github.com/syumai/workers" +) + +func main() { + handler := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + envVal := js.Global().Get("MY_ENV") + fmt.Fprintf(w, "MY_ENV: %s", envVal) + }) + workers.Serve(handler) +} diff --git a/examples/env/worker.mjs b/examples/env/worker.mjs new file mode 100644 index 0000000..1724f16 --- /dev/null +++ b/examples/env/worker.mjs @@ -0,0 +1,20 @@ +import "../assets/polyfill_performance.js"; +import "../assets/wasm_exec.js"; +import mod from "./dist/app.wasm"; + +const go = new Go(); + +const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { + go.run(instance); + return instance; +}); + +async function processRequest(event) { + const req = event.request; + await load; + return handleRequest(req); +} + +addEventListener("fetch", (event) => { + event.respondWith(processRequest(event)); +}) diff --git a/examples/env/wrangler.toml b/examples/env/wrangler.toml new file mode 100644 index 0000000..250a83d --- /dev/null +++ b/examples/env/wrangler.toml @@ -0,0 +1,14 @@ +name = "env" +main = "./worker.mjs" +compatibility_date = "2022-05-13" +compatibility_flags = [ + "streams_enable_constructors" +] + +[build] +command = "make build" + +# declare environment variables and assign values +# https://developers.cloudflare.com/workers/platform/environment-variables/ +[vars] +MY_ENV = 'my env value'