Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
@digicatapult/apollo-type-validation-plugin
Advanced tools
Type validation plugin for Apollo GraphQL server
A library for performing directive based validations against input values passed in a GraphQL query.
The library can be used to instantiate an Apollo server plugin which can be configured to perform the required validation checks. For example:
import { ApolloServer } from '@apollo/server'
import validationPlugin from '@digicatapult/apollo-type-validation-plugin'
const {
plugin: typeValidationPlugin,
directives: { arrayLengthDirective },
} = validationPlugin
const typeDefs = ...
const resolvers = ...
const server = new ApolloServer({
schema,
// build a plugin to get the complexity of a query before running the resolvers
// allows us to set a max complexity per query, or meter rate-limiting by complexity
plugins: [typeValidationPlugin({ schema, directives: [arrayLengthDirective()] })],
allowBatchedHttpRequests: true
})
A worked example using the arrayLengthDirective
can be found here.
The following directives are currently supported:
maxArrayLength
A directive used to limit the maximum size of an input array that can be passed as part of an argument. For example:
# directive definition used by arrayLengthDirective
directive @maxArrayLength(length: Int!) on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
type Query {
echo(values: [Int!]! @maxArrayLength(length: 5)): [Echo!]!
}
type Echo {
value: Int!
times(number: [Int!]! @maxArrayLength(length: 2)): [Int!]!
}
In this schema the maximum number of elements that can be validly passed as values
to the field echo
is 5 whilst the maximum number that can be passed to number
on the field times
is 2.
boundedInteger
A directive used to bound the value of an integer that can be passed as an argument. For example:
# directive definition used by boundedIntegerDirective
directive @boundedInteger(min: Int!, max: Int!) on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
type Query {
echo(input: Int! @boundedInteger(min: 5, max: 10)): Echo!
}
type Echo {
value: Int!
}
In this schema the value that can be validly passed as input
to the field echo
must be greater than or equal to 5 and less than or equal to 10.
FAQs
Type validation plugin for Apollo GraphQL server
The npm package @digicatapult/apollo-type-validation-plugin receives a total of 3 weekly downloads. As such, @digicatapult/apollo-type-validation-plugin popularity was classified as not popular.
We found that @digicatapult/apollo-type-validation-plugin demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.