Security News
CISA Brings KEV Data to GitHub
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.
@apollo/graphql
Advanced tools
A JavaScript implementation of GraphQL, a query language for APIs created by Facebook.
The purpose of this fork is to increase the velocity with which we at Apollo are able to improve the graphql
implementation, while also gradually converting it from Flow to TypeScript.
See more complete documentation at https://graphql.org/ and https://graphql.org/graphql-js/.
Looking for help? Find resources from the community.
An overview of GraphQL in general is available in the README for the Specification for GraphQL. That overview describes a simple set of GraphQL examples that exist as tests in this repository. A good way to get started with this repository is to walk through that README and the corresponding tests in parallel.
Install GraphQL.js from npm
npm install --save @apollo/graphql
GraphQL.js provides two important capabilities: building a type schema, and serving queries against that type schema.
First, build a GraphQL type schema which maps to your code base.
import {
graphql,
GraphQLSchema,
GraphQLObjectType,
GraphQLString,
} from '@apollo/graphql';
var schema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'RootQueryType',
fields: {
hello: {
type: GraphQLString,
resolve() {
return 'world';
},
},
},
}),
});
This defines a simple schema with one type and one field, that resolves
to a fixed value. The resolve
function can return a value, a promise,
or an array of promises. A more complex example is included in the top
level tests directory.
Then, serve the result of a query against that type schema.
var query = '{ hello }';
graphql(schema, query).then(result => {
// Prints
// {
// data: { hello: "world" }
// }
console.log(result);
});
This runs a query fetching the one field defined. The graphql
function will
first ensure the query is syntactically and semantically valid before executing
it, reporting errors otherwise.
var query = '{ boyhowdy }';
graphql(schema, query).then(result => {
// Prints
// {
// errors: [
// { message: 'Cannot query field boyhowdy on RootQueryType',
// locations: [ { line: 1, column: 3 } ] }
// ]
// }
console.log(result);
});
GraphQL.js is a general purpose library and can be used both in a Node server and in the browser. As an example, the GraphiQL tool is built with GraphQL.js!
Building a project using GraphQL.js with webpack or
rollup should just work and only include
the portions of the library you use. This works because GraphQL.js is distributed
with both CommonJS (require()
) and ESModule (import
) files. Ensure that any
custom build configurations look for .mjs
files!
Read the Apollo Contributor Guidelines.
Part of this fork's purpose is to begin a gradual migration of graphql-js
from Flow to TypeScript. Some parts have already been converted, and some remain to be converted. The steps for converting a file from Flow to TypeScript are as follows:
Foo.js
becomes Foo.ts
, and any Flow specific syntax should be transalted.Foo.js.flow
type declaration file for the file's exports (Foo.d.ts
, if present, can be helpful for guiding this process). Make sure you prefix the file with // @flow
, or else strange things will happen!Foo.d.ts
file, if it exists.npm run check
, and ensure both flow
and tsc
typecheck the project without issue.Check out 45da517 for an example of this process.
Changes are tracked as GitHub releases.
GraphQL.js is MIT-licensed.
The .d.ts
files in this project are, in part, from @types/graphql
, written by:
And licensed under the MIT License.
Thanks to all the above contributors!
FAQs
A Query Language and Runtime which can target any service.
The npm package @apollo/graphql receives a total of 343 weekly downloads. As such, @apollo/graphql popularity was classified as not popular.
We found that @apollo/graphql demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.
Security News
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.