summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--go.mod1
-rw-r--r--go.sum3
-rw-r--r--js.go7
-rw-r--r--modules/jsonprint/jsonprint.go4
4 files changed, 14 insertions, 1 deletions
diff --git a/go.mod b/go.mod
index 4341386..5e7d975 100644
--- a/go.mod
+++ b/go.mod
@@ -20,6 +20,7 @@ require (
github.com/kr/pretty v0.3.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rogpeppe/go-internal v1.10.0 // indirect
+ go.kuoruan.net/v8go-polyfills v0.5.0 // indirect
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
golang.org/x/net v0.10.0 // indirect
golang.org/x/sys v0.8.0 // indirect
diff --git a/go.sum b/go.sum
index 30c3a4c..21fcdaf 100644
--- a/go.sum
+++ b/go.sum
@@ -33,6 +33,8 @@ github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncj
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+go.kuoruan.net/v8go-polyfills v0.5.0 h1:wd2WxsFIXWK/FcrpITw6BOo8Rn24xMmd4qoHofgg8hc=
+go.kuoruan.net/v8go-polyfills v0.5.0/go.mod h1:egHzK8RIHR7dPOYzhnRsomClFTVmYCtvhTWqec4JXaY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
@@ -82,5 +84,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+rogchap.com/v8go v0.7.0/go.mod h1:MxgP3pL2MW4dpme/72QRs8sgNMmM0pRc8DPhcuLWPAs=
rogchap.com/v8go v0.9.0 h1:wYbUCO4h6fjTamziHrzyrPnpFNuzPpjZY+nfmZjNaew=
rogchap.com/v8go v0.9.0/go.mod h1:MxgP3pL2MW4dpme/72QRs8sgNMmM0pRc8DPhcuLWPAs=
diff --git a/js.go b/js.go
index 7e1f7c0..e972453 100644
--- a/js.go
+++ b/js.go
@@ -9,10 +9,12 @@ import (
"errors"
"fmt"
"math/rand"
+ "os"
"strings"
"github.com/evanw/esbuild/pkg/api"
"github.com/philippta/flyscrape/js"
+ "go.kuoruan.net/v8go-polyfills/console"
v8 "rogchap.com/v8go"
)
@@ -67,6 +69,11 @@ func build(src string) (string, error) {
func vm(src string) (Config, ScrapeFunc, error) {
ctx := v8.NewContext()
+
+ if err := console.InjectTo(ctx, console.WithOutput(os.Stderr)); err != nil {
+ return nil, nil, fmt.Errorf("injecting console: %w", err)
+ }
+
ctx.RunScript("var module = {}", "main.js")
if _, err := ctx.RunScript(removeIIFE(js.Flyscrape), "main.js"); err != nil {
diff --git a/modules/jsonprint/jsonprint.go b/modules/jsonprint/jsonprint.go
index 29d3375..a4be5c9 100644
--- a/modules/jsonprint/jsonprint.go
+++ b/modules/jsonprint/jsonprint.go
@@ -49,7 +49,9 @@ func (m *Module) ReceiveResponse(resp *flyscrape.Response) {
}
func (m *Module) Finalize() {
- fmt.Println("\n]")
+ if m.once {
+ fmt.Println("\n]")
+ }
}
type output struct {