]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
js: Support more recent targets with js.Build / esbuild
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 8 Jun 2024 08:52:16 +0000 (10:52 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 8 Jun 2024 09:40:19 +0000 (11:40 +0200)
Closes #12575

resources/resource_transformers/js/options.go
resources/resource_transformers/js/options_test.go

index 7de88638c1696a47ab5d15b49852254ec1857e2b..8c271d032d7e11a0bf51ed8f5da8df91cf99251d 100644 (file)
@@ -342,6 +342,12 @@ func toBuildOptions(opts Options) (buildOptions api.BuildOptions, err error) {
                target = api.ES2019
        case "es2020":
                target = api.ES2020
+       case "es2021":
+               target = api.ES2021
+       case "es2022":
+               target = api.ES2022
+       case "es2023":
+               target = api.ES2023
        default:
                err = fmt.Errorf("invalid target: %q", opts.Target)
                return
index a49b174ae0699c654a0ac4b866aefbe65179cba2..de20cbd05defe4de0287ce4c6ffb946e1b60ed68 100644 (file)
@@ -136,8 +136,10 @@ func TestToBuildOptions(t *testing.T) {
                },
        })
 
-       opts, err = toBuildOptions(Options{mediaType: media.Builtin.JavascriptType,
-               JSX: "automatic", JSXImportSource: "preact"})
+       opts, err = toBuildOptions(Options{
+               mediaType: media.Builtin.JavascriptType,
+               JSX:       "automatic", JSXImportSource: "preact",
+       })
        c.Assert(err, qt.IsNil)
        c.Assert(opts, qt.DeepEquals, api.BuildOptions{
                Bundle: true,
@@ -151,6 +153,36 @@ func TestToBuildOptions(t *testing.T) {
        })
 }
 
+func TestToBuildOptionsTarget(t *testing.T) {
+       c := qt.New(t)
+
+       for _, test := range []struct {
+               target string
+               expect api.Target
+       }{
+               {"es2015", api.ES2015},
+               {"es2016", api.ES2016},
+               {"es2017", api.ES2017},
+               {"es2018", api.ES2018},
+               {"es2019", api.ES2019},
+               {"es2020", api.ES2020},
+               {"es2021", api.ES2021},
+               {"es2022", api.ES2022},
+               {"es2023", api.ES2023},
+               {"", api.ESNext},
+               {"esnext", api.ESNext},
+       } {
+               c.Run(test.target, func(c *qt.C) {
+                       opts, err := toBuildOptions(Options{
+                               Target:    test.target,
+                               mediaType: media.Builtin.JavascriptType,
+                       })
+                       c.Assert(err, qt.IsNil)
+                       c.Assert(opts.Target, qt.Equals, test.expect)
+               })
+       }
+}
+
 func TestResolveComponentInAssets(t *testing.T) {
        c := qt.New(t)