graphql-type
v1.1.1
Published
Create GraphQL types with ease.
Downloads
193
Readme
graphql-type
Helper functions for fast creation of graphql types with validation of input or output (or both) values.
In most cases you would want to performs bi-directional validation of data, so that invalid input value will result in an error response, whereas in case of invalid output it will always return the value but will also let you know of the error.
For bi-direction validation use function like createStringType
. For uni-directional validation use createStringInputType
or createStringOutputType
.
Strings
const { createStringType } = require('graphql-type')
const EmailType = createStringType({
// Name of the type
name: 'EmailType',
// Description
description: 'Email with validation rules.', // (optional)
// Validation rules
validate: {
// Min length
min: 5,
// Max length
max: 100,
// Regex validation
regexp: /^\w+@\w+\.[a-z]{2,}$/i,
// Custom validation function
test (value) {
// Disallow emails that end with '@example.com'
return !value.endsWith('@example.com')
}
},
// Custom error messages
validationMessages: {
min: 'Email should have at least 5 characters.',
test: 'Test domains are not allowed.'
},
// Allows to modify or log (or whatnot) the value
resolve (value) {
return value
}
})
Integers
const MyInt = createIntType({
// Name of the type
name: 'MyInt',
// Description
description: '', // (optional)
// Validation rules
validate: {
// Min number
min: 5,
// Max number
max: 100,
// Custom validation function
test: function ...,
},
// Custom error messages
validationMessages: { ... },
// Allows to modify or log (or whatnot) the value
resolve (value) {
return value
}
})
Floats
const MyFloat = createFloatType({
// Name of the type
name: 'MyFloat',
// Description
description: '', // (optional)
validate: {
// Min number
min: 5,
// Max number
max: 100,
// Max decimal characters length
maxDecimals: 4,
// Custom validation function
test: function ...,
},
// Custom error messages
validationMessages: { ... },
// Allows to modify or log (or whatnot) the value
resolve (value) {
return value
}
})
Available helper functions:
// Strings
createStringType(attrs)
createStringInputType(attrs)
createStringOutputType(attrs)
// Integers
createIntType(attrs)
createIntInputType(attrs)
createIntOutputType(attrs)
// Floats
createFloatType(attrs)
createFloatInputType(attrs)
createFloatOutputType(attrs)