
Research
/Security News
Mini Shai-Hulud Campaign Hits Red Hat Cloud Services npm Packages
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.
@envelop/live-query
Advanced tools
@envelop/live-queryThe easiest way of adding live queries to your GraphQL server!
Push new data to your clients automatically once the data selected by a GraphQL operation becomes stale by annotating your query operation with the @live directive.
query UserProfile @live {
me {
id
login
bio
}
}
The invalidation mechanism is based on GraphQL ID fields and schema coordinates. Once a query operation has been invalidated, the query is re-executed and the result is pushed to the client.
yarn add @envelop/live-query @n1ru4l/in-memory-live-query-store
makeExecutableSchema from graphql-toolsimport { envelop, useSchema, useExtendContext } from '@envelop/core';
import { useLiveQuery } from '@envelop/live-query';
import { InMemoryLiveQueryStore } from '@n1ru4l/in-memory-live-query-store';
import { makeExecutableSchema } from '@graphql-tools/schema';
const schema = makeExecutableSchema({
typeDefs: [
/* GraphQL */ `
type Query {
greetings: [String!]
}
`,
GraphQLLiveDirectiveSDL,
],
resolvers: {
Query: {
greetings: (_, __, context) => context.greetings,
},
},
});
const liveQueryStore = new InMemoryLiveQueryStore();
const greetings = ['Hello', 'Hi', 'Ay', 'Sup'];
// Shuffle greetings and invalidate queries selecting Query.greetings every second.
setInterval(() => {
const firstElement = greetings.pop();
greetings.unshift(firstElement);
liveQueryStore.invalidate('Query.greetings');
}, 1000);
const getEnveloped = envelop({
plugins: [
useSchema(schema),
useLiveQuery({ liveQueryStore }),
useExtendContext(() => ({ greetings })),
/* other plugins */
],
});
GraphQLSchema from graphqlYou need to pass the GraphQLLiveDirective to the list of directives:
import { GraphQLSchema } from 'graphql';
import { GraphQLLiveDirective } from '@envelop/live-query';
const schema = new GraphQLSchema({
directives: [...specifiedDirectives, GraphQLLiveDirective],
});
This plugin requires you to use a graphql transports that supports usage of the @defer and @stream directives, as it is built upon the same concepts (return an AsyncIterable from execute).
The following transports have been successfully tested:
| Package | Transport | Version | Downloads |
|---|---|---|---|
@n1ru4l/socket-io-graphql-server | GraphQL over Socket.io (WebSocket/HTTP Long Polling) | ||
graphql-helix | GraphQL over HTTP (IncrementalDelivery/SSE) | ||
graphql-ws | GraphQL over WebSocket (WebSocket) |
For more details check out the live query repository or the introduction blog post.
FAQs
The easiest way of adding live queries to your GraphQL server!
The npm package @envelop/live-query receives a total of 9,985 weekly downloads. As such, @envelop/live-query popularity was classified as popular.
We found that @envelop/live-query demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 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
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.

Research
/Security News
The North Korean malware loader hides in a Packagist-listed package and its GitHub branch to fetch and execute remote code in a likely Contagious Interview-style lure.

Security News
The Rust project is moving toward formal rules on LLM use in contributions after months of internal debate over maintainer burden, code quality, and contributor experience.