mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-18 22:41:00 -06:00
45a3d8ee70
This commit addresses issues around vendoring the 3rd party GraphQL parser library, `vektah/gqlparser`, which is used by our GraphQL builtins. By directly depending on the library, we accidentally forced all of our library users to have to match `gqlparser` versions, which could cause problems if they wanted to use downstream GraphQL libraries. To fix this version clash problem, this PR internalizes `vektah/gqlparser` v2.4.8 into the `internal/gqlparser` package (we can update to v2.5.0 later). Scripts are included to automate some of the internalizing process if we wish to update the library in the future. Fixes: #5065 Signed-off-by: Philip Conrad <philipaconrad@gmail.com>
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package validator
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/open-policy-agent/opa/internal/gqlparser/ast"
|
|
"github.com/open-policy-agent/opa/internal/gqlparser/gqlerror"
|
|
)
|
|
|
|
type ErrorOption func(err *gqlerror.Error)
|
|
|
|
func Message(msg string, args ...interface{}) ErrorOption {
|
|
return func(err *gqlerror.Error) {
|
|
err.Message += fmt.Sprintf(msg, args...)
|
|
}
|
|
}
|
|
|
|
func At(position *ast.Position) ErrorOption {
|
|
return func(err *gqlerror.Error) {
|
|
if position == nil {
|
|
return
|
|
}
|
|
err.Locations = append(err.Locations, gqlerror.Location{
|
|
Line: position.Line,
|
|
Column: position.Column,
|
|
})
|
|
if position.Src.Name != "" {
|
|
err.SetFile(position.Src.Name)
|
|
}
|
|
}
|
|
}
|
|
|
|
func SuggestListQuoted(prefix string, typed string, suggestions []string) ErrorOption {
|
|
suggested := SuggestionList(typed, suggestions)
|
|
return func(err *gqlerror.Error) {
|
|
if len(suggested) > 0 {
|
|
err.Message += " " + prefix + " " + QuotedOrList(suggested...) + "?"
|
|
}
|
|
}
|
|
}
|
|
|
|
func SuggestListUnquoted(prefix string, typed string, suggestions []string) ErrorOption {
|
|
suggested := SuggestionList(typed, suggestions)
|
|
return func(err *gqlerror.Error) {
|
|
if len(suggested) > 0 {
|
|
err.Message += " " + prefix + " " + OrList(suggested...) + "?"
|
|
}
|
|
}
|
|
}
|
|
|
|
func Suggestf(suggestion string, args ...interface{}) ErrorOption {
|
|
return func(err *gqlerror.Error) {
|
|
err.Message += " Did you mean " + fmt.Sprintf(suggestion, args...) + "?"
|
|
}
|
|
}
|