mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-28 03:05:04 -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>
27 lines
745 B
Go
27 lines
745 B
Go
package validator
|
|
|
|
import (
|
|
"github.com/open-policy-agent/opa/internal/gqlparser/ast"
|
|
|
|
//nolint:revive // Validator rules each use dot imports for convenience.
|
|
. "github.com/open-policy-agent/opa/internal/gqlparser/validator"
|
|
)
|
|
|
|
func init() {
|
|
AddRule("UniqueVariableNames", func(observers *Events, addError AddErrFunc) {
|
|
observers.OnOperation(func(walker *Walker, operation *ast.OperationDefinition) {
|
|
seen := map[string]int{}
|
|
for _, def := range operation.VariableDefinitions {
|
|
// add the same error only once per a variable.
|
|
if seen[def.Variable] == 1 {
|
|
addError(
|
|
Message(`There can be only one variable named "$%s".`, def.Variable),
|
|
At(def.Position),
|
|
)
|
|
}
|
|
seen[def.Variable]++
|
|
}
|
|
})
|
|
})
|
|
}
|