<idea-plugin package="com.intellij.graphql.javascript">
  <dependencies>
    <plugin id="com.intellij.modules.lang"/>
    <module name="intellij.platform.langInjection"/>
    <plugin id="JavaScript"/>
  </dependencies>

  <extensions defaultExtensionNs="com.intellij">
    <!-- Language Injection -->
    <multiHostInjector implementation="com.intellij.graphql.javascript.injection.GraphQLJavaScriptLanguageInjector" order="first"/>

    <!-- Workspace -->
    <workspaceModel.fileIndexContributor
      implementation="com.intellij.graphql.javascript.workspace.GraphQLNodeModulesIndexContributor"/>

    <implicitUsageProvider implementation="com.intellij.graphql.javascript.usages.GraphQLConfigImplicitUsageProvider"/>

    <registryKey key="graphql.reformat.injections.javascript"
                 defaultValue="true"
                 description="Enables reformatting GraphQL injections in JavaScript and TypeScript"/>
  </extensions>

  <extensions defaultExtensionNs="com.intellij.lang.jsgraphql">
    <fileTypeContributor
      implementation="com.intellij.graphql.javascript.injection.GraphQLJavaScriptFileTypeContributor"/>
    <injectedLanguage implementation="com.intellij.graphql.javascript.injection.GraphQLJavaScriptInjectedLanguage"/>
    <configCustomLoader implementation="com.intellij.graphql.javascript.config.GraphQLJavaScriptConfigLoader"/>
  </extensions>

  <projectListeners>
    <listener class="com.intellij.graphql.javascript.workspace.GraphQLNodeModulesLibraryUpdater$ConfigListener"
              topic="com.intellij.lang.jsgraphql.ide.config.GraphQLConfigListener"/>
  </projectListeners>
</idea-plugin>
