1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package url
- import (
- "github.com/sagernet/sing-box/script/jsc"
- "github.com/sagernet/sing-box/script/modules/require"
- "github.com/dop251/goja"
- )
- const ModuleName = "url"
- var _ jsc.Module = (*Module)(nil)
- type Module struct {
- runtime *goja.Runtime
- classURL jsc.Class[*Module, *URL]
- classURLSearchParams jsc.Class[*Module, *URLSearchParams]
- classURLSearchParamsIterator jsc.Class[*Module, *jsc.Iterator[*Module, searchParam]]
- }
- func Require(runtime *goja.Runtime, module *goja.Object) {
- m := &Module{
- runtime: runtime,
- }
- m.classURL = createURL(m)
- m.classURLSearchParams = createURLSearchParams(m)
- m.classURLSearchParamsIterator = jsc.CreateIterator[*Module, searchParam](m)
- exports := module.Get("exports").(*goja.Object)
- exports.Set("URL", m.classURL.ToValue())
- exports.Set("URLSearchParams", m.classURLSearchParams.ToValue())
- }
- func Enable(runtime *goja.Runtime) {
- exports := require.Require(runtime, ModuleName).ToObject(runtime)
- runtime.Set("URL", exports.Get("URL"))
- runtime.Set("URLSearchParams", exports.Get("URLSearchParams"))
- }
- func (m *Module) Runtime() *goja.Runtime {
- return m.runtime
- }
|