
Research
Security News
The Growing Risk of Malicious Browser Extensions
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
mercurius-validation
Advanced tools
Mercurius Validation Plugin adds configurable Validation support to Mercurius.
Mercurius Validation is a plugin for Mercurius that adds configurable validation support.
Features:
constraint
directives in your schema. This plugin will apply JSON Schema validation policies based on the matching directives.npm i fastify mercurius mercurius-validation
You can setup mercurius-validation
using a JSON Schema validation definition as follows:
'use strict'
const Fastify = require('fastify')
const mercurius = require('mercurius')
const mercuriusValidation = require('mercurius-validation')
const schema = `
type Message {
id: ID!
text: String
}
input Filters {
id: ID
text: String
}
type Query {
message(id: ID): Message
messages(filters: Filters): [Message]
}
`
const messages = [
{
id: 0,
text: 'Some system message.'
},
{
id: 1,
text: 'Hello there'
},
{
id: 2,
text: 'Give me a place to stand, a lever long enough and a fulcrum. And I can move the Earth.'
},
{
id: 3,
text: ''
}
]
const resolvers = {
Query: {
message: async (_, { id }) => {
return messages.find(message => message.id === Number(id))
},
messages: async () => {
return messages
}
}
}
const app = Fastify()
app.register(mercurius, {
schema,
resolvers
})
app.register(mercuriusValidation, {
schema: {
Filters: {
text: { type: 'string', minLength: 1 }
},
Query: {
message: {
id: { type: 'string', minLength: 1 }
}
}
}
})
app.listen({ port: 3000 })
@constraint
directiveYou can setup mercurius-validation
with the @constraint
GraphQL directive. mercurius-validation
provides the type definitions to include this directive definition within your GraphQL schema.
'use strict'
const Fastify = require('fastify')
const mercurius = require('mercurius')
const mercuriusValidation = require('mercurius-validation')
const schema = `
${mercuriusValidation.graphQLTypeDefs}
type Message {
id: ID!
text: String
}
input Filters {
id: ID
text: String @constraint(minLength: 1)
}
type Query {
message(id: ID @constraint(type: "string", minLength: 1)): Message
messages(filters: Filters): [Message]
}
`
const messages = [
{
id: 0,
text: 'Some system message.'
},
{
id: 1,
text: 'Hello there'
},
{
id: 2,
text: 'Give me a place to stand, a lever long enough and a fulcrum. And I can move the Earth.'
},
{
id: 3,
text: ''
}
]
const resolvers = {
Query: {
message: async (_, { id }) => {
return messages.find(message => message.id === Number(id))
},
messages: async () => {
return messages
}
}
}
const app = Fastify()
app.register(mercurius, {
schema,
resolvers
})
app.register(mercuriusValidation)
app.listen({ port: 3000 })
Last run: 2021-09-27
Running 10s test @ http://127.0.0.1:3000/graphql
100 connections
āāāāāāāāāāā¬āāāāāāā¬āāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāā
ā Stat ā 2.5% ā 50% ā 97.5% ā 99% ā Avg ā Stdev ā Max ā
āāāāāāāāāāā¼āāāāāāā¼āāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāā¤
ā Latency ā 4 ms ā 5 ms ā 8 ms ā 14 ms ā 5.33 ms ā 2.28 ms ā 63 ms ā
āāāāāāāāāāā“āāāāāāā“āāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāā
āāāāāāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā
ā Stat ā 1% ā 2.5% ā 50% ā 97.5% ā Avg ā Stdev ā Min ā
āāāāāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¤
ā Req/Sec ā 9831 ā 9831 ā 18111 ā 19023 ā 17069.1 ā 2470.46 ā 9827 ā
āāāāāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¤
ā Bytes/Sec ā 4.3 MB ā 4.3 MB ā 7.91 MB ā 8.31 MB ā 7.46 MB ā 1.08 MB ā 4.29 MB ā
āāāāāāāāāāāāā“āāāāāāāāā“āāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā
Req/Bytes counts sampled once per second.
188k requests in 11.03s, 82 MB read
Last run: 2021-09-27
Running 10s test @ http://127.0.0.1:3000/graphql
100 connections
āāāāāāāāāāā¬āāāāāāā¬āāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāā
ā Stat ā 2.5% ā 50% ā 97.5% ā 99% ā Avg ā Stdev ā Max ā
āāāāāāāāāāā¼āāāāāāā¼āāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāā¤
ā Latency ā 4 ms ā 5 ms ā 8 ms ā 15 ms ā 5.48 ms ā 2.07 ms ā 55 ms ā
āāāāāāāāāāā“āāāāāāā“āāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāā
āāāāāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā
ā Stat ā 1% ā 2.5% ā 50% ā 97.5% ā Avg ā Stdev ā Min ā
āāāāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¤
ā Req/Sec ā 9399 ā 9399 ā 17215 ā 18943 ā 16704.73 ā 2427.11 ā 9398 ā
āāāāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¤
ā Bytes/Sec ā 4.11 MB ā 4.11 MB ā 7.52 MB ā 8.27 MB ā 7.3 MB ā 1.06 MB ā 4.11 MB ā
āāāāāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā
Req/Bytes counts sampled once per second.
184k requests in 11.03s, 80.3 MB read
Last run: 2021-09-27
Running 10s test @ http://127.0.0.1:3000/graphql
100 connections
āāāāāāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāā
ā Stat ā 2.5% ā 50% ā 97.5% ā 99% ā Avg ā Stdev ā Max ā
āāāāāāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāā¤
ā Latency ā 32 ms ā 38 ms ā 71 ms ā 100 ms ā 40.55 ms ā 13.79 ms ā 237 ms ā
āāāāāāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāā
āāāāāāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā
ā Stat ā 1% ā 2.5% ā 50% ā 97.5% ā Avg ā Stdev ā Min ā
āāāāāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¤
ā Req/Sec ā 1079 ā 1079 ā 2577 ā 2853 ā 2434.28 ā 493.75 ā 1079 ā
āāāāāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¤
ā Bytes/Sec ā 378 kB ā 378 kB ā 902 kB ā 998 kB ā 852 kB ā 173 kB ā 378 kB ā
āāāāāāāāāāāāā“āāāāāāāāā“āāāāāāāāā“āāāāāāāāā“āāāāāāāāā“āāāāāāāāāā“āāāāāāāāā“āāāāāāāāā
Req/Bytes counts sampled once per second.
27k requests in 11.03s, 9.37 MB read
Last run: 2021-09-27
Running 10s test @ http://127.0.0.1:3000/graphql
100 connections
āāāāāāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāā
ā Stat ā 2.5% ā 50% ā 97.5% ā 99% ā Avg ā Stdev ā Max ā
āāāāāāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāā¤
ā Latency ā 32 ms ā 35 ms ā 70 ms ā 103 ms ā 37.97 ms ā 13.33 ms ā 216 ms ā
āāāāāāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāā
āāāāāāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā¬āāāāāāāāā
ā Stat ā 1% ā 2.5% ā 50% ā 97.5% ā Avg ā Stdev ā Min ā
āāāāāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¤
ā Req/Sec ā 1153 ā 1153 ā 2711 ā 2969 ā 2597.4 ā 521.83 ā 1153 ā
āāāāāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¤
ā Bytes/Sec ā 404 kB ā 404 kB ā 949 kB ā 1.04 MB ā 909 kB ā 183 kB ā 404 kB ā
āāāāāāāāāāāāā“āāāāāāāāā“āāāāāāāāā“āāāāāāāāā“āāāāāāāāāā“āāāāāāāāā“āāāāāāāāā“āāāāāāāāā
Req/Bytes counts sampled once per second.
26k requests in 10.03s, 9.09 MB read
Check GitHub repo for more examples.
MIT
FAQs
Mercurius Validation Plugin adds configurable Validation support to Mercurius.
The npm package mercurius-validation receives a total of 2,467 weekly downloads. As such, mercurius-validation popularity was classified as popular.
We found that mercurius-validation demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Ā It has 0 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.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Research
Security News
An in-depth analysis of credential stealers, crypto drainers, cryptojackers, and clipboard hijackers abusing open source package registries to compromise Web3 development environments.
Security News
pnpm 10.12.1 introduces a global virtual store for faster installs and new options for managing dependencies with version catalogs.