Skip to content

buke/quickjs-go-polyfill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Polyfill for quickjs-go

English | 简体中文

Test codecov Go Report Card GoDoc FOSSA Status

Features

  • fetch: fetch
  • base64: atob and btoa
  • window: window
  • console: console.log and console.error and console.warn and console.info and console.debug and console.trace
  • timers: setTimeout and clearTimeout alreay supported by quickjs-go

Usage

package main
import (
	"time"

	"github.com/buke/quickjs-go"
	polyfill "github.com/buke/quickjs-go-polyfill"
)

func main() {
	// Create a new runtime
	rt := quickjs.NewRuntime()
	defer rt.Close()

	// Create a new context
	ctx := rt.NewContext()
	defer ctx.Close()

	// Inject polyfills to the context
	polyfill.InjectAll(ctx)

	ret, _ := ctx.Eval(`
	setTimeout(() => {
		fetch('https://api.github.com/users/buke', {Method: 'GET'}).then(response => response.json()).then(data => {
			console.log(data.login);
		});
	}, 50);
	`)
	defer ret.Free()

	// Wait for the timeout to finish
	time.Sleep(time.Millisecond * 100)

	rt.ExecuteAllPendingJobs()

	// Output:
	// buke
}

Documentation

Go Reference & more examples: https://pkg.go.dev/github.com/buke/quickjs-go-polyfill

License

MIT

FOSSA Status

About

quickjs-go polyfill library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •