resources/META-INF/plugin.xml (6 lines of code) (raw):

<!-- /* * Copyright (c) 2015-present, Jim Kynde Meyer * All rights reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ --> <idea-plugin require-restart="true" package="com.intellij.lang.jsgraphql" allow-bundled-update="true"> <id>com.intellij.lang.jsgraphql</id> <name>GraphQL</name> <vendor>JetBrains</vendor> <category>Languages</category> <description><![CDATA[ <p>Provides <a href="https://graphql.org/">GraphQL</a> language support to all JetBrains IDEs that <a href="https://www.jetbrains.com/products/#lang=js&type=ide">support JavaScript</a>.</p> <h2>Features</h2> <ul> <li>Schema-aware completion, error highlighting, and documentation</li> <li>Syntax highlighting, code-formatting, folding, commenting, and brace-matching</li> <li>Execution of queries and mutations with variables against configurable endpoints</li> <li>Support for multiple schemas using <code>graphql-config</code></li> </ul> <h2>Getting started</h2> <p>For information on getting started with this plugin in IntelliJ-based IDEs, see the <a href="https://www.jetbrains.com/help/webstorm/graphql.html">documentation</a>.</p> ]]> </description> <dependencies> <plugin id="com.intellij.modules.lang"/> <module name="intellij.spellchecker"/> <module name="intellij.json.backend"/> </dependencies> <content> <module name="intellij.graphql.javascript"/> <module name="intellij.graphql.langInjection"/> <module name="intellij.graphql.yaml"/> </content> <resource-bundle>messages.GraphQLBundle</resource-bundle> <extensionPoints> <extensionPoint name="fileTypeContributor" dynamic="true" interface="com.intellij.lang.jsgraphql.ide.injection.GraphQLFileTypeContributor"/> <extensionPoint name="injectedLanguage" dynamic="true" interface="com.intellij.lang.jsgraphql.ide.injection.GraphQLInjectedLanguage"/> <extensionPoint name="errorFilter" dynamic="true" interface="com.intellij.lang.jsgraphql.ide.validation.GraphQLErrorFilter"/> <extensionPoint name="configContributor" dynamic="true" interface="com.intellij.lang.jsgraphql.ide.config.GraphQLConfigContributor"/> <extensionPoint name="configCustomLoader" dynamic="true" interface="com.intellij.lang.jsgraphql.ide.config.loader.GraphQLConfigCustomLoader"/> <extensionPoint name="configSearchCustomizer" dynamic="true" interface="com.intellij.lang.jsgraphql.ide.config.GraphQLConfigSearchCustomizer"/> <extensionPoint name="globalResolveFilter" dynamic="true" interface="com.intellij.lang.jsgraphql.ide.resolve.GraphQLGlobalResolveFilter"/> </extensionPoints> <extensions defaultExtensionNs="com.intellij"> <dependencySupport kind="javascript" coordinate="npm:graphql" displayName="GraphQL"/> <!-- Color scheme --> <additionalTextAttributes scheme="Default" file="colorSchemes/GraphQLLanguageDefault.xml"/> <additionalTextAttributes scheme="Darcula" file="colorSchemes/GraphQLLanguageDarcula.xml"/> <additionalTextAttributes scheme="Monokai" file="colorSchemes/GraphQLLanguageMonokai.xml"/> <!-- Language registration --> <fileType name="GraphQL" implementationClass="com.intellij.lang.jsgraphql.GraphQLFileType" fieldName="INSTANCE" language="GraphQL" extensions="gql;graphql;graphqls"/> <fileType name="JSON" extensions="graphqlconfig;graphqlrc"/> <lang.substitutor language="JSON" implementationClass="com.intellij.lang.jsgraphql.ide.config.fileType.GraphQLConfigLanguageSubstitutor"/> <lang.parserDefinition language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.GraphQLParserDefinition"/> <lang.fileViewProviderFactory language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.psi.GraphQLFileViewProviderFactory"/> <lang.fileViewProviderFactory language="JSON" implementationClass="com.intellij.lang.jsgraphql.psi.JsonFileViewProviderFactory"/> <!-- File templates --> <internalFileTemplate name="GraphQL File"/> <!-- Icons --> <iconProvider implementation="com.intellij.lang.jsgraphql.icons.GraphQLIconProvider"/> <!-- Project services --> <projectService serviceImplementation="com.intellij.lang.jsgraphql.ide.search.GraphQLPsiSearchHelper"/> <projectService serviceImplementation="com.intellij.lang.jsgraphql.ide.resolve.GraphQLReferenceService"/> <projectService serviceImplementation="com.intellij.lang.jsgraphql.ui.GraphQLUIProjectService"/> <projectService serviceImplementation="com.intellij.lang.jsgraphql.schema.library.GraphQLLibraryManager"/> <!-- Sources --> <generatedSourcesFilter implementation="com.intellij.lang.jsgraphql.ide.project.model.GraphQLIntrospectionSourcesFilter"/> <writingAccessProvider implementation="com.intellij.lang.jsgraphql.ide.project.model.GraphQLIntrospectionWritingAccessProvider"/> <!-- Indexing --> <fileBasedIndex implementation="com.intellij.lang.jsgraphql.ide.indexing.GraphQLIdentifierIndex"/> <fileBasedIndex implementation="com.intellij.lang.jsgraphql.ide.indexing.GraphQLFragmentNameIndex"/> <fileBasedIndex implementation="com.intellij.lang.jsgraphql.ide.indexing.GraphQLInjectionIndex"/> <workspaceModel.fileIndexContributor implementation="com.intellij.lang.jsgraphql.schema.library.GraphQLLibraryIndexContributor"/> <projectView.externalLibraries.workspaceModelNodesProvider implementation="com.intellij.lang.jsgraphql.schema.library.GraphQLLibraryWorkspaceModelNodesProvider"/> <indexedRootsProvider implementation="com.intellij.lang.jsgraphql.ide.introspection.indexing.GraphQLIntrospectionIndexableSetContributor"/> <!-- Startup --> <postStartupActivity implementation="com.intellij.lang.jsgraphql.ide.startup.GraphQLStartupActivity"/> <!-- Syntax and error highlighting --> <lang.syntaxHighlighterFactory language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.highlighting.GraphQLSyntaxHighlighterFactory"/> <annotator language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.highlighting.GraphQLSyntaxAnnotator" order="first"/> <annotator language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.validation.GraphQLValidationAnnotator"/> <annotator language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.validation.GraphQLSchemaAnnotator"/> <colorSettingsPage implementation="com.intellij.lang.jsgraphql.ide.highlighting.GraphQLColorSettingsPage"/> <daemon.highlightInfoFilter implementation="com.intellij.lang.jsgraphql.ide.highlighting.GraphQLInjectionHighlightInfoFilter"/> <!-- Formatting and folding --> <lang.formatter language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.formatter.GraphQLFormattingModelBuilder"/> <langCodeStyleSettingsProvider implementation="com.intellij.lang.jsgraphql.ide.formatter.GraphQLLanguageCodeStyleSettingsProvider"/> <lang.foldingBuilder language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.editor.GraphQLFoldingBuilder"/> <!-- Editing --> <lang.braceMatcher language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.editor.GraphQLBraceMatcher"/> <lang.quoteHandler language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.editor.GraphQLQuoteHandler"/> <lang.commenter language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.editor.GraphQLCommenter"/> <enterBetweenBracesDelegate language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.formatter.GraphQLEnterBetweenBracesHandler"/> <typedHandler implementation="com.intellij.lang.jsgraphql.ide.editor.GraphQLTypedHandlerDelegate"/> <!-- Notifications --> <editorNotificationProvider implementation="com.intellij.lang.jsgraphql.ide.introspection.source.GraphQLGeneratedSourcesEditorNotificationProvider"/> <editorNotificationProvider implementation="com.intellij.lang.jsgraphql.ide.config.migration.GraphQLMigrateLegacyConfigEditorNotificationProvider"/> <editorNotificationProvider implementation="com.intellij.lang.jsgraphql.ide.config.GraphQLConfigStatusEditorNotificationProvider"/> <!-- Completion --> <lookup.charFilter implementation="com.intellij.lang.jsgraphql.ide.completion.GraphQLCharFilter"/> <completion.contributor language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.completion.GraphQLCompletionContributor"/> <!-- Find usages and renaming refactors --> <lang.findUsagesProvider language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.findUsages.GraphQLFindUsagesProvider"/> <usageTypeProvider implementation="com.intellij.lang.jsgraphql.ide.findUsages.GraphQLUsageTypeProvider"/> <lang.elementManipulator forClass="com.intellij.lang.jsgraphql.psi.impl.GraphQLIdentifierImpl" implementationClass="com.intellij.lang.jsgraphql.ide.resolve.GraphQLIdentifierManipulator"/> <!-- Search (find implementations etc.) --> <definitionsSearch implementation="com.intellij.lang.jsgraphql.ide.search.GraphQLDefinitionsSearchExecutor"/> <!-- Settings --> <projectConfigurable id="settings.jsgraphql" groupId="language" instance="com.intellij.lang.jsgraphql.ui.GraphQLSettingsConfigurable" bundle="messages.GraphQLBundle" key="graphql"/> <!-- Introspection --> <codeInsight.lineMarkerProvider implementationClass="com.intellij.lang.jsgraphql.ide.introspection.GraphQLIntrospectionJsonToSDLLineMarkerProvider" language="JSON"/> <codeInsight.lineMarkerProvider implementationClass="com.intellij.lang.jsgraphql.ide.introspection.editor.json.GraphQLIntrospectionJsonLineMarkerProvider" language="JSON"/> <projectViewNestingRulesProvider implementation="com.intellij.lang.jsgraphql.ide.project.GraphQLIntrospectionProjectViewNestingRulesProvider"/> <editorTabTitleProvider implementation="com.intellij.lang.jsgraphql.ide.introspection.GraphQLIntrospectionEditorTabTitleProvider"/> <!-- Tool window --> <toolWindow id="GraphQL" factoryClass="com.intellij.lang.jsgraphql.ide.project.toolwindow.GraphQLToolWindow" anchor="bottom" icon="com.intellij.lang.jsgraphql.icons.GraphQLIcons.UI.GraphQLToolWindow"/> <!-- Spellchecking and to-do view--> <spellchecker.support language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.spellchecking.GraphQLSpellcheckingStrategy"/> <!-- Language --> <lang.psiStructureViewFactory language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.structureView.GraphQLPsiStructureViewFactory"/> <!-- Error highlighting and annotations --> <daemon.changeLocalityDetector order="first" implementation="com.intellij.lang.jsgraphql.ide.validation.GraphQLChangeLocalityDetector"/> <!-- Query context highlighter --> <!--<highlightVisitor implementation="com.intellij.lang.jsgraphql.ide.highlighting.query.GraphQLQueryContextHighlightVisitor"/>--> <!-- Schema documentation --> <lang.documentationProvider language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.documentation.GraphQLDocumentationProvider"/> <!-- Note: JSX/TSX documentation providers are registered in their base language (JS), so we do the same to not take over the entire doc impl --> <lang.documentationProvider language="JavaScript" implementationClass="com.intellij.lang.jsgraphql.ide.documentation.GraphQLDocumentationProvider"/> <!-- Query execution (see com.intellij.openapi.actionSystem.IdeActions.ACTION_EDITOR_SPLIT which is ctrl+enter by default) --> <editorActionHandler action="EditorSplitLine" implementationClass="com.intellij.lang.jsgraphql.ide.actions.GraphQLExecuteEditorActionHandler" order="first"/> <highlightErrorFilter implementation="com.intellij.lang.jsgraphql.ide.highlighting.GraphQLVariablesHighlightErrorFilter"/> <!-- Keys --> <registryKey key="graphql.request.timeout" defaultValue="15000" description="GraphQL request timeout"/> <registryKey key="graphql.request.connect.timeout" defaultValue="5000" description="GraphQL request connection timeout"/> <registryKey key="graphql.config.scope.module.libraries" defaultValue="true" description="GraphQL search for definitions in module libraries"/> <registryKey key="graphql.schema.build.timeout" defaultValue="500" description="GraphQL schema build timeout in ms"/> <registryKey key="graphql.schema.size.definitions.limit" defaultValue="4000" description="A limit on the total number of type definitions in a GraphQL schema"/> <registryKey key="graphql.error.validation.for.complex.schemas" defaultValue="true" description="Enables validation of GraphQL schemas that contain a large number of type definitions"/> <registryKey key="graphql.introspection.custom.query" defaultValue="" description="Defines a custom query for server introspection, overriding the default behavior"/> <registryKey key="graphql.schema.reformat.timeout" defaultValue="3000" description="The maximum allowed time to wait for the GraphQL schema to be reformatted, in milliseconds"/> <registryKey key="graphql.schema.reformat.line.count.threshold" defaultValue="80000" description="The maximum number of lines in a GraphQL schema that will be reformatted"/> <advancedSetting id="graphql.introspection.detect.schema.capabilities" default="ADAPTIVE" enumClass="com.intellij.lang.jsgraphql.ide.introspection.GraphQLSchemaCapabilitiesDetectionStrategy" groupKey="group.advanced.settings.graphql" bundle="messages.GraphQLBundle" descriptionKey="advanced.setting.graphql.introspection.detect.schema.capabilities.description"/> <advancedSetting id="graphql.introspection.skip.default.values" default="false" groupKey="group.advanced.settings.graphql" bundle="messages.GraphQLBundle" descriptionKey="advanced.setting.graphql.introspection.skip.default.values.description"/> <advancedSetting id="graphql.introspection.include.empty.types" default="true" groupKey="group.advanced.settings.graphql" bundle="messages.GraphQLBundle"/> <!-- Inspections --> <localInspection language="GraphQL" key="graphql.inspection.display.name.unresolved.reference" enabledByDefault="true" groupKey="graphql.inspection.group.general" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLUnresolvedReferenceInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.deprecated.symbols" enabledByDefault="true" groupKey="graphql.inspection.group.general" groupPathKey="graphql" level="WEAK WARNING" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLDeprecatedSymbolsInspection"/> <!-- Schema inspections --> <localInspection language="GraphQL" key="graphql.inspection.display.name.schema.validation" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLSchemaValidationInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.type.redefinition" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLTypeRedefinitionInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.unexpected.type" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLUnexpectedTypeInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.member.redefinition" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLMemberRedefinitionInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.illegal.name" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLIllegalNameInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.empty.type" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLEmptyTypeInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.duplicate.argument" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLDuplicateArgumentInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.interface.implementation" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLInterfaceImplementationInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.duplicate.directive" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLDuplicateDirectiveInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.missing.type" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLMissingTypeInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.illegal.directive.argument" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLIllegalDirectiveArgumentInspection"/> <localInspection language="GraphQL" key="graphql.inspection.display.name.invalid.directive.location" enabledByDefault="true" groupKey="graphql.inspection.group.schema" groupPathKey="graphql" unfair="true" level="ERROR" implementationClass="com.intellij.lang.jsgraphql.ide.validation.inspections.GraphQLInvalidDirectiveLocationInspection"/> <lang.inspectionSuppressor language="GraphQL" implementationClass="com.intellij.lang.jsgraphql.ide.validation.GraphQLInspectionSuppressor"/> <microservices.endpointsProvider implementation="com.intellij.lang.jsgraphql.ide.microservices.GraphQLEndpointsProvider"/> </extensions> <extensions defaultExtensionNs="JavaScript"> <JsonSchema.ProviderFactory implementation="com.intellij.lang.jsgraphql.ide.config.jsonSchema.GraphQLConfigJsonSchemaProvider"/> </extensions> <extensions defaultExtensionNs="com.intellij.lang.jsgraphql"> <errorFilter implementation="com.intellij.lang.jsgraphql.ide.validation.GraphQLGeneralErrorFilter"/> <errorFilter implementation="com.intellij.lang.jsgraphql.frameworks.relay.GraphQLRelayErrorFilter"/> <errorFilter implementation="com.intellij.lang.jsgraphql.frameworks.apollo.GraphQLApolloErrorFilter"/> <errorFilter implementation="com.intellij.lang.jsgraphql.frameworks.federation.GraphQLFederationErrorFilter"/> <fileTypeContributor implementation="com.intellij.lang.jsgraphql.ide.injection.GraphQLDefaultFileTypeContributor"/> <configSearchCustomizer implementation="com.intellij.lang.jsgraphql.frameworks.gatsby.GraphQLGatsbyConfigSearchCustomizer"/> </extensions> <actions> <action id="GraphQLNewFileAction" class="com.intellij.lang.jsgraphql.ide.actions.GraphQLNewFileAction" icon="com.intellij.lang.jsgraphql.icons.GraphQLIcons.Files.GraphQL"> <add-to-group group-id="NewWebDevelopment"/> </action> <action id="GraphQLCreateConfigFile" class="com.intellij.lang.jsgraphql.ide.actions.GraphQLCreateConfigFileAction" icon="com.intellij.lang.jsgraphql.icons.GraphQLIcons.Files.GraphQLConfig"> <add-to-group group-id="NewWebDevelopment"/> </action> <action id="GraphQLExecuteEditor" class="com.intellij.lang.jsgraphql.ide.actions.GraphQLExecuteEditorAction" icon="com.intellij.icons.AllIcons.Actions.Execute"> <keyboard-shortcut first-keystroke="control ENTER" keymap="$default"/> <keyboard-shortcut first-keystroke="meta ENTER" keymap="Mac OS X"/> <keyboard-shortcut first-keystroke="meta ENTER" keymap="Mac OS X 10.5+"/> </action> <action id="GraphQLRerunLatestIntrospection" class="com.intellij.lang.jsgraphql.ide.introspection.GraphQLRerunLatestIntrospectionAction" icon="com.intellij.icons.AllIcons.Actions.Rerun"/> <action id="GraphQLRestartSchemaDiscovery" class="com.intellij.lang.jsgraphql.ide.actions.GraphQLRestartSchemaDiscoveryAction" icon="com.intellij.icons.AllIcons.Actions.Restart"/> <action id="GraphQLMigrateLegacyConfig" class="com.intellij.lang.jsgraphql.ide.config.migration.GraphQLMigrateLegacyConfigAction"/> <action id="GraphQLEditEnvironmentVariables" class="com.intellij.lang.jsgraphql.ide.config.env.GraphQLEditEnvironmentVariablesAction" icon="com.intellij.icons.AllIcons.Actions.Properties"> <add-to-group group-id="EditorPopupMenu" anchor="last"/> </action> </actions> </idea-plugin>