Files
upstream-corteza/server/pkg/jsenv/transformer.go
upstream-mirror 7e385fc126
Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
snapshot of https://github.com/cortezaproject/corteza.git (2024.9.x, 2026-09-18; blobs > 131072B omitted)
2026-09-18 01:22:23 +05:00

65 lines
1.3 KiB
Go

package jsenv
import (
"fmt"
"github.com/evanw/esbuild/pkg/api"
)
const (
// limiting the support for loaders and targets
LoaderJS TransformLoader = TransformLoader(api.LoaderJS)
LoaderJSX TransformLoader = TransformLoader(api.LoaderJSX)
LoaderTS TransformLoader = TransformLoader(api.LoaderTS)
TargetNoop TransformTarget = 0
TargetES5 TransformTarget = TransformTarget(api.ES5)
TargetES2016 TransformTarget = TransformTarget(api.ES2016)
)
type (
TransformLoader uint8
TransformTarget uint8
t struct {
ldr TransformLoader
tr TransformTarget
}
noop struct{}
Transformer interface {
Transform(string) ([]byte, error)
}
)
func NewTransformer(loader TransformLoader, target TransformTarget) Transformer {
if target == TargetNoop {
return &noop{}
}
return &t{
ldr: loader,
tr: target,
}
}
// Transform uses the loaders and targets and transpiles
func (tt t) Transform(p string) (b []byte, err error) {
result := api.Transform(p, api.TransformOptions{
Loader: api.Loader(tt.ldr),
Target: api.Target(tt.tr),
})
if len(result.Errors) > 0 {
return []byte{}, fmt.Errorf("could not transform payload: %s", result.Errors[0].Text)
}
return result.Code, nil
}
// Fallback transform that keeps the original intact
func (tt noop) Transform(p string) ([]byte, error) {
return []byte(p), nil
}