![Introducing Enhanced Alert Actions and Triage Functionality](https://cdn.sanity.io/images/cgdhsj6q/production/fe71306d515f85de6139b46745ea7180362324f0-2530x946.png?w=800&fit=max&auto=format)
Product
Introducing Enhanced Alert Actions and Triage Functionality
Socket now supports four distinct alert actions instead of the previous two, and alert triaging allows users to override the actions taken for all individual alerts.
graphql-language-service
Advanced tools
Readme
This is currently in technical preview. We welcome your feedback and suggestions.
GraphQL Language Service provides an interface for building GraphQL language services for IDEs.
Partial support for Microsoft's Language Server Protocol is in place, with more to come in the future.
Currently supported features include:
GraphQL Language Service depends on Watchman running on your machine. Follow this installation guide to install Watchman.
git clone git@github.com:graphql/graphql-language-service.git
cd {path/to/your/repo}
npm install ../graphql-language-service
After pulling the latest changes from this repo, be sure to run npm run build
to transform the src/
directory and generate the dist/
directory.
The library includes a node executable file which you can find in ./node_modules/.bin/graphql.js
after installation.
.graphqlrc
)GraphQL Language Service, to provide its full feature set, will need to know some information about your GraphQL development environment. .graphqlrc
is a GraphQL configuration file that contains this information.
{
"build-configs": {
"product-name": {
"input-dirs": [
"/dir/paths/to/your/graphql/files"
],
"exclude-dirs": [
"/dir/paths/to/ignore/"
],
"schema-path": "/path/to/the/schema/" // supports `.graphql` IDL or `.json` file
}
}
}
.graphqlrc
can define mutliple configurations for each GraphQL environment, should you have more than one.
The GraphQL configurations will be used to perform two things in a nutshell:
input-dirs
and exclude-dirs
, cache all fragment definitions per each product. This information will be used to compute dependencies between GraphQL queries and fragments.schema-path
, build and cache GraphQLSchema
s (per product). The schema will be used to perform query validations, autocomplete suggestions etc.Also, if GraphQL Language Service receives an RPC message that contains the path of the file being operated on, input-dirs
and exclude-dirs
are used to determine which product configuration the file is associated with. Refer to GraphQLConfig class for more information.
The node executable contains several commands: server
and a command-line language service methods (lint
, autocomplete
, outline
).
Improving this list is a work-in-progress.
GraphQL Language Service Command-Line Interface.
Usage: bin/graphql.js <command> <file>
[-h | --help]
[-c | --configDir] {configDir}
[-t | --text] {textBuffer}
[-f | --file] {filePath}
[-s | --schema] {schemaPath}
Options:
-h, --help Show help [boolean]
-t, --text Text buffer to perform GraphQL diagnostics on.
Will defer to --file option if omitted.
Overrides the --file option, if any.
[string]
-f, --file File path to perform GraphQL diagnostics on.
Will be ignored if --text option is supplied.
[string]
--row A row number from the cursor location for GraphQL
autocomplete suggestions.
If omitted, the last row number will be used.
[number]
--column A column number from the cursor location for GraphQL
autocomplete suggestions.
If omitted, the last column number will be used.
[number]
-c, --configDir Path to the .graphqlrc configuration file.
Walks up the directory tree from the provided config
directory, or the current working directory, until a
.graphqlrc is found or the root directory is found.
[string]
-s, --schemaPath a path to schema DSL file
[string]
At least one command is required.
Commands: "server, validate, autocomplete, outline"
GraphQL Language Service currently communicates via Stream transport with the IDE server. GraphQL server will receive/send RPC messages to perform language service features, while caching the necessary GraphQL artifacts such as fragment definitions, GraphQL schemas etc. More about the server interface and RPC message format below.
The IDE server should launch a separate GraphQL server with its own child process for each .graphqlrc
file the IDE finds (using the nearest ancestor directory relative to the file currently being edited):
./application
./productA
.graphqlrc
ProductAQuery.graphql
ProductASchema.graphql
./productB
.graphqlrc
ProductBQuery.graphql
ProductBSchema.graphql
A separate GraphQL server should be instantiated for ProductA
and ProductB
, each with its own .graphqlrc
file, as illustrated in the directory structure above.
The IDE server should manage the lifecycle of the GraphQL server. Ideally, the IDE server should spawn a child process for each of the GraphQL Language Service processes necessary, and gracefully exit the processes as the IDE closes. In case of errors or a sudden halt the GraphQL Language Service will close as the stream from the IDE closes.
GraphQL Language Server uses JSON-RPC to communicate with the IDE servers. Microsoft's language server currently supports two communication transports: Stream (stdio) and IPC. For IPC transport, the reference guide to be used for development is the language server protocol documentation.
For each transport, there is a slight difference in JSON message format, especially in how the methods to be invoked are defined - below are the currently supported methods for each transport (will be updated as progress is made):
Stream | IPC | |
---|---|---|
Diagnostics | getDiagnostics | textDocument/publishDiagnostics |
Autocompletion | getAutocompleteSuggestions | textDocument/completion |
Outline | getOutline | Not supported yet |
Go-to definition | getDefinition | Not supported yet |
File Events | Not supported yet | didOpen/didClose/didSave/didChange events |
FAQs
The official, runtime independent Language Service for GraphQL
The npm package graphql-language-service receives a total of 348,514 weekly downloads. As such, graphql-language-service popularity was classified as popular.
We found that graphql-language-service demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 14 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.
Product
Socket now supports four distinct alert actions instead of the previous two, and alert triaging allows users to override the actions taken for all individual alerts.
Security News
Polyfill.io has been serving malware for months via its CDN, after the project's open source maintainer sold the service to a company based in China.
Security News
OpenSSF is warning open source maintainers to stay vigilant against reputation farming on GitHub, where users artificially inflate their status by manipulating interactions on closed issues and PRs.