Full Code of graphql/graphql-js for AI

16.x.x 6ca59e128fe6 cached
408 files
4.3 MB
1.1M tokens
1409 symbols
1 requests
Download .txt
Showing preview only (4,563K chars total). Download the full file or copy to clipboard to get everything.
Repository: graphql/graphql-js
Branch: 16.x.x
Commit: 6ca59e128fe6
Files: 408
Total size: 4.3 MB

Directory structure:
gitextract_1cc_ocwt/

├── .babelrc-deno.json
├── .babelrc-npm.json
├── .babelrc.json
├── .c8rc.json
├── .eslintignore
├── .eslintrc.yml
├── .github/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── deploy-artifact-as-branch.yml
│       ├── pull_request.yml
│       ├── pull_request_opened.yml
│       ├── push.yml
│       └── release.yml
├── .gitignore
├── .mocharc.yml
├── .node-version
├── .npmrc
├── .prettierignore
├── .prettierrc
├── LICENSE
├── README.md
├── benchmark/
│   ├── benchmark.js
│   ├── buildASTSchema-benchmark.js
│   ├── buildClientSchema-benchmark.js
│   ├── fixtures.js
│   ├── github-schema.graphql
│   ├── github-schema.json
│   ├── introspectionFromSchema-benchmark.js
│   ├── kitchen-sink.graphql
│   ├── parser-benchmark.js
│   ├── printer-benchmark.js
│   ├── repeated-fields-benchmark.js
│   ├── validateGQL-benchmark.js
│   ├── validateInvalidGQL-benchmark.js
│   ├── validateSDL-benchmark.js
│   ├── visit-benchmark.js
│   └── visitInParallel-benchmark.js
├── codecov.yml
├── cspell.yml
├── integrationTests/
│   ├── README.md
│   ├── integration-test.js
│   ├── node/
│   │   ├── index.js
│   │   ├── package.json
│   │   └── test.js
│   ├── ts/
│   │   ├── TypedQueryDocumentNode-test.ts
│   │   ├── basic-test.ts
│   │   ├── extensions-test.ts
│   │   ├── internalImports-test.ts
│   │   ├── package.json
│   │   ├── test.js
│   │   └── tsconfig.json
│   └── webpack/
│       ├── entry.js
│       ├── package.json
│       ├── test.js
│       └── webpack.config.json
├── package.json
├── resources/
│   ├── add-extension-to-import-paths.js
│   ├── build-deno.js
│   ├── build-npm.js
│   ├── diff-npm-package.js
│   ├── eslint-internal-rules/
│   │   ├── README.md
│   │   ├── index.js
│   │   ├── no-dir-import.js
│   │   ├── only-ascii.js
│   │   ├── package.json
│   │   └── require-to-string-tag.js
│   ├── gen-changelog.js
│   ├── gen-version.js
│   ├── inline-invariant.js
│   ├── release-metadata.js
│   ├── release-prepare.js
│   ├── ts-register.js
│   └── utils.js
├── src/
│   ├── README.md
│   ├── __testUtils__/
│   │   ├── __tests__/
│   │   │   ├── dedent-test.ts
│   │   │   ├── genFuzzStrings-test.ts
│   │   │   ├── inspectStr-test.ts
│   │   │   └── resolveOnNextTick-test.ts
│   │   ├── dedent.ts
│   │   ├── expectJSON.ts
│   │   ├── genFuzzStrings.ts
│   │   ├── inspectStr.ts
│   │   ├── kitchenSinkQuery.ts
│   │   ├── kitchenSinkSDL.ts
│   │   └── resolveOnNextTick.ts
│   ├── __tests__/
│   │   ├── starWarsData.ts
│   │   ├── starWarsIntrospection-test.ts
│   │   ├── starWarsQuery-test.ts
│   │   ├── starWarsSchema.ts
│   │   ├── starWarsValidation-test.ts
│   │   └── version-test.ts
│   ├── error/
│   │   ├── GraphQLError.ts
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── GraphQLError-test.ts
│   │   │   └── locatedError-test.ts
│   │   ├── index.ts
│   │   ├── locatedError.ts
│   │   └── syntaxError.ts
│   ├── execution/
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── abstract-test.ts
│   │   │   ├── directives-test.ts
│   │   │   ├── executor-test.ts
│   │   │   ├── lists-test.ts
│   │   │   ├── mapAsyncIterator-test.ts
│   │   │   ├── mutations-test.ts
│   │   │   ├── nonnull-test.ts
│   │   │   ├── oneof-test.ts
│   │   │   ├── resolve-test.ts
│   │   │   ├── schema-test.ts
│   │   │   ├── simplePubSub-test.ts
│   │   │   ├── simplePubSub.ts
│   │   │   ├── subscribe-test.ts
│   │   │   ├── sync-test.ts
│   │   │   ├── union-interface-test.ts
│   │   │   └── variables-test.ts
│   │   ├── collectFields.ts
│   │   ├── execute.ts
│   │   ├── index.ts
│   │   ├── mapAsyncIterator.ts
│   │   ├── subscribe.ts
│   │   └── values.ts
│   ├── graphql.ts
│   ├── index.ts
│   ├── jsutils/
│   │   ├── Maybe.ts
│   │   ├── ObjMap.ts
│   │   ├── Path.ts
│   │   ├── PromiseOrValue.ts
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── Path-test.ts
│   │   │   ├── didYouMean-test.ts
│   │   │   ├── identityFunc-test.ts
│   │   │   ├── inspect-test.ts
│   │   │   ├── instanceOf-test.ts
│   │   │   ├── invariant-test.ts
│   │   │   ├── isAsyncIterable-test.ts
│   │   │   ├── isIterableObject-test.ts
│   │   │   ├── isObjectLike-test.ts
│   │   │   ├── naturalCompare-test.ts
│   │   │   ├── suggestionList-test.ts
│   │   │   └── toObjMap-test.ts
│   │   ├── devAssert.ts
│   │   ├── didYouMean.ts
│   │   ├── groupBy.ts
│   │   ├── identityFunc.ts
│   │   ├── inspect.ts
│   │   ├── instanceOf.ts
│   │   ├── invariant.ts
│   │   ├── isAsyncIterable.ts
│   │   ├── isIterableObject.ts
│   │   ├── isObjectLike.ts
│   │   ├── isPromise.ts
│   │   ├── keyMap.ts
│   │   ├── keyValMap.ts
│   │   ├── mapValue.ts
│   │   ├── memoize3.ts
│   │   ├── naturalCompare.ts
│   │   ├── printPathArray.ts
│   │   ├── promiseForObject.ts
│   │   ├── promiseReduce.ts
│   │   ├── suggestionList.ts
│   │   ├── toError.ts
│   │   └── toObjMap.ts
│   ├── language/
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── blockString-fuzz.ts
│   │   │   ├── blockString-test.ts
│   │   │   ├── lexer-test.ts
│   │   │   ├── parser-test.ts
│   │   │   ├── predicates-test.ts
│   │   │   ├── printLocation-test.ts
│   │   │   ├── printString-test.ts
│   │   │   ├── printer-test.ts
│   │   │   ├── schema-parser-test.ts
│   │   │   ├── schema-printer-test.ts
│   │   │   ├── schemaCoordinateLexer-test.ts
│   │   │   ├── source-test.ts
│   │   │   └── visitor-test.ts
│   │   ├── ast.ts
│   │   ├── blockString.ts
│   │   ├── characterClasses.ts
│   │   ├── directiveLocation.ts
│   │   ├── index.ts
│   │   ├── kinds.ts
│   │   ├── lexer.ts
│   │   ├── location.ts
│   │   ├── parser.ts
│   │   ├── predicates.ts
│   │   ├── printLocation.ts
│   │   ├── printString.ts
│   │   ├── printer.ts
│   │   ├── schemaCoordinateLexer.ts
│   │   ├── source.ts
│   │   ├── tokenKind.ts
│   │   └── visitor.ts
│   ├── subscription/
│   │   ├── README.md
│   │   └── index.ts
│   ├── type/
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── assertName-test.ts
│   │   │   ├── definition-test.ts
│   │   │   ├── directive-test.ts
│   │   │   ├── enumType-test.ts
│   │   │   ├── extensions-test.ts
│   │   │   ├── introspection-test.ts
│   │   │   ├── predicate-test.ts
│   │   │   ├── scalars-test.ts
│   │   │   ├── schema-test.ts
│   │   │   └── validation-test.ts
│   │   ├── assertName.ts
│   │   ├── definition.ts
│   │   ├── directives.ts
│   │   ├── index.ts
│   │   ├── introspection.ts
│   │   ├── scalars.ts
│   │   ├── schema.ts
│   │   └── validate.ts
│   ├── utilities/
│   │   ├── README.md
│   │   ├── TypeInfo.ts
│   │   ├── __tests__/
│   │   │   ├── TypeInfo-test.ts
│   │   │   ├── astFromValue-test.ts
│   │   │   ├── buildASTSchema-test.ts
│   │   │   ├── buildClientSchema-test.ts
│   │   │   ├── coerceInputValue-test.ts
│   │   │   ├── concatAST-test.ts
│   │   │   ├── extendSchema-test.ts
│   │   │   ├── findBreakingChanges-test.ts
│   │   │   ├── getIntrospectionQuery-test.ts
│   │   │   ├── getOperationAST-test.ts
│   │   │   ├── getOperationRootType-test.ts
│   │   │   ├── introspectionFromSchema-test.ts
│   │   │   ├── lexicographicSortSchema-test.ts
│   │   │   ├── printSchema-test.ts
│   │   │   ├── resolveSchemaCoordinate-test.ts
│   │   │   ├── separateOperations-test.ts
│   │   │   ├── sortValueNode-test.ts
│   │   │   ├── stripIgnoredCharacters-fuzz.ts
│   │   │   ├── stripIgnoredCharacters-test.ts
│   │   │   ├── typeComparators-test.ts
│   │   │   ├── valueFromAST-test.ts
│   │   │   └── valueFromASTUntyped-test.ts
│   │   ├── assertValidName.ts
│   │   ├── astFromValue.ts
│   │   ├── buildASTSchema.ts
│   │   ├── buildClientSchema.ts
│   │   ├── coerceInputValue.ts
│   │   ├── concatAST.ts
│   │   ├── extendSchema.ts
│   │   ├── findBreakingChanges.ts
│   │   ├── getIntrospectionQuery.ts
│   │   ├── getOperationAST.ts
│   │   ├── getOperationRootType.ts
│   │   ├── index.ts
│   │   ├── introspectionFromSchema.ts
│   │   ├── lexicographicSortSchema.ts
│   │   ├── printSchema.ts
│   │   ├── resolveSchemaCoordinate.ts
│   │   ├── separateOperations.ts
│   │   ├── sortValueNode.ts
│   │   ├── stripIgnoredCharacters.ts
│   │   ├── typeComparators.ts
│   │   ├── typeFromAST.ts
│   │   ├── typedQueryDocumentNode.ts
│   │   ├── valueFromAST.ts
│   │   └── valueFromASTUntyped.ts
│   ├── validation/
│   │   ├── README.md
│   │   ├── ValidationContext.ts
│   │   ├── __tests__/
│   │   │   ├── ExecutableDefinitionsRule-test.ts
│   │   │   ├── FieldsOnCorrectTypeRule-test.ts
│   │   │   ├── FragmentsOnCompositeTypesRule-test.ts
│   │   │   ├── KnownArgumentNamesRule-test.ts
│   │   │   ├── KnownDirectivesRule-test.ts
│   │   │   ├── KnownFragmentNamesRule-test.ts
│   │   │   ├── KnownTypeNamesRule-test.ts
│   │   │   ├── LoneAnonymousOperationRule-test.ts
│   │   │   ├── LoneSchemaDefinitionRule-test.ts
│   │   │   ├── MaxIntrospectionDepthRule-test.ts
│   │   │   ├── NoDeprecatedCustomRule-test.ts
│   │   │   ├── NoFragmentCyclesRule-test.ts
│   │   │   ├── NoSchemaIntrospectionCustomRule-test.ts
│   │   │   ├── NoUndefinedVariablesRule-test.ts
│   │   │   ├── NoUnusedFragmentsRule-test.ts
│   │   │   ├── NoUnusedVariablesRule-test.ts
│   │   │   ├── OverlappingFieldsCanBeMergedRule-test.ts
│   │   │   ├── PossibleFragmentSpreadsRule-test.ts
│   │   │   ├── PossibleTypeExtensionsRule-test.ts
│   │   │   ├── ProvidedRequiredArgumentsRule-test.ts
│   │   │   ├── ScalarLeafsRule-test.ts
│   │   │   ├── SingleFieldSubscriptionsRule-test.ts
│   │   │   ├── UniqueArgumentDefinitionNamesRule-test.ts
│   │   │   ├── UniqueArgumentNamesRule-test.ts
│   │   │   ├── UniqueDirectiveNamesRule-test.ts
│   │   │   ├── UniqueDirectivesPerLocationRule-test.ts
│   │   │   ├── UniqueEnumValueNamesRule-test.ts
│   │   │   ├── UniqueFieldDefinitionNamesRule-test.ts
│   │   │   ├── UniqueFragmentNamesRule-test.ts
│   │   │   ├── UniqueInputFieldNamesRule-test.ts
│   │   │   ├── UniqueOperationNamesRule-test.ts
│   │   │   ├── UniqueOperationTypesRule-test.ts
│   │   │   ├── UniqueTypeNamesRule-test.ts
│   │   │   ├── UniqueVariableNamesRule-test.ts
│   │   │   ├── ValidationContext-test.ts
│   │   │   ├── ValuesOfCorrectTypeRule-test.ts
│   │   │   ├── VariablesAreInputTypesRule-test.ts
│   │   │   ├── VariablesInAllowedPositionRule-test.ts
│   │   │   ├── harness.ts
│   │   │   └── validation-test.ts
│   │   ├── index.ts
│   │   ├── rules/
│   │   │   ├── ExecutableDefinitionsRule.ts
│   │   │   ├── FieldsOnCorrectTypeRule.ts
│   │   │   ├── FragmentsOnCompositeTypesRule.ts
│   │   │   ├── KnownArgumentNamesRule.ts
│   │   │   ├── KnownDirectivesRule.ts
│   │   │   ├── KnownFragmentNamesRule.ts
│   │   │   ├── KnownTypeNamesRule.ts
│   │   │   ├── LoneAnonymousOperationRule.ts
│   │   │   ├── LoneSchemaDefinitionRule.ts
│   │   │   ├── MaxIntrospectionDepthRule.ts
│   │   │   ├── NoFragmentCyclesRule.ts
│   │   │   ├── NoUndefinedVariablesRule.ts
│   │   │   ├── NoUnusedFragmentsRule.ts
│   │   │   ├── NoUnusedVariablesRule.ts
│   │   │   ├── OverlappingFieldsCanBeMergedRule.ts
│   │   │   ├── PossibleFragmentSpreadsRule.ts
│   │   │   ├── PossibleTypeExtensionsRule.ts
│   │   │   ├── ProvidedRequiredArgumentsRule.ts
│   │   │   ├── ScalarLeafsRule.ts
│   │   │   ├── SingleFieldSubscriptionsRule.ts
│   │   │   ├── UniqueArgumentDefinitionNamesRule.ts
│   │   │   ├── UniqueArgumentNamesRule.ts
│   │   │   ├── UniqueDirectiveNamesRule.ts
│   │   │   ├── UniqueDirectivesPerLocationRule.ts
│   │   │   ├── UniqueEnumValueNamesRule.ts
│   │   │   ├── UniqueFieldDefinitionNamesRule.ts
│   │   │   ├── UniqueFragmentNamesRule.ts
│   │   │   ├── UniqueInputFieldNamesRule.ts
│   │   │   ├── UniqueOperationNamesRule.ts
│   │   │   ├── UniqueOperationTypesRule.ts
│   │   │   ├── UniqueTypeNamesRule.ts
│   │   │   ├── UniqueVariableNamesRule.ts
│   │   │   ├── ValuesOfCorrectTypeRule.ts
│   │   │   ├── VariablesAreInputTypesRule.ts
│   │   │   ├── VariablesInAllowedPositionRule.ts
│   │   │   └── custom/
│   │   │       ├── NoDeprecatedCustomRule.ts
│   │   │       └── NoSchemaIntrospectionCustomRule.ts
│   │   ├── specifiedRules.ts
│   │   └── validate.ts
│   └── version.ts
├── tsconfig.json
└── website/
    ├── .eslintignore
    ├── css/
    │   └── globals.css
    ├── icons/
    │   └── index.ts
    ├── next-env.d.ts
    ├── next.config.mjs
    ├── package.json
    ├── pages/
    │   ├── _app.tsx
    │   ├── _document.tsx
    │   ├── _meta.ts
    │   ├── api-v16/
    │   │   ├── _meta.ts
    │   │   ├── error.mdx
    │   │   ├── execution.mdx
    │   │   ├── graphql-http.mdx
    │   │   ├── graphql.mdx
    │   │   ├── language.mdx
    │   │   ├── type.mdx
    │   │   ├── utilities.mdx
    │   │   └── validation.mdx
    │   ├── docs/
    │   │   ├── _meta.ts
    │   │   ├── abstract-types.mdx
    │   │   ├── advanced-custom-scalars.mdx
    │   │   ├── authentication-and-express-middleware.mdx
    │   │   ├── authorization-strategies.mdx
    │   │   ├── basic-types.mdx
    │   │   ├── caching-strategies.mdx
    │   │   ├── constructing-types.mdx
    │   │   ├── cursor-based-pagination.mdx
    │   │   ├── custom-scalars.mdx
    │   │   ├── defer-stream.mdx
    │   │   ├── development-mode.mdx
    │   │   ├── getting-started.mdx
    │   │   ├── going-to-production.mdx
    │   │   ├── graphql-clients.mdx
    │   │   ├── graphql-errors.mdx
    │   │   ├── index.mdx
    │   │   ├── migrating-from-express-graphql.mdx
    │   │   ├── mutations-and-input-types.mdx
    │   │   ├── n1-dataloader.mdx
    │   │   ├── nullability.mdx
    │   │   ├── object-types.mdx
    │   │   ├── oneof-input-objects.mdx
    │   │   ├── operation-complexity-controls.mdx
    │   │   ├── passing-arguments.mdx
    │   │   ├── resolver-anatomy.mdx
    │   │   ├── running-an-express-graphql-server.mdx
    │   │   ├── scaling-graphql.mdx
    │   │   ├── subscriptions.mdx
    │   │   ├── testing-approaches.mdx
    │   │   ├── testing-best-practices.mdx
    │   │   ├── testing-graphql-servers.mdx
    │   │   ├── testing-operations.mdx
    │   │   ├── testing-resolvers.mdx
    │   │   ├── type-generation.mdx
    │   │   └── using-directives.mdx
    │   └── upgrade-guides/
    │       └── v16-v17.mdx
    ├── postcss.config.js
    ├── tailwind.config.js
    ├── theme.config.tsx
    ├── tsconfig.json
    └── vercel.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .babelrc-deno.json
================================================
{
  "plugins": [
    "@babel/plugin-syntax-typescript",
    ["./resources/add-extension-to-import-paths", { "extension": "ts" }],
    "./resources/inline-invariant"
  ]
}


================================================
FILE: .babelrc-npm.json
================================================
{
  "plugins": [
    "@babel/plugin-transform-typescript",
    "./resources/inline-invariant"
  ],
  "env": {
    "cjs": {
      "presets": [
        [
          "@babel/preset-env",
          { "modules": "commonjs", "targets": { "node": "12" } }
        ]
      ],
      "plugins": [
        ["./resources/add-extension-to-import-paths", { "extension": "js" }]
      ]
    },
    "mjs": {
      "presets": [
        ["@babel/preset-env", { "modules": false, "targets": { "node": "12" } }]
      ],
      "plugins": [
        ["./resources/add-extension-to-import-paths", { "extension": "mjs" }]
      ]
    }
  }
}


================================================
FILE: .babelrc.json
================================================
{
  "plugins": ["@babel/plugin-transform-typescript"],
  "presets": [
    [
      "@babel/preset-env",
      { "bugfixes": true, "targets": { "node": "current" } }
    ]
  ]
}


================================================
FILE: .c8rc.json
================================================
{
  "all": true,
  "include": ["src/"],
  "exclude": [
    "src/**/index.ts",
    "src/**/*-fuzz.ts",
    "src/jsutils/Maybe.ts",
    "src/jsutils/ObjMap.ts",
    "src/jsutils/PromiseOrValue.ts",
    "src/utilities/assertValidName.ts",
    "src/utilities/typedQueryDocumentNode.ts",
    "src/**/__tests__/**/*.ts"
  ],
  "clean": true,
  "temp-directory": "coverage",
  "report-dir": "coverage",
  "skip-full": true,
  "reporter": ["json", "html", "text"],
  "check-coverage": true,
  "branches": 100,
  "lines": 100,
  "functions": 100,
  "statements": 100
}


================================================
FILE: .eslintignore
================================================
# Copied from '.gitignore', please keep it in sync.
/.eslintcache
/node_modules
/coverage
/npmDist
/denoDist
/websiteDist
/website

# Ignore TS files inside integration test
/integrationTests/ts/*.ts


================================================
FILE: .eslintrc.yml
================================================
parserOptions:
  sourceType: script
env:
  es2022: true
reportUnusedDisableDirectives: true
plugins:
  - internal-rules
  - node
  - import
  - simple-import-sort
settings:
  node:
    tryExtensions: ['.js', '.jsx', '.json', '.node', '.ts', '.d.ts']

rules:
  ##############################################################################
  # Internal rules located in 'resources/eslint-internal-rules'.
  # See './resources/eslint-internal-rules/README.md'
  ##############################################################################

  internal-rules/only-ascii: error
  internal-rules/no-dir-import: error
  internal-rules/require-to-string-tag: off

  ##############################################################################
  # `eslint-plugin-node` rule list based on `v11.1.x`
  ##############################################################################

  # Possible Errors
  # https://github.com/mysticatea/eslint-plugin-node#possible-errors

  node/handle-callback-err: [error, error]
  node/no-callback-literal: error
  node/no-exports-assign: error
  node/no-extraneous-import: error
  node/no-extraneous-require: error
  node/no-missing-import: error
  node/no-missing-require: error
  node/no-new-require: error
  node/no-path-concat: error
  node/no-process-exit: off
  node/no-unpublished-bin: error
  node/no-unpublished-import: error
  node/no-unpublished-require: error
  node/no-unsupported-features/es-builtins: error
  node/no-unsupported-features/es-syntax: [error, { ignores: [modules] }]
  node/no-unsupported-features/node-builtins: error
  node/process-exit-as-throw: error
  node/shebang: error

  # Best Practices
  # https://github.com/mysticatea/eslint-plugin-node#best-practices
  node/no-deprecated-api: error

  # Stylistic Issues
  # https://github.com/mysticatea/eslint-plugin-node#stylistic-issues

  node/callback-return: error
  node/exports-style: off # TODO consider
  node/file-extension-in-import: off # TODO consider
  node/global-require: error
  node/no-mixed-requires: error
  node/no-process-env: off
  node/no-restricted-import: off
  node/no-restricted-require: off
  node/no-sync: error
  node/prefer-global/buffer: error
  node/prefer-global/console: error
  node/prefer-global/process: error
  node/prefer-global/text-decoder: error
  node/prefer-global/text-encoder: error
  node/prefer-global/url-search-params: error
  node/prefer-global/url: error
  node/prefer-promises/dns: off
  node/prefer-promises/fs: off

  ##############################################################################
  # `eslint-plugin-import` rule list based on `v2.26.x`
  ##############################################################################

  # Static analysis
  # https://github.com/benmosher/eslint-plugin-import#static-analysis
  import/no-unresolved: error
  import/named: error
  import/default: error
  import/namespace: error
  import/no-restricted-paths:
    - error
    - basePath: './'
      zones:
        - { target: './src', from: 'src/__testUtils__' }
  import/no-absolute-path: error
  import/no-dynamic-require: error
  import/no-internal-modules: off
  import/no-webpack-loader-syntax: error
  import/no-self-import: error
  import/no-cycle: error
  import/no-useless-path-segments: error
  import/no-relative-parent-imports: off
  import/no-relative-packages: off

  # Helpful warnings
  # https://github.com/benmosher/eslint-plugin-import#helpful-warnings
  import/export: error
  import/no-named-as-default: error
  import/no-named-as-default-member: error
  import/no-deprecated: error
  import/no-extraneous-dependencies: [error, { devDependencies: false }]
  import/no-mutable-exports: error
  import/no-unused-modules: error

  # Module systems
  # https://github.com/benmosher/eslint-plugin-import#module-systems
  import/unambiguous: error
  import/no-commonjs: error
  import/no-amd: error
  import/no-nodejs-modules: error
  import/no-import-module-exports: off

  # Style guide
  # https://github.com/benmosher/eslint-plugin-import#style-guide
  import/first: error
  import/exports-last: off
  import/no-duplicates: error
  import/no-namespace: error
  import/extensions:
    - error
    - ignorePackages
    - ts: never # TODO: remove once TS supports extensions
  import/order: [error, { newlines-between: always-and-inside-groups }]
  import/newline-after-import: error
  import/prefer-default-export: off
  import/max-dependencies: off
  import/no-unassigned-import: error
  import/no-named-default: error
  import/no-default-export: error
  import/no-named-export: off
  import/no-anonymous-default-export: error
  import/group-exports: off
  import/dynamic-import-chunkname: off

  ##############################################################################
  # `eslint-plugin-simple-import-sort` rule list based on `v2.25.x`
  # https://github.com/lydell/eslint-plugin-simple-import-sort
  ##############################################################################
  simple-import-sort/imports:
    - error
    - groups:
        # Packages.
        # Things that start with a letter (or digit or underscore), or `@` followed by a letter.
        - ["^@?\\w"]

        # General utilities
        - ["^(\\./|(\\.\\./)+)__testUtils__/"]
        - ["^(\\./|(\\.\\./)+)jsutils/"]

        # Top-level directories
        - ["^(\\./|(\\.\\./)+)error/"]
        - ["^(\\./|(\\.\\./)+)language/"]
        - ["^(\\./|(\\.\\./)+)type/"]
        - ["^(\\./|(\\.\\./)+)validation/"]
        - ["^(\\./|(\\.\\./)+)execution/"]
        - ["^(\\./|(\\.\\./)+)utilities/"]

        # Relative imports.
        # Anything that starts with a dot.
        - ["^(\\.\\./){4,}"]
        - ["^(\\.\\./){3}"]
        - ["^(\\.\\./){2}"]
        - ["^(\\.\\./){1}"]
        - ["^\\./"]
  simple-import-sort/exports: off # TODO

  ##############################################################################
  # ESLint builtin rules list based on `v8.13.x`
  ##############################################################################

  # Possible Errors
  # https://eslint.org/docs/rules/#possible-errors

  for-direction: error
  getter-return: error
  no-async-promise-executor: error
  no-await-in-loop: error
  no-compare-neg-zero: error
  no-cond-assign: error
  no-console: warn
  no-constant-condition: error
  no-control-regex: error
  no-debugger: warn
  no-dupe-args: error
  no-dupe-else-if: error
  no-dupe-keys: error
  no-duplicate-case: error
  no-empty: error
  no-empty-character-class: error
  no-ex-assign: error
  no-extra-boolean-cast: error
  no-func-assign: error
  no-import-assign: error
  no-inner-declarations: [error, both]
  no-invalid-regexp: error
  no-irregular-whitespace: error
  no-loss-of-precision: error
  no-misleading-character-class: error
  no-obj-calls: error
  no-promise-executor-return: off # TODO
  no-prototype-builtins: error
  no-regex-spaces: error
  no-setter-return: error
  no-sparse-arrays: error
  no-template-curly-in-string: error
  no-unreachable: error
  no-unreachable-loop: error
  no-unsafe-finally: error
  no-unsafe-negation: error
  no-unsafe-optional-chaining: [error, { disallowArithmeticOperators: true }]
  no-unused-private-class-members: error
  no-useless-backreference: error
  require-atomic-updates: error
  use-isnan: error
  valid-typeof: error

  # Best Practices
  # https://eslint.org/docs/rules/#best-practices

  accessor-pairs: error
  array-callback-return: error
  block-scoped-var: error
  class-methods-use-this: off
  complexity: off
  consistent-return: off
  curly: error
  default-case: off
  default-case-last: error
  default-param-last: error
  dot-notation: error
  eqeqeq: [error, smart]
  grouped-accessor-pairs: error
  guard-for-in: error
  max-classes-per-file: off
  no-alert: error
  no-caller: error
  no-case-declarations: error
  no-constructor-return: error
  no-div-regex: error
  no-else-return: error
  no-empty-function: error
  no-empty-pattern: error
  no-eq-null: off
  no-eval: error
  no-extend-native: error
  no-extra-bind: error
  no-extra-label: error
  no-fallthrough: error
  no-global-assign: error
  no-implicit-coercion: error
  no-implicit-globals: off
  no-implied-eval: error
  no-invalid-this: error
  no-iterator: error
  no-labels: error
  no-lone-blocks: error
  no-loop-func: error
  no-magic-numbers: off
  no-multi-str: error
  no-new: error
  no-new-func: error
  no-new-wrappers: error
  no-nonoctal-decimal-escape: error
  no-octal: error
  no-octal-escape: error
  no-param-reassign: error
  no-proto: error
  no-redeclare: error
  no-restricted-properties: off
  no-return-assign: error
  no-return-await: error
  no-script-url: error
  no-self-assign: error
  no-self-compare: off # TODO
  no-sequences: error
  no-throw-literal: error
  no-unmodified-loop-condition: error
  no-unused-expressions: error
  no-unused-labels: error
  no-useless-call: error
  no-useless-catch: error
  no-useless-concat: error
  no-useless-escape: error
  no-useless-return: error
  no-void: error
  no-warning-comments: off
  no-with: error
  prefer-named-capture-group: off # ES2018
  prefer-promise-reject-errors: error
  prefer-regex-literals: error
  radix: error
  require-await: error
  require-unicode-regexp: off
  vars-on-top: error
  yoda: [error, never, { exceptRange: true }]

  # Strict Mode
  # https://eslint.org/docs/rules/#strict-mode

  strict: error

  # Variables
  # https://eslint.org/docs/rules/#variables

  init-declarations: off
  no-delete-var: error
  no-label-var: error
  no-restricted-globals: off
  no-shadow: error
  no-shadow-restricted-names: error
  no-undef: error
  no-undef-init: error
  no-undefined: off
  no-unused-vars: [error, { vars: all, args: all, argsIgnorePattern: '^_' }]
  no-use-before-define: off

  # Stylistic Issues
  # https://eslint.org/docs/rules/#stylistic-issues

  camelcase: error
  capitalized-comments: off # maybe
  consistent-this: off
  func-name-matching: off
  func-names: [error, as-needed] # improve debug experience
  func-style: off
  id-denylist: off
  id-length: off
  id-match: [error, '^(?:_?[a-zA-Z0-9]*)|[_A-Z0-9]+$']
  line-comment-position: off
  lines-around-comment: off
  lines-between-class-members: [error, always, { exceptAfterSingleLine: true }]
  max-depth: off
  max-lines: off
  max-lines-per-function: off
  max-nested-callbacks: off
  max-params: off
  max-statements: off
  max-statements-per-line: off
  multiline-comment-style: off
  new-cap: error
  no-array-constructor: error
  no-bitwise: off
  no-continue: off
  no-inline-comments: off
  no-lonely-if: error
  no-multi-assign: off
  no-negated-condition: off
  no-nested-ternary: off
  no-new-object: error
  no-plusplus: off
  no-restricted-syntax: off
  no-tabs: error
  no-ternary: off
  no-underscore-dangle: off # TODO
  no-unneeded-ternary: error
  one-var: [error, never]
  operator-assignment: error
  padding-line-between-statements: off
  prefer-exponentiation-operator: error
  prefer-object-spread: error
  quotes: [error, single, { avoidEscape: true }]
  sort-keys: off
  sort-vars: off
  spaced-comment: error

  # ECMAScript 6
  # https://eslint.org/docs/rules/#ecmascript-6

  arrow-body-style: error
  constructor-super: error
  no-class-assign: error
  no-const-assign: error
  no-dupe-class-members: error
  no-duplicate-imports: off # Superseded by `import/no-duplicates`
  no-new-symbol: error
  no-restricted-exports: off
  no-restricted-imports: off
  no-this-before-super: error
  no-useless-computed-key: error
  no-useless-constructor: error
  no-useless-rename: error
  no-var: error
  object-shorthand: error
  prefer-arrow-callback: error
  prefer-const: error
  prefer-destructuring: off
  prefer-numeric-literals: error
  prefer-object-has-own: off # TODO requires Node.js v16.9.0
  prefer-rest-params: off # TODO
  prefer-spread: error
  prefer-template: off
  require-yield: error
  sort-imports: off
  symbol-description: off

  # Bellow rules are disabled because coflicts with Prettier, see:
  # https://github.com/prettier/eslint-config-prettier/blob/master/index.js
  array-bracket-newline: off
  array-bracket-spacing: off
  array-element-newline: off
  arrow-parens: off
  arrow-spacing: off
  block-spacing: off
  brace-style: off
  comma-dangle: off
  comma-spacing: off
  comma-style: off
  computed-property-spacing: off
  dot-location: off
  eol-last: off
  func-call-spacing: off
  function-call-argument-newline: off
  function-paren-newline: off
  generator-star-spacing: off
  implicit-arrow-linebreak: off
  indent: off
  jsx-quotes: off
  key-spacing: off
  keyword-spacing: off
  linebreak-style: off
  max-len: off
  multiline-ternary: off
  newline-per-chained-call: off
  new-parens: off
  no-confusing-arrow: off
  no-extra-parens: off
  no-extra-semi: off
  no-floating-decimal: off
  no-mixed-operators: off
  no-mixed-spaces-and-tabs: off
  no-multi-spaces: off
  no-multiple-empty-lines: off
  no-trailing-spaces: off
  no-unexpected-multiline: off
  no-whitespace-before-property: off
  nonblock-statement-body-position: off
  object-curly-newline: off
  object-curly-spacing: off
  object-property-newline: off
  one-var-declaration-per-line: off
  operator-linebreak: off
  padded-blocks: off
  quote-props: off
  rest-spread-spacing: off
  semi: off
  semi-spacing: off
  semi-style: off
  space-before-blocks: off
  space-before-function-paren: off
  space-in-parens: off
  space-infix-ops: off
  space-unary-ops: off
  switch-colon-spacing: off
  template-curly-spacing: off
  template-tag-spacing: off
  unicode-bom: off
  wrap-iife: off
  wrap-regex: off
  yield-star-spacing: off

overrides:
  - files:
      - '**/*.ts'
      - '**/*.tsx'
    parser: '@typescript-eslint/parser'
    parserOptions:
      sourceType: module
      project: ['./tsconfig.json', './website/tsconfig.json']
    plugins:
      - '@typescript-eslint'
      - 'eslint-plugin-tsdoc'
    extends:
      - plugin:import/typescript
    rules:
      ##########################################################################
      # `eslint-plugin-tsdoc` rule list based on `v0.2.x`
      # https://github.com/microsoft/tsdoc/tree/master/eslint-plugin
      ##########################################################################

      tsdoc/syntax: error

      ##########################################################################
      # `@typescript-eslint/eslint-plugin` rule list based on `v5.19.x`
      ##########################################################################

      # Supported Rules
      # https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#supported-rules
      '@typescript-eslint/adjacent-overload-signatures': error
      '@typescript-eslint/array-type': [error, { default: generic }]
      '@typescript-eslint/await-thenable': error
      '@typescript-eslint/ban-ts-comment': [error, { 'ts-expect-error': false }]
      '@typescript-eslint/ban-tslint-comment': error
      '@typescript-eslint/ban-types': off # TODO temporarily disabled
      '@typescript-eslint/class-literal-property-style': off # TODO enable after TS conversion
      '@typescript-eslint/consistent-indexed-object-style':
        [error, index-signature]
      '@typescript-eslint/consistent-type-assertions': off # TODO temporarily disable
      '@typescript-eslint/consistent-type-definitions': error
      '@typescript-eslint/consistent-type-exports': error
      '@typescript-eslint/consistent-type-imports': error
      '@typescript-eslint/explicit-function-return-type': off # TODO consider
      '@typescript-eslint/explicit-member-accessibility': off # TODO consider
      '@typescript-eslint/explicit-module-boundary-types': off # TODO consider
      '@typescript-eslint/member-ordering': error
      '@typescript-eslint/method-signature-style': error
      '@typescript-eslint/naming-convention': off # TODO consider
      '@typescript-eslint/no-base-to-string': error
      '@typescript-eslint/no-confusing-non-null-assertion': error
      '@typescript-eslint/no-confusing-void-expression': off # TODO enable with ignoreArrowShorthand
      '@typescript-eslint/no-dynamic-delete': off
      '@typescript-eslint/no-empty-interface': error
      '@typescript-eslint/no-explicit-any': off # TODO error
      '@typescript-eslint/no-extra-non-null-assertion': error
      '@typescript-eslint/no-extraneous-class': off # TODO consider
      '@typescript-eslint/no-floating-promises': error
      '@typescript-eslint/no-for-in-array': error
      '@typescript-eslint/no-implicit-any-catch': off # TODO: Enable after TS conversion
      '@typescript-eslint/no-implied-eval': error
      '@typescript-eslint/no-inferrable-types':
        [error, { ignoreParameters: true, ignoreProperties: true }]
      '@typescript-eslint/no-misused-new': error
      '@typescript-eslint/no-misused-promises': error
      '@typescript-eslint/no-namespace': error
      '@typescript-eslint/no-non-null-asserted-nullish-coalescing': error
      '@typescript-eslint/no-non-null-asserted-optional-chain': error
      '@typescript-eslint/no-non-null-assertion': error
      '@typescript-eslint/no-parameter-properties': error
      '@typescript-eslint/no-redundant-type-constituents': error
      '@typescript-eslint/no-invalid-void-type': error
      '@typescript-eslint/no-require-imports': error
      '@typescript-eslint/no-this-alias': error
      '@typescript-eslint/no-type-alias': off # TODO consider
      '@typescript-eslint/no-unnecessary-boolean-literal-compare': error
      '@typescript-eslint/no-unnecessary-condition': off # TODO temporary disable
      '@typescript-eslint/no-unnecessary-qualifier': error
      '@typescript-eslint/no-unnecessary-type-arguments': error
      '@typescript-eslint/no-unnecessary-type-assertion': error
      '@typescript-eslint/no-unnecessary-type-constraint': error
      '@typescript-eslint/no-unsafe-argument': off # TODO consider
      '@typescript-eslint/no-unsafe-assignment': off # TODO consider
      '@typescript-eslint/no-unsafe-call': off # TODO consider
      '@typescript-eslint/no-unsafe-member-access': off # TODO consider
      '@typescript-eslint/no-unsafe-return': off # TODO consider
      '@typescript-eslint/no-useless-empty-export': error
      '@typescript-eslint/no-var-requires': error
      '@typescript-eslint/non-nullable-type-assertion-style': off #TODO temporarily disabled
      '@typescript-eslint/prefer-as-const': error
      '@typescript-eslint/prefer-enum-initializers': error
      '@typescript-eslint/prefer-for-of': error
      '@typescript-eslint/prefer-function-type': error
      '@typescript-eslint/prefer-includes': error
      '@typescript-eslint/prefer-literal-enum-member': error
      '@typescript-eslint/prefer-namespace-keyword': error
      '@typescript-eslint/prefer-nullish-coalescing': error
      '@typescript-eslint/prefer-optional-chain': error
      '@typescript-eslint/prefer-readonly': off
      '@typescript-eslint/prefer-readonly-parameter-types': off # TODO consider
      '@typescript-eslint/prefer-reduce-type-parameter': error
      '@typescript-eslint/prefer-regexp-exec': off
      '@typescript-eslint/prefer-return-this-type': error
      '@typescript-eslint/prefer-string-starts-ends-with': error
      '@typescript-eslint/prefer-ts-expect-error': error
      '@typescript-eslint/promise-function-async': off
      '@typescript-eslint/require-array-sort-compare': error
      '@typescript-eslint/restrict-plus-operands': off #TODO temporarily disabled
      '@typescript-eslint/restrict-template-expressions': off #TODO temporarily disabled
      '@typescript-eslint/sort-type-union-intersection-members': off # TODO consider
      '@typescript-eslint/strict-boolean-expressions': off # TODO consider
      '@typescript-eslint/switch-exhaustiveness-check': error
      '@typescript-eslint/triple-slash-reference': error
      '@typescript-eslint/typedef': off
      '@typescript-eslint/unbound-method': off # TODO consider
      '@typescript-eslint/unified-signatures': error

      # Extension Rules
      # https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#extension-rules

      # Disable conflicting ESLint rules and enable TS-compatible ones
      default-param-last: off
      dot-notation: off
      lines-between-class-members: off
      no-array-constructor: off
      no-dupe-class-members: off
      no-empty-function: off
      no-invalid-this: off
      no-loop-func: off
      no-loss-of-precision: off
      no-redeclare: off
      no-throw-literal: off
      no-shadow: off
      no-unused-expressions: off
      no-unused-vars: off
      no-useless-constructor: off
      require-await: off
      no-return-await: off
      '@typescript-eslint/default-param-last': error
      '@typescript-eslint/dot-notation': error
      '@typescript-eslint/lines-between-class-members':
        [error, always, { exceptAfterSingleLine: true }]
      '@typescript-eslint/no-array-constructor': error
      '@typescript-eslint/no-dupe-class-members': error
      '@typescript-eslint/no-empty-function': error
      '@typescript-eslint/no-invalid-this': error
      '@typescript-eslint/no-loop-func': error
      '@typescript-eslint/no-loss-of-precision': error
      '@typescript-eslint/no-redeclare': error
      '@typescript-eslint/no-throw-literal': error # TODO [error, { allowThrowingAny: false, allowThrowingUnknown: false }]
      '@typescript-eslint/no-shadow': error
      '@typescript-eslint/no-unused-expressions': error
      '@typescript-eslint/no-unused-vars':
        [
          error,
          {
            vars: all,
            args: all,
            argsIgnorePattern: '^_',
            varsIgnorePattern: '^_T',
          },
        ]
      '@typescript-eslint/no-useless-constructor': error
      '@typescript-eslint/require-await': error
      '@typescript-eslint/return-await': error

      # Disable for JS and TS
      '@typescript-eslint/init-declarations': off
      '@typescript-eslint/no-magic-numbers': off
      '@typescript-eslint/no-restricted-imports': off
      '@typescript-eslint/no-use-before-define': off
      '@typescript-eslint/no-duplicate-imports': off # Superseded by `import/no-duplicates`

      # Below rules are disabled because they conflict with Prettier, see:
      # https://github.com/prettier/eslint-config-prettier/blob/main/index.js
      '@typescript-eslint/object-curly-spacing': off
      '@typescript-eslint/quotes': off
      '@typescript-eslint/brace-style': off
      '@typescript-eslint/comma-dangle': off
      '@typescript-eslint/comma-spacing': off
      '@typescript-eslint/func-call-spacing': off
      '@typescript-eslint/indent': off
      '@typescript-eslint/keyword-spacing': off
      '@typescript-eslint/member-delimiter-style': off
      '@typescript-eslint/no-extra-parens': off
      '@typescript-eslint/no-extra-semi': off
      '@typescript-eslint/semi': off
      '@typescript-eslint/space-before-blocks': off
      '@typescript-eslint/space-before-function-paren': off
      '@typescript-eslint/space-infix-ops': off
      '@typescript-eslint/type-annotation-spacing': off
  - files: 'src/**'
    rules:
      internal-rules/require-to-string-tag: error
  - files: 'src/**/__*__/**'
    rules:
      internal-rules/require-to-string-tag: off
      node/no-unpublished-import: [error, { allowModules: ['chai', 'mocha'] }]
      import/no-deprecated: off
      import/no-restricted-paths: off
      import/no-extraneous-dependencies: [error, { devDependencies: true }]
  - files: 'integrationTests/*'
    env:
      node: true
    rules:
      node/no-sync: off
      node/no-unpublished-require: [error, { allowModules: ['mocha'] }]
      import/no-extraneous-dependencies: [error, { devDependencies: true }]
      import/no-nodejs-modules: off
  - files: 'integrationTests/*/**'
    env:
      node: true
    rules:
      node/no-sync: off
      node/no-missing-require: [error, { allowModules: ['graphql'] }]
      import/no-commonjs: off
      import/no-nodejs-modules: off
      no-console: off
  - files: 'benchmark/**'
    env:
      node: true
    rules:
      internal-rules/only-ascii: [error, { allowEmoji: true }]
      node/no-sync: off
      node/no-missing-require: off
      import/no-nodejs-modules: off
      import/no-commonjs: off
      no-console: off
      no-await-in-loop: off
  - files: 'resources/**'
    env:
      node: true
    rules:
      internal-rules/only-ascii: [error, { allowEmoji: true }]
      node/no-unpublished-require: off
      node/no-sync: off
      import/no-extraneous-dependencies: [error, { devDependencies: true }]
      import/no-nodejs-modules: off
      import/no-commonjs: off
      no-console: off
  - files: '**/*.jsx'
    parserOptions:
      sourceType: module
      ecmaFeatures:
        jsx: true
    rules:
      node/no-unpublished-import: off
      import/no-default-export: off
  - files: 'website/**'
    env:
      node: true
    plugins:
      - 'react'
    extends:
      - 'plugin:react/recommended'
      - 'plugin:react-hooks/recommended'
    settings:
      react:
        version: detect
    rules:
      node/no-unpublished-require: off
      node/no-missing-import: off
      import/no-default-export: off
      import/no-commonjs: off
      import/no-nodejs-modules: off
      import/no-extraneous-dependencies: off


================================================
FILE: .github/CODEOWNERS
================================================
*  @graphql/graphql-js-reviewers


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing to graphql-js

We want to make contributing to this project as easy and transparent as
possible. Hopefully this document makes the process for contributing clear and
answers any questions you may have. If not, feel free to open an
[Issue](https://github.com/graphql/graphql-spec/issues/).

## Issues

We use GitHub issues to track public bugs and requests. Please ensure your bug
description is clear and has sufficient instructions to be able to reproduce the
issue. The best way is to provide a reduced test case on jsFiddle or jsBin.

## Pull Requests

All active development of graphql-js happens on GitHub. We actively welcome
your [pull requests](https://help.github.com/articles/creating-a-pull-request).

### Considered Changes

Since graphql-js is a reference implementation of the
[GraphQL spec](https://graphql.github.io/graphql-spec/), only changes which comply
with this spec will be considered. If you have a change in mind which requires a
change to the spec, please first open an
[issue](https://github.com/graphql/graphql-spec/issues/) against the spec.

### GraphQL Specification Membership Agreement

This repository is managed by EasyCLA. Project participants must sign the free ([GraphQL Specification Membership agreement](https://preview-spec-membership.graphql.org) before making a contribution. You only need to do this one time, and it can be signed by [individual contributors](http://individual-spec-membership.graphql.org/) or their [employers](http://corporate-spec-membership.graphql.org/).

To initiate the signature process please open a PR against this repo. The EasyCLA bot will block the merge if we still need a membership agreement from you.

You can find [detailed information here](https://github.com/graphql/graphql-wg/tree/main/membership). If you have issues, please email [operations@graphql.org](mailto:operations@graphql.org).

If your company benefits from GraphQL and you would like to provide essential financial support for the systems and people that power our community, please also consider membership in the [GraphQL Foundation](https://foundation.graphql.org/join).

### Getting Started

1. Fork this repo by using the "Fork" button in the upper-right

2. Check out your fork

   ```sh
   git clone git@github.com:your_name_here/graphql-js.git
   ```

3. Install or Update all dependencies

   ```sh
   npm install
   ```

4. Get coding! If you've added code, add tests. If you've changed APIs, update
   any relevant documentation or tests. Ensure your work is committed within a
   feature branch.

5. Ensure all tests pass

   ```sh
   npm test
   ```

## Coding Style

This project uses [Prettier](https://prettier.io/) for standard formatting. To
ensure your pull request matches the style guides, run `npm run prettier`.

- 2 spaces for indentation (no tabs)
- 80 character line length strongly preferred.
- Prefer `'` over `"`
- ES6 syntax when possible. However do not rely on ES6-specific functions to be available.
- Use [TypeScript](https://www.typescriptlang.org).
- Use semicolons;
- Trailing commas,
- Avd abbr wrds.

## Release on NPM

Releases on `16.x.x` are managed by local scripts and GitHub Actions:

```bash
git switch 16.x.x
git switch -c <my_release_branch>
export GH_TOKEN=<token> # required to build changelog via GitHub API requests
npm run release:prepare -- 16.x.x patch
```

Push `<my_release_branch>`, open a PR from `<my_release_branch>` to `16.x.x`,
wait for CI to pass, merge the PR, and then approve the GitHub Actions release
workflow.

## License

By contributing to graphql-js, you agree that your contributions will be
licensed under its [MIT license](../LICENSE).


================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
# Questions regarding how to use GraphQL

We want to keep signal strong in the GitHub issue tracker – to make sure that it remains the best place to track bugs and features that affect development.

If you have a question on how to use GraphQL, please [post it to Stack Overflow](https://stackoverflow.com/questions/ask?tags=graphql) with the tag [#graphql](https://stackoverflow.com/questions/tagged/graphql).

Please do not post general questions directly as GitHub issues. They may sit for weeks unanswered, or may be spontaneously closed without answer.

# Reporting issues with GraphQL.js

Before filing a new issue, make sure an issue for your problem doesn't already exist.

The best way to get a bug fixed is to provide a _pull request_ with a simplified failing test case (or better yet, include a fix).

# Feature requests

GraphQL.js is a reference implementation of the [GraphQL specification](https://github.com/graphql/graphql-spec). To discuss new features which are not GraphQL.js specific and fundamentally change the way GraphQL works, open an issue against the specification.

# Security bugs

Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe disclosure of security bugs. With that in mind, please do not file public issues; go through the process outlined on that page.


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
  workflow_call:
    secrets:
      codecov_token:
        required: true
permissions: {}
jobs:
  lint:
    name: Lint source files
    runs-on: ubuntu-latest
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Lint ESLint
        run: npm run lint

      - name: Check Types
        run: npm run check

      - name: Lint Prettier
        run: npm run prettier:check

      - name: Spellcheck
        run: npm run check:spelling

      - name: Lint GitHub Actions
        uses: docker://rhysd/actionlint:latest
        with:
          args: -color

  checkForCommonlyIgnoredFiles:
    name: Check for commonly ignored files
    runs-on: ubuntu-latest
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Check if commit contains files that should be ignored
        run: |
          git clone --depth 1 https://github.com/github/gitignore.git --revision b19bb58983cdae1e3a3fd6eafba0b9f2ec3c53ca

          rm gitignore/ModelSim.gitignore
          rm gitignore/Global/Images.gitignore
          cat gitignore/Node.gitignore gitignore/Global/*.gitignore > all.gitignore

          IGNORED_FILES=$(git ls-files --cached --ignored --exclude-from=all.gitignore)
          if  [[ "$IGNORED_FILES" != "" ]]; then
            echo -e "::error::Please remove these files:\n$IGNORED_FILES" | sed -z 's/\n/%0A/g'
            exit 1
          fi

  checkPackageLock:
    name: Check health of package-lock.json file
    runs-on: ubuntu-latest
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Check that package-lock.json doesn't have conflicts
        run: npm ls --depth 999

      - name: Run npm install
        run: npm install --ignore-scripts --force --package-lock-only --engine-strict --strict-peer-deps

      - name: Check that package-lock.json is in sync with package.json
        run: git diff --exit-code package-lock.json

  integrationTests:
    name: Run integration tests
    runs-on: ubuntu-latest
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version-file: '.node-version'
          # We install bunch of packages during integration tests without locking them
          # so we skip cache action to not pollute cache for other jobs.

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Run Integration Tests
        run: npm run check:integrations

  fuzz:
    name: Run fuzzing tests
    runs-on: ubuntu-latest
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Run Tests
        run: npm run fuzzonly

  coverage:
    name: Measure test coverage
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Run tests and measure code coverage
        run: npm run testonly:cover

      - name: Upload coverage to Codecov
        if: ${{ always() }}
        uses: codecov/codecov-action@v4
        with:
          file: ./coverage/coverage-final.json
          fail_ci_if_error: true
          token: ${{ secrets.codecov_token }}

  test:
    name: Run tests on Node v${{ matrix.node_version_to_setup }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node_version_to_setup: [12, 14, 16, 17]
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Setup Node.js v${{ matrix.node_version_to_setup }}
        uses: actions/setup-node@v4
        with:
          cache: npm
          node-version: ${{ matrix.node_version_to_setup }}

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Run Tests
        run: npm run testonly

  codeql:
    name: Run CodeQL security scan
    runs-on: ubuntu-latest
    permissions:
      contents: read # for actions/checkout
      security-events: write # for codeql-action
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v3
        with:
          languages: 'javascript, typescript'

      - name: Perform CodeQL analysis
        uses: github/codeql-action/analyze@v3

  build-npm-dist:
    name: Build 'npmDist' artifact
    runs-on: ubuntu-latest
    needs: [test, fuzz, lint, integrationTests]
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Build NPM package
        run: npm run build:npm

      - name: Upload npmDist package
        uses: actions/upload-artifact@v4
        with:
          name: npmDist
          path: ./npmDist

  build-deno-dist:
    name: Build 'denoDist' artifact
    runs-on: ubuntu-latest
    needs: [test, fuzz, lint, integrationTests]
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Build Deno package
        run: npm run build:deno

      - name: Upload denoDist package
        uses: actions/upload-artifact@v4
        with:
          name: denoDist
          path: ./denoDist


================================================
FILE: .github/workflows/deploy-artifact-as-branch.yml
================================================
name: Deploy specified artifact as a branch
on:
  workflow_call:
    inputs:
      environment:
        description: Environment to publish under
        required: true
        type: string
      artifact_name:
        description: Artifact name
        required: true
        type: string
      target_branch:
        description: Target branch
        required: true
        type: string
      commit_message:
        description: Commit message
        required: true
        type: string
permissions: {}
jobs:
  deploy-artifact-as-branch:
    environment:
      name: ${{ inputs.environment }}
      url: ${{ github.server_url }}/${{ github.repository }}/tree/${{ inputs.target_branch }}
    runs-on: ubuntu-latest
    permissions:
      contents: write # for actions/checkout and to push branch
    steps:
      - name: Checkout `${{ inputs.target_branch }}` branch
        uses: actions/checkout@v4
        with:
          ref: ${{ inputs.target_branch }}

      - name: Remove existing files first
        run: git rm -r .

      - uses: actions/download-artifact@v4
        with:
          name: ${{ inputs.artifact_name }}

      - name: Publish target branch
        run: |
          git add -A
          if git diff --staged --quiet; then
            echo 'Nothing to publish'
          else
            git config user.name 'GitHub Action Script'
            git config user.email 'please@open.issue'

            git commit -a -m "$COMMIT_MESSAGE"
            git push
            echo 'Pushed'
          fi
        env:
          TARGET_BRANCH: ${{ inputs.target_branch }}
          COMMIT_MESSAGE: ${{ inputs.commit_message }}


================================================
FILE: .github/workflows/pull_request.yml
================================================
name: PullRequest
on: pull_request
permissions: {}
jobs:
  ci:
    permissions:
      contents: read # for actions/checkout
      security-events: write # for codeql-action
    uses: ./.github/workflows/ci.yml
    secrets:
      codecov_token: ${{ secrets.CODECOV_TOKEN }}

  dependency-review:
    name: Security check of added dependencies
    runs-on: ubuntu-latest
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Dependency review
        uses: actions/dependency-review-action@v2

  diff-npm-package:
    name: Diff content of NPM package
    runs-on: ubuntu-latest
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Deepen cloned repo
        env:
          BASE_SHA: ${{ github.event.pull_request.base.sha }}
        run: 'git fetch --depth=1 origin "$BASE_SHA:refs/tags/BASE"'

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Generate report
        run: 'node resources/diff-npm-package.js BASE HEAD'

      - name: Upload generated report
        uses: actions/upload-artifact@v4
        with:
          name: npm-dist-diff.html
          path: ./npm-dist-diff.html
          if-no-files-found: ignore


================================================
FILE: .github/workflows/pull_request_opened.yml
================================================
name: PullRequestOpened
on:
  pull_request:
    types: [opened]
permissions: {}
jobs:
  save-github-event:
    name: "Save `github.event` as an artifact to use in subsequent 'workflow_run' actions"
    runs-on: ubuntu-latest
    steps:
      - name: Upload event.json
        uses: actions/upload-artifact@v4
        with:
          name: event.json
          path: ${{ github.event_path }}


================================================
FILE: .github/workflows/push.yml
================================================
name: Push
on: push
permissions: {}
jobs:
  ci:
    permissions:
      contents: read # for actions/checkout
      security-events: write
    uses: ./.github/workflows/ci.yml
    secrets:
      codecov_token: ${{ secrets.CODECOV_TOKEN }}
  deploy-to-npm-branch:
    name: Deploy to `npm` branch
    needs: ci
    if: github.ref == 'refs/heads/main'
    permissions:
      contents: write # for actions/checkout and to push branch
    uses: ./.github/workflows/deploy-artifact-as-branch.yml
    with:
      environment: npm-branch
      artifact_name: npmDist
      target_branch: npm
      commit_message: "Deploy ${{github.event.workflow_run.head_sha}} to 'npm' branch"

  deploy-to-deno-branch:
    name: Deploy to `deno` branch
    needs: ci
    if: github.ref == 'refs/heads/main'
    permissions:
      contents: write # for actions/checkout and to push branch
    uses: ./.github/workflows/deploy-artifact-as-branch.yml
    with:
      environment: deno-branch
      artifact_name: denoDist
      target_branch: deno
      commit_message: "Deploy ${{github.event.workflow_run.head_sha}} to 'deno' branch"


================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
  push:
    branches:
      - 16.x.x
permissions: {}
jobs:
  check-publish:
    name: Check for publish need and prepare artifacts
    # Keep this guard on every job for defense-in-depth in case job dependencies are refactored.
    if: ${{ !github.event.repository.fork && github.repository == 'graphql/graphql-js' && github.ref_name == '16.x.x' }}
    runs-on: ubuntu-latest
    outputs:
      should_publish: ${{ steps.release_metadata.outputs.should_publish }}
      tag: ${{ steps.release_metadata.outputs.tag }}
      dist_tag: ${{ steps.release_metadata.outputs.dist_tag }}
      prerelease: ${{ steps.release_metadata.outputs.prerelease }}
      tarball_name: ${{ steps.release_metadata.outputs.tarball_name }}
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref_name }}
      cancel-in-progress: true
    permissions:
      contents: read # for actions/checkout
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          # Keep checkout fast: we should only need to scroll back a few
          # commits for release notes. If the release commit is older than
          # this depth, release:metadata will emit empty release notes.
          fetch-depth: 10
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Read release metadata
        id: release_metadata
        run: |
          release_metadata_json="$(npm run --silent release:metadata)"
          jq -r '
            "version=\(.version)",
            "tag=\(.tag)",
            "dist_tag=\(.distTag)",
            "prerelease=\(.prerelease)",
            "package_spec=\(.packageSpec)",
            "tarball_name=\(.tarballName)",
            "should_publish=\(.shouldPublish)"
          ' <<< "${release_metadata_json}" >> "${GITHUB_OUTPUT}"
          jq -r '.releaseNotes' <<< "${release_metadata_json}" > ./release-notes.md

      - name: Log publish decision
        run: |
          if [ "${{ steps.release_metadata.outputs.should_publish }}" = "true" ]; then
            echo "${{ steps.release_metadata.outputs.package_spec }} is not published yet."
          else
            echo "${{ steps.release_metadata.outputs.package_spec }} is already published."
          fi

      - name: Build NPM package
        if: steps.release_metadata.outputs.should_publish == 'true'
        run: npm run build:npm

      - name: Pack npmDist package
        if: steps.release_metadata.outputs.should_publish == 'true'
        run: npm pack ./npmDist --pack-destination . > /dev/null

      - name: Upload npm package tarball
        if: steps.release_metadata.outputs.should_publish == 'true'
        uses: actions/upload-artifact@v4
        with:
          name: npmDist-tarball
          path: ./${{ steps.release_metadata.outputs.tarball_name }}

      - name: Upload release notes
        if: steps.release_metadata.outputs.should_publish == 'true'
        uses: actions/upload-artifact@v4
        with:
          name: release-notes
          path: ./release-notes.md

  publish-npm:
    name: Publish npm package
    needs: check-publish
    # Keep this guard on every job for defense-in-depth in case job dependencies are refactored.
    if: ${{ !github.event.repository.fork && github.repository == 'graphql/graphql-js' && github.ref_name == '16.x.x' && needs.check-publish.outputs.should_publish == 'true' && needs.check-publish.result == 'success' }}
    runs-on: ubuntu-latest
    environment: release
    permissions:
      contents: read # keep token scopes minimal
      id-token: write # for npm trusted publishing via OIDC
    steps:
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          # npm trusted publishing requires a newer Node/npm line than 16.x.x
          # branch runtime constraints, so pin only this job to Node 24.
          node-version: 24

      - name: Download npmDist package
        uses: actions/download-artifact@v4
        with:
          name: npmDist-tarball
          path: ./artifacts

      - name: Publish npm package
        run: |
          if [ -n "${{ needs.check-publish.outputs.dist_tag }}" ]; then
            npm publish --provenance --tag "${{ needs.check-publish.outputs.dist_tag }}" "./artifacts/${{ needs.check-publish.outputs.tarball_name }}"
          else
            npm publish --provenance "./artifacts/${{ needs.check-publish.outputs.tarball_name }}"
          fi

  create-release:
    name: Create release
    needs: check-publish
    # Keep this guard on every job for defense-in-depth in case job dependencies are refactored.
    if: ${{ !github.event.repository.fork && github.repository == 'graphql/graphql-js' && github.ref_name == '16.x.x' && needs.check-publish.outputs.should_publish == 'true' && needs.check-publish.result == 'success' }}
    runs-on: ubuntu-latest
    environment: release
    permissions:
      contents: write # for creating GitHub release
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Download release notes
        uses: actions/download-artifact@v4
        with:
          name: release-notes
          path: ./artifacts

      - name: Create release
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          tag="${{ needs.check-publish.outputs.tag }}"

          if gh release view "${tag}" > /dev/null 2>&1; then
            echo "GitHub release ${tag} already exists. Skipping release creation."
            exit 0
          fi

          if git ls-remote --exit-code --tags origin "refs/tags/${tag}" > /dev/null; then
            echo "Tag ${tag} already exists on origin."
          else
            git config user.name "github-actions[bot]"
            git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
            git tag -a "${tag}" "${GITHUB_SHA}" -m "${tag}"
            gh auth setup-git
            git push origin "refs/tags/${tag}"
            echo "Created annotated tag ${tag} at ${GITHUB_SHA}."
          fi

          release_notes_file="./artifacts/release-notes.md"

          if [ "${{ needs.check-publish.outputs.prerelease }}" = "true" ]; then
            gh release create "${tag}" \
              --verify-tag \
              --title "${tag}" \
              --notes-file "${release_notes_file}" \
              --prerelease
          else
            gh release create "${tag}" \
              --verify-tag \
              --title "${tag}" \
              --notes-file "${release_notes_file}"
          fi


================================================
FILE: .gitignore
================================================
# This .gitignore only ignores files specific to this repository.
# If you see other files generated by your OS or tools you use, consider
# creating a global .gitignore file.
#
# https://help.github.com/articles/ignoring-files/#create-a-global-gitignore
# https://www.gitignore.io/

/diff-npm-package.html
/.eslintcache
/.cspellcache
node_modules
/coverage
/npmDist
/denoDist
/websiteDist
/website/.next
/website/out


================================================
FILE: .mocharc.yml
================================================
fail-zero: true
throw-deprecation: true
check-leaks: true
require:
  - 'resources/ts-register.js'
extension:
  - 'ts'


================================================
FILE: .node-version
================================================
v17


================================================
FILE: .npmrc
================================================
ignore-scripts=true


================================================
FILE: .prettierignore
================================================
# Copied from '.gitignore', please keep it in sync.
/diff-npm-package.html
/.eslintcache
/node_modules
/coverage
/npmDist
/denoDist
/websiteDist
/website/out
/website/**/*.mdx
.next


================================================
FILE: .prettierrc
================================================
{
  "singleQuote": true,
  "trailingComma": "all"
}


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) GraphQL Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
[![GraphQLConf 2025 Banner: September 08-10, Amsterdam. Hosted by the GraphQL Foundation](./assets/graphql-conf-2025.png)](https://graphql.org/conf/2025/?utm_source=github&utm_medium=graphql_js&utm_campaign=readme)

# GraphQL.js

The JavaScript reference implementation for GraphQL, a query language for APIs created by Facebook.

[![npm version](https://badge.fury.io/js/graphql.svg)](https://badge.fury.io/js/graphql)
[![Build Status](https://github.com/graphql/graphql-js/workflows/CI/badge.svg?branch=main)](https://github.com/graphql/graphql-js/actions?query=branch%3Amain)
[![Coverage Status](https://codecov.io/gh/graphql/graphql-js/branch/main/graph/badge.svg)](https://codecov.io/gh/graphql/graphql-js)

See more complete documentation at https://graphql.org/ and
https://graphql.org/graphql-js/.

Looking for help? Find resources [from the community](https://graphql.org/community/).

## Getting Started

A general overview of GraphQL is available in the
[README](https://github.com/graphql/graphql-spec/blob/main/README.md) for the
[Specification for GraphQL](https://github.com/graphql/graphql-spec). That overview
describes a simple set of GraphQL examples that exist as [tests](src/__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.

### Using GraphQL.js

Install GraphQL.js from npm

With npm:

```sh
npm install --save graphql
```

or using yarn:

```sh
yarn add 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 codebase.

```js
import {
  graphql,
  GraphQLSchema,
  GraphQLObjectType,
  GraphQLString,
} from '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](src/__tests__) directory.

Then, serve the result of a query against that type schema.

```js
var source = '{ hello }';

graphql({ schema, source }).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.

```js
var source = '{ BoyHowdy }';

graphql({ schema, source }).then((result) => {
  // Prints
  // {
  //   errors: [
  //     { message: 'Cannot query field BoyHowdy on RootQueryType',
  //       locations: [ { line: 1, column: 3 } ] }
  //   ]
  // }
  console.log(result);
});
```

**Note**: Please don't forget to set `NODE_ENV=production` if you are running a production server. It will disable some checks that can be useful during development but will significantly impact performance.

## Want to ride the bleeding edge?

The `npm` branch in this repository is automatically maintained to be the last
commit to `main` to pass all tests, in the same form found on npm. It is
recommended to use builds deployed to npm for many reasons, but if you want to use
the latest not-yet-released version of graphql-js, you can do so by depending
directly on this branch:

```
npm install graphql@git://github.com/graphql/graphql-js.git#npm
```

### Experimental features

Each release of GraphQL.js will be accompanied by an experimental release containing support for the `@defer` and `@stream` directive proposal. We are hoping to get community feedback on these releases before the proposal is accepted into the GraphQL specification. You can use this experimental release of GraphQL.js by adding the following to your project's `package.json` file.

```
"graphql": "experimental-stream-defer"
```

Community feedback on this experimental release is much appreciated and can be provided on the [issue created for this purpose](https://github.com/graphql/graphql-js/issues/2848).

## Using in a Browser

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](https://github.com/graphql/graphiql/)
tool is built with GraphQL.js!

Building a project using GraphQL.js with [webpack](https://webpack.js.org) or
[rollup](https://github.com/rollup/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!

## Contributing

We actively welcome pull requests. Learn how to [contribute](./.github/CONTRIBUTING.md).

This repository is managed by EasyCLA. Project participants must sign the free ([GraphQL Specification Membership agreement](https://preview-spec-membership.graphql.org) before making a contribution. You only need to do this one time, and it can be signed by [individual contributors](http://individual-spec-membership.graphql.org/) or their [employers](http://corporate-spec-membership.graphql.org/).

To initiate the signature process please open a PR against this repo. The EasyCLA bot will block the merge if we still need a membership agreement from you.

You can find [detailed information here](https://github.com/graphql/graphql-wg/tree/main/membership). If you have issues, please email [operations@graphql.org](mailto:operations@graphql.org).

If your company benefits from GraphQL and you would like to provide essential financial support for the systems and people that power our community, please also consider membership in the [GraphQL Foundation](https://foundation.graphql.org/join).

## Changelog

Changes are tracked as [GitHub releases](https://github.com/graphql/graphql-js/releases).

## License

GraphQL.js is [MIT-licensed](./LICENSE).

## Version Support

GraphQL.JS follows Semantic Versioning (SemVer) for its releases. Our version support policy is as follows:

- Latest Major Version: We provide full support, including bug fixes and security updates, for the latest major version of GraphQL.JS.
- Previous Major Version: We offer feature support for the previous major version for 12 months after the release of the newest major version.
  This means that for 12 months we can backport features for specification changes _if_ they don't cause any breaking changes. We'll continue
  supporting the previous major version with bug and security fixes.
- Older Versions: Versions older than the previous major release are considered unsupported. While the code remains available,
  we do not actively maintain or provide updates for these versions.
  One exception to this rule is when the older version has been released < 1 year ago, in that case we
  will treat it like the "Previous Major Version".

### Long-Term Support (LTS)

We do not currently offer a Long-Term Support version of GraphQL.JS. Users are encouraged to upgrade to the latest stable version
to receive the most up-to-date features, performance improvements, and security updates.

### End-of-Life (EOL) Schedule

We will announce the EOL date for a major version at least 6 months in advance.
After a version reaches its EOL, it will no longer receive updates, even for critical security issues.

### Upgrade Assistance

To assist users in upgrading to newer versions:

- We maintain detailed release notes for each version, highlighting new features, breaking changes, and deprecations.
- [Our documentation](https://www.graphql-js.org/) includes migration guides for moving between major versions.
- The [community forum (Discord channel #graphql-js)](https://discord.graphql.org) is available for users who need additional assistance with upgrades.

### Security Updates

We prioritize the security of GraphQL.JS:

- Critical security updates will be applied to both the current and previous major version.
- For versions that have reached EOL, we strongly recommend upgrading to a supported version to receive security updates.

### Community Contributions

We welcome community contributions for all versions of GraphQL.JS. However, our maintainers will primarily focus on reviewing
and merging contributions for supported versions.


================================================
FILE: benchmark/benchmark.js
================================================
'use strict';

const os = require('os');
const fs = require('fs');
const path = require('path');
const assert = require('assert');
const cp = require('child_process');

const NS_PER_SEC = 1e9;
const LOCAL = 'local';

// The maximum time in seconds a benchmark is allowed to run before finishing.
const maxTime = 5;
// The minimum sample size required to perform statistical analysis.
const minSamples = 5;

// Get the revisions and make things happen!
if (require.main === module) {
  const { benchmarks, revisions } = getArguments(process.argv.slice(2));
  const benchmarkProjects = prepareBenchmarkProjects(revisions);

  runBenchmarks(benchmarks, benchmarkProjects).catch((error) => {
    console.error(error);
    process.exit(1);
  });
}

function localDir(...paths) {
  return path.join(__dirname, '..', ...paths);
}

function exec(command, options = {}) {
  const result = cp.execSync(command, {
    encoding: 'utf-8',
    stdio: ['inherit', 'pipe', 'inherit'],
    ...options,
  });
  return result?.trimEnd();
}

// Build a benchmark-friendly environment for the given revision
// and returns path to its 'dist' directory.
function prepareBenchmarkProjects(revisionList) {
  const tmpDir = path.join(os.tmpdir(), 'graphql-js-benchmark');
  fs.rmSync(tmpDir, { recursive: true, force: true });
  fs.mkdirSync(tmpDir);

  const setupDir = path.join(tmpDir, 'setup');
  fs.mkdirSync(setupDir);

  return revisionList.map((revision) => {
    console.log(`🍳  Preparing ${revision}...`);
    const projectPath = path.join(setupDir, revision);
    fs.rmSync(projectPath, { recursive: true, force: true });
    fs.mkdirSync(projectPath);

    fs.writeFileSync(
      path.join(projectPath, 'package.json'),
      '{ "private": true }',
    );
    exec(
      'npm --quiet install --ignore-scripts ' + prepareNPMPackage(revision),
      { cwd: projectPath },
    );
    exec(`cp -R ${localDir('benchmark')} ${projectPath}`);

    return { revision, projectPath };
  });

  function prepareNPMPackage(revision) {
    if (revision === LOCAL) {
      const repoDir = localDir();
      const archivePath = path.join(tmpDir, 'graphql-local.tgz');
      fs.renameSync(buildNPMArchive(repoDir), archivePath);
      return archivePath;
    }

    // Returns the complete git hash for a given git revision reference.
    const hash = exec(`git rev-parse "${revision}"`);

    const archivePath = path.join(tmpDir, `graphql-${hash}.tgz`);
    if (fs.existsSync(archivePath)) {
      return archivePath;
    }

    const repoDir = path.join(tmpDir, hash);
    fs.rmSync(repoDir, { recursive: true, force: true });
    fs.mkdirSync(repoDir);
    exec(`git archive "${hash}" | tar -xC "${repoDir}"`);
    exec('npm --quiet ci --ignore-scripts', { cwd: repoDir });
    fs.renameSync(buildNPMArchive(repoDir), archivePath);
    fs.rmSync(repoDir, { recursive: true });
    return archivePath;
  }

  function buildNPMArchive(repoDir) {
    exec('npm --quiet run build:npm', { cwd: repoDir });

    const distDir = path.join(repoDir, 'npmDist');
    const archiveName = exec(`npm --quiet pack ${distDir}`, { cwd: repoDir });
    return path.join(repoDir, archiveName);
  }
}

async function collectSamples(modulePath) {
  const samples = [];

  // If time permits, increase sample size to reduce the margin of error.
  const start = Date.now();
  while (samples.length < minSamples || (Date.now() - start) / 1e3 < maxTime) {
    const { clocked, memUsed } = await sampleModule(modulePath);
    assert(clocked > 0);
    assert(memUsed > 0);
    samples.push({ clocked, memUsed });
  }
  return samples;
}

// T-Distribution two-tailed critical values for 95% confidence.
// See http://www.itl.nist.gov/div898/handbook/eda/section3/eda3672.htm.
// prettier-ignore
const tTable = {
  '1':  12.706, '2':  4.303, '3':  3.182, '4':  2.776, '5':  2.571, '6':  2.447,
  '7':  2.365,  '8':  2.306, '9':  2.262, '10': 2.228, '11': 2.201, '12': 2.179,
  '13': 2.16,   '14': 2.145, '15': 2.131, '16': 2.12,  '17': 2.11,  '18': 2.101,
  '19': 2.093,  '20': 2.086, '21': 2.08,  '22': 2.074, '23': 2.069, '24': 2.064,
  '25': 2.06,   '26': 2.056, '27': 2.052, '28': 2.048, '29': 2.045, '30': 2.042,
  infinity: 1.96,
};

// Computes stats on benchmark results.
function computeStats(samples) {
  assert(samples.length > 1);

  // Compute the sample mean (estimate of the population mean).
  let mean = 0;
  let meanMemUsed = 0;
  for (const { clocked, memUsed } of samples) {
    mean += clocked;
    meanMemUsed += memUsed;
  }
  mean /= samples.length;
  meanMemUsed /= samples.length;

  // Compute the sample variance (estimate of the population variance).
  let variance = 0;
  for (const { clocked } of samples) {
    variance += (clocked - mean) ** 2;
  }
  variance /= samples.length - 1;

  // Compute the sample standard deviation (estimate of the population standard deviation).
  const sd = Math.sqrt(variance);

  // Compute the standard error of the mean (a.k.a. the standard deviation of the sampling distribution of the sample mean).
  const sem = sd / Math.sqrt(samples.length);

  // Compute the degrees of freedom.
  const df = samples.length - 1;

  // Compute the critical value.
  const critical = tTable[df] || tTable.infinity;

  // Compute the margin of error.
  const moe = sem * critical;

  // The relative margin of error (expressed as a percentage of the mean).
  const rme = (moe / mean) * 100 || 0;

  return {
    memPerOp: Math.floor(meanMemUsed),
    ops: NS_PER_SEC / mean,
    deviation: rme,
    numSamples: samples.length,
  };
}

function beautifyBenchmark(results) {
  const nameMaxLen = maxBy(results, ({ name }) => name.length);
  const opsTop = maxBy(results, ({ ops }) => ops);
  const opsMaxLen = maxBy(results, ({ ops }) => beautifyNumber(ops).length);
  const memPerOpMaxLen = maxBy(
    results,
    ({ memPerOp }) => beautifyBytes(memPerOp).length,
  );

  for (const result of results) {
    printBench(result);
  }

  function printBench(bench) {
    const { name, memPerOp, ops, deviation, numSamples } = bench;
    console.log(
      '  ' +
        nameStr() +
        grey(' x ') +
        opsStr() +
        ' ops/sec ' +
        grey('\xb1') +
        deviationStr() +
        cyan('%') +
        grey(' x ') +
        memPerOpStr() +
        '/op' +
        grey(' (' + numSamples + ' runs sampled)'),
    );

    function nameStr() {
      const nameFmt = name.padEnd(nameMaxLen);
      return ops === opsTop ? green(nameFmt) : nameFmt;
    }

    function opsStr() {
      const percent = ops / opsTop;
      const colorFn = percent > 0.95 ? green : percent > 0.8 ? yellow : red;
      return colorFn(beautifyNumber(ops).padStart(opsMaxLen));
    }

    function deviationStr() {
      const colorFn = deviation > 5 ? red : deviation > 2 ? yellow : green;
      return colorFn(deviation.toFixed(2));
    }

    function memPerOpStr() {
      return beautifyBytes(memPerOp).padStart(memPerOpMaxLen);
    }
  }
}

function beautifyBytes(bytes) {
  const sizes = ['Bytes', 'KB', 'MB', 'GB'];
  const i = Math.floor(Math.log2(bytes) / 10);
  return beautifyNumber(bytes / 2 ** (i * 10)) + ' ' + sizes[i];
}

function beautifyNumber(num) {
  return Number(num.toFixed(num > 100 ? 0 : 2)).toLocaleString();
}

function maxBy(array, fn) {
  return Math.max(...array.map(fn));
}

// Prepare all revisions and run benchmarks matching a pattern against them.
async function runBenchmarks(benchmarks, benchmarkProjects) {
  for (const benchmark of benchmarks) {
    const results = [];
    for (let i = 0; i < benchmarkProjects.length; ++i) {
      const { revision, projectPath } = benchmarkProjects[i];
      const modulePath = path.join(projectPath, benchmark);

      if (i === 0) {
        const { name } = await sampleModule(modulePath);
        console.log('⏱   ' + name);
      }

      try {
        const samples = await collectSamples(modulePath);

        results.push({
          name: revision,
          samples,
          ...computeStats(samples),
        });
        process.stdout.write('  ' + cyan(i + 1) + ' tests completed.\u000D');
      } catch (error) {
        console.log('  ' + revision + ': ' + red(String(error)));
      }
    }
    console.log('\n');

    beautifyBenchmark(results);
    console.log('');
  }
}

function getArguments(argv) {
  const revsIndex = argv.indexOf('--revs');
  const revisions = revsIndex === -1 ? [] : argv.slice(revsIndex + 1);
  const benchmarks = revsIndex === -1 ? argv : argv.slice(0, revsIndex);

  switch (revisions.length) {
    case 0:
      revisions.unshift('HEAD');
    // fall through
    case 1: {
      revisions.unshift('local');

      const assumeArgv = ['benchmark', ...benchmarks, '--revs', ...revisions];
      console.warn('Assuming you meant: ' + bold(assumeArgv.join(' ')));
      break;
    }
  }

  if (benchmarks.length === 0) {
    benchmarks.push(...findAllBenchmarks());
  }

  return { benchmarks, revisions };
}

function findAllBenchmarks() {
  return fs
    .readdirSync(localDir('benchmark'), { withFileTypes: true })
    .filter((dirent) => dirent.isFile())
    .map((dirent) => dirent.name)
    .filter((name) => name.endsWith('-benchmark.js'))
    .map((name) => path.join('benchmark', name));
}

function bold(str) {
  return '\u001b[1m' + str + '\u001b[0m';
}

function red(str) {
  return '\u001b[31m' + str + '\u001b[0m';
}

function green(str) {
  return '\u001b[32m' + str + '\u001b[0m';
}

function yellow(str) {
  return '\u001b[33m' + str + '\u001b[0m';
}

function cyan(str) {
  return '\u001b[36m' + str + '\u001b[0m';
}

function grey(str) {
  return '\u001b[90m' + str + '\u001b[0m';
}

function sampleModule(modulePath) {
  const sampleCode = `
    const assert = require('assert');

    assert(global.gc);
    assert(process.send);
    const module = require('${modulePath}');

    clock(7, module.measure); // warm up
    global.gc();
    process.nextTick(() => {
      const memBaseline = process.memoryUsage().heapUsed;
      const clocked = clock(module.count, module.measure);
      process.send({
        name: module.name,
        clocked: clocked / module.count,
        memUsed: (process.memoryUsage().heapUsed - memBaseline) / module.count,
      });
    });

    // Clocks the time taken to execute a test per cycle (secs).
    function clock(count, fn) {
      const start = process.hrtime.bigint();
      for (let i = 0; i < count; ++i) {
        fn();
      }
      return Number(process.hrtime.bigint() - start);
    }
  `;

  return new Promise((resolve, reject) => {
    const child = cp.spawn(
      process.argv[0],
      [
        '--no-concurrent-sweeping',
        '--predictable',
        '--expose-gc',
        '--eval',
        sampleCode,
      ],
      {
        stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
        env: { NODE_ENV: 'production' },
      },
    );

    let message;
    let error;

    child.on('message', (msg) => (message = msg));
    child.on('error', (e) => (error = e));
    child.on('close', () => {
      if (message) {
        return resolve(message);
      }
      reject(error || new Error('Spawn process closed without error'));
    });
  });
}


================================================
FILE: benchmark/buildASTSchema-benchmark.js
================================================
'use strict';

const { parse } = require('graphql/language/parser.js');
const { buildASTSchema } = require('graphql/utilities/buildASTSchema.js');

const { bigSchemaSDL } = require('./fixtures.js');

const schemaAST = parse(bigSchemaSDL);

module.exports = {
  name: 'Build Schema from AST',
  count: 10,
  measure() {
    buildASTSchema(schemaAST, { assumeValid: true });
  },
};


================================================
FILE: benchmark/buildClientSchema-benchmark.js
================================================
'use strict';

const { buildClientSchema } = require('graphql/utilities/buildClientSchema.js');

const { bigSchemaIntrospectionResult } = require('./fixtures.js');

module.exports = {
  name: 'Build Schema from Introspection',
  count: 10,
  measure() {
    buildClientSchema(bigSchemaIntrospectionResult.data, { assumeValid: true });
  },
};


================================================
FILE: benchmark/fixtures.js
================================================
'use strict';

const fs = require('fs');
const path = require('path');

exports.bigSchemaSDL = fs.readFileSync(
  path.join(__dirname, 'github-schema.graphql'),
  'utf8',
);

exports.bigDocumentSDL = fs.readFileSync(
  path.join(__dirname, 'kitchen-sink.graphql'),
  'utf8',
);

exports.bigSchemaIntrospectionResult = JSON.parse(
  fs.readFileSync(path.join(__dirname, 'github-schema.json'), 'utf8'),
);


================================================
FILE: benchmark/github-schema.graphql
================================================
"""
Autogenerated input type of AcceptTopicSuggestion
"""
input AcceptTopicSuggestionInput {
  """
  The Node ID of the repository.
  """
  repositoryId: ID!

  """
  The name of the suggested topic.
  """
  name: String!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AcceptTopicSuggestion
"""
type AcceptTopicSuggestionPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The accepted topic.
  """
  topic: Topic
}

"""
Represents an object which can take actions on GitHub. Typically a User or Bot.
"""
interface Actor {
  """
  A URL pointing to the actor's public avatar.
  """
  avatarUrl(
    """
    The size of the resulting square image.
    """
    size: Int
  ): URI!

  """
  The username of the actor.
  """
  login: String!

  """
  The HTTP path for this actor.
  """
  resourcePath: URI!

  """
  The HTTP URL for this actor.
  """
  url: URI!
}

"""
Autogenerated input type of AddAssigneesToAssignable
"""
input AddAssigneesToAssignableInput {
  """
  The id of the assignable object to add assignees to.
  """
  assignableId: ID!

  """
  The id of users to add as assignees.
  """
  assigneeIds: [ID!]!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AddAssigneesToAssignable
"""
type AddAssigneesToAssignablePayload {
  """
  The item that was assigned.
  """
  assignable: Assignable

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated input type of AddComment
"""
input AddCommentInput {
  """
  The Node ID of the subject to modify.
  """
  subjectId: ID!

  """
  The contents of the comment.
  """
  body: String!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AddComment
"""
type AddCommentPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The edge from the subject's comment connection.
  """
  commentEdge: IssueCommentEdge

  """
  The subject
  """
  subject: Node

  """
  The edge from the subject's timeline connection.
  """
  timelineEdge: IssueTimelineItemEdge
}

"""
Represents a 'added_to_project' event on a given issue or pull request.
"""
type AddedToProjectEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int
  id: ID!
}

"""
Autogenerated input type of AddLabelsToLabelable
"""
input AddLabelsToLabelableInput {
  """
  The id of the labelable object to add labels to.
  """
  labelableId: ID!

  """
  The ids of the labels to add.
  """
  labelIds: [ID!]!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AddLabelsToLabelable
"""
type AddLabelsToLabelablePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The item that was labeled.
  """
  labelable: Labelable
}

"""
Autogenerated input type of AddProjectCard
"""
input AddProjectCardInput {
  """
  The Node ID of the ProjectColumn.
  """
  projectColumnId: ID!

  """
  The content of the card. Must be a member of the ProjectCardItem union
  """
  contentId: ID

  """
  The note on the card.
  """
  note: String

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AddProjectCard
"""
type AddProjectCardPayload {
  """
  The edge from the ProjectColumn's card connection.
  """
  cardEdge: ProjectCardEdge

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The ProjectColumn
  """
  projectColumn: ProjectColumn
}

"""
Autogenerated input type of AddProjectColumn
"""
input AddProjectColumnInput {
  """
  The Node ID of the project.
  """
  projectId: ID!

  """
  The name of the column.
  """
  name: String!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AddProjectColumn
"""
type AddProjectColumnPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The edge from the project's column connection.
  """
  columnEdge: ProjectColumnEdge

  """
  The project
  """
  project: Project
}

"""
Autogenerated input type of AddPullRequestReviewComment
"""
input AddPullRequestReviewCommentInput {
  """
  The Node ID of the review to modify.
  """
  pullRequestReviewId: ID!

  """
  The SHA of the commit to comment on.
  """
  commitOID: GitObjectID

  """
  The text of the comment.
  """
  body: String!

  """
  The relative path of the file to comment on.
  """
  path: String

  """
  The line index in the diff to comment on.
  """
  position: Int

  """
  The comment id to reply to.
  """
  inReplyTo: ID

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AddPullRequestReviewComment
"""
type AddPullRequestReviewCommentPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The newly created comment.
  """
  comment: PullRequestReviewComment

  """
  The edge from the review's comment connection.
  """
  commentEdge: PullRequestReviewCommentEdge
}

"""
Autogenerated input type of AddPullRequestReview
"""
input AddPullRequestReviewInput {
  """
  The Node ID of the pull request to modify.
  """
  pullRequestId: ID!

  """
  The commit OID the review pertains to.
  """
  commitOID: GitObjectID

  """
  The contents of the review body comment.
  """
  body: String

  """
  The event to perform on the pull request review.
  """
  event: PullRequestReviewEvent

  """
  The review line comments.
  """
  comments: [DraftPullRequestReviewComment]

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AddPullRequestReview
"""
type AddPullRequestReviewPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The newly created pull request review.
  """
  pullRequestReview: PullRequestReview

  """
  The edge from the pull request's review connection.
  """
  reviewEdge: PullRequestReviewEdge
}

"""
Autogenerated input type of AddReaction
"""
input AddReactionInput {
  """
  The Node ID of the subject to modify.
  """
  subjectId: ID!

  """
  The name of the emoji to react with.
  """
  content: ReactionContent!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AddReaction
"""
type AddReactionPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The reaction object.
  """
  reaction: Reaction

  """
  The reactable subject.
  """
  subject: Reactable
}

"""
Autogenerated input type of AddStar
"""
input AddStarInput {
  """
  The Starrable ID to star.
  """
  starrableId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of AddStar
"""
type AddStarPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The starrable.
  """
  starrable: Starrable
}

"""
A GitHub App.
"""
type App implements Node {
  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int

  """
  The description of the app.
  """
  description: String
  id: ID!

  """
  The hex color code, without the leading '#', for the logo background.
  """
  logoBackgroundColor: String!

  """
  A URL pointing to the app's logo.
  """
  logoUrl(
    """
    The size of the resulting image.
    """
    size: Int
  ): URI!

  """
  The name of the app.
  """
  name: String!

  """
  A slug based on the name of the app for use in URLs.
  """
  slug: String!

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!

  """
  The URL to the app's homepage.
  """
  url: URI!
}

"""
An edge in a connection.
"""
type AppEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: App
}

"""
An object that can have users assigned to it.
"""
interface Assignable {
  """
  A list of Users assigned to this object.
  """
  assignees(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): UserConnection!
}

"""
Represents an 'assigned' event on any assignable object.
"""
type AssignedEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the assignable associated with the event.
  """
  assignable: Assignable!

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!
  id: ID!

  """
  Identifies the user who was assigned.
  """
  user: User
}

"""
Represents a 'base_ref_changed' event on a given issue or pull request.
"""
type BaseRefChangedEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int
  id: ID!
}

"""
Represents a 'base_ref_force_pushed' event on a given pull request.
"""
type BaseRefForcePushedEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the after commit SHA for the 'base_ref_force_pushed' event.
  """
  afterCommit: Commit

  """
  Identifies the before commit SHA for the 'base_ref_force_pushed' event.
  """
  beforeCommit: Commit

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!
  id: ID!

  """
  PullRequest referenced by event.
  """
  pullRequest: PullRequest!

  """
  Identifies the fully qualified ref name for the 'base_ref_force_pushed' event.
  """
  ref: Ref
}

"""
Represents a Git blame.
"""
type Blame {
  """
  The list of ranges from a Git blame.
  """
  ranges: [BlameRange!]!
}

"""
Represents a range of information from a Git blame.
"""
type BlameRange {
  """
  Identifies the recency of the change, from 1 (new) to 10 (old). This is
  calculated as a 2-quantile and determines the length of distance between the
  median age of all the changes in the file and the recency of the current
  range's change.
  """
  age: Int!

  """
  Identifies the line author
  """
  commit: Commit!

  """
  The ending line for the range
  """
  endingLine: Int!

  """
  The starting line for the range
  """
  startingLine: Int!
}

"""
Represents a Git blob.
"""
type Blob implements Node & GitObject {
  """
  An abbreviated version of the Git object ID
  """
  abbreviatedOid: String!

  """
  Byte size of Blob object
  """
  byteSize: Int!

  """
  The HTTP path for this Git object
  """
  commitResourcePath: URI!

  """
  The HTTP URL for this Git object
  """
  commitUrl: URI!
  id: ID!

  """
  Indicates whether the Blob is binary or text
  """
  isBinary: Boolean!

  """
  Indicates whether the contents is truncated
  """
  isTruncated: Boolean!

  """
  The Git object ID
  """
  oid: GitObjectID!

  """
  The Repository the Git object belongs to
  """
  repository: Repository!

  """
  UTF8 text data or null if the Blob is binary
  """
  text: String
}

"""
A special type of user which takes actions on behalf of GitHub Apps.
"""
type Bot implements Node & Actor & UniformResourceLocatable {
  """
  A URL pointing to the GitHub App's public avatar.
  """
  avatarUrl(
    """
    The size of the resulting square image.
    """
    size: Int
  ): URI!

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int
  id: ID!

  """
  The username of the actor.
  """
  login: String!

  """
  The HTTP path for this bot
  """
  resourcePath: URI!

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!

  """
  The HTTP URL for this bot
  """
  url: URI!
}

"""
A branch protection rule.
"""
type BranchProtectionRule implements Node {
  """
  A list of conflicts matching branches protection rule and other branch protection rules
  """
  branchProtectionRuleConflicts(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): BranchProtectionRuleConflictConnection!

  """
  The actor who created this branch protection rule.
  """
  creator: Actor

  """
  Identifies the primary key from the database.
  """
  databaseId: Int

  """
  Will new commits pushed to matching branches dismiss pull request review approvals.
  """
  dismissesStaleReviews: Boolean!
  id: ID!

  """
  Can admins overwrite branch protection.
  """
  isAdminEnforced: Boolean!

  """
  Repository refs that are protected by this rule
  """
  matchingRefs(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): RefConnection!

  """
  Identifies the protection rule pattern.
  """
  pattern: String!

  """
  A list push allowances for this branch protection rule.
  """
  pushAllowances(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): PushAllowanceConnection!

  """
  The repository associated with this branch protection rule.
  """
  repository: Repository

  """
  Number of approving reviews required to update matching branches.
  """
  requiredApprovingReviewCount: Int

  """
  List of required status check contexts that must pass for commits to be accepted to matching branches.
  """
  requiredStatusCheckContexts: [String]

  """
  Are approving reviews required to update matching branches.
  """
  requiresApprovingReviews: Boolean!

  """
  Are commits required to be signed.
  """
  requiresCommitSignatures: Boolean!

  """
  Are status checks required to update matching branches.
  """
  requiresStatusChecks: Boolean!

  """
  Are branches required to be up to date before merging.
  """
  requiresStrictStatusChecks: Boolean!

  """
  Is pushing to matching branches restricted.
  """
  restrictsPushes: Boolean!

  """
  Is dismissal of pull request reviews restricted.
  """
  restrictsReviewDismissals: Boolean!

  """
  A list review dismissal allowances for this branch protection rule.
  """
  reviewDismissalAllowances(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): ReviewDismissalAllowanceConnection!
}

"""
A conflict between two branch protection rules.
"""
type BranchProtectionRuleConflict {
  """
  Identifies the branch protection rule.
  """
  branchProtectionRule: BranchProtectionRule

  """
  Identifies the conflicting branch protection rule.
  """
  conflictingBranchProtectionRule: BranchProtectionRule

  """
  Identifies the branch ref that has conflicting rules
  """
  ref: Ref
}

"""
The connection type for BranchProtectionRuleConflict.
"""
type BranchProtectionRuleConflictConnection {
  """
  A list of edges.
  """
  edges: [BranchProtectionRuleConflictEdge]

  """
  A list of nodes.
  """
  nodes: [BranchProtectionRuleConflict]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type BranchProtectionRuleConflictEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: BranchProtectionRuleConflict
}

"""
The connection type for BranchProtectionRule.
"""
type BranchProtectionRuleConnection {
  """
  A list of edges.
  """
  edges: [BranchProtectionRuleEdge]

  """
  A list of nodes.
  """
  nodes: [BranchProtectionRule]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type BranchProtectionRuleEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: BranchProtectionRule
}

"""
Autogenerated input type of ChangeUserStatus
"""
input ChangeUserStatusInput {
  """
  The emoji to represent your status. Can either be a native Unicode emoji or an emoji name with colons, e.g., :grinning:.
  """
  emoji: String

  """
  A short description of your current status.
  """
  message: String

  """
  The ID of the organization whose members will be allowed to see the status. If
  omitted, the status will be publicly visible.
  """
  organizationId: ID

  """
  Whether this status should indicate you are not fully available on GitHub, e.g., you are away.
  """
  limitedAvailability: Boolean = false

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of ChangeUserStatus
"""
type ChangeUserStatusPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  Your updated status.
  """
  status: UserStatus
}

"""
Autogenerated input type of ClearLabelsFromLabelable
"""
input ClearLabelsFromLabelableInput {
  """
  The id of the labelable object to clear the labels from.
  """
  labelableId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of ClearLabelsFromLabelable
"""
type ClearLabelsFromLabelablePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The item that was unlabeled.
  """
  labelable: Labelable
}

"""
Autogenerated input type of CloneProject
"""
input CloneProjectInput {
  """
  The owner ID to create the project under.
  """
  targetOwnerId: ID!

  """
  The source project to clone.
  """
  sourceId: ID!

  """
  Whether or not to clone the source project's workflows.
  """
  includeWorkflows: Boolean!

  """
  The name of the project.
  """
  name: String!

  """
  The description of the project.
  """
  body: String

  """
  The visibility of the project, defaults to false (private).
  """
  public: Boolean

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of CloneProject
"""
type CloneProjectPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The id of the JobStatus for populating cloned fields.
  """
  jobStatusId: String

  """
  The new cloned project.
  """
  project: Project
}

"""
An object that can be closed
"""
interface Closable {
  """
  `true` if the object is closed (definition of closed may depend on type)
  """
  closed: Boolean!

  """
  Identifies the date and time when the object was closed.
  """
  closedAt: DateTime
}

"""
Represents a 'closed' event on any `Closable`.
"""
type ClosedEvent implements Node & UniformResourceLocatable {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Object that was closed.
  """
  closable: Closable!

  """
  Object which triggered the creation of this event.
  """
  closer: Closer

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!
  id: ID!

  """
  The HTTP path for this closed event.
  """
  resourcePath: URI!

  """
  The HTTP URL for this closed event.
  """
  url: URI!
}

"""
Autogenerated input type of CloseIssue
"""
input CloseIssueInput {
  """
  ID of the issue to be closed.
  """
  issueId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of CloseIssue
"""
type CloseIssuePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The issue that was closed.
  """
  issue: Issue
}

"""
Autogenerated input type of ClosePullRequest
"""
input ClosePullRequestInput {
  """
  ID of the pull request to be closed.
  """
  pullRequestId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of ClosePullRequest
"""
type ClosePullRequestPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The pull request that was closed.
  """
  pullRequest: PullRequest
}

"""
The object which triggered a `ClosedEvent`.
"""
union Closer = Commit | PullRequest

"""
The Code of Conduct for a repository
"""
type CodeOfConduct implements Node {
  """
  The body of the Code of Conduct
  """
  body: String
  id: ID!

  """
  The key for the Code of Conduct
  """
  key: String!

  """
  The formal name of the Code of Conduct
  """
  name: String!

  """
  The HTTP path for this Code of Conduct
  """
  resourcePath: URI

  """
  The HTTP URL for this Code of Conduct
  """
  url: URI
}

"""
Collaborators affiliation level with a subject.
"""
enum CollaboratorAffiliation {
  """
  All outside collaborators of an organization-owned subject.
  """
  OUTSIDE

  """
  All collaborators with permissions to an organization-owned subject, regardless of organization membership status.
  """
  DIRECT

  """
  All collaborators the authenticated user can see.
  """
  ALL
}

"""
Types that can be inside Collection Items.
"""
union CollectionItemContent = Repository | Organization | User

"""
Represents a comment.
"""
interface Comment {
  """
  The actor who authored the comment.
  """
  author: Actor

  """
  Author's association with the subject of the comment.
  """
  authorAssociation: CommentAuthorAssociation!

  """
  The body as Markdown.
  """
  body: String!

  """
  The body rendered to HTML.
  """
  bodyHTML: HTML!

  """
  The body rendered to text.
  """
  bodyText: String!

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Check if this comment was created via an email reply.
  """
  createdViaEmail: Boolean!

  """
  The actor who edited the comment.
  """
  editor: Actor
  id: ID!

  """
  Check if this comment was edited and includes an edit with the creation data
  """
  includesCreatedEdit: Boolean!

  """
  The moment the editor made the last edit
  """
  lastEditedAt: DateTime

  """
  Identifies when the comment was published at.
  """
  publishedAt: DateTime

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!

  """
  A list of edits to this content.
  """
  userContentEdits(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): UserContentEditConnection

  """
  Did the viewer author this comment.
  """
  viewerDidAuthor: Boolean!
}

"""
A comment author association with repository.
"""
enum CommentAuthorAssociation {
  """
  Author is a member of the organization that owns the repository.
  """
  MEMBER

  """
  Author is the owner of the repository.
  """
  OWNER

  """
  Author has been invited to collaborate on the repository.
  """
  COLLABORATOR

  """
  Author has previously committed to the repository.
  """
  CONTRIBUTOR

  """
  Author has not previously committed to the repository.
  """
  FIRST_TIME_CONTRIBUTOR

  """
  Author has not previously committed to GitHub.
  """
  FIRST_TIMER

  """
  Author has no association with the repository.
  """
  NONE
}

"""
The possible errors that will prevent a user from updating a comment.
"""
enum CommentCannotUpdateReason {
  """
  You must be the author or have write access to this repository to update this comment.
  """
  INSUFFICIENT_ACCESS

  """
  Unable to create comment because issue is locked.
  """
  LOCKED

  """
  You must be logged in to update this comment.
  """
  LOGIN_REQUIRED

  """
  Repository is under maintenance.
  """
  MAINTENANCE

  """
  At least one email address must be verified to update this comment.
  """
  VERIFIED_EMAIL_REQUIRED

  """
  You cannot update this comment
  """
  DENIED
}

"""
Represents a 'comment_deleted' event on a given issue or pull request.
"""
type CommentDeletedEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int
  id: ID!
}

"""
Represents a Git commit.
"""
type Commit implements Node & GitObject & Subscribable & UniformResourceLocatable {
  """
  An abbreviated version of the Git object ID
  """
  abbreviatedOid: String!

  """
  The number of additions in this commit.
  """
  additions: Int!

  """
  The pull requests associated with a commit
  """
  associatedPullRequests(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Ordering options for pull requests.
    """
    orderBy: PullRequestOrder
  ): PullRequestConnection

  """
  Authorship details of the commit.
  """
  author: GitActor

  """
  Check if the committer and the author match.
  """
  authoredByCommitter: Boolean!

  """
  The datetime when this commit was authored.
  """
  authoredDate: DateTime!

  """
  Fetches `git blame` information.
  """
  blame(
    """
    The file whose Git blame information you want.
    """
    path: String!
  ): Blame!

  """
  The number of changed files in this commit.
  """
  changedFiles: Int!

  """
  Comments made on the commit.
  """
  comments(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): CommitCommentConnection!

  """
  The HTTP path for this Git object
  """
  commitResourcePath: URI!

  """
  The HTTP URL for this Git object
  """
  commitUrl: URI!

  """
  The datetime when this commit was committed.
  """
  committedDate: DateTime!

  """
  Check if commited via GitHub web UI.
  """
  committedViaWeb: Boolean!

  """
  Committership details of the commit.
  """
  committer: GitActor

  """
  The number of deletions in this commit.
  """
  deletions: Int!

  """
  The deployments associated with a commit.
  """
  deployments(
    """
    Environments to list deployments for
    """
    environments: [String!]

    """
    Ordering options for deployments returned from the connection.
    """
    orderBy: DeploymentOrder

    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): DeploymentConnection

  """
  The linear commit history starting from (and including) this commit, in the same order as `git log`.
  """
  history(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    If non-null, filters history to only show commits touching files under this path.
    """
    path: String

    """
    If non-null, filters history to only show commits with matching authorship.
    """
    author: CommitAuthor

    """
    Allows specifying a beginning time or date for fetching commits.
    """
    since: GitTimestamp

    """
    Allows specifying an ending time or date for fetching commits.
    """
    until: GitTimestamp
  ): CommitHistoryConnection!
  id: ID!

  """
  The Git commit message
  """
  message: String!

  """
  The Git commit message body
  """
  messageBody: String!

  """
  The commit message body rendered to HTML.
  """
  messageBodyHTML: HTML!

  """
  The Git commit message headline
  """
  messageHeadline: String!

  """
  The commit message headline rendered to HTML.
  """
  messageHeadlineHTML: HTML!

  """
  The Git object ID
  """
  oid: GitObjectID!

  """
  The parents of a commit.
  """
  parents(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): CommitConnection!

  """
  The datetime when this commit was pushed.
  """
  pushedDate: DateTime

  """
  The Repository this commit belongs to
  """
  repository: Repository!

  """
  The HTTP path for this commit
  """
  resourcePath: URI!

  """
  Commit signing information, if present.
  """
  signature: GitSignature

  """
  Status information for this commit
  """
  status: Status

  """
  Returns a URL to download a tarball archive for a repository.
  Note: For private repositories, these links are temporary and expire after five minutes.
  """
  tarballUrl: URI!

  """
  Commit's root Tree
  """
  tree: Tree!

  """
  The HTTP path for the tree of this commit
  """
  treeResourcePath: URI!

  """
  The HTTP URL for the tree of this commit
  """
  treeUrl: URI!

  """
  The HTTP URL for this commit
  """
  url: URI!

  """
  Check if the viewer is able to change their subscription status for the repository.
  """
  viewerCanSubscribe: Boolean!

  """
  Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
  """
  viewerSubscription: SubscriptionState

  """
  Returns a URL to download a zipball archive for a repository.
  Note: For private repositories, these links are temporary and expire after five minutes.
  """
  zipballUrl: URI!
}

"""
Specifies an author for filtering Git commits.
"""
input CommitAuthor {
  """
  ID of a User to filter by. If non-null, only commits authored by this user
  will be returned. This field takes precedence over emails.
  """
  id: ID

  """
  Email addresses to filter by. Commits authored by any of the specified email addresses will be returned.
  """
  emails: [String!]
}

"""
Represents a comment on a given Commit.
"""
type CommitComment implements Node & Comment & Deletable & Updatable & UpdatableComment & Reactable & RepositoryNode {
  """
  The actor who authored the comment.
  """
  author: Actor

  """
  Author's association with the subject of the comment.
  """
  authorAssociation: CommentAuthorAssociation!

  """
  Identifies the comment body.
  """
  body: String!

  """
  Identifies the comment body rendered to HTML.
  """
  bodyHTML: HTML!

  """
  The body rendered to text.
  """
  bodyText: String!

  """
  Identifies the commit associated with the comment, if the commit exists.
  """
  commit: Commit

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Check if this comment was created via an email reply.
  """
  createdViaEmail: Boolean!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int

  """
  The actor who edited the comment.
  """
  editor: Actor
  id: ID!

  """
  Check if this comment was edited and includes an edit with the creation data
  """
  includesCreatedEdit: Boolean!

  """
  Returns whether or not a comment has been minimized.
  """
  isMinimized: Boolean!

  """
  The moment the editor made the last edit
  """
  lastEditedAt: DateTime

  """
  Returns why the comment was minimized.
  """
  minimizedReason: String

  """
  Identifies the file path associated with the comment.
  """
  path: String

  """
  Identifies the line position associated with the comment.
  """
  position: Int

  """
  Identifies when the comment was published at.
  """
  publishedAt: DateTime

  """
  A list of reactions grouped by content left on the subject.
  """
  reactionGroups: [ReactionGroup!]

  """
  A list of Reactions left on the Issue.
  """
  reactions(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Allows filtering Reactions by emoji.
    """
    content: ReactionContent

    """
    Allows specifying the order in which reactions are returned.
    """
    orderBy: ReactionOrder
  ): ReactionConnection!

  """
  The repository associated with this node.
  """
  repository: Repository!

  """
  The HTTP path permalink for this commit comment.
  """
  resourcePath: URI!

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!

  """
  The HTTP URL permalink for this commit comment.
  """
  url: URI!

  """
  A list of edits to this content.
  """
  userContentEdits(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): UserContentEditConnection

  """
  Check if the current viewer can delete this object.
  """
  viewerCanDelete: Boolean!

  """
  Check if the current viewer can minimize this object.
  """
  viewerCanMinimize: Boolean!

  """
  Can user react to this subject
  """
  viewerCanReact: Boolean!

  """
  Check if the current viewer can update this object.
  """
  viewerCanUpdate: Boolean!

  """
  Reasons why the current viewer can not update this comment.
  """
  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!

  """
  Did the viewer author this comment.
  """
  viewerDidAuthor: Boolean!
}

"""
The connection type for CommitComment.
"""
type CommitCommentConnection {
  """
  A list of edges.
  """
  edges: [CommitCommentEdge]

  """
  A list of nodes.
  """
  nodes: [CommitComment]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type CommitCommentEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: CommitComment
}

"""
A thread of comments on a commit.
"""
type CommitCommentThread implements Node & RepositoryNode {
  """
  The comments that exist in this thread.
  """
  comments(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): CommitCommentConnection!

  """
  The commit the comments were made on.
  """
  commit: Commit!
  id: ID!

  """
  The file the comments were made on.
  """
  path: String

  """
  The position in the diff for the commit that the comment was made on.
  """
  position: Int

  """
  The repository associated with this node.
  """
  repository: Repository!
}

"""
The connection type for Commit.
"""
type CommitConnection {
  """
  A list of edges.
  """
  edges: [CommitEdge]

  """
  A list of nodes.
  """
  nodes: [Commit]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
Ordering options for commit contribution connections.
"""
input CommitContributionOrder {
  """
  The field by which to order commit contributions.
  """
  field: CommitContributionOrderField!

  """
  The ordering direction.
  """
  direction: OrderDirection!
}

"""
Properties by which commit contribution connections can be ordered.
"""
enum CommitContributionOrderField {
  """
  Order commit contributions by when they were made.
  """
  OCCURRED_AT

  """
  Order commit contributions by how many commits they represent.
  """
  COMMIT_COUNT
}

"""
This aggregates commits made by a user within one repository.
"""
type CommitContributionsByRepository {
  """
  The commit contributions, each representing a day.
  """
  contributions(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Ordering options for commit contributions returned from the connection.
    """
    orderBy: CommitContributionOrder
  ): CreatedCommitContributionConnection!

  """
  The repository in which the commits were made.
  """
  repository: Repository!

  """
  The HTTP path for the user's commits to the repository in this time range.
  """
  resourcePath: URI!

  """
  The HTTP URL for the user's commits to the repository in this time range.
  """
  url: URI!
}

"""
An edge in a connection.
"""
type CommitEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: Commit
}

"""
The connection type for Commit.
"""
type CommitHistoryConnection {
  """
  A list of edges.
  """
  edges: [CommitEdge]

  """
  A list of nodes.
  """
  nodes: [Commit]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
A content attachment
"""
type ContentAttachment {
  """
  The body text of the content attachment. This parameter supports markdown.
  """
  body: String!

  """
  The content reference that the content attachment is attached to.
  """
  contentReference: ContentReference!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int!
  id: ID!

  """
  The title of the content attachment.
  """
  title: String!
}

"""
A content reference
"""
type ContentReference {
  """
  Identifies the primary key from the database.
  """
  databaseId: Int!
  id: ID!

  """
  The reference of the content reference.
  """
  reference: String!
}

"""
Represents a contribution a user made on GitHub, such as opening an issue.
"""
interface Contribution {
  """
  Whether this contribution is associated with a record you do not have access to. For
  example, your own 'first issue' contribution may have been made on a repository you can no
  longer access.
  """
  isRestricted: Boolean!

  """
  When this contribution was made.
  """
  occurredAt: DateTime!

  """
  The HTTP path for this contribution.
  """
  resourcePath: URI!

  """
  The HTTP URL for this contribution.
  """
  url: URI!

  """
  The user who made this contribution.
  """
  user: User!
}

"""
A calendar of contributions made on GitHub by a user.
"""
type ContributionCalendar {
  """
  A list of hex color codes used in this calendar. The darker the color, the more contributions it represents.
  """
  colors: [String!]!

  """
  Determine if the color set was chosen because it's currently Halloween.
  """
  isHalloween: Boolean!

  """
  A list of the months of contributions in this calendar.
  """
  months: [ContributionCalendarMonth!]!

  """
  The count of total contributions in the calendar.
  """
  totalContributions: Int!

  """
  A list of the weeks of contributions in this calendar.
  """
  weeks: [ContributionCalendarWeek!]!
}

"""
Represents a single day of contributions on GitHub by a user.
"""
type ContributionCalendarDay {
  """
  The hex color code that represents how many contributions were made on this day compared to others in the calendar.
  """
  color: String!

  """
  How many contributions were made by the user on this day.
  """
  contributionCount: Int!

  """
  The day this square represents.
  """
  date: Date!

  """
  A number representing which day of the week this square represents, e.g., 1 is Monday.
  """
  weekday: Int!
}

"""
A month of contributions in a user's contribution graph.
"""
type ContributionCalendarMonth {
  """
  The date of the first day of this month.
  """
  firstDay: Date!

  """
  The name of the month.
  """
  name: String!

  """
  How many weeks started in this month.
  """
  totalWeeks: Int!

  """
  The year the month occurred in.
  """
  year: Int!
}

"""
A week of contributions in a user's contribution graph.
"""
type ContributionCalendarWeek {
  """
  The days of contributions in this week.
  """
  contributionDays: [ContributionCalendarDay!]!

  """
  The date of the earliest square in this week.
  """
  firstDay: Date!
}

"""
Ordering options for contribution connections.
"""
input ContributionOrder {
  """
  The field by which to order contributions.
  """
  field: ContributionOrderField!

  """
  The ordering direction.
  """
  direction: OrderDirection!
}

"""
Properties by which contribution connections can be ordered.
"""
enum ContributionOrderField {
  """
  Order contributions by when they were made.
  """
  OCCURRED_AT
}

"""
A contributions collection aggregates contributions such as opened issues and commits created by a user.
"""
type ContributionsCollection {
  """
  Commit contributions made by the user, grouped by repository.
  """
  commitContributionsByRepository(
    """
    How many repositories should be included.
    """
    maxRepositories: Int = 25
  ): [CommitContributionsByRepository!]!

  """
  A calendar of this user's contributions on GitHub.
  """
  contributionCalendar: ContributionCalendar!

  """
  The years the user has been making contributions with the most recent year first.
  """
  contributionYears: [Int!]!

  """
  Determine if this collection's time span ends in the current month.
  """
  doesEndInCurrentMonth: Boolean!

  """
  The date of the first restricted contribution the user made in this time
  period. Can only be non-null when the user has enabled private contribution counts.
  """
  earliestRestrictedContributionDate: Date

  """
  The ending date and time of this collection.
  """
  endedAt: DateTime!

  """
  The first issue the user opened on GitHub. This will be null if that issue was
  opened outside the collection's time range and ignoreTimeRange is false. If
  the issue is not visible but the user has opted to show private contributions,
  a RestrictedContribution will be returned.
  """
  firstIssueContribution(
    """
    If true, the first issue will be returned even if it was opened outside of the collection's time range.

    **Upcoming Change on 2019-07-01 UTC**
    **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back
    **Reason:** ignore_time_range will be removed
    """
    ignoreTimeRange: Boolean = false
  ): CreatedIssueOrRestrictedContribution

  """
  The first pull request the user opened on GitHub. This will be null if that
  pull request was opened outside the collection's time range and
  ignoreTimeRange is not true. If the pull request is not visible but the user
  has opted to show private contributions, a RestrictedContribution will be returned.
  """
  firstPullRequestContribution(
    """
    If true, the first pull request will be returned even if it was opened outside of the collection's time range.

    **Upcoming Change on 2019-07-01 UTC**
    **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back
    **Reason:** ignore_time_range will be removed
    """
    ignoreTimeRange: Boolean = false
  ): CreatedPullRequestOrRestrictedContribution

  """
  The first repository the user created on GitHub. This will be null if that
  first repository was created outside the collection's time range and
  ignoreTimeRange is false. If the repository is not visible, then a
  RestrictedContribution is returned.
  """
  firstRepositoryContribution(
    """
    If true, the first repository will be returned even if it was opened outside of the collection's time range.

    **Upcoming Change on 2019-07-01 UTC**
    **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back
    **Reason:** ignore_time_range will be removed
    """
    ignoreTimeRange: Boolean = false
  ): CreatedRepositoryOrRestrictedContribution

  """
  Does the user have any more activity in the timeline that occurred prior to the collection's time range?
  """
  hasActivityInThePast: Boolean!

  """
  Determine if there are any contributions in this collection.
  """
  hasAnyContributions: Boolean!

  """
  Determine if the user made any contributions in this time frame whose details
  are not visible because they were made in a private repository. Can only be
  true if the user enabled private contribution counts.
  """
  hasAnyRestrictedContributions: Boolean!

  """
  Whether or not the collector's time span is all within the same day.
  """
  isSingleDay: Boolean!

  """
  A list of issues the user opened.
  """
  issueContributions(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Should the user's first issue ever be excluded from the result.
    """
    excludeFirst: Boolean = false

    """
    Should the user's most commented issue be excluded from the result.
    """
    excludePopular: Boolean = false

    """
    Ordering options for contributions returned from the connection.
    """
    orderBy: ContributionOrder
  ): CreatedIssueContributionConnection!

  """
  Issue contributions made by the user, grouped by repository.
  """
  issueContributionsByRepository(
    """
    How many repositories should be included.
    """
    maxRepositories: Int = 25

    """
    Should the user's first issue ever be excluded from the result.
    """
    excludeFirst: Boolean = false

    """
    Should the user's most commented issue be excluded from the result.
    """
    excludePopular: Boolean = false
  ): [IssueContributionsByRepository!]!

  """
  When the user signed up for GitHub. This will be null if that sign up date
  falls outside the collection's time range and ignoreTimeRange is false.
  """
  joinedGitHubContribution(
    """
    If true, the contribution will be returned even if the user signed up outside of the collection's time range.

    **Upcoming Change on 2019-07-01 UTC**
    **Description:** `ignoreTimeRange` will be removed. Use a `ContributionsCollection` starting sufficiently far back
    **Reason:** ignore_time_range will be removed
    """
    ignoreTimeRange: Boolean = false
  ): JoinedGitHubContribution

  """
  The date of the most recent restricted contribution the user made in this time
  period. Can only be non-null when the user has enabled private contribution counts.
  """
  latestRestrictedContributionDate: Date

  """
  When this collection's time range does not include any activity from the user, use this
  to get a different collection from an earlier time range that does have activity.
  """
  mostRecentCollectionWithActivity: ContributionsCollection

  """
  Returns a different contributions collection from an earlier time range than this one
  that does not have any contributions.
  """
  mostRecentCollectionWithoutActivity: ContributionsCollection

  """
  The issue the user opened on GitHub that received the most comments in the specified
  time frame.
  """
  popularIssueContribution: CreatedIssueContribution

  """
  The pull request the user opened on GitHub that received the most comments in the
  specified time frame.
  """
  popularPullRequestContribution: CreatedPullRequestContribution

  """
  Pull request contributions made by the user.
  """
  pullRequestContributions(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Should the user's first pull request ever be excluded from the result.
    """
    excludeFirst: Boolean = false

    """
    Should the user's most commented pull request be excluded from the result.
    """
    excludePopular: Boolean = false

    """
    Ordering options for contributions returned from the connection.
    """
    orderBy: ContributionOrder
  ): CreatedPullRequestContributionConnection!

  """
  Pull request contributions made by the user, grouped by repository.
  """
  pullRequestContributionsByRepository(
    """
    How many repositories should be included.
    """
    maxRepositories: Int = 25

    """
    Should the user's first pull request ever be excluded from the result.
    """
    excludeFirst: Boolean = false

    """
    Should the user's most commented pull request be excluded from the result.
    """
    excludePopular: Boolean = false
  ): [PullRequestContributionsByRepository!]!

  """
  Pull request review contributions made by the user.
  """
  pullRequestReviewContributions(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Ordering options for contributions returned from the connection.
    """
    orderBy: ContributionOrder
  ): CreatedPullRequestReviewContributionConnection!

  """
  Pull request review contributions made by the user, grouped by repository.
  """
  pullRequestReviewContributionsByRepository(
    """
    How many repositories should be included.
    """
    maxRepositories: Int = 25
  ): [PullRequestReviewContributionsByRepository!]!

  """
  A list of repositories owned by the user that the user created in this time range.
  """
  repositoryContributions(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Should the user's first repository ever be excluded from the result.
    """
    excludeFirst: Boolean = false

    """
    Ordering options for contributions returned from the connection.
    """
    orderBy: ContributionOrder
  ): CreatedRepositoryContributionConnection!

  """
  A count of contributions made by the user that the viewer cannot access. Only
  non-zero when the user has chosen to share their private contribution counts.
  """
  restrictedContributionsCount: Int!

  """
  The beginning date and time of this collection.
  """
  startedAt: DateTime!

  """
  How many commits were made by the user in this time span.
  """
  totalCommitContributions: Int!

  """
  How many issues the user opened.
  """
  totalIssueContributions(
    """
    Should the user's first issue ever be excluded from this count.
    """
    excludeFirst: Boolean = false

    """
    Should the user's most commented issue be excluded from this count.
    """
    excludePopular: Boolean = false
  ): Int!

  """
  How many pull requests the user opened.
  """
  totalPullRequestContributions(
    """
    Should the user's first pull request ever be excluded from this count.
    """
    excludeFirst: Boolean = false

    """
    Should the user's most commented pull request be excluded from this count.
    """
    excludePopular: Boolean = false
  ): Int!

  """
  How many pull request reviews the user left.
  """
  totalPullRequestReviewContributions: Int!

  """
  How many different repositories the user committed to.
  """
  totalRepositoriesWithContributedCommits: Int!

  """
  How many different repositories the user opened issues in.
  """
  totalRepositoriesWithContributedIssues(
    """
    Should the user's first issue ever be excluded from this count.
    """
    excludeFirst: Boolean = false

    """
    Should the user's most commented issue be excluded from this count.
    """
    excludePopular: Boolean = false
  ): Int!

  """
  How many different repositories the user left pull request reviews in.
  """
  totalRepositoriesWithContributedPullRequestReviews: Int!

  """
  How many different repositories the user opened pull requests in.
  """
  totalRepositoriesWithContributedPullRequests(
    """
    Should the user's first pull request ever be excluded from this count.
    """
    excludeFirst: Boolean = false

    """
    Should the user's most commented pull request be excluded from this count.
    """
    excludePopular: Boolean = false
  ): Int!

  """
  How many repositories the user created.
  """
  totalRepositoryContributions(
    """
    Should the user's first repository ever be excluded from this count.
    """
    excludeFirst: Boolean = false
  ): Int!

  """
  The user who made the contributions in this collection.
  """
  user: User!
}

"""
Represents a 'converted_note_to_issue' event on a given issue or pull request.
"""
type ConvertedNoteToIssueEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int
  id: ID!
}

"""
Autogenerated input type of ConvertProjectCardNoteToIssue
"""
input ConvertProjectCardNoteToIssueInput {
  """
  The ProjectCard ID to convert.
  """
  projectCardId: ID!

  """
  The ID of the repository to create the issue in.
  """
  repositoryId: ID!

  """
  The title of the newly created issue. Defaults to the card's note text.
  """
  title: String

  """
  The body of the newly created issue.
  """
  body: String

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of ConvertProjectCardNoteToIssue
"""
type ConvertProjectCardNoteToIssuePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The updated ProjectCard.
  """
  projectCard: ProjectCard
}

"""
Autogenerated input type of CreateBranchProtectionRule
"""
input CreateBranchProtectionRuleInput {
  """
  The global relay id of the repository in which a new branch protection rule should be created in.
  """
  repositoryId: ID!

  """
  The glob-like pattern used to determine matching branches.
  """
  pattern: String!

  """
  Are approving reviews required to update matching branches.
  """
  requiresApprovingReviews: Boolean

  """
  Number of approving reviews required to update matching branches.
  """
  requiredApprovingReviewCount: Int

  """
  Are commits required to be signed.
  """
  requiresCommitSignatures: Boolean

  """
  Can admins overwrite branch protection.
  """
  isAdminEnforced: Boolean

  """
  Are status checks required to update matching branches.
  """
  requiresStatusChecks: Boolean

  """
  Are branches required to be up to date before merging.
  """
  requiresStrictStatusChecks: Boolean

  """
  Are reviews from code owners required to update matching branches.
  """
  requiresCodeOwnerReviews: Boolean

  """
  Will new commits pushed to matching branches dismiss pull request review approvals.
  """
  dismissesStaleReviews: Boolean

  """
  Is dismissal of pull request reviews restricted.
  """
  restrictsReviewDismissals: Boolean

  """
  A list of User or Team IDs allowed to dismiss reviews on pull requests targeting matching branches.
  """
  reviewDismissalActorIds: [ID!]

  """
  Is pushing to matching branches restricted.
  """
  restrictsPushes: Boolean

  """
  A list of User or Team IDs allowed to push to matching branches.
  """
  pushActorIds: [ID!]

  """
  List of required status check contexts that must pass for commits to be accepted to matching branches.
  """
  requiredStatusCheckContexts: [String!]

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of CreateBranchProtectionRule
"""
type CreateBranchProtectionRulePayload {
  """
  The newly created BranchProtectionRule.
  """
  branchProtectionRule: BranchProtectionRule

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated input type of CreateContentAttachment
"""
input CreateContentAttachmentInput {
  """
  The node ID of the content_reference.
  """
  contentReferenceId: ID!

  """
  The title of the content attachment.
  """
  title: String!

  """
  The body of the content attachment, which may contain markdown.
  """
  body: String!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Represents the contribution a user made by committing to a repository.
"""
type CreatedCommitContribution implements Contribution {
  """
  How many commits were made on this day to this repository by the user.
  """
  commitCount: Int!

  """
  Whether this contribution is associated with a record you do not have access to. For
  example, your own 'first issue' contribution may have been made on a repository you can no
  longer access.
  """
  isRestricted: Boolean!

  """
  When this contribution was made.
  """
  occurredAt: DateTime!

  """
  The repository the user made a commit in.
  """
  repository: Repository!

  """
  The HTTP path for this contribution.
  """
  resourcePath: URI!

  """
  The HTTP URL for this contribution.
  """
  url: URI!

  """
  The user who made this contribution.
  """
  user: User!
}

"""
The connection type for CreatedCommitContribution.
"""
type CreatedCommitContributionConnection {
  """
  A list of edges.
  """
  edges: [CreatedCommitContributionEdge]

  """
  A list of nodes.
  """
  nodes: [CreatedCommitContribution]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of commits across days and repositories in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type CreatedCommitContributionEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: CreatedCommitContribution
}

"""
Represents the contribution a user made on GitHub by opening an issue.
"""
type CreatedIssueContribution implements Contribution {
  """
  Whether this contribution is associated with a record you do not have access to. For
  example, your own 'first issue' contribution may have been made on a repository you can no
  longer access.
  """
  isRestricted: Boolean!

  """
  The issue that was opened.
  """
  issue: Issue!

  """
  When this contribution was made.
  """
  occurredAt: DateTime!

  """
  The HTTP path for this contribution.
  """
  resourcePath: URI!

  """
  The HTTP URL for this contribution.
  """
  url: URI!

  """
  The user who made this contribution.
  """
  user: User!
}

"""
The connection type for CreatedIssueContribution.
"""
type CreatedIssueContributionConnection {
  """
  A list of edges.
  """
  edges: [CreatedIssueContributionEdge]

  """
  A list of nodes.
  """
  nodes: [CreatedIssueContribution]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type CreatedIssueContributionEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: CreatedIssueContribution
}

"""
Represents either a issue the viewer can access or a restricted contribution.
"""
union CreatedIssueOrRestrictedContribution =
    CreatedIssueContribution
  | RestrictedContribution

"""
Represents the contribution a user made on GitHub by opening a pull request.
"""
type CreatedPullRequestContribution implements Contribution {
  """
  Whether this contribution is associated with a record you do not have access to. For
  example, your own 'first issue' contribution may have been made on a repository you can no
  longer access.
  """
  isRestricted: Boolean!

  """
  When this contribution was made.
  """
  occurredAt: DateTime!

  """
  The pull request that was opened.
  """
  pullRequest: PullRequest!

  """
  The HTTP path for this contribution.
  """
  resourcePath: URI!

  """
  The HTTP URL for this contribution.
  """
  url: URI!

  """
  The user who made this contribution.
  """
  user: User!
}

"""
The connection type for CreatedPullRequestContribution.
"""
type CreatedPullRequestContributionConnection {
  """
  A list of edges.
  """
  edges: [CreatedPullRequestContributionEdge]

  """
  A list of nodes.
  """
  nodes: [CreatedPullRequestContribution]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type CreatedPullRequestContributionEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: CreatedPullRequestContribution
}

"""
Represents either a pull request the viewer can access or a restricted contribution.
"""
union CreatedPullRequestOrRestrictedContribution =
    CreatedPullRequestContribution
  | RestrictedContribution

"""
Represents the contribution a user made by leaving a review on a pull request.
"""
type CreatedPullRequestReviewContribution implements Contribution {
  """
  Whether this contribution is associated with a record you do not have access to. For
  example, your own 'first issue' contribution may have been made on a repository you can no
  longer access.
  """
  isRestricted: Boolean!

  """
  When this contribution was made.
  """
  occurredAt: DateTime!

  """
  The pull request the user reviewed.
  """
  pullRequest: PullRequest!

  """
  The review the user left on the pull request.
  """
  pullRequestReview: PullRequestReview!

  """
  The repository containing the pull request that the user reviewed.
  """
  repository: Repository!

  """
  The HTTP path for this contribution.
  """
  resourcePath: URI!

  """
  The HTTP URL for this contribution.
  """
  url: URI!

  """
  The user who made this contribution.
  """
  user: User!
}

"""
The connection type for CreatedPullRequestReviewContribution.
"""
type CreatedPullRequestReviewContributionConnection {
  """
  A list of edges.
  """
  edges: [CreatedPullRequestReviewContributionEdge]

  """
  A list of nodes.
  """
  nodes: [CreatedPullRequestReviewContribution]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type CreatedPullRequestReviewContributionEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: CreatedPullRequestReviewContribution
}

"""
Represents the contribution a user made on GitHub by creating a repository.
"""
type CreatedRepositoryContribution implements Contribution {
  """
  Whether this contribution is associated with a record you do not have access to. For
  example, your own 'first issue' contribution may have been made on a repository you can no
  longer access.
  """
  isRestricted: Boolean!

  """
  When this contribution was made.
  """
  occurredAt: DateTime!

  """
  The repository that was created.
  """
  repository: Repository!

  """
  The HTTP path for this contribution.
  """
  resourcePath: URI!

  """
  The HTTP URL for this contribution.
  """
  url: URI!

  """
  The user who made this contribution.
  """
  user: User!
}

"""
The connection type for CreatedRepositoryContribution.
"""
type CreatedRepositoryContributionConnection {
  """
  A list of edges.
  """
  edges: [CreatedRepositoryContributionEdge]

  """
  A list of nodes.
  """
  nodes: [CreatedRepositoryContribution]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type CreatedRepositoryContributionEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: CreatedRepositoryContribution
}

"""
Represents either a repository the viewer can access or a restricted contribution.
"""
union CreatedRepositoryOrRestrictedContribution =
    CreatedRepositoryContribution
  | RestrictedContribution

"""
Autogenerated input type of CreateIssue
"""
input CreateIssueInput {
  """
  The Node ID of the repository.
  """
  repositoryId: ID!

  """
  The title for the issue.
  """
  title: String!

  """
  The body for the issue description.
  """
  body: String

  """
  The Node ID for the user assignee for this issue.
  """
  assigneeIds: [ID!]

  """
  The Node ID of the milestone for this issue.
  """
  milestoneId: ID

  """
  An array of Node IDs of labels for this issue.
  """
  labelIds: [ID!]

  """
  An array of Node IDs for projects associated with this issue.
  """
  projectIds: [ID!]

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of CreateIssue
"""
type CreateIssuePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The new issue.
  """
  issue: Issue
}

"""
Autogenerated input type of CreateProject
"""
input CreateProjectInput {
  """
  The owner ID to create the project under.
  """
  ownerId: ID!

  """
  The name of project.
  """
  name: String!

  """
  The description of project.
  """
  body: String

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of CreateProject
"""
type CreateProjectPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The new project.
  """
  project: Project
}

"""
Autogenerated input type of CreatePullRequest
"""
input CreatePullRequestInput {
  """
  The Node ID of the repository.
  """
  repositoryId: ID!

  """
  The name of the branch you want your changes pulled into. This should be an existing branch
  on the current repository. You cannot update the base branch on a pull request to point
  to another repository.
  """
  baseRefName: String!

  """
  The name of the branch where your changes are implemented. For cross-repository pull requests
  in the same network, namespace `head_ref_name` with a user like this: `username:branch`.
  """
  headRefName: String!

  """
  The title of the pull request.
  """
  title: String!

  """
  The contents of the pull request.
  """
  body: String

  """
  Indicates whether maintainers can modify the pull request.
  """
  maintainerCanModify: Boolean = true

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of CreatePullRequest
"""
type CreatePullRequestPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The new pull request.
  """
  pullRequest: PullRequest
}

"""
Represents a mention made by one issue or pull request to another.
"""
type CrossReferencedEvent implements Node & UniformResourceLocatable {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!
  id: ID!

  """
  Reference originated in a different repository.
  """
  isCrossRepository: Boolean!

  """
  Identifies when the reference was made.
  """
  referencedAt: DateTime!

  """
  The HTTP path for this pull request.
  """
  resourcePath: URI!

  """
  Issue or pull request that made the reference.
  """
  source: ReferencedSubject!

  """
  Issue or pull request to which the reference was made.
  """
  target: ReferencedSubject!

  """
  The HTTP URL for this pull request.
  """
  url: URI!

  """
  Checks if the target will be closed when the source is merged.
  """
  willCloseTarget: Boolean!
}

"""
An ISO-8601 encoded date string.
"""
scalar Date

"""
An ISO-8601 encoded UTC date string.
"""
scalar DateTime

"""
Autogenerated input type of DeclineTopicSuggestion
"""
input DeclineTopicSuggestionInput {
  """
  The Node ID of the repository.
  """
  repositoryId: ID!

  """
  The name of the suggested topic.
  """
  name: String!

  """
  The reason why the suggested topic is declined.
  """
  reason: TopicSuggestionDeclineReason!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DeclineTopicSuggestion
"""
type DeclineTopicSuggestionPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The declined topic.
  """
  topic: Topic
}

"""
The possible default permissions for repositories.
"""
enum DefaultRepositoryPermissionField {
  """
  No access
  """
  NONE

  """
  Can read repos by default
  """
  READ

  """
  Can read and write repos by default
  """
  WRITE

  """
  Can read, write, and administrate repos by default
  """
  ADMIN
}

"""
Entities that can be deleted.
"""
interface Deletable {
  """
  Check if the current viewer can delete this object.
  """
  viewerCanDelete: Boolean!
}

"""
Autogenerated input type of DeleteBranchProtectionRule
"""
input DeleteBranchProtectionRuleInput {
  """
  The global relay id of the branch protection rule to be deleted.
  """
  branchProtectionRuleId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DeleteBranchProtectionRule
"""
type DeleteBranchProtectionRulePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated input type of DeleteIssueComment
"""
input DeleteIssueCommentInput {
  """
  The ID of the comment to delete.
  """
  id: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DeleteIssueComment
"""
type DeleteIssueCommentPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated input type of DeleteIssue
"""
input DeleteIssueInput {
  """
  The ID of the issue to delete.
  """
  issueId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DeleteIssue
"""
type DeleteIssuePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The repository the issue belonged to
  """
  repository: Repository
}

"""
Autogenerated input type of DeleteProjectCard
"""
input DeleteProjectCardInput {
  """
  The id of the card to delete.
  """
  cardId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DeleteProjectCard
"""
type DeleteProjectCardPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The column the deleted card was in.
  """
  column: ProjectColumn

  """
  The deleted card ID.
  """
  deletedCardId: ID
}

"""
Autogenerated input type of DeleteProjectColumn
"""
input DeleteProjectColumnInput {
  """
  The id of the column to delete.
  """
  columnId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DeleteProjectColumn
"""
type DeleteProjectColumnPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The deleted column ID.
  """
  deletedColumnId: ID

  """
  The project the deleted column was in.
  """
  project: Project
}

"""
Autogenerated input type of DeleteProject
"""
input DeleteProjectInput {
  """
  The Project ID to update.
  """
  projectId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DeleteProject
"""
type DeleteProjectPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The repository or organization the project was removed from.
  """
  owner: ProjectOwner
}

"""
Autogenerated input type of DeletePullRequestReviewComment
"""
input DeletePullRequestReviewCommentInput {
  """
  The ID of the comment to delete.
  """
  id: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DeletePullRequestReviewComment
"""
type DeletePullRequestReviewCommentPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The pull request review the deleted comment belonged to.
  """
  pullRequestReview: PullRequestReview
}

"""
Autogenerated input type of DeletePullRequestReview
"""
input DeletePullRequestReviewInput {
  """
  The Node ID of the pull request review to delete.
  """
  pullRequestReviewId: ID!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DeletePullRequestReview
"""
type DeletePullRequestReviewPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The deleted pull request review.
  """
  pullRequestReview: PullRequestReview
}

"""
Represents a 'demilestoned' event on a given issue or pull request.
"""
type DemilestonedEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!
  id: ID!

  """
  Identifies the milestone title associated with the 'demilestoned' event.
  """
  milestoneTitle: String!

  """
  Object referenced by event.
  """
  subject: MilestoneItem!
}

"""
Represents a 'deployed' event on a given pull request.
"""
type DeployedEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int

  """
  The deployment associated with the 'deployed' event.
  """
  deployment: Deployment!
  id: ID!

  """
  PullRequest referenced by event.
  """
  pullRequest: PullRequest!

  """
  The ref associated with the 'deployed' event.
  """
  ref: Ref
}

"""
A repository deploy key.
"""
type DeployKey implements Node {
  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!
  id: ID!

  """
  The deploy key.
  """
  key: String!

  """
  Whether or not the deploy key is read only.
  """
  readOnly: Boolean!

  """
  The deploy key title.
  """
  title: String!

  """
  Whether or not the deploy key has been verified.
  """
  verified: Boolean!
}

"""
The connection type for DeployKey.
"""
type DeployKeyConnection {
  """
  A list of edges.
  """
  edges: [DeployKeyEdge]

  """
  A list of nodes.
  """
  nodes: [DeployKey]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type DeployKeyEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: DeployKey
}

"""
Represents triggered deployment instance.
"""
type Deployment implements Node {
  """
  Identifies the commit sha of the deployment.
  """
  commit: Commit

  """
  Identifies the oid of the deployment commit, even if the commit has been deleted.
  """
  commitOid: String!

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the actor who triggered the deployment.
  """
  creator: Actor

  """
  Identifies the primary key from the database.
  """
  databaseId: Int

  """
  The deployment description.
  """
  description: String

  """
  The environment to which this deployment was made.
  """
  environment: String
  id: ID!

  """
  The latest status of this deployment.
  """
  latestStatus: DeploymentStatus

  """
  Extra information that a deployment system might need.
  """
  payload: String

  """
  Identifies the Ref of the deployment, if the deployment was created by ref.
  """
  ref: Ref

  """
  Identifies the repository associated with the deployment.
  """
  repository: Repository!

  """
  The current state of the deployment.
  """
  state: DeploymentState

  """
  A list of statuses associated with the deployment.
  """
  statuses(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): DeploymentStatusConnection

  """
  The deployment task.
  """
  task: String

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!
}

"""
The connection type for Deployment.
"""
type DeploymentConnection {
  """
  A list of edges.
  """
  edges: [DeploymentEdge]

  """
  A list of nodes.
  """
  nodes: [Deployment]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type DeploymentEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: Deployment
}

"""
Represents a 'deployment_environment_changed' event on a given pull request.
"""
type DeploymentEnvironmentChangedEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  The deployment status that updated the deployment environment.
  """
  deploymentStatus: DeploymentStatus!
  id: ID!

  """
  PullRequest referenced by event.
  """
  pullRequest: PullRequest!
}

"""
Ordering options for deployment connections
"""
input DeploymentOrder {
  """
  The field to order deployments by.
  """
  field: DeploymentOrderField!

  """
  The ordering direction.
  """
  direction: OrderDirection!
}

"""
Properties by which deployment connections can be ordered.
"""
enum DeploymentOrderField {
  """
  Order collection by creation time
  """
  CREATED_AT
}

"""
The possible states in which a deployment can be.
"""
enum DeploymentState {
  """
  The pending deployment was not updated after 30 minutes.
  """
  ABANDONED

  """
  The deployment is currently active.
  """
  ACTIVE

  """
  An inactive transient deployment.
  """
  DESTROYED

  """
  The deployment experienced an error.
  """
  ERROR

  """
  The deployment has failed.
  """
  FAILURE

  """
  The deployment is inactive.
  """
  INACTIVE

  """
  The deployment is pending.
  """
  PENDING

  """
  The deployment has queued
  """
  QUEUED

  """
  The deployment is in progress.
  """
  IN_PROGRESS
}

"""
Describes the status of a given deployment attempt.
"""
type DeploymentStatus implements Node {
  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the actor who triggered the deployment.
  """
  creator: Actor

  """
  Identifies the deployment associated with status.
  """
  deployment: Deployment!

  """
  Identifies the description of the deployment.
  """
  description: String

  """
  Identifies the environment URL of the deployment.
  """
  environmentUrl: URI
  id: ID!

  """
  Identifies the log URL of the deployment.
  """
  logUrl: URI

  """
  Identifies the current state of the deployment.
  """
  state: DeploymentStatusState!

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!
}

"""
The connection type for DeploymentStatus.
"""
type DeploymentStatusConnection {
  """
  A list of edges.
  """
  edges: [DeploymentStatusEdge]

  """
  A list of nodes.
  """
  nodes: [DeploymentStatus]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type DeploymentStatusEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: DeploymentStatus
}

"""
The possible states for a deployment status.
"""
enum DeploymentStatusState {
  """
  The deployment is pending.
  """
  PENDING

  """
  The deployment was successful.
  """
  SUCCESS

  """
  The deployment has failed.
  """
  FAILURE

  """
  The deployment is inactive.
  """
  INACTIVE

  """
  The deployment experienced an error.
  """
  ERROR

  """
  The deployment is queued
  """
  QUEUED

  """
  The deployment is in progress.
  """
  IN_PROGRESS
}

"""
Autogenerated input type of DismissPullRequestReview
"""
input DismissPullRequestReviewInput {
  """
  The Node ID of the pull request review to modify.
  """
  pullRequestReviewId: ID!

  """
  The contents of the pull request review dismissal message.
  """
  message: String!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Autogenerated return type of DismissPullRequestReview
"""
type DismissPullRequestReviewPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The dismissed pull request review.
  """
  pullRequestReview: PullRequestReview
}

"""
Specifies a review comment to be left with a Pull Request Review.
"""
input DraftPullRequestReviewComment {
  """
  Path to the file being commented on.
  """
  path: String!

  """
  Position in the file to leave a comment on.
  """
  position: Int!

  """
  Body of the comment to leave.
  """
  body: String!
}

"""
An external identity provisioned by SAML SSO or SCIM.
"""
type ExternalIdentity implements Node {
  """
  The GUID for this identity
  """
  guid: String!
  id: ID!

  """
  Organization invitation for this SCIM-provisioned external identity
  """
  organizationInvitation: OrganizationInvitation

  """
  SAML Identity attributes
  """
  samlIdentity: ExternalIdentitySamlAttributes

  """
  SCIM Identity attributes
  """
  scimIdentity: ExternalIdentityScimAttributes

  """
  User linked to this external identity. Will be NULL if this identity has not been claimed by an organization member.
  """
  user: User
}

"""
The connection type for ExternalIdentity.
"""
type ExternalIdentityConnection {
  """
  A list of edges.
  """
  edges: [ExternalIdentityEdge]

  """
  A list of nodes.
  """
  nodes: [ExternalIdentity]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type ExternalIdentityEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: ExternalIdentity
}

"""
SAML attributes for the External Identity
"""
type ExternalIdentitySamlAttributes {
  """
  The NameID of the SAML identity
  """
  nameId: String
}

"""
SCIM attributes for the External Identity
"""
type ExternalIdentityScimAttributes {
  """
  The userName of the SCIM identity
  """
  username: String
}

"""
The connection type for User.
"""
type FollowerConnection {
  """
  A list of edges.
  """
  edges: [UserEdge]

  """
  A list of nodes.
  """
  nodes: [User]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
The connection type for User.
"""
type FollowingConnection {
  """
  A list of edges.
  """
  edges: [UserEdge]

  """
  A list of nodes.
  """
  nodes: [User]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
A Gist.
"""
type Gist implements Node & Starrable {
  """
  A list of comments associated with the gist
  """
  comments(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): GistCommentConnection!

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  The gist description.
  """
  description: String

  """
  The files in this gist.
  """
  files(
    """
    The maximum number of files to return.
    """
    limit: Int = 10
  ): [GistFile]
  id: ID!

  """
  Identifies if the gist is a fork.
  """
  isFork: Boolean!

  """
  Whether the gist is public or not.
  """
  isPublic: Boolean!

  """
  The gist name.
  """
  name: String!

  """
  The gist owner.
  """
  owner: RepositoryOwner

  """
  Identifies when the gist was last pushed to.
  """
  pushedAt: DateTime

  """
  A list of users who have starred this starrable.
  """
  stargazers(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Order for connection
    """
    orderBy: StarOrder
  ): StargazerConnection!

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!

  """
  Returns a boolean indicating whether the viewing user has starred this starrable.
  """
  viewerHasStarred: Boolean!
}

"""
Represents a comment on an Gist.
"""
type GistComment implements Node & Comment & Deletable & Updatable & UpdatableComment {
  """
  The actor who authored the comment.
  """
  author: Actor

  """
  Author's association with the gist.
  """
  authorAssociation: CommentAuthorAssociation!

  """
  Identifies the comment body.
  """
  body: String!

  """
  The comment body rendered to HTML.
  """
  bodyHTML: HTML!

  """
  The body rendered to text.
  """
  bodyText: String!

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Check if this comment was created via an email reply.
  """
  createdViaEmail: Boolean!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int

  """
  The actor who edited the comment.
  """
  editor: Actor

  """
  The associated gist.
  """
  gist: Gist!
  id: ID!

  """
  Check if this comment was edited and includes an edit with the creation data
  """
  includesCreatedEdit: Boolean!

  """
  Returns whether or not a comment has been minimized.
  """
  isMinimized: Boolean!

  """
  The moment the editor made the last edit
  """
  lastEditedAt: DateTime

  """
  Returns why the comment was minimized.
  """
  minimizedReason: String

  """
  Identifies when the comment was published at.
  """
  publishedAt: DateTime

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!

  """
  A list of edits to this content.
  """
  userContentEdits(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): UserContentEditConnection

  """
  Check if the current viewer can delete this object.
  """
  viewerCanDelete: Boolean!

  """
  Check if the current viewer can minimize this object.
  """
  viewerCanMinimize: Boolean!

  """
  Check if the current viewer can update this object.
  """
  viewerCanUpdate: Boolean!

  """
  Reasons why the current viewer can not update this comment.
  """
  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!

  """
  Did the viewer author this comment.
  """
  viewerDidAuthor: Boolean!
}

"""
The connection type for GistComment.
"""
type GistCommentConnection {
  """
  A list of edges.
  """
  edges: [GistCommentEdge]

  """
  A list of nodes.
  """
  nodes: [GistComment]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type GistCommentEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: GistComment
}

"""
The connection type for Gist.
"""
type GistConnection {
  """
  A list of edges.
  """
  edges: [GistEdge]

  """
  A list of nodes.
  """
  nodes: [Gist]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type GistEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: Gist
}

"""
A file in a gist.
"""
type GistFile {
  """
  The file name encoded to remove characters that are invalid in URL paths.
  """
  encodedName: String

  """
  The gist file encoding.
  """
  encoding: String

  """
  The file extension from the file name.
  """
  extension: String

  """
  Indicates if this file is an image.
  """
  isImage: Boolean!

  """
  Whether the file's contents were truncated.
  """
  isTruncated: Boolean!

  """
  The programming language this file is written in.
  """
  language: Language

  """
  The gist file name.
  """
  name: String

  """
  The gist file size in bytes.
  """
  size: Int

  """
  UTF8 text data or null if the file is binary
  """
  text(
    """
    Optionally truncate the returned file to this length.
    """
    truncate: Int
  ): String
}

"""
Ordering options for gist connections
"""
input GistOrder {
  """
  The field to order repositories by.
  """
  field: GistOrderField!

  """
  The ordering direction.
  """
  direction: OrderDirection!
}

"""
Properties by which gist connections can be ordered.
"""
enum GistOrderField {
  """
  Order gists by creation time
  """
  CREATED_AT

  """
  Order gists by update time
  """
  UPDATED_AT

  """
  Order gists by push time
  """
  PUSHED_AT
}

"""
The privacy of a Gist
"""
enum GistPrivacy {
  """
  Public
  """
  PUBLIC

  """
  Secret
  """
  SECRET

  """
  Gists that are public and secret
  """
  ALL
}

"""
Represents an actor in a Git commit (ie. an author or committer).
"""
type GitActor {
  """
  A URL pointing to the author's public avatar.
  """
  avatarUrl(
    """
    The size of the resulting square image.
    """
    size: Int
  ): URI!

  """
  The timestamp of the Git action (authoring or committing).
  """
  date: GitTimestamp

  """
  The email in the Git commit.
  """
  email: String

  """
  The name in the Git commit.
  """
  name: String

  """
  The GitHub user corresponding to the email field. Null if no such user exists.
  """
  user: User
}

"""
Represents information about the GitHub instance.
"""
type GitHubMetadata {
  """
  Returns a String that's a SHA of `github-services`
  """
  gitHubServicesSha: GitObjectID!

  """
  IP addresses that users connect to for git operations
  """
  gitIpAddresses: [String!]

  """
  IP addresses that service hooks are sent from
  """
  hookIpAddresses: [String!]

  """
  IP addresses that the importer connects from
  """
  importerIpAddresses: [String!]

  """
  Whether or not users are verified
  """
  isPasswordAuthenticationVerifiable: Boolean!

  """
  IP addresses for GitHub Pages' A records
  """
  pagesIpAddresses: [String!]
}

"""
Represents a Git object.
"""
interface GitObject {
  """
  An abbreviated version of the Git object ID
  """
  abbreviatedOid: String!

  """
  The HTTP path for this Git object
  """
  commitResourcePath: URI!

  """
  The HTTP URL for this Git object
  """
  commitUrl: URI!
  id: ID!

  """
  The Git object ID
  """
  oid: GitObjectID!

  """
  The Repository the Git object belongs to
  """
  repository: Repository!
}

"""
A Git object ID.
"""
scalar GitObjectID

"""
Information about a signature (GPG or S/MIME) on a Commit or Tag.
"""
interface GitSignature {
  """
  Email used to sign this object.
  """
  email: String!

  """
  True if the signature is valid and verified by GitHub.
  """
  isValid: Boolean!

  """
  Payload for GPG signing object. Raw ODB object without the signature header.
  """
  payload: String!

  """
  ASCII-armored signature header from object.
  """
  signature: String!

  """
  GitHub user corresponding to the email signing this commit.
  """
  signer: User

  """
  The state of this signature. `VALID` if signature is valid and verified by
  GitHub, otherwise represents reason why signature is considered invalid.
  """
  state: GitSignatureState!

  """
  True if the signature was made with GitHub's signing key.
  """
  wasSignedByGitHub: Boolean!
}

"""
The state of a Git signature.
"""
enum GitSignatureState {
  """
  Valid signature and verified by GitHub
  """
  VALID

  """
  Invalid signature
  """
  INVALID

  """
  Malformed signature
  """
  MALFORMED_SIG

  """
  Key used for signing not known to GitHub
  """
  UNKNOWN_KEY

  """
  Invalid email used for signing
  """
  BAD_EMAIL

  """
  Email used for signing unverified on GitHub
  """
  UNVERIFIED_EMAIL

  """
  Email used for signing not known to GitHub
  """
  NO_USER

  """
  Unknown signature type
  """
  UNKNOWN_SIG_TYPE

  """
  Unsigned
  """
  UNSIGNED

  """
  Internal error - the GPG verification service is unavailable at the moment
  """
  GPGVERIFY_UNAVAILABLE

  """
  Internal error - the GPG verification service misbehaved
  """
  GPGVERIFY_ERROR

  """
  The usage flags for the key that signed this don't allow signing
  """
  NOT_SIGNING_KEY

  """
  Signing key expired
  """
  EXPIRED_KEY

  """
  Valid signature, pending certificate revocation checking
  """
  OCSP_PENDING

  """
  Valid siganture, though certificate revocation check failed
  """
  OCSP_ERROR

  """
  The signing certificate or its chain could not be verified
  """
  BAD_CERT

  """
  One or more certificates in chain has been revoked
  """
  OCSP_REVOKED
}

"""
Git SSH string
"""
scalar GitSSHRemote

"""
An ISO-8601 encoded date string. Unlike the DateTime type, GitTimestamp is not converted in UTC.
"""
scalar GitTimestamp

"""
Represents a GPG signature on a Commit or Tag.
"""
type GpgSignature implements GitSignature {
  """
  Email used to sign this object.
  """
  email: String!

  """
  True if the signature is valid and verified by GitHub.
  """
  isValid: Boolean!

  """
  Hex-encoded ID of the key that signed this object.
  """
  keyId: String

  """
  Payload for GPG signing object. Raw ODB object without the signature header.
  """
  payload: String!

  """
  ASCII-armored signature header from object.
  """
  signature: String!

  """
  GitHub user corresponding to the email signing this commit.
  """
  signer: User

  """
  The state of this signature. `VALID` if signature is valid and verified by
  GitHub, otherwise represents reason why signature is considered invalid.
  """
  state: GitSignatureState!

  """
  True if the signature was made with GitHub's signing key.
  """
  wasSignedByGitHub: Boolean!
}

"""
Represents a 'head_ref_deleted' event on a given pull request.
"""
type HeadRefDeletedEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Identifies the Ref associated with the `head_ref_deleted` event.
  """
  headRef: Ref

  """
  Identifies the name of the Ref associated with the `head_ref_deleted` event.
  """
  headRefName: String!
  id: ID!

  """
  PullRequest referenced by event.
  """
  pullRequest: PullRequest!
}

"""
Represents a 'head_ref_force_pushed' event on a given pull request.
"""
type HeadRefForcePushedEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the after commit SHA for the 'head_ref_force_pushed' event.
  """
  afterCommit: Commit

  """
  Identifies the before commit SHA for the 'head_ref_force_pushed' event.
  """
  beforeCommit: Commit

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!
  id: ID!

  """
  PullRequest referenced by event.
  """
  pullRequest: PullRequest!

  """
  Identifies the fully qualified ref name for the 'head_ref_force_pushed' event.
  """
  ref: Ref
}

"""
Represents a 'head_ref_restored' event on a given pull request.
"""
type HeadRefRestoredEvent implements Node {
  """
  Identifies the actor who performed the event.
  """
  actor: Actor

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!
  id: ID!

  """
  PullRequest referenced by event.
  """
  pullRequest: PullRequest!
}

"""
A string containing HTML code.
"""
scalar HTML

"""
The possible states in which authentication can be configured with an identity provider.
"""
enum IdentityProviderConfigurationState {
  """
  Authentication with an identity provider is configured and enforced.
  """
  ENFORCED

  """
  Authentication with an identity provider is configured but not enforced.
  """
  CONFIGURED

  """
  Authentication with an identity provider is not configured.
  """
  UNCONFIGURED
}

"""
Autogenerated input type of ImportProject
"""
input ImportProjectInput {
  """
  The name of the Organization or User to create the Project under.
  """
  ownerName: String!

  """
  The name of Project.
  """
  name: String!

  """
  The description of Project.
  """
  body: String

  """
  Whether the Project is public or not.
  """
  public: Boolean = false

  """
  A list of columns containing issues and pull requests.
  """
  columnImports: [ProjectColumnImport!]!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
An Issue is a place to discuss ideas, enhancements, tasks, and bugs for a project.
"""
type Issue implements Node & Assignable & Closable & Comment & Updatable & UpdatableComment & Labelable & Lockable & Reactable & RepositoryNode & Subscribable & UniformResourceLocatable {
  """
  Reason that the conversation was locked.
  """
  activeLockReason: LockReason

  """
  A list of Users assigned to this object.
  """
  assignees(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): UserConnection!

  """
  The actor who authored the comment.
  """
  author: Actor

  """
  Author's association with the subject of the comment.
  """
  authorAssociation: CommentAuthorAssociation!

  """
  Identifies the body of the issue.
  """
  body: String!

  """
  Identifies the body of the issue rendered to HTML.
  """
  bodyHTML: HTML!

  """
  Identifies the body of the issue rendered to text.
  """
  bodyText: String!

  """
  `true` if the object is closed (definition of closed may depend on type)
  """
  closed: Boolean!

  """
  Identifies the date and time when the object was closed.
  """
  closedAt: DateTime

  """
  A list of comments associated with the Issue.
  """
  comments(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): IssueCommentConnection!

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Check if this comment was created via an email reply.
  """
  createdViaEmail: Boolean!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int

  """
  The actor who edited the comment.
  """
  editor: Actor
  id: ID!

  """
  Check if this comment was edited and includes an edit with the creation data
  """
  includesCreatedEdit: Boolean!

  """
  A list of labels associated with the object.
  """
  labels(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): LabelConnection

  """
  The moment the editor made the last edit
  """
  lastEditedAt: DateTime

  """
  `true` if the object is locked
  """
  locked: Boolean!

  """
  Identifies the milestone associated with the issue.
  """
  milestone: Milestone

  """
  Identifies the issue number.
  """
  number: Int!

  """
  A list of Users that are participating in the Issue conversation.
  """
  participants(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): UserConnection!

  """
  List of project cards associated with this issue.
  """
  projectCards(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    A list of archived states to filter the cards by
    """
    archivedStates: [ProjectCardArchivedState]
  ): ProjectCardConnection!

  """
  Identifies when the comment was published at.
  """
  publishedAt: DateTime

  """
  A list of reactions grouped by content left on the subject.
  """
  reactionGroups: [ReactionGroup!]

  """
  A list of Reactions left on the Issue.
  """
  reactions(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Allows filtering Reactions by emoji.
    """
    content: ReactionContent

    """
    Allows specifying the order in which reactions are returned.
    """
    orderBy: ReactionOrder
  ): ReactionConnection!

  """
  The repository associated with this node.
  """
  repository: Repository!

  """
  The HTTP path for this issue
  """
  resourcePath: URI!

  """
  Identifies the state of the issue.
  """
  state: IssueState!

  """
  A list of events, comments, commits, etc. associated with the issue.
  """
  timeline(
    """
    Allows filtering timeline events by a `since` timestamp.
    """
    since: DateTime

    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): IssueTimelineConnection!

  """
  A list of events, comments, commits, etc. associated with the issue.
  """
  timelineItems(
    """
    Filter timeline items by a `since` timestamp.
    """
    since: DateTime

    """
    Skips the first _n_ elements in the list.
    """
    skip: Int

    """
    Filter timeline items by type.
    """
    itemTypes: [IssueTimelineItemsItemType!]

    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): IssueTimelineItemsConnection!

  """
  Identifies the issue title.
  """
  title: String!

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!

  """
  The HTTP URL for this issue
  """
  url: URI!

  """
  A list of edits to this content.
  """
  userContentEdits(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): UserContentEditConnection

  """
  Can user react to this subject
  """
  viewerCanReact: Boolean!

  """
  Check if the viewer is able to change their subscription status for the repository.
  """
  viewerCanSubscribe: Boolean!

  """
  Check if the current viewer can update this object.
  """
  viewerCanUpdate: Boolean!

  """
  Reasons why the current viewer can not update this comment.
  """
  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!

  """
  Did the viewer author this comment.
  """
  viewerDidAuthor: Boolean!

  """
  Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
  """
  viewerSubscription: SubscriptionState
}

"""
Represents a comment on an Issue.
"""
type IssueComment implements Node & Comment & Deletable & Updatable & UpdatableComment & Reactable & RepositoryNode {
  """
  The actor who authored the comment.
  """
  author: Actor

  """
  Author's association with the subject of the comment.
  """
  authorAssociation: CommentAuthorAssociation!

  """
  The body as Markdown.
  """
  body: String!

  """
  The body rendered to HTML.
  """
  bodyHTML: HTML!

  """
  The body rendered to text.
  """
  bodyText: String!

  """
  Identifies the date and time when the object was created.
  """
  createdAt: DateTime!

  """
  Check if this comment was created via an email reply.
  """
  createdViaEmail: Boolean!

  """
  Identifies the primary key from the database.
  """
  databaseId: Int

  """
  The actor who edited the comment.
  """
  editor: Actor
  id: ID!

  """
  Check if this comment was edited and includes an edit with the creation data
  """
  includesCreatedEdit: Boolean!

  """
  Returns whether or not a comment has been minimized.
  """
  isMinimized: Boolean!

  """
  Identifies the issue associated with the comment.
  """
  issue: Issue!

  """
  The moment the editor made the last edit
  """
  lastEditedAt: DateTime

  """
  Returns why the comment was minimized.
  """
  minimizedReason: String

  """
  Identifies when the comment was published at.
  """
  publishedAt: DateTime

  """
  Returns the pull request associated with the comment, if this comment was made on a
  pull request.
  """
  pullRequest: PullRequest

  """
  A list of reactions grouped by content left on the subject.
  """
  reactionGroups: [ReactionGroup!]

  """
  A list of Reactions left on the Issue.
  """
  reactions(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Allows filtering Reactions by emoji.
    """
    content: ReactionContent

    """
    Allows specifying the order in which reactions are returned.
    """
    orderBy: ReactionOrder
  ): ReactionConnection!

  """
  The repository associated with this node.
  """
  repository: Repository!

  """
  The HTTP path for this issue comment
  """
  resourcePath: URI!

  """
  Identifies the date and time when the object was last updated.
  """
  updatedAt: DateTime!

  """
  The HTTP URL for this issue comment
  """
  url: URI!

  """
  A list of edits to this content.
  """
  userContentEdits(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int
  ): UserContentEditConnection

  """
  Check if the current viewer can delete this object.
  """
  viewerCanDelete: Boolean!

  """
  Check if the current viewer can minimize this object.
  """
  viewerCanMinimize: Boolean!

  """
  Can user react to this subject
  """
  viewerCanReact: Boolean!

  """
  Check if the current viewer can update this object.
  """
  viewerCanUpdate: Boolean!

  """
  Reasons why the current viewer can not update this comment.
  """
  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!

  """
  Did the viewer author this comment.
  """
  viewerDidAuthor: Boolean!
}

"""
The connection type for IssueComment.
"""
type IssueCommentConnection {
  """
  A list of edges.
  """
  edges: [IssueCommentEdge]

  """
  A list of nodes.
  """
  nodes: [IssueComment]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An edge in a connection.
"""
type IssueCommentEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: IssueComment
}

"""
The connection type for Issue.
"""
type IssueConnection {
  """
  A list of edges.
  """
  edges: [IssueEdge]

  """
  A list of nodes.
  """
  nodes: [Issue]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
This aggregates issues opened by a user within one repository.
"""
type IssueContributionsByRepository {
  """
  The issue contributions.
  """
  contributions(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    Ordering options for contributions returned from the connection.
    """
    orderBy: ContributionOrder
  ): CreatedIssueContributionConnection!

  """
  The repository in which the issues were opened.
  """
  repository: Repository!
}

"""
An edge in a connection.
"""
type IssueEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: Issue
}

"""
Ways in which to filter lists of issues.
"""
input IssueFilters {
  """
  List issues assigned to given name. Pass in `null` for issues with no assigned
  user, and `*` for issues assigned to any user.
  """
  assignee: String

  """
  List issues created by given name.
  """
  createdBy: String

  """
  List issues where the list of label names exist on the issue.
  """
  labels: [String!]

  """
  List issues where the given name is mentioned in the issue.
  """
  mentioned: String

  """
  List issues by given milestone argument. If an string representation of an
  integer is passed, it should refer to a milestone by its number field. Pass in
  `null` for issues with no milestone, and `*` for issues that are assigned to any milestone.
  """
  milestone: String

  """
  List issues that have been updated at or after the given date.
  """
  since: DateTime

  """
  List issues filtered by the list of states given.
  """
  states: [IssueState!]

  """
  List issues subscribed to by viewer.
  """
  viewerSubscribed: Boolean = false
}

"""
Ways in which lists of issues can be ordered upon return.
"""
input IssueOrder {
  """
  The field in which to order issues by.
  """
  field: IssueOrderField!

  """
  The direction in which to order issues by the specified field.
  """
  direction: OrderDirection!
}

"""
Properties by which issue connections can be ordered.
"""
enum IssueOrderField {
  """
  Order issues by creation time
  """
  CREATED_AT

  """
  Order issues by update time
  """
  UPDATED_AT

  """
  Order issues by comment count
  """
  COMMENTS
}

"""
Used for return value of Repository.issueOrPullRequest.
"""
union IssueOrPullRequest = Issue | PullRequest

"""
The possible PubSub channels for an issue.
"""
enum IssuePubSubTopic {
  """
  The channel ID for observing issue updates.
  """
  UPDATED

  """
  The channel ID for marking an issue as read.
  """
  MARKASREAD

  """
  The channel ID for updating items on the issue timeline.
  """
  TIMELINE

  """
  The channel ID for observing issue state updates.
  """
  STATE
}

"""
The possible states of an issue.
"""
enum IssueState {
  """
  An issue that is still open
  """
  OPEN

  """
  An issue that has been closed
  """
  CLOSED
}

"""
The connection type for IssueTimelineItem.
"""
type IssueTimelineConnection {
  """
  A list of edges.
  """
  edges: [IssueTimelineItemEdge]

  """
  A list of nodes.
  """
  nodes: [IssueTimelineItem]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!
}

"""
An item in an issue timeline
"""
union IssueTimelineItem =
    Commit
  | IssueComment
  | CrossReferencedEvent
  | ClosedEvent
  | ReopenedEvent
  | SubscribedEvent
  | UnsubscribedEvent
  | ReferencedEvent
  | AssignedEvent
  | UnassignedEvent
  | LabeledEvent
  | UnlabeledEvent
  | UserBlockedEvent
  | MilestonedEvent
  | DemilestonedEvent
  | RenamedTitleEvent
  | LockedEvent
  | UnlockedEvent
  | TransferredEvent

"""
An edge in a connection.
"""
type IssueTimelineItemEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: IssueTimelineItem
}

"""
An item in an issue timeline
"""
union IssueTimelineItems =
    IssueComment
  | CrossReferencedEvent
  | AddedToProjectEvent
  | AssignedEvent
  | ClosedEvent
  | CommentDeletedEvent
  | ConvertedNoteToIssueEvent
  | DemilestonedEvent
  | LabeledEvent
  | LockedEvent
  | MentionedEvent
  | MilestonedEvent
  | MovedColumnsInProjectEvent
  | PinnedEvent
  | ReferencedEvent
  | RemovedFromProjectEvent
  | RenamedTitleEvent
  | ReopenedEvent
  | SubscribedEvent
  | TransferredEvent
  | UnassignedEvent
  | UnlabeledEvent
  | UnlockedEvent
  | UserBlockedEvent
  | UnpinnedEvent
  | UnsubscribedEvent

"""
The connection type for IssueTimelineItems.
"""
type IssueTimelineItemsConnection {
  """
  A list of edges.
  """
  edges: [IssueTimelineItemsEdge]

  """
  Identifies the count of items after applying `before` and `after` filters.
  """
  filteredCount: Int!

  """
  A list of nodes.
  """
  nodes: [IssueTimelineItems]

  """
  Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing.
  """
  pageCount: Int!

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!

  """
  Identifies the total count of items in the connection.
  """
  totalCount: Int!

  """
  Identifies the date and time when the timeline was last updated.
  """
  updatedAt: DateTime!
}

"""
An edge in a connection.
"""
type IssueTimelineItemsEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: IssueTimelineItems
}

"""
The possible item types found in a timeline.
"""
enum IssueTimelineItemsItemType {
  """
  Represents a comment on an Issue.
  """
  ISSUE_COMMENT

  """
  Represents a mention made by one issue or pull request to another.
  """
  CROSS_REFERENCED_EVENT

  """
  Represents a 'added_to_project' event on a given issue or pull request.
  """
  ADDED_TO_PROJECT_EVENT

  """
  Represents an 'assigned' event on any assignable object.
  """
  ASSIGNED_EVENT

  """
  Represents a 'closed' event on any `Closable`.
  """
  CLOSED_EVENT

  """
  Represents a 'comment_deleted' event on a given issue or pull request.
  """
  COMMENT_DELETED_EVENT

  
Download .txt
gitextract_1cc_ocwt/

├── .babelrc-deno.json
├── .babelrc-npm.json
├── .babelrc.json
├── .c8rc.json
├── .eslintignore
├── .eslintrc.yml
├── .github/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── deploy-artifact-as-branch.yml
│       ├── pull_request.yml
│       ├── pull_request_opened.yml
│       ├── push.yml
│       └── release.yml
├── .gitignore
├── .mocharc.yml
├── .node-version
├── .npmrc
├── .prettierignore
├── .prettierrc
├── LICENSE
├── README.md
├── benchmark/
│   ├── benchmark.js
│   ├── buildASTSchema-benchmark.js
│   ├── buildClientSchema-benchmark.js
│   ├── fixtures.js
│   ├── github-schema.graphql
│   ├── github-schema.json
│   ├── introspectionFromSchema-benchmark.js
│   ├── kitchen-sink.graphql
│   ├── parser-benchmark.js
│   ├── printer-benchmark.js
│   ├── repeated-fields-benchmark.js
│   ├── validateGQL-benchmark.js
│   ├── validateInvalidGQL-benchmark.js
│   ├── validateSDL-benchmark.js
│   ├── visit-benchmark.js
│   └── visitInParallel-benchmark.js
├── codecov.yml
├── cspell.yml
├── integrationTests/
│   ├── README.md
│   ├── integration-test.js
│   ├── node/
│   │   ├── index.js
│   │   ├── package.json
│   │   └── test.js
│   ├── ts/
│   │   ├── TypedQueryDocumentNode-test.ts
│   │   ├── basic-test.ts
│   │   ├── extensions-test.ts
│   │   ├── internalImports-test.ts
│   │   ├── package.json
│   │   ├── test.js
│   │   └── tsconfig.json
│   └── webpack/
│       ├── entry.js
│       ├── package.json
│       ├── test.js
│       └── webpack.config.json
├── package.json
├── resources/
│   ├── add-extension-to-import-paths.js
│   ├── build-deno.js
│   ├── build-npm.js
│   ├── diff-npm-package.js
│   ├── eslint-internal-rules/
│   │   ├── README.md
│   │   ├── index.js
│   │   ├── no-dir-import.js
│   │   ├── only-ascii.js
│   │   ├── package.json
│   │   └── require-to-string-tag.js
│   ├── gen-changelog.js
│   ├── gen-version.js
│   ├── inline-invariant.js
│   ├── release-metadata.js
│   ├── release-prepare.js
│   ├── ts-register.js
│   └── utils.js
├── src/
│   ├── README.md
│   ├── __testUtils__/
│   │   ├── __tests__/
│   │   │   ├── dedent-test.ts
│   │   │   ├── genFuzzStrings-test.ts
│   │   │   ├── inspectStr-test.ts
│   │   │   └── resolveOnNextTick-test.ts
│   │   ├── dedent.ts
│   │   ├── expectJSON.ts
│   │   ├── genFuzzStrings.ts
│   │   ├── inspectStr.ts
│   │   ├── kitchenSinkQuery.ts
│   │   ├── kitchenSinkSDL.ts
│   │   └── resolveOnNextTick.ts
│   ├── __tests__/
│   │   ├── starWarsData.ts
│   │   ├── starWarsIntrospection-test.ts
│   │   ├── starWarsQuery-test.ts
│   │   ├── starWarsSchema.ts
│   │   ├── starWarsValidation-test.ts
│   │   └── version-test.ts
│   ├── error/
│   │   ├── GraphQLError.ts
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── GraphQLError-test.ts
│   │   │   └── locatedError-test.ts
│   │   ├── index.ts
│   │   ├── locatedError.ts
│   │   └── syntaxError.ts
│   ├── execution/
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── abstract-test.ts
│   │   │   ├── directives-test.ts
│   │   │   ├── executor-test.ts
│   │   │   ├── lists-test.ts
│   │   │   ├── mapAsyncIterator-test.ts
│   │   │   ├── mutations-test.ts
│   │   │   ├── nonnull-test.ts
│   │   │   ├── oneof-test.ts
│   │   │   ├── resolve-test.ts
│   │   │   ├── schema-test.ts
│   │   │   ├── simplePubSub-test.ts
│   │   │   ├── simplePubSub.ts
│   │   │   ├── subscribe-test.ts
│   │   │   ├── sync-test.ts
│   │   │   ├── union-interface-test.ts
│   │   │   └── variables-test.ts
│   │   ├── collectFields.ts
│   │   ├── execute.ts
│   │   ├── index.ts
│   │   ├── mapAsyncIterator.ts
│   │   ├── subscribe.ts
│   │   └── values.ts
│   ├── graphql.ts
│   ├── index.ts
│   ├── jsutils/
│   │   ├── Maybe.ts
│   │   ├── ObjMap.ts
│   │   ├── Path.ts
│   │   ├── PromiseOrValue.ts
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── Path-test.ts
│   │   │   ├── didYouMean-test.ts
│   │   │   ├── identityFunc-test.ts
│   │   │   ├── inspect-test.ts
│   │   │   ├── instanceOf-test.ts
│   │   │   ├── invariant-test.ts
│   │   │   ├── isAsyncIterable-test.ts
│   │   │   ├── isIterableObject-test.ts
│   │   │   ├── isObjectLike-test.ts
│   │   │   ├── naturalCompare-test.ts
│   │   │   ├── suggestionList-test.ts
│   │   │   └── toObjMap-test.ts
│   │   ├── devAssert.ts
│   │   ├── didYouMean.ts
│   │   ├── groupBy.ts
│   │   ├── identityFunc.ts
│   │   ├── inspect.ts
│   │   ├── instanceOf.ts
│   │   ├── invariant.ts
│   │   ├── isAsyncIterable.ts
│   │   ├── isIterableObject.ts
│   │   ├── isObjectLike.ts
│   │   ├── isPromise.ts
│   │   ├── keyMap.ts
│   │   ├── keyValMap.ts
│   │   ├── mapValue.ts
│   │   ├── memoize3.ts
│   │   ├── naturalCompare.ts
│   │   ├── printPathArray.ts
│   │   ├── promiseForObject.ts
│   │   ├── promiseReduce.ts
│   │   ├── suggestionList.ts
│   │   ├── toError.ts
│   │   └── toObjMap.ts
│   ├── language/
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── blockString-fuzz.ts
│   │   │   ├── blockString-test.ts
│   │   │   ├── lexer-test.ts
│   │   │   ├── parser-test.ts
│   │   │   ├── predicates-test.ts
│   │   │   ├── printLocation-test.ts
│   │   │   ├── printString-test.ts
│   │   │   ├── printer-test.ts
│   │   │   ├── schema-parser-test.ts
│   │   │   ├── schema-printer-test.ts
│   │   │   ├── schemaCoordinateLexer-test.ts
│   │   │   ├── source-test.ts
│   │   │   └── visitor-test.ts
│   │   ├── ast.ts
│   │   ├── blockString.ts
│   │   ├── characterClasses.ts
│   │   ├── directiveLocation.ts
│   │   ├── index.ts
│   │   ├── kinds.ts
│   │   ├── lexer.ts
│   │   ├── location.ts
│   │   ├── parser.ts
│   │   ├── predicates.ts
│   │   ├── printLocation.ts
│   │   ├── printString.ts
│   │   ├── printer.ts
│   │   ├── schemaCoordinateLexer.ts
│   │   ├── source.ts
│   │   ├── tokenKind.ts
│   │   └── visitor.ts
│   ├── subscription/
│   │   ├── README.md
│   │   └── index.ts
│   ├── type/
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   ├── assertName-test.ts
│   │   │   ├── definition-test.ts
│   │   │   ├── directive-test.ts
│   │   │   ├── enumType-test.ts
│   │   │   ├── extensions-test.ts
│   │   │   ├── introspection-test.ts
│   │   │   ├── predicate-test.ts
│   │   │   ├── scalars-test.ts
│   │   │   ├── schema-test.ts
│   │   │   └── validation-test.ts
│   │   ├── assertName.ts
│   │   ├── definition.ts
│   │   ├── directives.ts
│   │   ├── index.ts
│   │   ├── introspection.ts
│   │   ├── scalars.ts
│   │   ├── schema.ts
│   │   └── validate.ts
│   ├── utilities/
│   │   ├── README.md
│   │   ├── TypeInfo.ts
│   │   ├── __tests__/
│   │   │   ├── TypeInfo-test.ts
│   │   │   ├── astFromValue-test.ts
│   │   │   ├── buildASTSchema-test.ts
│   │   │   ├── buildClientSchema-test.ts
│   │   │   ├── coerceInputValue-test.ts
│   │   │   ├── concatAST-test.ts
│   │   │   ├── extendSchema-test.ts
│   │   │   ├── findBreakingChanges-test.ts
│   │   │   ├── getIntrospectionQuery-test.ts
│   │   │   ├── getOperationAST-test.ts
│   │   │   ├── getOperationRootType-test.ts
│   │   │   ├── introspectionFromSchema-test.ts
│   │   │   ├── lexicographicSortSchema-test.ts
│   │   │   ├── printSchema-test.ts
│   │   │   ├── resolveSchemaCoordinate-test.ts
│   │   │   ├── separateOperations-test.ts
│   │   │   ├── sortValueNode-test.ts
│   │   │   ├── stripIgnoredCharacters-fuzz.ts
│   │   │   ├── stripIgnoredCharacters-test.ts
│   │   │   ├── typeComparators-test.ts
│   │   │   ├── valueFromAST-test.ts
│   │   │   └── valueFromASTUntyped-test.ts
│   │   ├── assertValidName.ts
│   │   ├── astFromValue.ts
│   │   ├── buildASTSchema.ts
│   │   ├── buildClientSchema.ts
│   │   ├── coerceInputValue.ts
│   │   ├── concatAST.ts
│   │   ├── extendSchema.ts
│   │   ├── findBreakingChanges.ts
│   │   ├── getIntrospectionQuery.ts
│   │   ├── getOperationAST.ts
│   │   ├── getOperationRootType.ts
│   │   ├── index.ts
│   │   ├── introspectionFromSchema.ts
│   │   ├── lexicographicSortSchema.ts
│   │   ├── printSchema.ts
│   │   ├── resolveSchemaCoordinate.ts
│   │   ├── separateOperations.ts
│   │   ├── sortValueNode.ts
│   │   ├── stripIgnoredCharacters.ts
│   │   ├── typeComparators.ts
│   │   ├── typeFromAST.ts
│   │   ├── typedQueryDocumentNode.ts
│   │   ├── valueFromAST.ts
│   │   └── valueFromASTUntyped.ts
│   ├── validation/
│   │   ├── README.md
│   │   ├── ValidationContext.ts
│   │   ├── __tests__/
│   │   │   ├── ExecutableDefinitionsRule-test.ts
│   │   │   ├── FieldsOnCorrectTypeRule-test.ts
│   │   │   ├── FragmentsOnCompositeTypesRule-test.ts
│   │   │   ├── KnownArgumentNamesRule-test.ts
│   │   │   ├── KnownDirectivesRule-test.ts
│   │   │   ├── KnownFragmentNamesRule-test.ts
│   │   │   ├── KnownTypeNamesRule-test.ts
│   │   │   ├── LoneAnonymousOperationRule-test.ts
│   │   │   ├── LoneSchemaDefinitionRule-test.ts
│   │   │   ├── MaxIntrospectionDepthRule-test.ts
│   │   │   ├── NoDeprecatedCustomRule-test.ts
│   │   │   ├── NoFragmentCyclesRule-test.ts
│   │   │   ├── NoSchemaIntrospectionCustomRule-test.ts
│   │   │   ├── NoUndefinedVariablesRule-test.ts
│   │   │   ├── NoUnusedFragmentsRule-test.ts
│   │   │   ├── NoUnusedVariablesRule-test.ts
│   │   │   ├── OverlappingFieldsCanBeMergedRule-test.ts
│   │   │   ├── PossibleFragmentSpreadsRule-test.ts
│   │   │   ├── PossibleTypeExtensionsRule-test.ts
│   │   │   ├── ProvidedRequiredArgumentsRule-test.ts
│   │   │   ├── ScalarLeafsRule-test.ts
│   │   │   ├── SingleFieldSubscriptionsRule-test.ts
│   │   │   ├── UniqueArgumentDefinitionNamesRule-test.ts
│   │   │   ├── UniqueArgumentNamesRule-test.ts
│   │   │   ├── UniqueDirectiveNamesRule-test.ts
│   │   │   ├── UniqueDirectivesPerLocationRule-test.ts
│   │   │   ├── UniqueEnumValueNamesRule-test.ts
│   │   │   ├── UniqueFieldDefinitionNamesRule-test.ts
│   │   │   ├── UniqueFragmentNamesRule-test.ts
│   │   │   ├── UniqueInputFieldNamesRule-test.ts
│   │   │   ├── UniqueOperationNamesRule-test.ts
│   │   │   ├── UniqueOperationTypesRule-test.ts
│   │   │   ├── UniqueTypeNamesRule-test.ts
│   │   │   ├── UniqueVariableNamesRule-test.ts
│   │   │   ├── ValidationContext-test.ts
│   │   │   ├── ValuesOfCorrectTypeRule-test.ts
│   │   │   ├── VariablesAreInputTypesRule-test.ts
│   │   │   ├── VariablesInAllowedPositionRule-test.ts
│   │   │   ├── harness.ts
│   │   │   └── validation-test.ts
│   │   ├── index.ts
│   │   ├── rules/
│   │   │   ├── ExecutableDefinitionsRule.ts
│   │   │   ├── FieldsOnCorrectTypeRule.ts
│   │   │   ├── FragmentsOnCompositeTypesRule.ts
│   │   │   ├── KnownArgumentNamesRule.ts
│   │   │   ├── KnownDirectivesRule.ts
│   │   │   ├── KnownFragmentNamesRule.ts
│   │   │   ├── KnownTypeNamesRule.ts
│   │   │   ├── LoneAnonymousOperationRule.ts
│   │   │   ├── LoneSchemaDefinitionRule.ts
│   │   │   ├── MaxIntrospectionDepthRule.ts
│   │   │   ├── NoFragmentCyclesRule.ts
│   │   │   ├── NoUndefinedVariablesRule.ts
│   │   │   ├── NoUnusedFragmentsRule.ts
│   │   │   ├── NoUnusedVariablesRule.ts
│   │   │   ├── OverlappingFieldsCanBeMergedRule.ts
│   │   │   ├── PossibleFragmentSpreadsRule.ts
│   │   │   ├── PossibleTypeExtensionsRule.ts
│   │   │   ├── ProvidedRequiredArgumentsRule.ts
│   │   │   ├── ScalarLeafsRule.ts
│   │   │   ├── SingleFieldSubscriptionsRule.ts
│   │   │   ├── UniqueArgumentDefinitionNamesRule.ts
│   │   │   ├── UniqueArgumentNamesRule.ts
│   │   │   ├── UniqueDirectiveNamesRule.ts
│   │   │   ├── UniqueDirectivesPerLocationRule.ts
│   │   │   ├── UniqueEnumValueNamesRule.ts
│   │   │   ├── UniqueFieldDefinitionNamesRule.ts
│   │   │   ├── UniqueFragmentNamesRule.ts
│   │   │   ├── UniqueInputFieldNamesRule.ts
│   │   │   ├── UniqueOperationNamesRule.ts
│   │   │   ├── UniqueOperationTypesRule.ts
│   │   │   ├── UniqueTypeNamesRule.ts
│   │   │   ├── UniqueVariableNamesRule.ts
│   │   │   ├── ValuesOfCorrectTypeRule.ts
│   │   │   ├── VariablesAreInputTypesRule.ts
│   │   │   ├── VariablesInAllowedPositionRule.ts
│   │   │   └── custom/
│   │   │       ├── NoDeprecatedCustomRule.ts
│   │   │       └── NoSchemaIntrospectionCustomRule.ts
│   │   ├── specifiedRules.ts
│   │   └── validate.ts
│   └── version.ts
├── tsconfig.json
└── website/
    ├── .eslintignore
    ├── css/
    │   └── globals.css
    ├── icons/
    │   └── index.ts
    ├── next-env.d.ts
    ├── next.config.mjs
    ├── package.json
    ├── pages/
    │   ├── _app.tsx
    │   ├── _document.tsx
    │   ├── _meta.ts
    │   ├── api-v16/
    │   │   ├── _meta.ts
    │   │   ├── error.mdx
    │   │   ├── execution.mdx
    │   │   ├── graphql-http.mdx
    │   │   ├── graphql.mdx
    │   │   ├── language.mdx
    │   │   ├── type.mdx
    │   │   ├── utilities.mdx
    │   │   └── validation.mdx
    │   ├── docs/
    │   │   ├── _meta.ts
    │   │   ├── abstract-types.mdx
    │   │   ├── advanced-custom-scalars.mdx
    │   │   ├── authentication-and-express-middleware.mdx
    │   │   ├── authorization-strategies.mdx
    │   │   ├── basic-types.mdx
    │   │   ├── caching-strategies.mdx
    │   │   ├── constructing-types.mdx
    │   │   ├── cursor-based-pagination.mdx
    │   │   ├── custom-scalars.mdx
    │   │   ├── defer-stream.mdx
    │   │   ├── development-mode.mdx
    │   │   ├── getting-started.mdx
    │   │   ├── going-to-production.mdx
    │   │   ├── graphql-clients.mdx
    │   │   ├── graphql-errors.mdx
    │   │   ├── index.mdx
    │   │   ├── migrating-from-express-graphql.mdx
    │   │   ├── mutations-and-input-types.mdx
    │   │   ├── n1-dataloader.mdx
    │   │   ├── nullability.mdx
    │   │   ├── object-types.mdx
    │   │   ├── oneof-input-objects.mdx
    │   │   ├── operation-complexity-controls.mdx
    │   │   ├── passing-arguments.mdx
    │   │   ├── resolver-anatomy.mdx
    │   │   ├── running-an-express-graphql-server.mdx
    │   │   ├── scaling-graphql.mdx
    │   │   ├── subscriptions.mdx
    │   │   ├── testing-approaches.mdx
    │   │   ├── testing-best-practices.mdx
    │   │   ├── testing-graphql-servers.mdx
    │   │   ├── testing-operations.mdx
    │   │   ├── testing-resolvers.mdx
    │   │   ├── type-generation.mdx
    │   │   └── using-directives.mdx
    │   └── upgrade-guides/
    │       └── v16-v17.mdx
    ├── postcss.config.js
    ├── tailwind.config.js
    ├── theme.config.tsx
    ├── tsconfig.json
    └── vercel.json
Download .txt
SYMBOL INDEX (1409 symbols across 255 files)

FILE: benchmark/benchmark.js
  constant NS_PER_SEC (line 9) | const NS_PER_SEC = 1e9;
  constant LOCAL (line 10) | const LOCAL = 'local';
  function localDir (line 28) | function localDir(...paths) {
  function exec (line 32) | function exec(command, options = {}) {
  function prepareBenchmarkProjects (line 43) | function prepareBenchmarkProjects(revisionList) {
  function collectSamples (line 105) | async function collectSamples(modulePath) {
  function computeStats (line 132) | function computeStats(samples) {
  function beautifyBenchmark (line 178) | function beautifyBenchmark(results) {
  function beautifyBytes (line 230) | function beautifyBytes(bytes) {
  function beautifyNumber (line 236) | function beautifyNumber(num) {
  function maxBy (line 240) | function maxBy(array, fn) {
  function runBenchmarks (line 245) | async function runBenchmarks(benchmarks, benchmarkProjects) {
  function getArguments (line 277) | function getArguments(argv) {
  function findAllBenchmarks (line 302) | function findAllBenchmarks() {
  function bold (line 311) | function bold(str) {
  function red (line 315) | function red(str) {
  function green (line 319) | function green(str) {
  function yellow (line 323) | function yellow(str) {
  function cyan (line 327) | function cyan(str) {
  function grey (line 331) | function grey(str) {
  function sampleModule (line 335) | function sampleModule(modulePath) {

FILE: benchmark/buildASTSchema-benchmark.js
  method measure (line 13) | measure() {

FILE: benchmark/buildClientSchema-benchmark.js
  method measure (line 10) | measure() {

FILE: benchmark/introspectionFromSchema-benchmark.js
  method measure (line 18) | measure() {

FILE: benchmark/parser-benchmark.js
  method measure (line 13) | measure() {

FILE: benchmark/printer-benchmark.js
  method measure (line 13) | measure() {

FILE: benchmark/repeated-fields-benchmark.js
  method measure (line 12) | measure() {

FILE: benchmark/validateGQL-benchmark.js
  method measure (line 18) | measure() {

FILE: benchmark/validateInvalidGQL-benchmark.js
  method measure (line 27) | measure() {

FILE: benchmark/validateSDL-benchmark.js
  method measure (line 13) | measure() {

FILE: benchmark/visit-benchmark.js
  method enter (line 11) | enter() {
  method leave (line 14) | leave() {
  method measure (line 22) | measure() {

FILE: benchmark/visitInParallel-benchmark.js
  method enter (line 11) | enter() {
  method leave (line 14) | leave() {
  method measure (line 22) | measure() {

FILE: integrationTests/integration-test.js
  function exec (line 10) | function exec(command, options = {}) {
  function testOnNodeProject (line 30) | function testOnNodeProject(projectName) {

FILE: integrationTests/ts/TypedQueryDocumentNode-test.ts
  type ResponseData (line 17) | type ResponseData = { test: string };
  function wrappedExecute (line 26) | function wrappedExecute<T>(document: TypedQueryDocumentNode<T>) {

FILE: integrationTests/ts/basic-test.ts
  method resolve (line 17) | resolve(_root, args: { who: string }) {

FILE: integrationTests/ts/extensions-test.ts
  type SomeExtension (line 4) | interface SomeExtension {
  type GraphQLObjectTypeExtensions (line 9) | interface GraphQLObjectTypeExtensions<_TSource, _TContext> {
  type GraphQLFieldExtensions (line 13) | interface GraphQLFieldExtensions<_TSource, _TContext, _TArgs> {
  type GraphQLArgumentExtensions (line 17) | interface GraphQLArgumentExtensions {
  function checkExtensionTypes (line 46) | function checkExtensionTypes(_test: SomeExtension | null | undefined) {}
  type GraphQLErrorExtensions (line 56) | interface GraphQLErrorExtensions {

FILE: integrationTests/ts/test.js
  function tscPath (line 17) | function tscPath(version) {

FILE: resources/add-extension-to-import-paths.js
  function replaceImportPath (line 27) | function replaceImportPath(path) {

FILE: resources/build-npm.js
  function babelBuild (line 92) | function babelBuild(srcPath, options) {
  function buildPackageJSON (line 101) | function buildPackageJSON() {

FILE: resources/diff-npm-package.js
  constant LOCAL (line 8) | const LOCAL = 'local';
  function generateReport (line 41) | function generateReport(diffString) {
  function prepareNPMPackage (line 79) | function prepareNPMPackage(revision) {
  function exec (line 97) | function exec(command, options = {}) {

FILE: resources/eslint-internal-rules/no-dir-import.js
  function checkImportPath (line 12) | function checkImportPath(node) {

FILE: resources/eslint-internal-rules/only-ascii.js
  function onlyASCII (line 20) | function onlyASCII(context) {

FILE: resources/eslint-internal-rules/require-to-string-tag.js
  function isToStringTagProperty (line 27) | function isToStringTagProperty(propertyNode) {

FILE: resources/gen-changelog.js
  function getChangeLog (line 70) | function getChangeLog() {
  function parseFromRevArg (line 84) | function parseFromRevArg(rawArgs) {
  function getTaggedVersionCommit (line 99) | function getTaggedVersionCommit(version) {
  function getFirstParentCommit (line 107) | function getFirstParentCommit(commit) {
  function resolveCommitRefOrThrow (line 117) | function resolveCommitRefOrThrow(ref) {
  function resolveChangeLogConfig (line 130) | function resolveChangeLogConfig(workingTreeVersion, fromRev) {
  function genChangeLog (line 186) | function genChangeLog(title, date, allPRs) {
  function graphqlRequestImpl (line 261) | function graphqlRequestImpl(query, variables, cb) {
  function batchCommitInfo (line 312) | async function batchCommitInfo(commits) {
  function batchPRInfo (line 348) | async function batchPRInfo(prs) {
  function commitsInfoToPRs (line 387) | function commitsInfoToPRs(commits) {
  function getPRsInfo (line 415) | async function getPRsInfo(commits) {
  function getCommitsInfo (line 426) | async function getCommitsInfo(commits) {

FILE: resources/inline-invariant.js
  method CallExpression (line 24) | CallExpression(path) {

FILE: resources/release-metadata.js
  function findReleaseCommitSha (line 62) | function findReleaseCommitSha(version) {

FILE: resources/release-prepare.js
  function parseArgs (line 47) | function parseArgs() {
  function validateBranchState (line 84) | function validateBranchState(releaseBranch) {
  function throwUsage (line 209) | function throwUsage(message) {

FILE: resources/utils.js
  function exec (line 9) | function exec(command, options) {
  function spawn (line 18) | function spawn(command, args, options = {}) {
  function spawnOutput (line 26) | function spawnOutput(command, args, options = {}) {
  function ensureSpawnSuccess (line 36) | function ensureSpawnSuccess(command, args, result) {
  function readdirRecursive (line 51) | function readdirRecursive(dirPath, opts = {}) {
  function showDirStats (line 72) | function showDirStats(dirPath) {
  function writeGeneratedFile (line 122) | function writeGeneratedFile(filepath, body) {
  function readPackageJSON (line 127) | function readPackageJSON(filepath = require.resolve('../package.json')) {
  function readPackageJSONAtRef (line 131) | function readPackageJSONAtRef(ref) {
  function tagExists (line 140) | function tagExists(tag) {

FILE: src/__testUtils__/__tests__/genFuzzStrings-test.ts
  function expectFuzzStrings (line 6) | function expectFuzzStrings(options: {

FILE: src/__testUtils__/dedent.ts
  function dedentString (line 1) | function dedentString(string: string): string {
  function dedent (line 31) | function dedent(

FILE: src/__testUtils__/expectJSON.ts
  function toJSONDeep (line 10) | function toJSONDeep(value: unknown): unknown {
  function expectJSON (line 26) | function expectJSON(actual: unknown) {
  function expectToThrowJSON (line 41) | function expectToThrowJSON(fn: () => unknown) {

FILE: src/__testUtils__/inspectStr.ts
  function inspectStr (line 6) | function inspectStr(str: Maybe<string>): string {

FILE: src/__testUtils__/resolveOnNextTick.ts
  function resolveOnNextTick (line 1) | function resolveOnNextTick(): Promise<void> {

FILE: src/__tests__/starWarsData.ts
  type Character (line 5) | interface Character {
  type Human (line 12) | interface Human {
  type Droid (line 21) | interface Droid {
  function getCharacter (line 115) | function getCharacter(id: string): Promise<Character | null> {
  function getFriends (line 123) | function getFriends(
  function getHero (line 133) | function getHero(episode: number): Character {
  function getHuman (line 145) | function getHuman(id: string): Human | null {
  function getDroid (line 152) | function getDroid(id: string): Droid | null {

FILE: src/__tests__/starWarsIntrospection-test.ts
  function queryStarWars (line 8) | function queryStarWars(source: string) {

FILE: src/__tests__/starWarsSchema.ts
  method resolveType (line 131) | resolveType(character) {
  method resolve (line 184) | resolve() {
  method resolve (line 232) | resolve() {

FILE: src/__tests__/starWarsValidation-test.ts
  function validationErrors (line 14) | function validationErrors(query: string) {

FILE: src/error/GraphQLError.ts
  type GraphQLErrorExtensions (line 19) | interface GraphQLErrorExtensions {
  type GraphQLFormattedErrorExtensions (line 32) | interface GraphQLFormattedErrorExtensions {
  type GraphQLErrorOptions (line 36) | interface GraphQLErrorOptions {
  type BackwardsCompatibleArgs (line 45) | type BackwardsCompatibleArgs =
  function toNormalizedOptions (line 56) | function toNormalizedOptions(
  class GraphQLError (line 79) | class GraphQLError extends Error {
    method constructor (line 142) | constructor(message: string, ...rawArgs: BackwardsCompatibleArgs) {
    method toString (line 216) | toString(): string {
    method toJSON (line 234) | toJSON(): GraphQLFormattedError {
  method [Symbol.toStringTag] (line 212) | get [Symbol.toStringTag](): string {
  function undefinedIfEmpty (line 259) | function undefinedIfEmpty<T>(
  type GraphQLFormattedError (line 268) | interface GraphQLFormattedError {
  function printError (line 300) | function printError(error: GraphQLError): string {
  function formatError (line 310) | function formatError(error: GraphQLError): GraphQLFormattedError {

FILE: src/error/__tests__/GraphQLError-test.ts
  class ErrorWithExtensions (line 142) | class ErrorWithExtensions extends Error {
    method constructor (line 145) | constructor(message: string) {

FILE: src/error/locatedError.ts
  function locatedError (line 13) | function locatedError(
  function isLocatedGraphQLError (line 34) | function isLocatedGraphQLError(error: any): error is GraphQLError {

FILE: src/error/syntaxError.ts
  function syntaxError (line 9) | function syntaxError(

FILE: src/execution/__tests__/abstract-test.ts
  function executeQuery (line 22) | async function executeQuery(args: {
  class Dog (line 46) | class Dog {
    method constructor (line 50) | constructor(name: string, woofs: boolean) {
  class Cat (line 56) | class Cat {
    method constructor (line 60) | constructor(name: string, meows: boolean) {
  method isTypeOf (line 78) | isTypeOf(obj, context) {
  method isTypeOf (line 91) | isTypeOf(obj, context) {
  method resolve (line 107) | resolve() {
  method isTypeOf (line 157) | isTypeOf(_source, context) {
  method resolve (line 186) | resolve() {
  method isTypeOf (line 239) | isTypeOf(_source, context) {
  method isTypeOf (line 285) | isTypeOf(obj, context) {
  method isTypeOf (line 297) | isTypeOf(obj, context) {
  method resolve (line 318) | resolve() {
  method resolveType (line 358) | resolveType(_source, context) {
  method resolve (line 394) | resolve() {
  function expectError (line 593) | function expectError({ forTypeName }: { forTypeName: unknown }) {

FILE: src/execution/__tests__/directives-test.ts
  method a (line 23) | a() {
  method b (line 26) | b() {
  function executeTestQuery (line 31) | function executeTestQuery(query: string) {

FILE: src/execution/__tests__/executor-test.ts
  function promiseData (line 97) | function promiseData() {
  method resolve (line 242) | resolve(_val, _args, _ctx, info) {
  method resolve (line 296) | resolve(_val, _args, _ctx, info) {
  method resolveType (line 305) | resolveType() {
  method resolve (line 356) | resolve(rootValueArg) {
  method resolve (line 383) | resolve(_, args) {
  method sync (line 443) | sync() {
  method syncError (line 446) | syncError() {
  method syncRawError (line 449) | syncRawError() {
  method syncReturnError (line 453) | syncReturnError() {
  method syncReturnErrorList (line 456) | syncReturnErrorList() {
  method async (line 464) | async() {
  method asyncReject (line 467) | asyncReject() {
  method asyncRawReject (line 472) | asyncRawReject() {
  method asyncEmptyReject (line 476) | asyncEmptyReject() {
  method asyncError (line 480) | asyncError() {
  method asyncRawError (line 485) | asyncRawError() {
  method asyncReturnError (line 491) | asyncReturnError() {
  method asyncReturnErrorWithExtensions (line 494) | asyncReturnErrorWithExtensions() {
  method resolve (line 600) | resolve() {
  method resolve (line 643) | async resolve() {
  class Special (line 1138) | class Special {
    method constructor (line 1141) | constructor(value: string) {
  class NotSpecial (line 1146) | class NotSpecial {
    method constructor (line 1149) | constructor(value: string) {
  method isTypeOf (line 1156) | isTypeOf(obj, context) {
  method serialize (line 1205) | serialize() {
  method fieldResolver (line 1269) | fieldResolver(_source, _args, _context, info) {
  method typeResolver (line 1313) | typeResolver(_source, _context, info, abstractType) {

FILE: src/execution/__tests__/lists-test.ts
  function complete (line 13) | function complete(rootValue: unknown) {
  function getArgs (line 42) | function getArgs(..._args: ReadonlyArray<string>) {
  function complete (line 70) | async function complete(args: { listField: unknown; as: string }) {

FILE: src/execution/__tests__/mapAsyncIterator-test.ts
  method [Symbol.asyncIterator] (line 30) | [Symbol.asyncIterator]() {
  method next (line 34) | next(): Promise<IteratorResult<number, void>> {
  method [Symbol.asyncIterator] (line 129) | [Symbol.asyncIterator]() {
  method next (line 132) | next() {
  method [Symbol.asyncIterator] (line 193) | [Symbol.asyncIterator]() {
  method next (line 196) | next() {
  function testClosesSourceWithMapper (line 281) | async function testClosesSourceWithMapper<T>(mapper: (value: number) => ...

FILE: src/execution/__tests__/mutations-test.ts
  class NumberHolder (line 15) | class NumberHolder {
    method constructor (line 18) | constructor(originalNumber: number) {
  class Root (line 23) | class Root {
    method constructor (line 26) | constructor(originalNumber: number) {
    method immediatelyChangeTheNumber (line 30) | immediatelyChangeTheNumber(newNumber: number): NumberHolder {
    method promiseToChangeTheNumber (line 35) | async promiseToChangeTheNumber(newNumber: number): Promise<NumberHolde...
    method failToChangeTheNumber (line 40) | failToChangeTheNumber(): NumberHolder {
    method promiseAndFailToChangeTheNumber (line 44) | async promiseAndFailToChangeTheNumber(): Promise<NumberHolder> {
  method resolve (line 69) | resolve(obj, { newNumber }) {
  method resolve (line 76) | resolve(obj, { newNumber }) {
  method resolve (line 83) | resolve(obj, { newNumber }) {
  method resolve (line 90) | resolve(obj, { newNumber }) {

FILE: src/execution/__tests__/nonnull-test.ts
  method sync (line 26) | sync() {
  method syncNonNull (line 29) | syncNonNull() {
  method promise (line 32) | promise() {
  method promiseNonNull (line 37) | promiseNonNull() {
  method syncNest (line 42) | syncNest() {
  method syncNonNullNest (line 45) | syncNonNullNest() {
  method promiseNest (line 48) | promiseNest() {
  method promiseNonNullNest (line 53) | promiseNonNullNest() {
  method sync (line 61) | sync() {
  method syncNonNull (line 64) | syncNonNull() {
  method promise (line 67) | promise() {
  method promiseNonNull (line 72) | promiseNonNull() {
  method syncNest (line 77) | syncNest() {
  method syncNonNullNest (line 80) | syncNonNullNest() {
  method promiseNest (line 83) | promiseNest() {
  method promiseNonNullNest (line 88) | promiseNonNullNest() {
  function executeQuery (line 112) | function executeQuery(
  function patch (line 119) | function patch(str: string): string {
  function patchData (line 126) | function patchData(data: ExecutionResult): ExecutionResult {
  function executeSyncAndAsync (line 130) | async function executeSyncAndAsync(query: string, rootValue: unknown) {

FILE: src/execution/__tests__/oneof-test.ts
  function executeQuery (line 28) | function executeQuery(
  method test (line 39) | test({ input }: { input: { a?: string; b?: number } }) {

FILE: src/execution/__tests__/resolve-test.ts
  function testSchema (line 14) | function testSchema(testField: GraphQLFieldConfig<any, any>) {
  method test (line 42) | test() {
  class Adder (line 60) | class Adder {
    method constructor (line 63) | constructor(num: number) {
    method test (line 67) | test(args: { addend1: number }, context: { addend2: number }) {
  function executeQuery (line 98) | function executeQuery(query: string, rootValue?: unknown) {

FILE: src/execution/__tests__/schema-test.ts
  function article (line 88) | function article(id: number) {
  function getPic (line 105) | function getPic(uid: number, width: number, height: number) {

FILE: src/execution/__tests__/simplePubSub.ts
  class SimplePubSub (line 7) | class SimplePubSub<T> {
    method constructor (line 10) | constructor() {
    method emit (line 14) | emit(event: T): boolean {
    method getSubscriber (line 21) | getSubscriber<R>(transform: (value: T) => R): AsyncGenerator<R, void, ...

FILE: src/execution/__tests__/subscribe-test.ts
  type Email (line 20) | interface Email {
  function createSubscription (line 83) | function createSubscription(pubsub: SimplePubSub<Email>) {
  function expectPromise (line 126) | async function expectPromise(promise: Promise<unknown>) {
  method subscribe (line 239) | async subscribe() {
  method subscribe (line 314) | subscribe() {
  method subscribe (line 322) | subscribe() {
  function subscribeWithFn (line 515) | async function subscribeWithFn(subscribeFn: () => unknown) {
  method resolve (line 991) | resolve(message) {

FILE: src/execution/__tests__/sync-test.ts
  method resolve (line 25) | resolve(rootValue) {
  method resolve (line 31) | resolve(rootValue) {
  method resolve (line 42) | resolve(rootValue) {

FILE: src/execution/__tests__/union-interface-test.ts
  class Dog (line 17) | class Dog {
    method constructor (line 24) | constructor(name: string, barks: boolean) {
  class Cat (line 31) | class Cat {
    method constructor (line 38) | constructor(name: string, meows: boolean) {
  class Person (line 45) | class Person {
    method constructor (line 50) | constructor(
  method resolveType (line 114) | resolveType(value) {
  method resolveType (line 574) | resolveType(_source, context, info) {

FILE: src/execution/__tests__/variables-test.ts
  method parseValue (line 43) | parseValue() {
  method parseLiteral (line 46) | parseLiteral() {
  method parseValue (line 53) | parseValue(value) {
  method parseLiteral (line 57) | parseLiteral(ast) {
  function fieldWithInputArg (line 94) | function fieldWithInputArg(
  function executeQuery (line 149) | function executeQuery(
  function invalidValueError (line 1083) | function invalidValueError(value: number, index: number) {

FILE: src/execution/collectFields.ts
  function collectFields (line 33) | function collectFields(
  function collectSubfields (line 63) | function collectSubfields(
  function collectFieldsImpl (line 88) | function collectFieldsImpl(
  function shouldIncludeNode (line 165) | function shouldIncludeNode(
  function doesFragmentConditionMatch (line 188) | function doesFragmentConditionMatch(
  function getFieldEntryKey (line 210) | function getFieldEntryKey(node: FieldNode): string {

FILE: src/execution/execute.ts
  type ExecutionContext (line 107) | interface ExecutionContext {
  class CollectedErrors (line 123) | class CollectedErrors {
    method constructor (line 126) | constructor() {
    method errors (line 131) | get errors(): ReadonlyArray<GraphQLError> {
    method add (line 135) | add(error: GraphQLError, path: Path | undefined) {
    method _hasNulledPosition (line 147) | private _hasNulledPosition(startPath: Path | undefined): boolean {
  type ExecutionResult (line 166) | interface ExecutionResult<
  type FormattedExecutionResult (line 175) | interface FormattedExecutionResult<
  type ExecutionArgs (line 184) | interface ExecutionArgs {
  function execute (line 211) | function execute(args: ExecutionArgs): PromiseOrValue<ExecutionResult> {
  function executeSync (line 267) | function executeSync(args: ExecutionArgs): ExecutionResult {
  function buildResponse (line 282) | function buildResponse(
  function assertValidExecutionArguments (line 296) | function assertValidExecutionArguments(
  function buildExecutionContext (line 321) | function buildExecutionContext(
  function executeOperation (line 402) | function executeOperation(
  function executeFieldsSerially (line 446) | function executeFieldsSerially(
  function executeFields (line 484) | function executeFields(
  function executeField (line 539) | function executeField(
  function buildResolveInfo (line 614) | function buildResolveInfo(
  function handleFieldError (line 637) | function handleFieldError(
  function completeValue (line 676) | function completeValue(
  function completeListValue (line 767) | function completeListValue(
  function completeLeafValue (line 840) | function completeLeafValue(
  function completeAbstractValue (line 858) | function completeAbstractValue(
  function ensureValidRuntimeType (line 907) | function ensureValidRuntimeType(
  function completeObjectValue (line 965) | function completeObjectValue(
  function invalidReturnTypeError (line 1005) | function invalidReturnTypeError(
  function getFieldDef (line 1099) | function getFieldDef(

FILE: src/execution/mapAsyncIterator.ts
  function mapAsyncIterator (line 7) | function mapAsyncIterator<T, U, R = undefined>(

FILE: src/execution/subscribe.ts
  function subscribe (line 53) | async function subscribe(
  type BackwardsCompatibleArgs (line 84) | type BackwardsCompatibleArgs =
  function toNormalizedArgs (line 96) | function toNormalizedArgs(args: BackwardsCompatibleArgs): ExecutionArgs {
  function createSourceEventStream (line 155) | async function createSourceEventStream(
  function executeSubscription (line 198) | async function executeSubscription(

FILE: src/execution/values.ts
  type CoercedVariableValues (line 26) | type CoercedVariableValues =
  function getVariableValues (line 39) | function getVariableValues(
  function coerceVariableValues (line 72) | function coerceVariableValues(
  function getArgumentValues (line 152) | function getArgumentValues(
  function getDirectiveValues (line 239) | function getDirectiveValues(
  function hasOwnProperty (line 253) | function hasOwnProperty(obj: unknown, prop: string): boolean {

FILE: src/graphql.ts
  type GraphQLArgs (line 60) | interface GraphQLArgs {
  function graphql (line 71) | function graphql(args: GraphQLArgs): Promise<ExecutionResult> {
  function graphqlSync (line 82) | function graphqlSync(args: GraphQLArgs): ExecutionResult {
  function graphqlImpl (line 93) | function graphqlImpl(args: GraphQLArgs): PromiseOrValue<ExecutionResult> {

FILE: src/jsutils/Maybe.ts
  type Maybe (line 2) | type Maybe<T> = null | undefined | T;

FILE: src/jsutils/ObjMap.ts
  type ObjMap (line 1) | interface ObjMap<T> {
  type ObjMapLike (line 5) | type ObjMapLike<T> = ObjMap<T> | { [key: string]: T };
  type ReadOnlyObjMap (line 7) | interface ReadOnlyObjMap<T> {
  type ReadOnlyObjMapLike (line 11) | type ReadOnlyObjMapLike<T> =

FILE: src/jsutils/Path.ts
  type Path (line 3) | interface Path {
  function addPath (line 12) | function addPath(
  function pathToArray (line 23) | function pathToArray(

FILE: src/jsutils/PromiseOrValue.ts
  type PromiseOrValue (line 1) | type PromiseOrValue<T> = Promise<T> | T;

FILE: src/jsutils/__tests__/inspect-test.ts
  function namedFunc (line 44) | function namedFunc() {
  method toJSON (line 89) | toJSON() {
  method toJSON (line 99) | toJSON() {
  method toJSON (line 109) | toJSON() {
  method toJSON (line 120) | toJSON() {
  class Foo (line 160) | class Foo {
    method constructor (line 163) | constructor() {
  class Foo2 (line 170) | class Foo2 {
    method constructor (line 175) | constructor() {

FILE: src/jsutils/__tests__/instanceOf-test.ts
  class Foo (line 8) | class Foo {
  method [Symbol.toStringTag] (line 9) | get [Symbol.toStringTag]() {
  function oldVersion (line 20) | function oldVersion() {
  function newVersion (line 25) | function newVersion() {
  function getMinifiedClass (line 41) | function getMinifiedClass(tag: string) {
  function getFoo (line 61) | function getFoo() {

FILE: src/jsutils/__tests__/isIterableObject-test.ts
  function getArguments (line 15) | function getArguments() {

FILE: src/jsutils/__tests__/suggestionList-test.ts
  function expectSuggestions (line 6) | function expectSuggestions(input: string, options: ReadonlyArray<string>) {

FILE: src/jsutils/devAssert.ts
  function devAssert (line 1) | function devAssert(condition: unknown, message: string): void {

FILE: src/jsutils/didYouMean.ts
  constant MAX_SUGGESTIONS (line 1) | const MAX_SUGGESTIONS = 5;
  function didYouMean (line 11) | function didYouMean(

FILE: src/jsutils/groupBy.ts
  function groupBy (line 4) | function groupBy<K, T>(

FILE: src/jsutils/identityFunc.ts
  function identityFunc (line 4) | function identityFunc<T>(x: T): T {

FILE: src/jsutils/inspect.ts
  constant MAX_ARRAY_LENGTH (line 1) | const MAX_ARRAY_LENGTH = 10;
  constant MAX_RECURSIVE_DEPTH (line 2) | const MAX_RECURSIVE_DEPTH = 2;
  function inspect (line 7) | function inspect(value: unknown): string {
  function formatValue (line 11) | function formatValue(
  function formatObjectValue (line 27) | function formatObjectValue(
  function isJSONable (line 57) | function isJSONable(value: any): value is { toJSON: () => unknown } {
  function formatObject (line 61) | function formatObject(
  function formatArray (line 80) | function formatArray(
  function getObjectTag (line 109) | function getObjectTag(object: object): string {

FILE: src/jsutils/instanceOf.ts
  type Constructor (line 56) | interface Constructor extends Function {

FILE: src/jsutils/invariant.ts
  function invariant (line 1) | function invariant(

FILE: src/jsutils/isAsyncIterable.ts
  function isAsyncIterable (line 5) | function isAsyncIterable(

FILE: src/jsutils/isIterableObject.ts
  function isIterableObject (line 18) | function isIterableObject(

FILE: src/jsutils/isObjectLike.ts
  function isObjectLike (line 5) | function isObjectLike(

FILE: src/jsutils/isPromise.ts
  function isPromise (line 5) | function isPromise(value: any): value is Promise<unknown> {

FILE: src/jsutils/keyMap.ts
  function keyMap (line 30) | function keyMap<T>(

FILE: src/jsutils/keyValMap.ts
  function keyValMap (line 20) | function keyValMap<T, V>(

FILE: src/jsutils/mapValue.ts
  function mapValue (line 7) | function mapValue<T, V>(

FILE: src/jsutils/memoize3.ts
  function memoize3 (line 4) | function memoize3<

FILE: src/jsutils/naturalCompare.ts
  function naturalCompare (line 8) | function naturalCompare(aStr: string, bStr: string): number {
  constant DIGIT_0 (line 53) | const DIGIT_0 = 48;
  constant DIGIT_9 (line 54) | const DIGIT_9 = 57;
  function isDigit (line 56) | function isDigit(code: number): boolean {

FILE: src/jsutils/printPathArray.ts
  function printPathArray (line 4) | function printPathArray(path: ReadonlyArray<string | number>): string {

FILE: src/jsutils/promiseForObject.ts
  function promiseForObject (line 10) | function promiseForObject<T>(

FILE: src/jsutils/promiseReduce.ts
  function promiseReduce (line 11) | function promiseReduce<T, U>(

FILE: src/jsutils/suggestionList.ts
  function suggestionList (line 7) | function suggestionList(
  class LexicalDistance (line 42) | class LexicalDistance {
    method constructor (line 48) | constructor(input: string) {
    method measure (line 60) | measure(option: string, threshold: number): number | undefined {
  function stringToArray (line 130) | function stringToArray(str: string): Array<number> {

FILE: src/jsutils/toError.ts
  function toError (line 6) | function toError(thrownValue: unknown): Error {
  class NonErrorThrown (line 12) | class NonErrorThrown extends Error {
    method constructor (line 15) | constructor(thrownValue: unknown) {

FILE: src/jsutils/toObjMap.ts
  function toObjMap (line 4) | function toObjMap<T>(

FILE: src/language/__tests__/blockString-fuzz.ts
  function lexValue (line 13) | function lexValue(str: string): string {
  function testPrintableBlockString (line 22) | function testPrintableBlockString(
  function testNonPrintableBlockString (line 38) | function testNonPrintableBlockString(testValue: string): void {

FILE: src/language/__tests__/blockString-test.ts
  function joinLines (line 10) | function joinLines(...args: ReadonlyArray<string>) {
  function expectDedent (line 15) | function expectDedent(lines: ReadonlyArray<string>) {
  function expectPrintable (line 143) | function expectPrintable(str: string) {
  function expectNonPrintable (line 147) | function expectNonPrintable(str: string) {
  function expectBlockString (line 201) | function expectBlockString(str: string) {

FILE: src/language/__tests__/lexer-test.ts
  function lexOne (line 16) | function lexOne(str: string) {
  function lexSecond (line 21) | function lexSecond(str: string) {
  function expectSyntaxError (line 27) | function expectSyntaxError(text: string) {
  function isPunctuatorToken (line 1178) | function isPunctuatorToken(text: string) {

FILE: src/language/__tests__/parser-test.ts
  function expectSyntaxError (line 21) | function expectSyntaxError(text: string) {

FILE: src/language/__tests__/predicates-test.ts
  function filterNodes (line 21) | function filterNodes(predicate: (node: ASTNode) => boolean): Array<strin...

FILE: src/language/__tests__/schema-parser-test.ts
  function expectSyntaxError (line 10) | function expectSyntaxError(text: string) {
  function typeNode (line 14) | function typeNode(name: unknown, loc: unknown) {
  function nameNode (line 22) | function nameNode(name: unknown, loc: unknown) {
  function fieldNode (line 30) | function fieldNode(name: unknown, type: unknown, loc: unknown) {
  function fieldNodeWithArgs (line 34) | function fieldNodeWithArgs(
  function enumValueNode (line 51) | function enumValueNode(name: unknown, loc: unknown) {
  function inputValueNode (line 61) | function inputValueNode(

FILE: src/language/__tests__/schemaCoordinateLexer-test.ts
  function lexSecond (line 10) | function lexSecond(str: string) {
  function expectSyntaxError (line 16) | function expectSyntaxError(text: string) {

FILE: src/language/__tests__/source-test.ts
  function createSource (line 28) | function createSource(locationOffset: { line: number; column: number }) {

FILE: src/language/__tests__/visitor-test.ts
  function checkVisitorFnArgs (line 13) | function checkVisitorFnArgs(ast: any, args: any, isEdited: boolean = fal...
  function getValue (line 54) | function getValue(node: ASTNode) {
  method enter (line 70) | enter(_node, _key, _parent, path) {
  method leave (line 74) | leave(_node, _key, _parent, path) {
  method enter (line 99) | enter(node, key, parent, _path, ancestors) {
  method leave (line 109) | leave(_node, key, _parent, _path, ancestors) {
  method enter (line 129) | enter(node) {
  method leave (line 141) | leave(node) {
  method enter (line 171) | enter(node) {
  method leave (line 179) | leave(node) {
  method enter (line 200) | enter(node) {
  method leave (line 220) | leave(node) {
  method leave (line 240) | leave() {
  method enter (line 263) | enter(node) {
  method enter (line 285) | enter(node) {
  method leave (line 293) | leave(node) {
  method enter (line 323) | enter(node) {
  method leave (line 330) | leave(node) {
  method enter (line 358) | enter(node) {
  method leave (line 363) | leave(node) {
  method Name (line 395) | Name(node) {
  method enter (line 400) | enter(node) {
  method leave (line 404) | leave(node) {
  method enter (line 432) | enter(node) {
  method leave (line 435) | leave(node) {
  method enter (line 466) | enter(node) {
  method leave (line 470) | leave(node) {
  method enter (line 514) | enter(node, key, parent) {
  method leave (line 526) | leave(node, key, parent) {
  method enter (line 906) | enter(node) {
  method leave (line 914) | leave(node) {
  method enter (line 949) | enter(node) {
  method leave (line 956) | leave(node) {
  method enter (line 962) | enter(node) {
  method leave (line 969) | leave(node) {
  method enter (line 1025) | enter(node) {
  method leave (line 1032) | leave(node) {
  method enter (line 1065) | enter(node) {
  method leave (line 1073) | leave() {
  method enter (line 1078) | enter(node) {
  method leave (line 1085) | leave(node) {
  method enter (line 1127) | enter(node) {
  method leave (line 1131) | leave(node) {
  method enter (line 1168) | enter(node) {
  method leave (line 1172) | leave(node) {
  method enter (line 1181) | enter(node) {
  method leave (line 1185) | leave(node) {
  method enter (line 1244) | enter(node) {
  method enter (line 1252) | enter(node) {
  method leave (line 1256) | leave(node) {
  method leave (line 1308) | leave(node) {
  method enter (line 1316) | enter(node) {
  method leave (line 1320) | leave(node) {

FILE: src/language/ast.ts
  class Location (line 9) | class Location {
    method constructor (line 35) | constructor(startToken: Token, endToken: Token, source: Source) {
    method toJSON (line 47) | toJSON(): { start: number; end: number } {
  method [Symbol.toStringTag] (line 43) | get [Symbol.toStringTag]() {
  class Token (line 56) | class Token {
    method constructor (line 98) | constructor(
    method toJSON (line 121) | toJSON(): {
  method [Symbol.toStringTag] (line 117) | get [Symbol.toStringTag]() {
  type ASTNode (line 139) | type ASTNode =
  type ASTKindToNode (line 192) | type ASTKindToNode = {
  function isNode (line 305) | function isNode(maybeNode: any): maybeNode is ASTNode {
  type NameNode (line 312) | interface NameNode {
  type DocumentNode (line 320) | interface DocumentNode {
  type DefinitionNode (line 327) | type DefinitionNode =
  type ExecutableDefinitionNode (line 332) | type ExecutableDefinitionNode =
  type OperationDefinitionNode (line 336) | interface OperationDefinitionNode {
  type OperationTypeNode (line 347) | enum OperationTypeNode {
  type VariableDefinitionNode (line 354) | interface VariableDefinitionNode {
  type VariableNode (line 364) | interface VariableNode {
  type SelectionSetNode (line 370) | interface SelectionSetNode {
  type SelectionNode (line 376) | type SelectionNode = FieldNode | FragmentSpreadNode | InlineFragmentNode;
  type FieldNode (line 378) | interface FieldNode {
  type ArgumentNode (line 388) | interface ArgumentNode {
  type ConstArgumentNode (line 395) | interface ConstArgumentNode {
  type FragmentSpreadNode (line 404) | interface FragmentSpreadNode {
  type InlineFragmentNode (line 411) | interface InlineFragmentNode {
  type FragmentDefinitionNode (line 419) | interface FragmentDefinitionNode {
  type ValueNode (line 433) | type ValueNode =
  type ConstValueNode (line 444) | type ConstValueNode =
  type IntValueNode (line 454) | interface IntValueNode {
  type FloatValueNode (line 460) | interface FloatValueNode {
  type StringValueNode (line 466) | interface StringValueNode {
  type BooleanValueNode (line 473) | interface BooleanValueNode {
  type NullValueNode (line 479) | interface NullValueNode {
  type EnumValueNode (line 484) | interface EnumValueNode {
  type ListValueNode (line 490) | interface ListValueNode {
  type ConstListValueNode (line 496) | interface ConstListValueNode {
  type ObjectValueNode (line 502) | interface ObjectValueNode {
  type ConstObjectValueNode (line 508) | interface ConstObjectValueNode {
  type ObjectFieldNode (line 514) | interface ObjectFieldNode {
  type ConstObjectFieldNode (line 521) | interface ConstObjectFieldNode {
  type DirectiveNode (line 530) | interface DirectiveNode {
  type ConstDirectiveNode (line 537) | interface ConstDirectiveNode {
  type TypeNode (line 546) | type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode;
  type NamedTypeNode (line 548) | interface NamedTypeNode {
  type ListTypeNode (line 554) | interface ListTypeNode {
  type NonNullTypeNode (line 560) | interface NonNullTypeNode {
  type TypeSystemDefinitionNode (line 568) | type TypeSystemDefinitionNode =
  type SchemaDefinitionNode (line 573) | interface SchemaDefinitionNode {
  type OperationTypeDefinitionNode (line 581) | interface OperationTypeDefinitionNode {
  type TypeDefinitionNode (line 590) | type TypeDefinitionNode =
  type ScalarTypeDefinitionNode (line 598) | interface ScalarTypeDefinitionNode {
  type ObjectTypeDefinitionNode (line 606) | interface ObjectTypeDefinitionNode {
  type FieldDefinitionNode (line 616) | interface FieldDefinitionNode {
  type InputValueDefinitionNode (line 626) | interface InputValueDefinitionNode {
  type InterfaceTypeDefinitionNode (line 636) | interface InterfaceTypeDefinitionNode {
  type UnionTypeDefinitionNode (line 646) | interface UnionTypeDefinitionNode {
  type EnumTypeDefinitionNode (line 655) | interface EnumTypeDefinitionNode {
  type EnumValueDefinitionNode (line 664) | interface EnumValueDefinitionNode {
  type InputObjectTypeDefinitionNode (line 672) | interface InputObjectTypeDefinitionNode {
  type DirectiveDefinitionNode (line 683) | interface DirectiveDefinitionNode {
  type TypeSystemExtensionNode (line 695) | type TypeSystemExtensionNode = SchemaExtensionNode | TypeExtensionNode;
  type SchemaExtensionNode (line 697) | interface SchemaExtensionNode {
  type TypeExtensionNode (line 706) | type TypeExtensionNode =
  type ScalarTypeExtensionNode (line 714) | interface ScalarTypeExtensionNode {
  type ObjectTypeExtensionNode (line 721) | interface ObjectTypeExtensionNode {
  type InterfaceTypeExtensionNode (line 730) | interface InterfaceTypeExtensionNode {
  type UnionTypeExtensionNode (line 739) | interface UnionTypeExtensionNode {
  type EnumTypeExtensionNode (line 747) | interface EnumTypeExtensionNode {
  type InputObjectTypeExtensionNode (line 755) | interface InputObjectTypeExtensionNode {
  type SchemaCoordinateNode (line 765) | type SchemaCoordinateNode =
  type TypeCoordinateNode (line 772) | interface TypeCoordinateNode {
  type MemberCoordinateNode (line 778) | interface MemberCoordinateNode {
  type ArgumentCoordinateNode (line 785) | interface ArgumentCoordinateNode {
  type DirectiveCoordinateNode (line 793) | interface DirectiveCoordinateNode {
  type DirectiveArgumentCoordinateNode (line 799) | interface DirectiveArgumentCoordinateNode {

FILE: src/language/blockString.ts
  function dedentBlockStringLines (line 11) | function dedentBlockStringLines(
  function leadingWhitespace (line 43) | function leadingWhitespace(str: string): number {
  function isPrintableAsBlockString (line 54) | function isPrintableAsBlockString(value: string): boolean {
  function printBlockString (line 121) | function printBlockString(

FILE: src/language/characterClasses.ts
  function isWhiteSpace (line 9) | function isWhiteSpace(code: number): boolean {
  function isDigit (line 20) | function isDigit(code: number): boolean {
  function isLetter (line 34) | function isLetter(code: number): boolean {
  function isNameStart (line 49) | function isNameStart(code: number): boolean {
  function isNameContinue (line 62) | function isNameContinue(code: number): boolean {

FILE: src/language/directiveLocation.ts
  type DirectiveLocation (line 4) | enum DirectiveLocation {
  type DirectiveLocationEnum (line 34) | type DirectiveLocationEnum = typeof DirectiveLocation;

FILE: src/language/kinds.ts
  type Kind (line 4) | enum Kind {
  type KindEnum (line 84) | type KindEnum = typeof Kind;

FILE: src/language/lexer.ts
  type LexerInterface (line 15) | interface LexerInterface {
  class Lexer (line 33) | class Lexer implements LexerInterface {
    method constructor (line 56) | constructor(source: Source) {
    method advance (line 73) | advance(): Token {
    method lookahead (line 83) | lookahead(): Token {
  method [Symbol.toStringTag] (line 66) | get [Symbol.toStringTag]() {
  function isPunctuatorTokenKind (line 107) | function isPunctuatorTokenKind(kind: TokenKind): boolean {
  function isUnicodeScalarValue (line 135) | function isUnicodeScalarValue(code: number): boolean {
  function isSupplementaryCodePoint (line 149) | function isSupplementaryCodePoint(body: string, location: number): boole...
  function isLeadingSurrogate (line 156) | function isLeadingSurrogate(code: number): boolean {
  function isTrailingSurrogate (line 160) | function isTrailingSurrogate(code: number): boolean {
  function printCodePointAt (line 173) | function printCodePointAt(
  function createToken (line 196) | function createToken(
  function readNextToken (line 215) | function readNextToken(lexer: Lexer, start: number): Token {
  function readComment (line 352) | function readComment(lexer: Lexer, start: number): Token {
  function readNumber (line 413) | function readNumber(lexer: Lexer, start: number, firstCode: number): Tok...
  function readDigits (line 488) | function readDigits(lexer: Lexer, start: number, firstCode: number): num...
  function readString (line 530) | function readString(lexer: Lexer, start: number): Token {
  type EscapeSequence (line 587) | interface EscapeSequence {
  function readEscapedUnicodeVariableWidth (line 592) | function readEscapedUnicodeVariableWidth(
  function readEscapedUnicodeFixedWidth (line 627) | function readEscapedUnicodeFixedWidth(
  function read16BitHexCode (line 673) | function read16BitHexCode(body: string, position: number): number {
  function readHexDigit (line 698) | function readHexDigit(code: number): number {
  function readEscapedCharacter (line 720) | function readEscapedCharacter(lexer: Lexer, position: number): EscapeSeq...
  function readBlockString (line 763) | function readBlockString(lexer: Lexer, start: number): Token {
  function readName (line 859) | function readName(lexer: LexerInterface, start: number): Token {

FILE: src/language/location.ts
  type SourceLocation (line 10) | interface SourceLocation {
  function getLocation (line 19) | function getLocation(source: Source, position: number): SourceLocation {

FILE: src/language/parser.ts
  type ParseOptions (line 81) | interface ParseOptions {
  function parse (line 126) | function parse(
  function parseValue (line 149) | function parseValue(
  function parseConstValue (line 164) | function parseConstValue(
  function parseType (line 185) | function parseType(
  function parseSchemaCoordinate (line 205) | function parseSchemaCoordinate(
  class Parser (line 228) | class Parser {
    method constructor (line 233) | constructor(source: string | Source, options: ParseOptions = {}) {
    method tokenCount (line 247) | get tokenCount(): number {
    method parseName (line 254) | parseName(): NameNode {
    method parseDocument (line 267) | parseDocument(): DocumentNode {
    method parseDefinition (line 301) | parseDefinition(): DefinitionNode {
    method parseOperationDefinition (line 372) | parseOperationDefinition(): OperationDefinitionNode {
    method parseOperationType (line 405) | parseOperationType(): OperationTypeNode {
    method parseVariableDefinitions (line 422) | parseVariableDefinitions(): Array<VariableDefinitionNode> {
    method parseVariableDefinition (line 433) | parseVariableDefinition(): VariableDefinitionNode {
    method parseVariable (line 449) | parseVariable(): VariableNode {
    method parseSelectionSet (line 463) | parseSelectionSet(): SelectionSetNode {
    method parseSelection (line 480) | parseSelection(): SelectionNode {
    method parseField (line 491) | parseField(): FieldNode {
    method parseArguments (line 521) | parseArguments(isConst: boolean): Array<ArgumentNode> {
    method parseArgument (line 531) | parseArgument(isConst: boolean = false): ArgumentNode {
    method parseConstArgument (line 543) | parseConstArgument(): ConstArgumentNode {
    method parseFragment (line 556) | parseFragment(): FragmentSpreadNode | InlineFragmentNode {
    method parseFragmentDefinition (line 582) | parseFragmentDefinition(): FragmentDefinitionNode {
    method parseFragmentName (line 613) | parseFragmentName(): NameNode {
    method parseValueLiteral (line 642) | parseValueLiteral(isConst: boolean): ValueNode {
    method parseConstValueLiteral (line 705) | parseConstValueLiteral(): ConstValueNode {
    method parseStringLiteral (line 709) | parseStringLiteral(): StringValueNode {
    method parseList (line 726) | parseList(isConst: boolean): ListValueNode {
    method parseObject (line 743) | parseObject(isConst: boolean): ObjectValueNode {
    method parseObjectField (line 756) | parseObjectField(isConst: boolean): ObjectFieldNode {
    method parseDirectives (line 774) | parseDirectives(isConst: boolean): Array<DirectiveNode> {
    method parseConstDirectives (line 782) | parseConstDirectives(): Array<ConstDirectiveNode> {
    method parseDirective (line 793) | parseDirective(isConst: boolean): DirectiveNode {
    method parseTypeReference (line 811) | parseTypeReference(): TypeNode {
    method parseNamedType (line 838) | parseNamedType(): NamedTypeNode {
    method peekDescription (line 847) | peekDescription(): boolean {
    method parseDescription (line 854) | parseDescription(): undefined | StringValueNode {
    method parseSchemaDefinition (line 865) | parseSchemaDefinition(): SchemaDefinitionNode {
    method parseOperationTypeDefinition (line 886) | parseOperationTypeDefinition(): OperationTypeDefinitionNode {
    method parseScalarTypeDefinition (line 901) | parseScalarTypeDefinition(): ScalarTypeDefinitionNode {
    method parseObjectTypeDefinition (line 920) | parseObjectTypeDefinition(): ObjectTypeDefinitionNode {
    method parseImplementsInterfaces (line 943) | parseImplementsInterfaces(): Array<NamedTypeNode> {
    method parseFieldsDefinition (line 954) | parseFieldsDefinition(): Array<FieldDefinitionNode> {
    method parseFieldDefinition (line 966) | parseFieldDefinition(): FieldDefinitionNode {
    method parseArgumentDefs (line 987) | parseArgumentDefs(): Array<InputValueDefinitionNode> {
    method parseInputValueDef (line 999) | parseInputValueDef(): InputValueDefinitionNode {
    method parseInterfaceTypeDefinition (line 1024) | parseInterfaceTypeDefinition(): InterfaceTypeDefinitionNode {
    method parseUnionTypeDefinition (line 1046) | parseUnionTypeDefinition(): UnionTypeDefinitionNode {
    method parseUnionMemberTypes (line 1067) | parseUnionMemberTypes(): Array<NamedTypeNode> {
    method parseEnumTypeDefinition (line 1077) | parseEnumTypeDefinition(): EnumTypeDefinitionNode {
    method parseEnumValuesDefinition (line 1098) | parseEnumValuesDefinition(): Array<EnumValueDefinitionNode> {
    method parseEnumValueDefinition (line 1109) | parseEnumValueDefinition(): EnumValueDefinitionNode {
    method parseEnumValueName (line 1125) | parseEnumValueName(): NameNode {
    method parseInputObjectTypeDefinition (line 1146) | parseInputObjectTypeDefinition(): InputObjectTypeDefinitionNode {
    method parseInputFieldsDefinition (line 1167) | parseInputFieldsDefinition(): Array<InputValueDefinitionNode> {
    method parseTypeSystemExtension (line 1188) | parseTypeSystemExtension(): TypeSystemExtensionNode {
    method parseSchemaExtension (line 1220) | parseSchemaExtension(): SchemaExtensionNode {
    method parseScalarTypeExtension (line 1244) | parseScalarTypeExtension(): ScalarTypeExtensionNode {
    method parseObjectTypeExtension (line 1266) | parseObjectTypeExtension(): ObjectTypeExtensionNode {
    method parseInterfaceTypeExtension (line 1296) | parseInterfaceTypeExtension(): InterfaceTypeExtensionNode {
    method parseUnionTypeExtension (line 1325) | parseUnionTypeExtension(): UnionTypeExtensionNode {
    method parseEnumTypeExtension (line 1348) | parseEnumTypeExtension(): EnumTypeExtensionNode {
    method parseInputObjectTypeExtension (line 1371) | parseInputObjectTypeExtension(): InputObjectTypeExtensionNode {
    method parseDirectiveDefinition (line 1395) | parseDirectiveDefinition(): DirectiveDefinitionNode {
    method parseDirectiveLocations (line 1420) | parseDirectiveLocations(): Array<NameNode> {
    method parseDirectiveLocation (line 1451) | parseDirectiveLocation(): NameNode {
    method parseSchemaCoordinate (line 1470) | parseSchemaCoordinate(): SchemaCoordinateNode {
    method node (line 1529) | node<T extends { loc?: Location }>(startToken: Token, node: T): T {
    method peek (line 1543) | peek(kind: TokenKind): boolean {
    method expectToken (line 1551) | expectToken(kind: TokenKind): Token {
    method expectOptionalToken (line 1569) | expectOptionalToken(kind: TokenKind): boolean {
    method expectKeyword (line 1582) | expectKeyword(value: string): void {
    method expectOptionalKeyword (line 1599) | expectOptionalKeyword(value: string): boolean {
    method unexpected (line 1611) | unexpected(atToken?: Maybe<Token>): GraphQLError {
    method any (line 1625) | any<T>(
    method optionalMany (line 1644) | optionalMany<T>(
    method many (line 1664) | many<T>(
    method delimitedMany (line 1682) | delimitedMany<T>(delimiterKind: TokenKind, parseFn: () => T): Array<T> {
    method advanceLexer (line 1692) | advanceLexer(): void {
  function getTokenDesc (line 1712) | function getTokenDesc(token: Token): string {
  function getTokenKindDesc (line 1720) | function getTokenKindDesc(kind: TokenKind): string {

FILE: src/language/predicates.ts
  function isDefinitionNode (line 17) | function isDefinitionNode(node: ASTNode): node is DefinitionNode {
  function isExecutableDefinitionNode (line 25) | function isExecutableDefinitionNode(
  function isSelectionNode (line 34) | function isSelectionNode(node: ASTNode): node is SelectionNode {
  function isValueNode (line 42) | function isValueNode(node: ASTNode): node is ValueNode {
  function isConstValueNode (line 56) | function isConstValueNode(node: ASTNode): node is ConstValueNode {
  function isTypeNode (line 67) | function isTypeNode(node: ASTNode): node is TypeNode {
  function isTypeSystemDefinitionNode (line 75) | function isTypeSystemDefinitionNode(
  function isTypeDefinitionNode (line 85) | function isTypeDefinitionNode(
  function isTypeSystemExtensionNode (line 98) | function isTypeSystemExtensionNode(
  function isTypeExtensionNode (line 104) | function isTypeExtensionNode(node: ASTNode): node is TypeExtensionNode {
  function isSchemaCoordinateNode (line 115) | function isSchemaCoordinateNode(

FILE: src/language/printLocation.ts
  function printLocation (line 9) | function printLocation(location: Location): string {
  function printSourceLocation (line 19) | function printSourceLocation(
  function printPrefixedLines (line 71) | function printPrefixedLines(

FILE: src/language/printString.ts
  function printString (line 5) | function printString(str: string): string {
  function escapedReplacer (line 12) | function escapedReplacer(str: string): string {

FILE: src/language/printer.ts
  function print (line 13) | function print(ast: ASTNode): string {
  constant MAX_LINE_LENGTH (line 17) | const MAX_LINE_LENGTH = 80;
  method leave (line 30) | leave(node) {
  method leave (line 63) | leave({ alias, name, arguments: args, directives, selectionSet }) {
  function join (line 339) | function join(
  function block (line 349) | function block(array: Maybe<ReadonlyArray<string | undefined>>): string {
  function wrap (line 356) | function wrap(
  function indent (line 366) | function indent(str: string): string {
  function hasMultilineItems (line 370) | function hasMultilineItems(maybeArray: Maybe<ReadonlyArray<string>>): bo...

FILE: src/language/schemaCoordinateLexer.ts
  class SchemaCoordinateLexer (line 18) | class SchemaCoordinateLexer implements LexerInterface {
    method constructor (line 43) | constructor(source: Source) {
    method advance (line 58) | advance(): Token {
    method lookahead (line 68) | lookahead(): Token {
  method [Symbol.toStringTag] (line 51) | get [Symbol.toStringTag]() {
  function readNextToken (line 86) | function readNextToken(lexer: SchemaCoordinateLexer, start: number): Tok...

FILE: src/language/source.ts
  type Location (line 5) | interface Location {
  class Source (line 17) | class Source {
    method constructor (line 22) | constructor(
  method [Symbol.toStringTag] (line 45) | get [Symbol.toStringTag]() {
  function isSource (line 55) | function isSource(source: unknown): source is Source {

FILE: src/language/tokenKind.ts
  type TokenKind (line 5) | enum TokenKind {
  type TokenKindEnum (line 37) | type TokenKindEnum = typeof TokenKind;

FILE: src/language/visitor.ts
  type ASTVisitor (line 12) | type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;
  type KindVisitor (line 14) | type KindVisitor = {
  type EnterLeaveVisitor (line 20) | interface EnterLeaveVisitor<TVisitedNode extends ASTNode> {
  type ASTVisitFn (line 29) | type ASTVisitFn<TVisitedNode extends ASTNode> = (
  type ASTReducer (line 50) | type ASTReducer<R> = {
  type ASTReducerFn (line 57) | type ASTReducerFn<TReducedNode extends ASTNode, R> = (
  type ReducedField (line 74) | type ReducedField<T, R> = T extends null | undefined
  type ASTVisitorKeyMap (line 85) | type ASTVisitorKeyMap = {
  constant BREAK (line 89) | const BREAK: unknown = Object.freeze({});
  function visit (line 179) | function visit(
  function visitInParallel (line 310) | function visitInParallel(
  function getEnterLeaveForKind (line 374) | function getEnterLeaveForKind(
  function getVisitFn (line 402) | function getVisitFn(

FILE: src/subscription/index.ts
  type SubscriptionArgs (line 21) | interface SubscriptionArgs extends ExecutionArgs {}

FILE: src/type/__tests__/definition-test.ts
  method parseValue (line 79) | parseValue(value) {
  method fields (line 371) | fields() {
  method interfaces (line 428) | interfaces() {
  method interfaces (line 532) | interfaces() {
  function expectList (line 894) | function expectList(type: GraphQLType) {
  function expectNonNull (line 924) | function expectNonNull(type: GraphQLNullableType) {
  function toString (line 994) | function toString(obj: unknown): string {

FILE: src/type/__tests__/enumType-test.ts
  method resolve (line 52) | resolve(_source, { fromEnum, fromInt, fromString }) {
  method resolve (line 65) | resolve(_source, { fromEnum }) {
  method resolve (line 81) | resolve(_source, { fromEnum, provideGoodValue, provideBadValue }) {
  method resolve (line 100) | resolve(_source, { fromEnum }) {
  function executeQuery (line 135) | function executeQuery(

FILE: src/type/__tests__/extensions-test.ts
  function expectObjMap (line 19) | function expectObjMap(value: unknown) {

FILE: src/type/__tests__/introspection-test.ts
  function fieldResolver (line 1735) | function fieldResolver(
  function typeResolver (line 1744) | function typeResolver(_1: any, _2: any, info: GraphQLResolveInfo): never {

FILE: src/type/__tests__/predicate-test.ts
  function expectInputType (line 305) | function expectInputType(type: unknown) {
  function expectNonInputType (line 326) | function expectNonInputType(type: unknown) {
  function expectOutputType (line 349) | function expectOutputType(type: unknown) {
  function expectNonOutputType (line 376) | function expectNonOutputType(type: unknown) {
  function buildArg (line 568) | function buildArg(config: {
  function buildInputField (line 616) | function buildInputField(config: {

FILE: src/type/__tests__/scalars-test.ts
  function parseValue (line 17) | function parseValue(value: unknown) {
  function parseLiteral (line 68) | function parseLiteral(str: string) {
  function serialize (line 113) | function serialize(value: unknown) {
  method valueOf (line 127) | valueOf() {
  function parseValue (line 186) | function parseValue(value: unknown) {
  function parseLiteral (line 233) | function parseLiteral(str: string) {
  function serialize (line 273) | function serialize(value: unknown) {
  method valueOf (line 290) | valueOf() {
  function parseValue (line 316) | function parseValue(value: unknown) {
  function parseLiteral (line 346) | function parseLiteral(str: string) {
  function serialize (line 380) | function serialize(value: unknown) {
  function parseValue (line 421) | function parseValue(value: unknown) {
  function parseLiteral (line 458) | function parseLiteral(str: string) {
  function serialize (line 498) | function serialize(value: unknown) {
  method valueOf (line 509) | valueOf() {
  function parseValue (line 535) | function parseValue(value: unknown) {
  function parseLiteral (line 573) | function parseLiteral(str: string) {
  function serialize (line 613) | function serialize(value: unknown) {
  method valueOf (line 635) | valueOf() {

FILE: src/type/__tests__/validation-test.ts
  function withModifiers (line 72) | function withModifiers<T extends GraphQLNamedType>(
  function schemaWithFieldType (line 109) | function schemaWithFieldType(type: GraphQLOutputType): GraphQLSchema {
  method fields (line 491) | fields() {
  function schemaWithObjectField (line 997) | function schemaWithObjectField(
  function schemaWithInterfaceField (line 1312) | function schemaWithInterfaceField(
  function schemaWithArg (line 1443) | function schemaWithArg(argConfig: GraphQLArgumentConfig): GraphQLSchema {
  function schemaWithInputField (line 1588) | function schemaWithInputField(

FILE: src/type/assertName.ts
  function assertName (line 10) | function assertName(name: string): string {
  function assertEnumValueName (line 40) | function assertEnumValueName(name: string): string {

FILE: src/type/definition.ts
  type GraphQLType (line 53) | type GraphQLType =
  function isType (line 71) | function isType(type: unknown): type is GraphQLType {
  function assertType (line 84) | function assertType(type: unknown): GraphQLType {
  function isScalarType (line 94) | function isScalarType(type: unknown): type is GraphQLScalarType {
  function assertScalarType (line 98) | function assertScalarType(type: unknown): GraphQLScalarType {
  function isObjectType (line 105) | function isObjectType(type: unknown): type is GraphQLObjectType {
  function assertObjectType (line 109) | function assertObjectType(type: unknown): GraphQLObjectType {
  function isInterfaceType (line 116) | function isInterfaceType(type: unknown): type is GraphQLInterfaceType {
  function assertInterfaceType (line 120) | function assertInterfaceType(type: unknown): GraphQLInterfaceType {
  function isUnionType (line 129) | function isUnionType(type: unknown): type is GraphQLUnionType {
  function assertUnionType (line 133) | function assertUnionType(type: unknown): GraphQLUnionType {
  function isEnumType (line 140) | function isEnumType(type: unknown): type is GraphQLEnumType {
  function assertEnumType (line 144) | function assertEnumType(type: unknown): GraphQLEnumType {
  function isInputObjectType (line 151) | function isInputObjectType(
  function assertInputObjectType (line 157) | function assertInputObjectType(type: unknown): GraphQLInputObjectType {
  function isListType (line 173) | function isListType(type: unknown): type is GraphQLList<GraphQLType> {
  function assertListType (line 177) | function assertListType(type: unknown): GraphQLList<GraphQLType> {
  function isNonNullType (line 193) | function isNonNullType(
  function assertNonNullType (line 199) | function assertNonNullType(type: unknown): GraphQLNonNull<GraphQLType> {
  type GraphQLInputType (line 209) | type GraphQLInputType =
  function isInputType (line 221) | function isInputType(type: unknown): type is GraphQLInputType {
  function assertInputType (line 230) | function assertInputType(type: unknown): GraphQLInputType {
  type GraphQLOutputType (line 240) | type GraphQLOutputType =
  function isOutputType (line 256) | function isOutputType(type: unknown): type is GraphQLOutputType {
  function assertOutputType (line 267) | function assertOutputType(type: unknown): GraphQLOutputType {
  type GraphQLLeafType (line 277) | type GraphQLLeafType = GraphQLScalarType | GraphQLEnumType;
  function isLeafType (line 279) | function isLeafType(type: unknown): type is GraphQLLeafType {
  function assertLeafType (line 283) | function assertLeafType(type: unknown): GraphQLLeafType {
  type GraphQLCompositeType (line 293) | type GraphQLCompositeType =
  function isCompositeType (line 298) | function isCompositeType(type: unknown): type is GraphQLCompositeType {
  function assertCompositeType (line 302) | function assertCompositeType(type: unknown): GraphQLCompositeType {
  type GraphQLAbstractType (line 314) | type GraphQLAbstractType = GraphQLInterfaceType | GraphQLUnionType;
  function isAbstractType (line 316) | function isAbstractType(type: unknown): type is GraphQLAbstractType {
  function assertAbstractType (line 320) | function assertAbstractType(type: unknown): GraphQLAbstractType {
  class GraphQLList (line 346) | class GraphQLList<T extends GraphQLType> {
    method constructor (line 349) | constructor(ofType: T) {
    method toString (line 362) | toString(): string {
    method toJSON (line 366) | toJSON(): string {
  method [Symbol.toStringTag] (line 358) | get [Symbol.toStringTag]() {
  class GraphQLNonNull (line 392) | class GraphQLNonNull<T extends GraphQLNullableType> {
    method constructor (line 395) | constructor(ofType: T) {
    method toString (line 408) | toString(): string {
    method toJSON (line 412) | toJSON(): string {
  method [Symbol.toStringTag] (line 404) | get [Symbol.toStringTag]() {
  type GraphQLWrappingType (line 421) | type GraphQLWrappingType =
  function isWrappingType (line 425) | function isWrappingType(type: unknown): type is GraphQLWrappingType {
  function assertWrappingType (line 429) | function assertWrappingType(type: unknown): GraphQLWrappingType {
  type GraphQLNullableType (line 439) | type GraphQLNullableType =
  function isNullableType (line 448) | function isNullableType(type: unknown): type is GraphQLNullableType {
  function assertNullableType (line 452) | function assertNullableType(type: unknown): GraphQLNullableType {
  function getNullableType (line 466) | function getNullableType(
  type GraphQLNamedType (line 477) | type GraphQLNamedType = GraphQLNamedInputType | GraphQLNamedOutputType;
  type GraphQLNamedInputType (line 479) | type GraphQLNamedInputType =
  type GraphQLNamedOutputType (line 484) | type GraphQLNamedOutputType =
  function isNamedType (line 491) | function isNamedType(type: unknown): type is GraphQLNamedType {
  function assertNamedType (line 502) | function assertNamedType(type: unknown): GraphQLNamedType {
  function getNamedType (line 516) | function getNamedType(
  type ThunkReadonlyArray (line 532) | type ThunkReadonlyArray<T> = (() => ReadonlyArray<T>) | ReadonlyArray<T>;
  type ThunkObjMap (line 533) | type ThunkObjMap<T> = (() => ObjMap<T>) | ObjMap<T>;
  function resolveReadonlyArrayThunk (line 535) | function resolveReadonlyArrayThunk<T>(
  function resolveObjMapThunk (line 541) | function resolveObjMapThunk<T>(thunk: ThunkObjMap<T>): ObjMap<T> {
  type GraphQLScalarTypeExtensions (line 554) | interface GraphQLScalarTypeExtensions {
  class GraphQLScalarType (line 589) | class GraphQLScalarType<TInternal = unknown, TExternal = TInternal> {
    method constructor (line 600) | constructor(config: Readonly<GraphQLScalarTypeConfig<TInternal, TExter...
    method toConfig (line 643) | toConfig(): GraphQLScalarTypeNormalizedConfig<TInternal, TExternal> {
    method toString (line 657) | toString(): string {
    method toJSON (line 661) | toJSON(): string {
  method [Symbol.toStringTag] (line 639) | get [Symbol.toStringTag]() {
  type GraphQLScalarSerializer (line 666) | type GraphQLScalarSerializer<TExternal> = (
  type GraphQLScalarValueParser (line 670) | type GraphQLScalarValueParser<TInternal> = (
  type GraphQLScalarLiteralParser (line 674) | type GraphQLScalarLiteralParser<TInternal> = (
  type GraphQLScalarTypeConfig (line 679) | interface GraphQLScalarTypeConfig<TInternal, TExternal> {
  type GraphQLScalarTypeNormalizedConfig (line 694) | interface GraphQLScalarTypeNormalizedConfig<TInternal, TExternal>
  type GraphQLObjectTypeExtensions (line 715) | interface GraphQLObjectTypeExtensions<_TSource = any, _TContext = any> {
  class GraphQLObjectType (line 759) | class GraphQLObjectType<TSource = any, TContext = any> {
    method constructor (line 770) | constructor(config: Readonly<GraphQLObjectTypeConfig<TSource, TContext...
    method getFields (line 791) | getFields(): GraphQLFieldMap<TSource, TContext> {
    method getInterfaces (line 798) | getInterfaces(): ReadonlyArray<GraphQLInterfaceType> {
    method toConfig (line 805) | toConfig(): GraphQLObjectTypeNormalizedConfig<TSource, TContext> {
    method toString (line 818) | toString(): string {
    method toJSON (line 822) | toJSON(): string {
  method [Symbol.toStringTag] (line 787) | get [Symbol.toStringTag]() {
  function defineInterfaces (line 827) | function defineInterfaces(
  function defineFieldMap (line 840) | function defineFieldMap<TSource, TContext>(
  function defineArguments (line 883) | function defineArguments(
  function isPlainObj (line 897) | function isPlainObj(obj: unknown): boolean {
  function fieldsToFieldsConfig (line 901) | function fieldsToFieldsConfig<TSource, TContext>(
  function argsToArgsConfig (line 919) | function argsToArgsConfig(
  type GraphQLObjectTypeConfig (line 936) | interface GraphQLObjectTypeConfig<TSource, TContext> {
  type GraphQLObjectTypeNormalizedConfig (line 947) | interface GraphQLObjectTypeNormalizedConfig<TSource, TContext>
  type GraphQLTypeResolver (line 955) | type GraphQLTypeResolver<TSource, TContext> = (
  type GraphQLIsTypeOfFn (line 962) | type GraphQLIsTypeOfFn<TSource, TContext> = (
  type GraphQLFieldResolver (line 968) | type GraphQLFieldResolver<
  type GraphQLResolveInfo (line 980) | interface GraphQLResolveInfo {
  type GraphQLFieldExtensions (line 1005) | interface GraphQLFieldExtensions<_TSource, _TContext, _TArgs = any> {
  type GraphQLFieldConfig (line 1009) | interface GraphQLFieldConfig<TSource, TContext, TArgs = any> {
  type GraphQLFieldConfigArgumentMap (line 1022) | type GraphQLFieldConfigArgumentMap = ObjMap<GraphQLArgumentConfig>;
  type GraphQLArgumentExtensions (line 1033) | interface GraphQLArgumentExtensions {
  type GraphQLArgumentConfig (line 1037) | interface GraphQLArgumentConfig {
  type GraphQLFieldConfigMap (line 1046) | type GraphQLFieldConfigMap<TSource, TContext> = ObjMap<
  type GraphQLField (line 1050) | interface GraphQLField<TSource, TContext, TArgs = any> {
  type GraphQLArgument (line 1062) | interface GraphQLArgument {
  function isRequiredArgument (line 1072) | function isRequiredArgument(arg: GraphQLArgument): boolean {
  type GraphQLFieldMap (line 1076) | type GraphQLFieldMap<TSource, TContext> = ObjMap<
  type GraphQLInterfaceTypeExtensions (line 1089) | interface GraphQLInterfaceTypeExtensions {
  class GraphQLInterfaceType (line 1112) | class GraphQLInterfaceType {
    method constructor (line 1123) | constructor(config: Readonly<GraphQLInterfaceTypeConfig<any, any>>) {
    method getFields (line 1144) | getFields(): GraphQLFieldMap<any, any> {
    method getInterfaces (line 1151) | getInterfaces(): ReadonlyArray<GraphQLInterfaceType> {
    method toConfig (line 1158) | toConfig(): GraphQLInterfaceTypeNormalizedConfig {
    method toString (line 1171) | toString(): string {
    method toJSON (line 1175) | toJSON(): string {
  method [Symbol.toStringTag] (line 1140) | get [Symbol.toStringTag]() {
  type GraphQLInterfaceTypeConfig (line 1180) | interface GraphQLInterfaceTypeConfig<TSource, TContext> {
  type GraphQLInterfaceTypeNormalizedConfig (line 1196) | interface GraphQLInterfaceTypeNormalizedConfig
  type GraphQLUnionTypeExtensions (line 1213) | interface GraphQLUnionTypeExtensions {
  class GraphQLUnionType (line 1241) | class GraphQLUnionType {
    method constructor (line 1251) | constructor(config: Readonly<GraphQLUnionTypeConfig<any, any>>) {
    method getTypes (line 1271) | getTypes(): ReadonlyArray<GraphQLObjectType> {
    method toConfig (line 1278) | toConfig(): GraphQLUnionTypeNormalizedConfig {
    method toString (line 1290) | toString(): string {
    method toJSON (line 1294) | toJSON(): string {
  method [Symbol.toStringTag] (line 1267) | get [Symbol.toStringTag]() {
  function defineTypes (line 1299) | function defineTypes(
  type GraphQLUnionTypeConfig (line 1310) | interface GraphQLUnionTypeConfig<TSource, TContext> {
  type GraphQLUnionTypeNormalizedConfig (line 1325) | interface GraphQLUnionTypeNormalizedConfig
  type GraphQLEnumTypeExtensions (line 1341) | interface GraphQLEnumTypeExtensions {
  class GraphQLEnumType (line 1368) | class GraphQLEnumType /* <T> */ {
    method constructor (line 1382) | constructor(config: Readonly<GraphQLEnumTypeConfig /* <T> */>) {
    method getValues (line 1401) | getValues(): ReadonlyArray<GraphQLEnumValue /* <T> */> {
    method getValue (line 1408) | getValue(name: string): Maybe<GraphQLEnumValue> {
    method serialize (line 1415) | serialize(outputValue: unknown /* T */): Maybe<string> {
    method parseValue (line 1430) | parseValue(inputValue: unknown): Maybe<any> /* T */ {
    method parseLiteral (line 1449) | parseLiteral(
    method toConfig (line 1475) | toConfig(): GraphQLEnumTypeNormalizedConfig {
    method toString (line 1498) | toString(): string {
    method toJSON (line 1502) | toJSON(): string {
  method [Symbol.toStringTag] (line 1397) | get [Symbol.toStringTag]() {
  function didYouMeanEnumValue (line 1507) | function didYouMeanEnumValue(
  function defineEnumValues (line 1517) | function defineEnumValues(
  type GraphQLEnumTypeConfig (line 1542) | interface GraphQLEnumTypeConfig {
  type GraphQLEnumTypeNormalizedConfig (line 1551) | interface GraphQLEnumTypeNormalizedConfig extends GraphQLEnumTypeConfig {
  type GraphQLEnumValueConfigMap (line 1557) | type GraphQLEnumValueConfigMap /* <T> */ =
  type GraphQLEnumValueExtensions (line 1569) | interface GraphQLEnumValueExtensions {
  type GraphQLEnumValueConfig (line 1573) | interface GraphQLEnumValueConfig {
  type GraphQLEnumValue (line 1581) | interface GraphQLEnumValue {
  type GraphQLInputObjectTypeExtensions (line 1599) | interface GraphQLInputObjectTypeExtensions {
  class GraphQLInputObjectType (line 1624) | class GraphQLInputObjectType {
    method constructor (line 1634) | constructor(config: Readonly<GraphQLInputObjectTypeConfig>) {
    method getFields (line 1649) | getFields(): GraphQLInputFieldMap {
    method toConfig (line 1656) | toConfig(): GraphQLInputObjectTypeNormalizedConfig {
    method toString (line 1677) | toString(): string {
    method toJSON (line 1681) | toJSON(): string {
  method [Symbol.toStringTag] (line 1645) | get [Symbol.toStringTag]() {
  function defineInputFieldMap (line 1686) | function defineInputFieldMap(
  type GraphQLInputObjectTypeConfig (line 1712) | interface GraphQLInputObjectTypeConfig {
  type GraphQLInputObjectTypeNormalizedConfig (line 1722) | interface GraphQLInputObjectTypeNormalizedConfig
  type GraphQLInputFieldExtensions (line 1738) | interface GraphQLInputFieldExtensions {
  type GraphQLInputFieldConfig (line 1742) | interface GraphQLInputFieldConfig {
  type GraphQLInputFieldConfigMap (line 1751) | type GraphQLInputFieldConfigMap = ObjMap<GraphQLInputFieldConfig>;
  type GraphQLInputField (line 1753) | interface GraphQLInputField {
  function isRequiredInputField (line 1763) | function isRequiredInputField(field: GraphQLInputField): boolean {
  type GraphQLInputFieldMap (line 1767) | type GraphQLInputFieldMap = ObjMap<GraphQLInputField>;

FILE: src/type/directives.ts
  function isDirective (line 26) | function isDirective(directive: unknown): directive is GraphQLDirective {
  function assertDirective (line 30) | function assertDirective(directive: unknown): GraphQLDirective {
  type GraphQLDirectiveExtensions (line 48) | interface GraphQLDirectiveExtensions {
  class GraphQLDirective (line 56) | class GraphQLDirective {
    method constructor (line 65) | constructor(config: Readonly<GraphQLDirectiveConfig>) {
    method toConfig (line 91) | toConfig(): GraphQLDirectiveNormalizedConfig {
    method toString (line 103) | toString(): string {
    method toJSON (line 107) | toJSON(): string {
  method [Symbol.toStringTag] (line 87) | get [Symbol.toStringTag]() {
  type GraphQLDirectiveConfig (line 112) | interface GraphQLDirectiveConfig {
  type GraphQLDirectiveNormalizedConfig (line 122) | interface GraphQLDirectiveNormalizedConfig extends GraphQLDirectiveConfig {
  constant DEFAULT_DEPRECATION_REASON (line 171) | const DEFAULT_DEPRECATION_REASON = 'No longer supported';
  function isSpecifiedDirective (line 235) | function isSpecifiedDirective(directive: GraphQLDirective): boolean {

FILE: src/type/introspection.ts
  method resolve (line 49) | resolve(schema) {
  method resolve (line 114) | resolve(field, { includeDeprecated }) {
  method resolve (line 215) | resolve(type) {
  method resolve (line 266) | resolve(type, { includeDeprecated }) {
  method resolve (line 277) | resolve(type) {
  method resolve (line 285) | resolve(type, _args, _context, { schema }) {
  method resolve (line 296) | resolve(type, { includeDeprecated }) {
  method resolve (line 313) | resolve(type, { includeDeprecated }) {
  method resolve (line 361) | resolve(field, { includeDeprecated }) {
  method resolve (line 404) | resolve(inputValue) {
  type TypeKind (line 446) | enum TypeKind {
  function isIntrospectionType (line 563) | function isIntrospectionType(type: GraphQLNamedType): boolean {

FILE: src/type/scalars.ts
  constant GRAPHQL_MAX_INT (line 16) | const GRAPHQL_MAX_INT = 2147483647;
  constant GRAPHQL_MIN_INT (line 22) | const GRAPHQL_MIN_INT = -2147483648;
  method serialize (line 29) | serialize(outputValue) {
  method parseValue (line 55) | parseValue(inputValue) {
  method parseLiteral (line 69) | parseLiteral(valueNode) {
  method serialize (line 92) | serialize(outputValue) {
  method parseValue (line 112) | parseValue(inputValue) {
  method parseLiteral (line 121) | parseLiteral(valueNode) {
  method serialize (line 137) | serialize(outputValue) {
  method parseValue (line 156) | parseValue(inputValue) {
  method parseLiteral (line 165) | parseLiteral(valueNode) {
  method serialize (line 180) | serialize(outputValue) {
  method parseValue (line 194) | parseValue(inputValue) {
  method parseLiteral (line 203) | parseLiteral(valueNode) {
  method serialize (line 219) | serialize(outputValue) {
  method parseValue (line 233) | parseValue(inputValue) {
  method parseLiteral (line 243) | parseLiteral(valueNode) {
  function isSpecifiedScalarType (line 264) | function isSpecifiedScalarType(type: GraphQLNamedType): boolean {
  function serializeObject (line 271) | function serializeObject(outputValue: unknown): unknown {

FILE: src/type/schema.ts
  function isSchema (line 38) | function isSchema(schema: unknown): schema is GraphQLSchema {
  function assertSchema (line 42) | function assertSchema(schema: unknown): GraphQLSchema {
  type GraphQLSchemaExtensions (line 58) | interface GraphQLSchemaExtensions {
  class GraphQLSchema (line 130) | class GraphQLSchema {
    method constructor (line 150) | constructor(config: Readonly<GraphQLSchemaConfig>) {
    method getQueryType (line 271) | getQueryType(): Maybe<GraphQLObjectType> {
    method getMutationType (line 275) | getMutationType(): Maybe<GraphQLObjectType> {
    method getSubscriptionType (line 279) | getSubscriptionType(): Maybe<GraphQLObjectType> {
    method getRootType (line 283) | getRootType(operation: OperationTypeNode): Maybe<GraphQLObjectType> {
    method getTypeMap (line 294) | getTypeMap(): TypeMap {
    method getType (line 298) | getType(name: string): GraphQLNamedType | undefined {
    method getPossibleTypes (line 302) | getPossibleTypes(
    method getImplementations (line 310) | getImplementations(interfaceType: GraphQLInterfaceType): {
    method isSubType (line 318) | isSubType(
    method getDirectives (line 345) | getDirectives(): ReadonlyArray<GraphQLDirective> {
    method getDirective (line 349) | getDirective(name: string): Maybe<GraphQLDirective> {
    method toConfig (line 353) | toConfig(): GraphQLSchemaNormalizedConfig {
  method [Symbol.toStringTag] (line 267) | get [Symbol.toStringTag]() {
  type TypeMap (line 369) | type TypeMap = ObjMap<GraphQLNamedType>;
  type GraphQLSchemaValidationOptions (line 371) | interface GraphQLSchemaValidationOptions {
  type GraphQLSchemaConfig (line 382) | interface GraphQLSchemaConfig extends GraphQLSchemaValidationOptions {
  type GraphQLSchemaNormalizedConfig (line 397) | interface GraphQLSchemaNormalizedConfig extends GraphQLSchemaConfig {
  function collectReferencedTypes (line 406) | function collectReferencedTypes(

FILE: src/type/validate.ts
  function validateSchema (line 54) | function validateSchema(
  function assertValidSchema (line 82) | function assertValidSchema(schema: GraphQLSchema): void {
  class SchemaValidationContext (line 89) | class SchemaValidationContext {
    method constructor (line 93) | constructor(schema: GraphQLSchema) {
    method reportError (line 98) | reportError(
    method getErrors (line 108) | getErrors(): ReadonlyArray<GraphQLError> {
  function validateRootTypes (line 113) | function validateRootTypes(context: SchemaValidationContext): void {
  function getOperationTypeNode (line 149) | function getOperationTypeNode(
  function validateDirectives (line 161) | function validateDirectives(context: SchemaValidationContext): void {
  function validateName (line 206) | function validateName(
  function validateTypes (line 219) | function validateTypes(context: SchemaValidationContext): void {
  function validateFields (line 266) | function validateFields(
  function validateInterfaces (line 319) | function validateInterfaces(
  function validateTypeImplementsInterface (line 357) | function validateTypeImplementsInterface(
  function validateTypeImplementsAncestors (line 433) | function validateTypeImplementsAncestors(
  function validateUnionMembers (line 454) | function validateUnionMembers(
  function validateEnumValues (line 487) | function validateEnumValues(
  function validateInputFields (line 506) | function validateInputFields(
  function validateOneOfInputObjectField (line 546) | function validateOneOfInputObjectField(
  function createInputObjectCircularRefsValidator (line 566) | function createInputObjectCircularRefsValidator(
  function getAllImplementsInterfaceNodes (line 618) | function getAllImplementsInterfaceNodes(
  function getUnionMemberTypeNodes (line 636) | function getUnionMemberTypeNodes(
  function getDeprecatedDirectiveNode (line 650) | function getDeprecatedDirectiveNode(

FILE: src/utilities/TypeInfo.ts
  class TypeInfo (line 46) | class TypeInfo {
    method constructor (line 58) | constructor(
    method getType (line 96) | getType(): Maybe<GraphQLOutputType> {
    method getParentType (line 102) | getParentType(): Maybe<GraphQLCompositeType> {
    method getInputType (line 108) | getInputType(): Maybe<GraphQLInputType> {
    method getParentInputType (line 114) | getParentInputType(): Maybe<GraphQLInputType> {
    method getFieldDef (line 120) | getFieldDef(): Maybe<GraphQLField<unknown, unknown>> {
    method getDefaultValue (line 126) | getDefaultValue(): Maybe<unknown> {
    method getDirective (line 132) | getDirective(): Maybe<GraphQLDirective> {
    method getArgument (line 136) | getArgument(): Maybe<GraphQLArgument> {
    method getEnumValue (line 140) | getEnumValue(): Maybe<GraphQLEnumValue> {
    method enter (line 144) | enter(node: ASTNode) {
    method leave (line 255) | leave(node: ASTNode) {
  method [Symbol.toStringTag] (line 92) | get [Symbol.toStringTag]() {
  type GetFieldDefFn (line 294) | type GetFieldDefFn = (
  function getFieldDef (line 305) | function getFieldDef(
  function visitWithTypeInfo (line 332) | function visitWithTypeInfo(

FILE: src/utilities/__tests__/TypeInfo-test.ts
  method OperationDefinition (line 106) | OperationDefinition(node) {
  method enter (line 126) | enter(...args) {
  method leave (line 129) | leave(...args) {
  method enter (line 139) | enter(...args) {
  method leave (line 142) | leave(...args) {
  method enter (line 163) | enter(node) {
  method leave (line 176) | leave(node) {
  method enter (line 244) | enter(node) {
  method leave (line 277) | leave(node) {
  method enter (line 367) | enter(node) {
  method leave (line 376) | leave(node) {
  method enter (line 416) | enter(node) {
  method leave (line 427) | leave(node) {

FILE: src/utilities/__tests__/astFromValue-test.ts
  method serialize (line 198) | serialize(value) {
  method serialize (line 217) | serialize() {
  class SomeClass (line 224) | class SomeClass {}
  method serialize (line 228) | serialize() {

FILE: src/utilities/__tests__/buildASTSchema-test.ts
  function cycleSDL (line 51) | function cycleSDL(sdl: string): string {
  function expectASTNode (line 55) | function expectASTNode(obj: Maybe<{ readonly astNode: Maybe<ASTNode> }>) {
  function expectExtensionASTNodes (line 60) | function expectExtensionASTNodes(obj: {

FILE: src/utilities/__tests__/buildClientSchema-test.ts
  function cycleIntrospection (line 35) | function cycleIntrospection(sdlString: string): string {

FILE: src/utilities/__tests__/coerceInputValue-test.ts
  type CoerceResult (line 16) | interface CoerceResult {
  type CoerceError (line 21) | interface CoerceError {
  function coerceValue (line 27) | function coerceValue(
  function expectValue (line 43) | function expectValue(result: CoerceResult) {
  function expectErrors (line 48) | function expectErrors(result: CoerceResult) {
  method parseValue (line 87) | parseValue(input: any) {

FILE: src/utilities/__tests__/extendSchema-test.ts
  function expectExtensionASTNodes (line 39) | function expectExtensionASTNodes(obj: {
  function expectASTNode (line 45) | function expectASTNode(obj: Maybe<{ readonly astNode: Maybe<ASTNode> }>) {
  function expectSchemaChanges (line 50) | function expectSchemaChanges(

FILE: src/utilities/__tests__/getIntrospectionQuery-test.ts
  function expectIntrospectionQuery (line 18) | function expectIntrospectionQuery(options?: IntrospectionOptions) {

FILE: src/utilities/__tests__/getOperationRootType-test.ts
  function getOperationNode (line 37) | function getOperationNode(doc: DocumentNode): OperationDefinitionNode {

FILE: src/utilities/__tests__/introspectionFromSchema-test.ts
  function introspectionToSDL (line 15) | function introspectionToSDL(introspection: IntrospectionQuery): string {

FILE: src/utilities/__tests__/lexicographicSortSchema-test.ts
  function sortSDL (line 10) | function sortSDL(sdl: string): string {

FILE: src/utilities/__tests__/printSchema-test.ts
  function expectPrintedSchema (line 26) | function expectPrintedSchema(schema: GraphQLSchema) {
  function buildSingleFieldSchema (line 33) | function buildSingleFieldSchema(

FILE: src/utilities/__tests__/sortValueNode-test.ts
  function expectSortedValue (line 10) | function expectSortedValue(source: string) {

FILE: src/utilities/__tests__/stripIgnoredCharacters-fuzz.ts
  function lexValue (line 14) | function lexValue(str: string) {

FILE: src/utilities/__tests__/stripIgnoredCharacters-test.ts
  function lexValue (line 62) | function lexValue(str: string): Maybe<string> {
  function expectStripped (line 70) | function expectStripped(docString: string) {
  function expectStrippedString (line 392) | function expectStrippedString(blockStr: string) {

FILE: src/utilities/__tests__/typeComparators-test.ts
  function testSchema (line 56) | function testSchema(fields: GraphQLFieldConfigMap<unknown, unknown>) {

FILE: src/utilities/__tests__/valueFromAST-test.ts
  function expectValueFrom (line 29) | function expectValueFrom(
  method parseLiteral (line 68) | parseLiteral(node) {
  method parseLiteral (line 79) | parseLiteral() {
  method parseLiteral (line 89) | parseLiteral() {

FILE: src/utilities/__tests__/valueFromASTUntyped-test.ts
  function expectValueFrom (line 12) | function expectValueFrom(

FILE: src/utilities/assertValidName.ts
  function assertValidName (line 12) | function assertValidName(name: string): string {
  function isValidNameError (line 24) | function isValidNameError(name: string): GraphQLError | undefined {

FILE: src/utilities/astFromValue.ts
  function astFromValue (line 41) | function astFromValue(

FILE: src/utilities/buildASTSchema.ts
  type BuildSchemaOptions (line 17) | interface BuildSchemaOptions extends GraphQLSchemaValidationOptions {
  function buildASTSchema (line 36) | function buildASTSchema(
  function buildSchema (line 98) | function buildSchema(

FILE: src/utilities/buildClientSchema.ts
  function buildClientSchema (line 64) | function buildClientSchema(

FILE: src/utilities/coerceInputValue.ts
  type OnErrorCB (line 21) | type OnErrorCB = (
  function coerceInputValue (line 30) | function coerceInputValue(
  function defaultOnError (line 38) | function defaultOnError(
  function coerceInputValueImpl (line 51) | function coerceInputValueImpl(

FILE: src/utilities/concatAST.ts
  function concatAST (line 9) | function concatAST(

FILE: src/utilities/extendSchema.ts
  type Options (line 86) | interface Options extends GraphQLSchemaValidationOptions {
  function extendSchema (line 107) | function extendSchema(
  function extendSchemaImpl (line 133) | function extendSchemaImpl(
  function getDeprecationReason (line 666) | function getDeprecationReason(
  function getSpecifiedByURL (line 680) | function getSpecifiedByURL(
  function isOneOf (line 691) | function isOneOf(node: InputObjectTypeDefinitionNode): boolean {

FILE: src/utilities/findBreakingChanges.ts
  type BreakingChangeType (line 37) | enum BreakingChangeType {
  type DangerousChangeType (line 57) | enum DangerousChangeType {
  type BreakingChange (line 67) | interface BreakingChange {
  type DangerousChange (line 72) | interface DangerousChange {
  function findBreakingChanges (line 81) | function findBreakingChanges(
  function findDangerousChanges (line 95) | function findDangerousChanges(
  function findSchemaChanges (line 105) | function findSchemaChanges(
  function findDirectiveChanges (line 115) | function findDirectiveChanges(
  function findTypeChanges (line 172) | function findTypeChanges(
  function findInputObjectTypeChanges (line 222) | function findInputObjectTypeChanges(
  function findUnionTypeChanges (line 271) | function findUnionTypeChanges(
  function findEnumTypeChanges (line 295) | function findEnumTypeChanges(
  function findImplementedInterfacesChanges (line 319) | function findImplementedInterfacesChanges(
  function findFieldChanges (line 343) | function findFieldChanges(
  function findArgChanges (line 380) | function findArgChanges(
  function isChangeSafeForObjectOrInterfaceField (line 447) | function isChangeSafeForObjectOrInterfaceField(
  function isChangeSafeForInputObjectFieldOrFieldArg (line 482) | function isChangeSafeForInputObjectFieldOrFieldArg(
  function typeKindName (line 513) | function typeKindName(type: GraphQLNamedType): string {
  function stringifyValue (line 537) | function stringifyValue(value: unknown, type: GraphQLInputType): string {
  function diff (line 543) | function diff<T extends { name: string }>(

FILE: src/utilities/getIntrospectionQuery.ts
  type IntrospectionOptions (line 5) | interface IntrospectionOptions {
  function getIntrospectionQuery (line 47) | function getIntrospectionQuery(options?: IntrospectionOptions): string {
  type IntrospectionQuery (line 183) | interface IntrospectionQuery {
  type IntrospectionSchema (line 187) | interface IntrospectionSchema {
  type IntrospectionType (line 200) | type IntrospectionType =
  type IntrospectionOutputType (line 208) | type IntrospectionOutputType =
  type IntrospectionInputType (line 215) | type IntrospectionInputType =
  type IntrospectionScalarType (line 220) | interface IntrospectionScalarType {
  type IntrospectionObjectType (line 227) | interface IntrospectionObjectType {
  type IntrospectionInterfaceType (line 237) | interface IntrospectionInterfaceType {
  type IntrospectionUnionType (line 250) | interface IntrospectionUnionType {
  type IntrospectionEnumType (line 259) | interface IntrospectionEnumType {
  type IntrospectionInputObjectType (line 266) | interface IntrospectionInputObjectType {
  type IntrospectionListTypeRef (line 274) | interface IntrospectionListTypeRef<
  type IntrospectionNonNullTypeRef (line 281) | interface IntrospectionNonNullTypeRef<
  type IntrospectionTypeRef (line 288) | type IntrospectionTypeRef =
  type IntrospectionOutputTypeRef (line 295) | type IntrospectionOutputTypeRef =
  type IntrospectionInputTypeRef (line 303) | type IntrospectionInputTypeRef =
  type IntrospectionNamedTypeRef (line 311) | interface IntrospectionNamedTypeRef<
  type IntrospectionField (line 318) | interface IntrospectionField {
  type IntrospectionInputValue (line 327) | interface IntrospectionInputValue {
  type IntrospectionEnumValue (line 336) | interface IntrospectionEnumValue {
  type IntrospectionDirective (line 343) | interface IntrospectionDirective {

FILE: src/utilities/getOperationAST.ts
  function getOperationAST (line 11) | function getOperationAST(

FILE: src/utilities/getOperationRootType.ts
  function getOperationRootType (line 16) | function getOperationRootType(

FILE: src/utilities/introspectionFromSchema.ts
  function introspectionFromSchema (line 24) | function introspectionFromSchema(

FILE: src/utilities/lexicographicSortSchema.ts
  function lexicographicSortSchema (line 41) | function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
  function sortObjMap (line 164) | function sortObjMap<T, R>(
  function sortByName (line 175) | function sortByName<T extends { readonly name: string }>(
  function sortBy (line 181) | function sortBy<T>(

FILE: src/utilities/printSchema.ts
  function printSchema (line 39) | function printSchema(schema: GraphQLSchema): string {
  function printIntrospectionSchema (line 47) | function printIntrospectionSchema(schema: GraphQLSchema): string {
  function isDefinedType (line 51) | function isDefinedType(type: GraphQLNamedType): boolean {
  function printFilteredSchema (line 55) | function printFilteredSchema(
  function printSchemaDefinition (line 72) | function printSchemaDefinition(schema: GraphQLSchema): Maybe<string> {
  function isSchemaOfCommonNames (line 112) | function isSchemaOfCommonNames(schema: GraphQLSchema): boolean {
  function printType (line 131) | function printType(type: GraphQLNamedType): string {
  function printScalar (line 155) | function printScalar(type: GraphQLScalarType): string {
  function printImplementedInterfaces (line 161) | function printImplementedInterfaces(
  function printObject (line 170) | function printObject(type: GraphQLObjectType): string {
  function printInterface (line 179) | function printInterface(type: GraphQLInterfaceType): string {
  function printUnion (line 188) | function printUnion(type: GraphQLUnionType): string {
  function printEnum (line 194) | function printEnum(type: GraphQLEnumType): string {
  function printInputObject (line 208) | function printInputObject(type: GraphQLInputObjectType): string {
  function printFields (line 220) | function printFields(type: GraphQLObjectType | GraphQLInterfaceType): st...
  function printBlock (line 234) | function printBlock(items: ReadonlyArray<string>): string {
  function printArgs (line 238) | function printArgs(
  function printInputValue (line 268) | function printInputValue(arg: GraphQLInputField): string {
  function printDirective (line 277) | function printDirective(directive: GraphQLDirective): string {
  function printDeprecated (line 289) | function printDeprecated(reason: Maybe<string>): string {
  function printSpecifiedByURL (line 300) | function printSpecifiedByURL(scalar: GraphQLScalarType): string {
  function printDescription (line 311) | function printDescription(

FILE: src/utilities/resolveSchemaCoordinate.ts
  type ResolvedNamedType (line 38) | interface ResolvedNamedType {
  type ResolvedField (line 43) | interface ResolvedField {
  type ResolvedInputField (line 49) | interface ResolvedInputField {
  type ResolvedEnumValue (line 55) | interface ResolvedEnumValue {
  type ResolvedFieldArgument (line 61) | interface ResolvedFieldArgument {
  type ResolvedDirective (line 68) | interface ResolvedDirective {
  type ResolvedDirectiveArgument (line 73) | interface ResolvedDirectiveArgument {
  type ResolvedSchemaElement (line 79) | type ResolvedSchemaElement =
  function resolveSchemaCoordinate (line 97) | function resolveSchemaCoordinate(
  function resolveTypeCoordinate (line 110) | function resolveTypeCoordinate(
  function resolveMemberCoordinate (line 129) | function resolveMemberCoordinate(
  function resolveArgumentCoordinate (line 201) | function resolveArgumentCoordinate(
  function resolveDirectiveCoordinate (line 253) | function resolveDirectiveCoordinate(
  function resolveDirectiveArgumentCoordinate (line 272) | function resolveDirectiveArgumentCoordinate(
  function resolveASTSchemaCoordinate (line 309) | function resolveASTSchemaCoordinate(

FILE: src/utilities/separateOperations.ts
  function separateOperations (line 17) | function separateOperations(
  type DepGraph (line 68) | type DepGraph = ObjMap<ReadonlyArray<string>>;
  function collectTransitiveDependencies (line 72) | function collectTransitiveDependencies(
  function collectDependencies (line 89) | function collectDependencies(selectionSet: SelectionSetNode): Array<stri...

FILE: src/utilities/sortValueNode.ts
  function sortValueNode (line 13) | function sortValueNode(valueNode: ValueNode): ValueNode {
  function sortFields (line 36) | function sortFields(

FILE: src/utilities/stripIgnoredCharacters.ts
  function stripIgnoredCharacters (line 66) | function stripIgnoredCharacters(source: string | Source): string {

FILE: src/utilities/typeComparators.ts
  function isEqualType (line 14) | function isEqualType(typeA: GraphQLType, typeB: GraphQLType): boolean {
  function isTypeSubTypeOf (line 38) | function isTypeSubTypeOf(
  function doTypesOverlap (line 90) | function doTypesOverlap(

FILE: src/utilities/typeFromAST.ts
  function typeFromAST (line 36) | function typeFromAST(

FILE: src/utilities/typedQueryDocumentNode.ts
  type TypedQueryDocumentNode (line 5) | interface TypedQueryDocumentNode<

FILE: src/utilities/valueFromAST.ts
  function valueFromAST (line 38) | function valueFromAST(
  function isMissingVariable (line 165) | function isMissingVariable(

FILE: src/utilities/valueFromASTUntyped.ts
  function valueFromASTUntyped (line 24) | function valueFromASTUntyped(

FILE: src/validation/ValidationContext.ts
  type NodeWithSelectionSet (line 31) | type NodeWithSelectionSet = OperationDefinitionNode | FragmentDefinition...
  type VariableUsage (line 32) | interface VariableUsage {
  class ASTValidationContext (line 44) | class ASTValidationContext {
    method constructor (line 54) | constructor(ast: DocumentNode, onError: (error: GraphQLError) => void) {
    method reportError (line 66) | reportError(error: GraphQLError): void {
    method getDocument (line 70) | getDocument(): DocumentNode {
    method getFragment (line 74) | getFragment(name: string): Maybe<FragmentDefinitionNode> {
    method getFragmentSpreads (line 90) | getFragmentSpreads(
    method getRecursivelyReferencedFragments (line 112) | getRecursivelyReferencedFragments(
  method [Symbol.toStringTag] (line 62) | get [Symbol.toStringTag]() {
  type ASTValidationRule (line 140) | type ASTValidationRule = (context: ASTValidationContext) => ASTVisitor;
  class SDLValidationContext (line 142) | class SDLValidationContext extends ASTValidationContext {
    method constructor (line 145) | constructor(
    method getSchema (line 158) | getSchema(): Maybe<GraphQLSchema> {
  method [Symbol.toStringTag] (line 154) | get [Symbol.toStringTag]() {
  type SDLValidationRule (line 163) | type SDLValidationRule = (context: SDLValidationContext) => ASTVisitor;
  class ValidationContext (line 165) | class ValidationContext extends ASTValidationContext {
    method constructor (line 178) | constructor(
    method getSchema (line 195) | getSchema(): GraphQLSchema {
    method getVariableUsages (line 199) | getVariableUsages(node: NodeWithSelectionSet): ReadonlyArray<VariableU...
    method getRecursiveVariableUsages (line 224) | getRecursiveVariableUsages(
    method getType (line 238) | getType(): Maybe<GraphQLOutputType> {
    method getParentType (line 242) | getParentType(): Maybe<GraphQLCompositeType> {
    method getInputType (line 246) | getInputType(): Maybe<GraphQLInputType> {
    method getParentInputType (line 250) | getParentInputType(): Maybe<GraphQLInputType> {
    method getFieldDef (line 254) | getFieldDef(): Maybe<GraphQLField<unknown, unknown>> {
    method getDirective (line 258) | getDirective(): Maybe<GraphQLDirective> {
    method getArgument (line 262) | getArgument(): Maybe<GraphQLArgument> {
    method getEnumValue (line 266) | getEnumValue(): Maybe<GraphQLEnumValue> {
  method [Symbol.toStringTag] (line 191) | get [Symbol.toStringTag]() {
  type ValidationRule (line 271) | type ValidationRule = (context: ValidationContext) => ASTVisitor;

FILE: src/validation/__tests__/ExecutableDefinitionsRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/FieldsOnCorrectTypeRule-test.ts
  function expectErrors (line 15) | function expectErrors(queryStr: string) {
  function expectValid (line 23) | function expectValid(queryStr: string) {
  function expectErrorMessage (line 293) | function expectErrorMessage(schema: GraphQLSchema, queryStr: string) {

FILE: src/validation/__tests__/FragmentsOnCompositeTypesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/KnownArgumentNamesRule-test.ts
  function expectErrors (line 14) | function expectErrors(queryStr: string) {
  function expectValid (line 18) | function expectValid(queryStr: string) {
  function expectSDLErrors (line 22) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 30) | function expectValidSDL(sdlStr: string) {

FILE: src/validation/__tests__/KnownDirectivesRule-test.ts
  function expectErrors (line 14) | function expectErrors(queryStr: string) {
  function expectValid (line 22) | function expectValid(queryStr: string) {
  function expectSDLErrors (line 26) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 30) | function expectValidSDL(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/KnownFragmentNamesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/KnownTypeNamesRule-test.ts
  function expectErrors (line 15) | function expectErrors(queryStr: string) {
  function expectErrorsWithSchema (line 19) | function expectErrorsWithSchema(schema: GraphQLSchema, queryStr: string) {
  function expectValid (line 23) | function expectValid(queryStr: string) {
  function expectSDLErrors (line 27) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 31) | function expectValidSDL(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/LoneAnonymousOperationRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/LoneSchemaDefinitionRule-test.ts
  function expectSDLErrors (line 11) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 15) | function expectValidSDL(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/MaxIntrospectionDepthRule-test.ts
  function expectErrors (line 9) | function expectErrors(queryStr: string) {
  function expectValid (line 13) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/NoDeprecatedCustomRule-test.ts
  function buildAssertion (line 9) | function buildAssertion(sdlStr: string) {

FILE: src/validation/__tests__/NoFragmentCyclesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/NoSchemaIntrospectionCustomRule-test.ts
  function expectErrors (line 9) | function expectErrors(queryStr: string) {
  function expectValid (line 17) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/NoUndefinedVariablesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/NoUnusedFragmentsRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/NoUnusedVariablesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/OverlappingFieldsCanBeMergedRule-test.ts
  function expectErrors (line 14) | function expectErrors(queryStr: string) {
  function expectValid (line 18) | function expectValid(queryStr: string) {
  function expectErrorsWithSchema (line 22) | function expectErrorsWithSchema(schema: GraphQLSchema, queryStr: string) {
  function expectValidWithSchema (line 30) | function expectValidWithSchema(schema: GraphQLSchema, queryStr: string) {

FILE: src/validation/__tests__/PossibleFragmentSpreadsRule-test.ts
  function expectErrors (line 9) | function expectErrors(queryStr: string) {
  function expectValid (line 17) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/PossibleTypeExtensionsRule-test.ts
  function expectSDLErrors (line 11) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 15) | function expectValidSDL(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/ProvidedRequiredArgumentsRule-test.ts
  function expectErrors (line 14) | function expectErrors(queryStr: string) {
  function expectValid (line 18) | function expectValid(queryStr: string) {
  function expectSDLErrors (line 22) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 30) | function expectValidSDL(sdlStr: string) {

FILE: src/validation/__tests__/ScalarLeafsRule-test.ts
  function expectErrors (line 14) | function expectErrors(queryStr: string) {
  function expectValid (line 18) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/SingleFieldSubscriptionsRule-test.ts
  function expectErrors (line 9) | function expectErrors(queryStr: string) {
  function expectValid (line 17) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/UniqueArgumentDefinitionNamesRule-test.ts
  function expectSDLErrors (line 7) | function expectSDLErrors(sdlStr: string) {
  function expectValidSDL (line 15) | function expectValidSDL(sdlStr: string) {

FILE: src/validation/__tests__/UniqueArgumentNamesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/UniqueDirectiveNamesRule-test.ts
  function expectSDLErrors (line 11) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 15) | function expectValidSDL(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/UniqueDirectivesPerLocationRule-test.ts
  function expectErrors (line 25) | function expectErrors(queryStr: string) {
  function expectValid (line 33) | function expectValid(queryStr: string) {
  function expectSDLErrors (line 37) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/UniqueEnumValueNamesRule-test.ts
  function expectSDLErrors (line 11) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 15) | function expectValidSDL(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/UniqueFieldDefinitionNamesRule-test.ts
  function expectSDLErrors (line 11) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 19) | function expectValidSDL(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/UniqueFragmentNamesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/UniqueInputFieldNamesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/UniqueOperationNamesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/UniqueOperationTypesRule-test.ts
  function expectSDLErrors (line 11) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 15) | function expectValidSDL(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/UniqueTypeNamesRule-test.ts
  function expectSDLErrors (line 11) | function expectSDLErrors(sdlStr: string, schema?: GraphQLSchema) {
  function expectValidSDL (line 15) | function expectValidSDL(sdlStr: string, schema?: GraphQLSchema) {

FILE: src/validation/__tests__/UniqueVariableNamesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/ValuesOfCorrectTypeRule-test.ts
  function expectErrors (line 22) | function expectErrors(queryStr: string) {
  function expectErrorsWithSchema (line 26) | function expectErrorsWithSchema(schema: GraphQLSchema, queryStr: string) {
  function expectValid (line 34) | function expectValid(queryStr: string) {
  function expectValidWithSchema (line 38) | function expectValidWithSchema(schema: GraphQLSchema, queryStr: string) {
  method parseValue (line 974) | parseValue(value) {
  method parseValue (line 1013) | parseValue() {

FILE: src/validation/__tests__/VariablesAreInputTypesRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/VariablesInAllowedPositionRule-test.ts
  function expectErrors (line 7) | function expectErrors(queryStr: string) {
  function expectValid (line 11) | function expectValid(queryStr: string) {

FILE: src/validation/__tests__/harness.ts
  function expectValidationErrorsWithSchema (line 124) | function expectValidationErrorsWithSchema(
  function expectValidationErrors (line 134) | function expectValidationErrors(
  function expectSDLValidationErrors (line 141) | function expectSDLValidationErrors(

FILE: src/validation/__tests__/validation-test.ts
  function customRule (line 105) | function customRule(context: ValidationContext) {
  function validateDocument (line 138) | function validateDocument(options: { maxErrors?: number }) {
  function invalidFieldError (line 142) | function invalidFieldError(fieldName: string) {
  function customRule (line 170) | function customRule() {

FILE: src/validation/rules/ExecutableDefinitionsRule.ts
  function ExecutableDefinitionsRule (line 17) | function ExecutableDefinitionsRule(

FILE: src/validation/rules/FieldsOnCorrectTypeRule.ts
  function FieldsOnCorrectTypeRule (line 32) | function FieldsOnCorrectTypeRule(
  function getSuggestedTypeNames (line 75) | function getSuggestedTypeNames(
  function getSuggestedFieldNames (line 134) | function getSuggestedFieldNames(

FILE: src/validation/rules/FragmentsOnCompositeTypesRule.ts
  function FragmentsOnCompositeTypesRule (line 21) | function FragmentsOnCompositeTypesRule(

FILE: src/validation/rules/KnownArgumentNamesRule.ts
  function KnownArgumentNamesRule (line 25) | function KnownArgumentNamesRule(context: ValidationContext): ASTVisitor {
  function KnownArgumentNamesOnDirectivesRule (line 53) | function KnownArgumentNamesOnDirectivesRule(

FILE: src/validation/rules/KnownDirectivesRule.ts
  function KnownDirectivesRule (line 27) | function KnownDirectivesRule(
  function getDirectiveLocationForASTPath (line 72) | function getDirectiveLocationForASTPath(
  function getDirectiveLocationForOperation (line 130) | function getDirectiveLocationForOperation(

FILE: src/validation/rules/KnownFragmentNamesRule.ts
  function KnownFragmentNamesRule (line 15) | function KnownFragmentNamesRule(context: ValidationContext): ASTVisitor {

FILE: src/validation/rules/KnownTypeNamesRule.ts
  function KnownTypeNamesRule (line 30) | function KnownTypeNamesRule(
  function isSDLNode (line 77) | function isSDLNode(value: ASTNode | ReadonlyArray<ASTNode>): boolean {

FILE: src/validation/rules/LoneAnonymousOperationRule.ts
  function LoneAnonymousOperationRule (line 16) | function LoneAnonymousOperationRule(

FILE: src/validation/rules/LoneSchemaDefinitionRule.ts
  function LoneSchemaDefinitionRule (line 12) | function LoneSchemaDefinitionRule(

FILE: src/validation/rules/MaxIntrospectionDepthRule.ts
  constant MAX_LISTS_DEPTH (line 9) | const MAX_LISTS_DEPTH = 3;
  function MaxIntrospectionDepthRule (line 11) | function MaxIntrospectionDepthRule(

FILE: src/validation/rules/NoFragmentCyclesRule.ts
  function NoFragmentCyclesRule (line 21) | function NoFragmentCyclesRule(

FILE: src/validation/rules/NoUndefinedVariablesRule.ts
  function NoUndefinedVariablesRule (line 15) | function NoUndefinedVariablesRule(

FILE: src/validation/rules/NoUnusedFragmentsRule.ts
  function NoUnusedFragmentsRule (line 19) | function NoUnusedFragmentsRule(

FILE: src/validation/rules/NoUnusedVariablesRule.ts
  function NoUnusedVariablesRule (line 16) | function NoUnusedVariablesRule(context: ValidationContext): ASTVisitor {

FILE: src/validation/rules/OverlappingFieldsCanBeMergedRule.ts
  function reasonMessage (line 37) | function reasonMessage(reason: ConflictReasonMessage): string {
  function OverlappingFieldsCanBeMergedRule (line 59) | function OverlappingFieldsCanBeMergedRule(
  type Conflict (line 99) | type Conflict = [ConflictReason, Array<FieldNode>, Array<FieldNode>];
  type ConflictReason (line 101) | type ConflictReason = [string, ConflictReasonMessage];
  type ConflictReasonMessage (line 103) | type ConflictReasonMessage = string | Array<ConflictReason>;
  type NodeAndDef (line 105) | type NodeAndDef = [
  type NodeAndDefCollection (line 111) | type NodeAndDefCollection = ObjMap<Array<NodeAndDef>>;
  type FragmentNames (line 112) | type FragmentNames = Array<string>;
  type FieldsAndFragmentNames (line 113) | type FieldsAndFragmentNames = readonly [NodeAndDefCollection, FragmentNa...
  function findConflictsWithinSelectionSet (line 173) | function findConflictsWithinSelectionSet(
  function collectConflictsBetweenFieldsAndFragment (line 238) | function collectConflictsBetweenFieldsAndFragment(
  function collectConflictsBetweenFragments (line 313) | function collectConflictsBetweenFragments(
  function findConflictsBetweenSubSelectionSets (line 406) | function findConflictsBetweenSubSelectionSets(
  function collectConflictsWithin (line 495) | function collectConflictsWithin(
  function collectConflictsBetween (line 538) | function collectConflictsBetween(
  function findConflict (line 579) | function findConflict(
  function sameArguments (line 666) | function sameArguments(
  function stringifyValue (line 699) | function stringifyValue(value: ValueNode): string | null {
  function doTypesConflict (line 706) | function doTypesConflict(
  function getFieldsAndFragmentNames (line 735) | function getFieldsAndFragmentNames(
  function getReferencedFieldsAndFragmentNames (line 761) | function getReferencedFieldsAndFragmentNames(
  function _collectFieldsAndFragmentNames (line 781) | function _collectFieldsAndFragmentNames(
  function subfieldConflicts (line 828) | function subfieldConflicts(
  class OrderedPairSet (line 850) | class OrderedPairSet<T, U> {
    method constructor (line 853) | constructor() {
    method has (line 857) | has(a: T, b: U, weaklyPresent: boolean): boolean {
    method add (line 866) | add(a: T, b: U, weaklyPresent: boolean): void {
  class PairSet (line 880) | class PairSet<T> {
    method constructor (line 883) | constructor() {
    method has (line 887) | has(a: T, b: T, weaklyPresent: boolean): boolean {
    method add (line 893) | add(a: T, b: T, weaklyPresent: boolean): void {

FILE: src/validation/rules/PossibleFragmentSpreadsRule.ts
  function PossibleFragmentSpreadsRule (line 23) | function PossibleFragmentSpreadsRule(
  function getFragmentType (line 67) | function getFragmentType(

FILE: src/validation/rules/PossibleTypeExtensionsRule.ts
  function PossibleTypeExtensionsRule (line 31) | function PossibleTypeExtensionsRule(
  function typeToExtKind (line 100) | function typeToExtKind(type: GraphQLNamedType): Kind {
  function extensionKindToTypeName (line 124) | function extensionKindToTypeName(kind: Kind): string {

FILE: src/validation/rules/ProvidedRequiredArgumentsRule.ts
  function ProvidedRequiredArgumentsRule (line 27) | function ProvidedRequiredArgumentsRule(
  function ProvidedRequiredArgumentsOnDirectivesRule (line 65) | function ProvidedRequiredArgumentsOnDirectivesRule(
  function isRequiredArgumentNode (line 125) | function isRequiredArgumentNode(arg: InputValueDefinitionNode): boolean {

FILE: src/validation/rules/ScalarLeafsRule.ts
  function ScalarLeafsRule (line 18) | function ScalarLeafsRule(context: ValidationContext): ASTVisitor {

FILE: src/validation/rules/SingleFieldSubscriptionsRule.ts
  function SingleFieldSubscriptionsRule (line 24) | function SingleFieldSubscriptionsRule(

FILE: src/validation/rules/UniqueArgumentDefinitionNamesRule.ts
  function UniqueArgumentDefinitionNamesRule (line 20) | function UniqueArgumentDefinitionNamesRule(

FILE: src/validation/rules/UniqueArgumentNamesRule.ts
  function UniqueArgumentNamesRule (line 18) | function UniqueArgumentNamesRule(

FILE: src/validation/rules/UniqueDirectiveNamesRule.ts
  function UniqueDirectiveNamesRule (line 12) | function UniqueDirectiveNamesRule(

FILE: src/validation/rules/UniqueDirectivesPerLocationRule.ts
  function UniqueDirectivesPerLocationRule (line 25) | function UniqueDirectivesPerLocationRule(

FILE: src/validation/rules/UniqueEnumValueNamesRule.ts
  function UniqueEnumValueNamesRule (line 18) | function UniqueEnumValueNamesRule(

FILE: src/validation/rules/UniqueFieldDefinitionNamesRule.ts
  function UniqueFieldDefinitionNamesRule (line 24) | function UniqueFieldDefinitionNamesRule(
  function hasField (line 83) | function hasField(type: GraphQLNamedType, fieldName: string): boolean {

FILE: src/validation/rules/UniqueFragmentNamesRule.ts
  function UniqueFragmentNamesRule (line 14) | function UniqueFragmentNamesRule(

FILE: src/validation/rules/UniqueInputFieldNamesRule.ts
  function UniqueInputFieldNamesRule (line 19) | function UniqueInputFieldNamesRule(

FILE: src/validation/rules/UniqueOperationNamesRule.ts
  function UniqueOperationNamesRule (line 14) | function UniqueOperationNamesRule(

FILE: src/validation/rules/UniqueOperationTypesRule.ts
  function UniqueOperationTypesRule (line 16) | function UniqueOperationTypesRule(

FILE: src/validation/rules/UniqueTypeNamesRule.ts
  function UniqueTypeNamesRule (line 13) | function UniqueTypeNamesRule(context: SDLValidationContext): ASTVisitor {

FILE: src/validation/rules/UniqueVariableNamesRule.ts
  function UniqueVariableNamesRule (line 14) | function UniqueVariableNamesRule(

FILE: src/validation/rules/ValuesOfCorrectTypeRule.ts
  function ValuesOfCorrectTypeRule (line 40) | function ValuesOfCorrectTypeRule(
  function isValidValueNode (line 133) | function isValidValueNode(context: ValidationContext, node: ValueNode): ...
  function validateOneOfInputObject (line 182) | function validateOneOfInputObject(

FILE: src/validation/rules/VariablesAreInputTypesRule.ts
  function VariablesAreInputTypesRule (line 21) | function VariablesAreInputTypesRule(

FILE: src/validation/rules/VariablesInAllowedPositionRule.ts
  function VariablesInAllowedPositionRule (line 30) | function VariablesInAllowedPositionRule(
  function allowedVariableUsage (line 101) | function allowedVariableUsage(

FILE: src/validation/rules/custom/NoDeprecatedCustomRule.ts
  function NoDeprecatedCustomRule (line 21) | function NoDeprecatedCustomRule(context: ValidationContext): ASTVisitor {

FILE: src/validation/rules/custom/NoSchemaIntrospectionCustomRule.ts
  function NoSchemaIntrospectionCustomRule (line 21) | function NoSchemaIntrospectionCustomRule(

FILE: src/validation/validate.ts
  function validate (line 47) | function validate(
  function validateSDL (line 104) | function validateSDL(
  function assertValidSDL (line 129) | function assertValidSDL(documentAST: DocumentNode): void {
  function assertValidSDLExtension (line 142) | function assertValidSDLExtension(

FILE: website/next.config.mjs
  constant ALLOWED_SVG_REGEX (line 15) | const ALLOWED_SVG_REGEX = new RegExp(`${sep}icons${sep}.+\\.svg$`);
  method webpack (line 21) | webpack(config) {

FILE: website/pages/_app.tsx
  function App (line 16) | function App({ Component, pageProps }: AppProps) {

FILE: website/pages/_document.tsx
  function Document (line 3) | function Document() {

FILE: website/theme.config.tsx
  function List (line 21) | function List({
  function Footer (line 42) | function Footer() {
Condensed preview — 408 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,829K chars).
[
  {
    "path": ".babelrc-deno.json",
    "chars": 171,
    "preview": "{\n  \"plugins\": [\n    \"@babel/plugin-syntax-typescript\",\n    [\"./resources/add-extension-to-import-paths\", { \"extension\":"
  },
  {
    "path": ".babelrc-npm.json",
    "chars": 617,
    "preview": "{\n  \"plugins\": [\n    \"@babel/plugin-transform-typescript\",\n    \"./resources/inline-invariant\"\n  ],\n  \"env\": {\n    \"cjs\":"
  },
  {
    "path": ".babelrc.json",
    "chars": 176,
    "preview": "{\n  \"plugins\": [\"@babel/plugin-transform-typescript\"],\n  \"presets\": [\n    [\n      \"@babel/preset-env\",\n      { \"bugfixes"
  },
  {
    "path": ".c8rc.json",
    "chars": 560,
    "preview": "{\n  \"all\": true,\n  \"include\": [\"src/\"],\n  \"exclude\": [\n    \"src/**/index.ts\",\n    \"src/**/*-fuzz.ts\",\n    \"src/jsutils/M"
  },
  {
    "path": ".eslintignore",
    "chars": 200,
    "preview": "# Copied from '.gitignore', please keep it in sync.\n/.eslintcache\n/node_modules\n/coverage\n/npmDist\n/denoDist\n/websiteDis"
  },
  {
    "path": ".eslintrc.yml",
    "chars": 25376,
    "preview": "parserOptions:\n  sourceType: script\nenv:\n  es2022: true\nreportUnusedDisableDirectives: true\nplugins:\n  - internal-rules\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 33,
    "preview": "*  @graphql/graphql-js-reviewers\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 3674,
    "preview": "# Contributing to graphql-js\n\nWe want to make contributing to this project as easy and transparent as\npossible. Hopefull"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "chars": 1322,
    "preview": "# Questions regarding how to use GraphQL\n\nWe want to keep signal strong in the GitHub issue tracker – to make sure that "
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 7394,
    "preview": "name: CI\non:\n  workflow_call:\n    secrets:\n      codecov_token:\n        required: true\npermissions: {}\njobs:\n  lint:\n   "
  },
  {
    "path": ".github/workflows/deploy-artifact-as-branch.yml",
    "chars": 1642,
    "preview": "name: Deploy specified artifact as a branch\non:\n  workflow_call:\n    inputs:\n      environment:\n        description: Env"
  },
  {
    "path": ".github/workflows/pull_request.yml",
    "chars": 1597,
    "preview": "name: PullRequest\non: pull_request\npermissions: {}\njobs:\n  ci:\n    permissions:\n      contents: read # for actions/check"
  },
  {
    "path": ".github/workflows/pull_request_opened.yml",
    "chars": 391,
    "preview": "name: PullRequestOpened\non:\n  pull_request:\n    types: [opened]\npermissions: {}\njobs:\n  save-github-event:\n    name: \"Sa"
  },
  {
    "path": ".github/workflows/push.yml",
    "chars": 1111,
    "preview": "name: Push\non: push\npermissions: {}\njobs:\n  ci:\n    permissions:\n      contents: read # for actions/checkout\n      secur"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 6769,
    "preview": "name: Release\non:\n  push:\n    branches:\n      - 16.x.x\npermissions: {}\njobs:\n  check-publish:\n    name: Check for publis"
  },
  {
    "path": ".gitignore",
    "chars": 418,
    "preview": "# This .gitignore only ignores files specific to this repository.\n# If you see other files generated by your OS or tools"
  },
  {
    "path": ".mocharc.yml",
    "chars": 118,
    "preview": "fail-zero: true\nthrow-deprecation: true\ncheck-leaks: true\nrequire:\n  - 'resources/ts-register.js'\nextension:\n  - 'ts'\n"
  },
  {
    "path": ".node-version",
    "chars": 4,
    "preview": "v17\n"
  },
  {
    "path": ".npmrc",
    "chars": 20,
    "preview": "ignore-scripts=true\n"
  },
  {
    "path": ".prettierignore",
    "chars": 182,
    "preview": "# Copied from '.gitignore', please keep it in sync.\n/diff-npm-package.html\n/.eslintcache\n/node_modules\n/coverage\n/npmDis"
  },
  {
    "path": ".prettierrc",
    "chars": 52,
    "preview": "{\n  \"singleQuote\": true,\n  \"trailingComma\": \"all\"\n}\n"
  },
  {
    "path": "LICENSE",
    "chars": 1072,
    "preview": "MIT License\n\nCopyright (c) GraphQL Contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a"
  },
  {
    "path": "README.md",
    "chars": 8506,
    "preview": "[![GraphQLConf 2025 Banner: September 08-10, Amsterdam. Hosted by the GraphQL Foundation](./assets/graphql-conf-2025.png"
  },
  {
    "path": "benchmark/benchmark.js",
    "chars": 11133,
    "preview": "'use strict';\n\nconst os = require('os');\nconst fs = require('fs');\nconst path = require('path');\nconst assert = require("
  },
  {
    "path": "benchmark/buildASTSchema-benchmark.js",
    "chars": 381,
    "preview": "'use strict';\n\nconst { parse } = require('graphql/language/parser.js');\nconst { buildASTSchema } = require('graphql/util"
  },
  {
    "path": "benchmark/buildClientSchema-benchmark.js",
    "chars": 343,
    "preview": "'use strict';\n\nconst { buildClientSchema } = require('graphql/utilities/buildClientSchema.js');\n\nconst { bigSchemaIntros"
  },
  {
    "path": "benchmark/fixtures.js",
    "chars": 404,
    "preview": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\n\nexports.bigSchemaSDL = fs.readFileSync(\n  path.j"
  },
  {
    "path": "benchmark/github-schema.graphql",
    "chars": 368215,
    "preview": "\"\"\"\nAutogenerated input type of AcceptTopicSuggestion\n\"\"\"\ninput AcceptTopicSuggestionInput {\n  \"\"\"\n  The Node ID of the "
  },
  {
    "path": "benchmark/github-schema.json",
    "chars": 1826270,
    "preview": "{\n  \"data\": {\n    \"__schema\": {\n      \"queryType\": {\n        \"name\": \"Query\"\n      },\n      \"mutationType\": {\n        \"n"
  },
  {
    "path": "benchmark/introspectionFromSchema-benchmark.js",
    "chars": 601,
    "preview": "'use strict';\n\nconst { parse } = require('graphql/language/parser.js');\nconst { executeSync } = require('graphql/executi"
  },
  {
    "path": "benchmark/kitchen-sink.graphql",
    "chars": 1024,
    "preview": "query queryName($foo: ComplexType, $site: Site = MOBILE) @onQuery {\n  whoever123is: node(id: [123, 456]) {\n    id\n    .."
  },
  {
    "path": "benchmark/parser-benchmark.js",
    "chars": 342,
    "preview": "'use strict';\n\nconst { parse } = require('graphql/language/parser.js');\nconst {\n  getIntrospectionQuery,\n} = require('gr"
  },
  {
    "path": "benchmark/printer-benchmark.js",
    "chars": 342,
    "preview": "'use strict';\n\nconst { parse } = require('graphql/language/parser.js');\nconst { print } = require('graphql/language/prin"
  },
  {
    "path": "benchmark/repeated-fields-benchmark.js",
    "chars": 372,
    "preview": "'use strict';\n\nconst { graphqlSync } = require('graphql/graphql.js');\nconst { buildSchema } = require('graphql/utilities"
  },
  {
    "path": "benchmark/validateGQL-benchmark.js",
    "chars": 594,
    "preview": "'use strict';\n\nconst { parse } = require('graphql/language/parser.js');\nconst { validate } = require('graphql/validation"
  },
  {
    "path": "benchmark/validateInvalidGQL-benchmark.js",
    "chars": 663,
    "preview": "'use strict';\n\nconst { parse } = require('graphql/language/parser.js');\nconst { validate } = require('graphql/validation"
  },
  {
    "path": "benchmark/validateSDL-benchmark.js",
    "chars": 341,
    "preview": "'use strict';\n\nconst { parse } = require('graphql/language/parser.js');\nconst { validateSDL } = require('graphql/validat"
  },
  {
    "path": "benchmark/visit-benchmark.js",
    "chars": 441,
    "preview": "'use strict';\n\nconst { parse } = require('graphql/language/parser.js');\nconst { visit } = require('graphql/language/visi"
  },
  {
    "path": "benchmark/visitInParallel-benchmark.js",
    "chars": 509,
    "preview": "'use strict';\n\nconst { parse } = require('graphql/language/parser.js');\nconst { visit, visitInParallel } = require('grap"
  },
  {
    "path": "codecov.yml",
    "chars": 183,
    "preview": "codecov:\n  notify:\n    require_ci_to_pass: true\n\nparsers:\n  javascript:\n    enable_partials: true\n\ncomment: false\ncovera"
  },
  {
    "path": "cspell.yml",
    "chars": 2290,
    "preview": "language: en\nuseGitignore: true\n# TODO enableGlobDot: true\nignorePaths:\n  # Excluded from spelling check\n  - cspell.yml\n"
  },
  {
    "path": "integrationTests/README.md",
    "chars": 6,
    "preview": "# TBD\n"
  },
  {
    "path": "integrationTests/integration-test.js",
    "chars": 1464,
    "preview": "'use strict';\n\nconst os = require('os');\nconst fs = require('fs');\nconst path = require('path');\nconst childProcess = re"
  },
  {
    "path": "integrationTests/node/index.js",
    "chars": 566,
    "preview": "'use strict';\n\nconst assert = require('assert');\nconst { readFileSync } = require('fs');\n\nconst { version, graphqlSync }"
  },
  {
    "path": "integrationTests/node/package.json",
    "chars": 205,
    "preview": "{\n  \"private\": true,\n  \"description\": \"graphql-js should work on all supported node versions\",\n  \"scripts\": {\n    \"test\""
  },
  {
    "path": "integrationTests/node/test.js",
    "chars": 538,
    "preview": "'use strict';\n\nconst childProcess = require('child_process');\n\nconst graphqlPackageJSON = require('graphql/package.json'"
  },
  {
    "path": "integrationTests/ts/TypedQueryDocumentNode-test.ts",
    "chars": 2198,
    "preview": "import type { ExecutionResult } from 'graphql/execution';\nimport type { TypedQueryDocumentNode } from 'graphql/utilities"
  },
  {
    "path": "integrationTests/ts/basic-test.ts",
    "chars": 785,
    "preview": "import type { ExecutionResult } from 'graphql/execution';\n\nimport { graphqlSync } from 'graphql';\nimport { GraphQLString"
  },
  {
    "path": "integrationTests/ts/extensions-test.ts",
    "chars": 1584,
    "preview": "import { GraphQLError } from 'graphql/error';\nimport { GraphQLString, GraphQLObjectType } from 'graphql/type';\n\ninterfac"
  },
  {
    "path": "integrationTests/ts/internalImports-test.ts",
    "chars": 328,
    "preview": "import type { NameNode } from 'graphql/language';\n\n// Parser class is internal API so so any changes to it are never con"
  },
  {
    "path": "integrationTests/ts/package.json",
    "chars": 484,
    "preview": "{\n  \"private\": true,\n  \"description\": \"graphql-js should compile with all supported TS versions\",\n  \"scripts\": {\n    \"te"
  },
  {
    "path": "integrationTests/ts/test.js",
    "chars": 526,
    "preview": "'use strict';\n\nconst path = require('path');\nconst childProcess = require('child_process');\n\nconst { dependencies } = re"
  },
  {
    "path": "integrationTests/ts/tsconfig.json",
    "chars": 188,
    "preview": "{\n  \"compilerOptions\": {\n    \"module\": \"commonjs\",\n    \"lib\": [\"es2019\", \"es2020.promise\", \"es2020.bigint\", \"es2020.stri"
  },
  {
    "path": "integrationTests/webpack/entry.js",
    "chars": 263,
    "preview": "'use strict';\n\nconst { buildSchema, graphqlSync } = require('graphql');\n\nconst schema = buildSchema('type Query { hello:"
  },
  {
    "path": "integrationTests/webpack/package.json",
    "chars": 259,
    "preview": "{\n  \"private\": true,\n  \"description\": \"graphql-js should be compatible with Webpack\",\n  \"scripts\": {\n    \"test\": \"webpac"
  },
  {
    "path": "integrationTests/webpack/test.js",
    "chars": 311,
    "preview": "'use strict';\n\nconst assert = require('assert');\n\n// eslint-disable-next-line node/no-missing-require\nconst { result } ="
  },
  {
    "path": "integrationTests/webpack/webpack.config.json",
    "chars": 104,
    "preview": "{\n  \"mode\": \"production\",\n  \"entry\": \"./entry.js\",\n  \"output\": {\n    \"libraryTarget\": \"commonjs2\"\n  }\n}\n"
  },
  {
    "path": "package.json",
    "chars": 2629,
    "preview": "{\n  \"name\": \"graphql\",\n  \"version\": \"16.13.1\",\n  \"description\": \"A Query Language and Runtime which can target any servi"
  },
  {
    "path": "resources/add-extension-to-import-paths.js",
    "chars": 908,
    "preview": "'use strict';\n\n/**\n * Adds extension to all paths imported inside MJS files\n *\n * Transforms:\n *\n *  import { foo } from"
  },
  {
    "path": "resources/build-deno.js",
    "chars": 998,
    "preview": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\n\nconst babel = require('@babel/core');\n\nconst {\n "
  },
  {
    "path": "resources/build-npm.js",
    "chars": 4312,
    "preview": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst assert = require('assert');\n\nconst ts = req"
  },
  {
    "path": "resources/diff-npm-package.js",
    "chars": 3411,
    "preview": "'use strict';\n\nconst os = require('os');\nconst fs = require('fs');\nconst path = require('path');\nconst cp = require('chi"
  },
  {
    "path": "resources/eslint-internal-rules/README.md",
    "chars": 282,
    "preview": "# Custom ESLint Rules\n\nThis is a dummy npm package that allows us to treat it as an `eslint-plugin-graphql-internal`.\nIt"
  },
  {
    "path": "resources/eslint-internal-rules/index.js",
    "chars": 329,
    "preview": "'use strict';\n\nconst onlyASCII = require('./only-ascii.js');\nconst noDirImport = require('./no-dir-import.js');\nconst re"
  },
  {
    "path": "resources/eslint-internal-rules/no-dir-import.js",
    "chars": 894,
    "preview": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\n\nmodule.exports = function noDirImportRule(contex"
  },
  {
    "path": "resources/eslint-internal-rules/only-ascii.js",
    "chars": 771,
    "preview": "'use strict';\n\nmodule.exports = {\n  meta: {\n    schema: [\n      {\n        type: 'object',\n        properties: {\n        "
  },
  {
    "path": "resources/eslint-internal-rules/package.json",
    "chars": 132,
    "preview": "{\n  \"name\": \"eslint-plugin-graphql-internal\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"engines\": {\n    \"node\": \">= 14"
  },
  {
    "path": "resources/eslint-internal-rules/require-to-string-tag.js",
    "chars": 1002,
    "preview": "'use strict';\n\nmodule.exports = function requireToStringTag(context) {\n  const sourceCode = context.getSourceCode();\n\n  "
  },
  {
    "path": "resources/gen-changelog.js",
    "chars": 11046,
    "preview": "'use strict';\n\nconst util = require('util');\nconst https = require('https');\n\nconst packageJSON = require('../package.js"
  },
  {
    "path": "resources/gen-version.js",
    "chars": 996,
    "preview": "'use strict';\n\nconst { version } = require('../package.json');\n\nconst { writeGeneratedFile } = require('./utils.js');\n\nc"
  },
  {
    "path": "resources/inline-invariant.js",
    "chars": 1138,
    "preview": "'use strict';\n\n/**\n * Eliminates function call to `invariant` if the condition is met.\n *\n * Transforms:\n *\n *  invarian"
  },
  {
    "path": "resources/release-metadata.js",
    "chars": 2317,
    "preview": "'use strict';\n\nconst {\n  readPackageJSON,\n  readPackageJSONAtRef,\n  spawnOutput,\n} = require('./utils.js');\n\ntry {\n  con"
  },
  {
    "path": "resources/release-prepare.js",
    "chars": 6895,
    "preview": "'use strict';\n\nconst { readPackageJSON, spawn, spawnOutput } = require('./utils.js');\n\nlet args;\ntry {\n  args = parseArg"
  },
  {
    "path": "resources/ts-register.js",
    "chars": 68,
    "preview": "'use strict';\n\nrequire('@babel/register')({ extensions: ['.ts'] });\n"
  },
  {
    "path": "resources/utils.js",
    "chars": 4147,
    "preview": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst childProcess = require('child_process');\n\nc"
  },
  {
    "path": "src/README.md",
    "chars": 922,
    "preview": "## GraphQL JS\n\nThe primary `graphql` module includes everything you need to define a GraphQL\nschema and fulfill GraphQL "
  },
  {
    "path": "src/__testUtils__/__tests__/dedent-test.ts",
    "chars": 2846,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { dedent, dedentString } from '../dedent';\n"
  },
  {
    "path": "src/__testUtils__/__tests__/genFuzzStrings-test.ts",
    "chars": 1730,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { genFuzzStrings } from '../genFuzzStrings'"
  },
  {
    "path": "src/__testUtils__/__tests__/inspectStr-test.ts",
    "chars": 587,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { inspectStr } from '../inspectStr';\n\ndescr"
  },
  {
    "path": "src/__testUtils__/__tests__/resolveOnNextTick-test.ts",
    "chars": 574,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { resolveOnNextTick } from '../resolveOnNex"
  },
  {
    "path": "src/__testUtils__/dedent.ts",
    "chars": 956,
    "preview": "export function dedentString(string: string): string {\n  const trimmedStr = string\n    .replace(/^\\n*/m, '') //  remove "
  },
  {
    "path": "src/__testUtils__/expectJSON.ts",
    "chars": 1220,
    "preview": "import { expect } from 'chai';\n\nimport { isObjectLike } from '../jsutils/isObjectLike';\nimport { mapValue } from '../jsu"
  },
  {
    "path": "src/__testUtils__/genFuzzStrings.ts",
    "chars": 871,
    "preview": "/**\n * Generator that produces all possible combinations of allowed characters.\n */\nexport function* genFuzzStrings(opti"
  },
  {
    "path": "src/__testUtils__/inspectStr.ts",
    "chars": 362,
    "preview": "import type { Maybe } from '../jsutils/Maybe';\n\n/**\n * Special inspect function to produce readable string literal for e"
  },
  {
    "path": "src/__testUtils__/kitchenSinkQuery.ts",
    "chars": 1164,
    "preview": "export const kitchenSinkQuery: string = String.raw`\n\"Query description\"\nquery queryName(\n  \"Very complex variable\"\n  $fo"
  },
  {
    "path": "src/__testUtils__/kitchenSinkSDL.ts",
    "chars": 3032,
    "preview": "export const kitchenSinkSDL = `\n\"\"\"This is a description of the schema as a whole.\"\"\"\nschema {\n  query: QueryType\n  muta"
  },
  {
    "path": "src/__testUtils__/resolveOnNextTick.ts",
    "chars": 92,
    "preview": "export function resolveOnNextTick(): Promise<void> {\n  return Promise.resolve(undefined);\n}\n"
  },
  {
    "path": "src/__tests__/starWarsData.ts",
    "chars": 3290,
    "preview": "/**\n * These are types which correspond to the schema.\n * They represent the shape of the data visited during field reso"
  },
  {
    "path": "src/__tests__/starWarsIntrospection-test.ts",
    "chars": 8754,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { graphqlSync } from '../graphql';\n\nimport "
  },
  {
    "path": "src/__tests__/starWarsQuery-test.ts",
    "chars": 12009,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectJSON } from '../__testUtils__/expec"
  },
  {
    "path": "src/__tests__/starWarsSchema.ts",
    "chars": 7492,
    "preview": "import {\n  GraphQLEnumType,\n  GraphQLInterfaceType,\n  GraphQLList,\n  GraphQLNonNull,\n  GraphQLObjectType,\n} from '../typ"
  },
  {
    "path": "src/__tests__/starWarsValidation-test.ts",
    "chars": 2825,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { parse } from '../language/parser';\nimport"
  },
  {
    "path": "src/__tests__/version-test.ts",
    "chars": 1470,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { version, versionInfo } from '../version';"
  },
  {
    "path": "src/error/GraphQLError.ts",
    "chars": 9948,
    "preview": "import { isObjectLike } from '../jsutils/isObjectLike';\nimport type { Maybe } from '../jsutils/Maybe';\n\nimport type { AS"
  },
  {
    "path": "src/error/README.md",
    "chars": 217,
    "preview": "## GraphQL Errors\n\nThe `graphql/error` module is responsible for creating and formatting\nGraphQL errors.\n\n```js\nimport {"
  },
  {
    "path": "src/error/__tests__/GraphQLError-test.ts",
    "chars": 8870,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { dedent } from '../../__testUtils__/dedent"
  },
  {
    "path": "src/error/__tests__/locatedError-test.ts",
    "chars": 1317,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { GraphQLError } from '../GraphQLError';\nim"
  },
  {
    "path": "src/error/index.ts",
    "chars": 314,
    "preview": "export { GraphQLError, printError, formatError } from './GraphQLError';\nexport type {\n  GraphQLErrorOptions,\n  GraphQLFo"
  },
  {
    "path": "src/error/locatedError.ts",
    "chars": 1176,
    "preview": "import type { Maybe } from '../jsutils/Maybe';\nimport { toError } from '../jsutils/toError';\n\nimport type { ASTNode } fr"
  },
  {
    "path": "src/error/syntaxError.ts",
    "chars": 472,
    "preview": "import type { Source } from '../language/source';\n\nimport { GraphQLError } from './GraphQLError';\n\n/**\n * Produces a Gra"
  },
  {
    "path": "src/execution/README.md",
    "chars": 253,
    "preview": "## GraphQL Execution\n\nThe `graphql/execution` module is responsible for the execution phase of\nfulfilling a GraphQL requ"
  },
  {
    "path": "src/execution/__tests__/abstract-test.ts",
    "chars": 14373,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectJSON } from '../../__testUtils__/ex"
  },
  {
    "path": "src/execution/__tests__/directives-test.ts",
    "chars": 6526,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { parse } from '../../language/parser';\n\nim"
  },
  {
    "path": "src/execution/__tests__/executor-test.ts",
    "chars": 35997,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectJSON } from '../../__testUtils__/ex"
  },
  {
    "path": "src/execution/__tests__/lists-test.ts",
    "chars": 6444,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectJSON } from '../../__testUtils__/ex"
  },
  {
    "path": "src/execution/__tests__/mapAsyncIterator-test.ts",
    "chars": 8545,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { mapAsyncIterator } from '../mapAsyncItera"
  },
  {
    "path": "src/execution/__tests__/mutations-test.ts",
    "chars": 5222,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectJSON } from '../../__testUtils__/ex"
  },
  {
    "path": "src/execution/__tests__/nonnull-test.ts",
    "chars": 22783,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectJSON } from '../../__testUtils__/ex"
  },
  {
    "path": "src/execution/__tests__/oneof-test.ts",
    "chars": 4395,
    "preview": "import { describe, it } from 'mocha';\n\nimport { expectJSON } from '../../__testUtils__/expectJSON';\n\nimport { parse } fr"
  },
  {
    "path": "src/execution/__tests__/resolve-test.ts",
    "chars": 3186,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { parse } from '../../language/parser';\n\nim"
  },
  {
    "path": "src/execution/__tests__/schema-test.ts",
    "chars": 4836,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { parse } from '../../language/parser';\n\nim"
  },
  {
    "path": "src/execution/__tests__/simplePubSub-test.ts",
    "chars": 1563,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { SimplePubSub } from './simplePubSub';\n\nde"
  },
  {
    "path": "src/execution/__tests__/simplePubSub.ts",
    "chars": 2000,
    "preview": "import { invariant } from '../../jsutils/invariant';\n\n/**\n * Create an AsyncIterator from an EventEmitter. Useful for mo"
  },
  {
    "path": "src/execution/__tests__/subscribe-test.ts",
    "chars": 27231,
    "preview": "import { assert, expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectJSON } from '../../__testUt"
  },
  {
    "path": "src/execution/__tests__/sync-test.ts",
    "chars": 5111,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectJSON } from '../../__testUtils__/ex"
  },
  {
    "path": "src/execution/__tests__/union-interface-test.ts",
    "chars": 15226,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { parse } from '../../language/parser';\n\nim"
  },
  {
    "path": "src/execution/__tests__/variables-test.ts",
    "chars": 31732,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectJSON } from '../../__testUtils__/ex"
  },
  {
    "path": "src/execution/collectFields.ts",
    "chars": 5630,
    "preview": "import type { ObjMap } from '../jsutils/ObjMap';\n\nimport type {\n  FieldNode,\n  FragmentDefinitionNode,\n  FragmentSpreadN"
  },
  {
    "path": "src/execution/execute.ts",
    "chars": 34091,
    "preview": "import { devAssert } from '../jsutils/devAssert';\nimport { inspect } from '../jsutils/inspect';\nimport { invariant } fro"
  },
  {
    "path": "src/execution/index.ts",
    "chars": 432,
    "preview": "export { pathToArray as responsePathAsArray } from '../jsutils/Path';\n\nexport {\n  execute,\n  executeSync,\n  defaultField"
  },
  {
    "path": "src/execution/mapAsyncIterator.ts",
    "chars": 1600,
    "preview": "import type { PromiseOrValue } from '../jsutils/PromiseOrValue';\n\n/**\n * Given an AsyncIterable and a callback function,"
  },
  {
    "path": "src/execution/subscribe.ts",
    "chars": 9580,
    "preview": "import { devAssert } from '../jsutils/devAssert';\nimport { inspect } from '../jsutils/inspect';\nimport { isAsyncIterable"
  },
  {
    "path": "src/execution/values.ts",
    "chars": 8344,
    "preview": "import { inspect } from '../jsutils/inspect';\nimport { keyMap } from '../jsutils/keyMap';\nimport type { Maybe } from '.."
  },
  {
    "path": "src/graphql.ts",
    "chars": 4704,
    "preview": "import { devAssert } from './jsutils/devAssert';\nimport { isPromise } from './jsutils/isPromise';\nimport type { Maybe } "
  },
  {
    "path": "src/index.ts",
    "chars": 12605,
    "preview": "/**\n * GraphQL.js provides a reference implementation for the GraphQL specification\n * but is also a useful utility for "
  },
  {
    "path": "src/jsutils/Maybe.ts",
    "chars": 134,
    "preview": "/** Conveniently represents flow's \"Maybe\" type https://flow.org/en/docs/types/maybe/ */\nexport type Maybe<T> = null | u"
  },
  {
    "path": "src/jsutils/ObjMap.ts",
    "chars": 277,
    "preview": "export interface ObjMap<T> {\n  [key: string]: T;\n}\n\nexport type ObjMapLike<T> = ObjMap<T> | { [key: string]: T };\n\nexpor"
  },
  {
    "path": "src/jsutils/Path.ts",
    "chars": 711,
    "preview": "import type { Maybe } from './Maybe';\n\nexport interface Path {\n  readonly prev: Path | undefined;\n  readonly key: string"
  },
  {
    "path": "src/jsutils/PromiseOrValue.ts",
    "chars": 48,
    "preview": "export type PromiseOrValue<T> = Promise<T> | T;\n"
  },
  {
    "path": "src/jsutils/README.md",
    "chars": 272,
    "preview": "## JavaScript Utils\n\nThis directory contains dependency-free JavaScript utility functions used\nthroughout the codebase.\n"
  },
  {
    "path": "src/jsutils/__tests__/Path-test.ts",
    "chars": 910,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { addPath, pathToArray } from '../Path';\n\nd"
  },
  {
    "path": "src/jsutils/__tests__/didYouMean-test.ts",
    "chars": 934,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { didYouMean } from '../didYouMean';\n\ndescr"
  },
  {
    "path": "src/jsutils/__tests__/identityFunc-test.ts",
    "chars": 481,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { identityFunc } from '../identityFunc';\n\nd"
  },
  {
    "path": "src/jsutils/__tests__/inspect-test.ts",
    "chars": 4750,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { inspect } from '../inspect';\n\ndescribe('i"
  },
  {
    "path": "src/jsutils/__tests__/instanceOf-test.ts",
    "chars": 2150,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { instanceOf } from '../instanceOf';\n\ndescr"
  },
  {
    "path": "src/jsutils/__tests__/invariant-test.ts",
    "chars": 388,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { invariant } from '../invariant';\n\ndescrib"
  },
  {
    "path": "src/jsutils/__tests__/isAsyncIterable-test.ts",
    "chars": 1774,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { identityFunc } from '../identityFunc';\nim"
  },
  {
    "path": "src/jsutils/__tests__/isIterableObject-test.ts",
    "chars": 2404,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { identityFunc } from '../identityFunc';\nim"
  },
  {
    "path": "src/jsutils/__tests__/isObjectLike-test.ts",
    "chars": 769,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { identityFunc } from '../identityFunc';\nim"
  },
  {
    "path": "src/jsutils/__tests__/naturalCompare-test.ts",
    "chars": 2539,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { naturalCompare } from '../naturalCompare'"
  },
  {
    "path": "src/jsutils/__tests__/suggestionList-test.ts",
    "chars": 2121,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { suggestionList } from '../suggestionList'"
  },
  {
    "path": "src/jsutils/__tests__/toObjMap-test.ts",
    "chars": 1834,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport type { ObjMapLike } from '../ObjMap';\nimpor"
  },
  {
    "path": "src/jsutils/devAssert.ts",
    "chars": 181,
    "preview": "export function devAssert(condition: unknown, message: string): void {\n  const booleanCondition = Boolean(condition);\n  "
  },
  {
    "path": "src/jsutils/didYouMean.ts",
    "chars": 1038,
    "preview": "const MAX_SUGGESTIONS = 5;\n\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\nexport function didYouMean("
  },
  {
    "path": "src/jsutils/groupBy.ts",
    "chars": 458,
    "preview": "/**\n * Groups array items into a Map, given a function to produce grouping key.\n */\nexport function groupBy<K, T>(\n  lis"
  },
  {
    "path": "src/jsutils/identityFunc.ts",
    "chars": 108,
    "preview": "/**\n * Returns the first argument it receives.\n */\nexport function identityFunc<T>(x: T): T {\n  return x;\n}\n"
  },
  {
    "path": "src/jsutils/inspect.ts",
    "chars": 2797,
    "preview": "const MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n\n/**\n * Used to print values in error messages.\n */\nexport f"
  },
  {
    "path": "src/jsutils/instanceOf.ts",
    "chars": 2416,
    "preview": "import { inspect } from './inspect';\n\n/* c8 ignore next 3 */\nconst isProduction =\n  globalThis.process &&\n  // eslint-di"
  },
  {
    "path": "src/jsutils/invariant.ts",
    "chars": 269,
    "preview": "export function invariant(\n  condition: unknown,\n  message?: string,\n): asserts condition {\n  const booleanCondition = B"
  },
  {
    "path": "src/jsutils/isAsyncIterable.ts",
    "chars": 325,
    "preview": "/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIter"
  },
  {
    "path": "src/jsutils/isIterableObject.ts",
    "chars": 791,
    "preview": "/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and implements the Iterator proto"
  },
  {
    "path": "src/jsutils/isObjectLike.ts",
    "chars": 278,
    "preview": "/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of "
  },
  {
    "path": "src/jsutils/isPromise.ts",
    "chars": 227,
    "preview": "/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\nexport"
  },
  {
    "path": "src/jsutils/keyMap.ts",
    "chars": 903,
    "preview": "import type { ObjMap } from './ObjMap';\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the"
  },
  {
    "path": "src/jsutils/keyValMap.ts",
    "chars": 734,
    "preview": "import type { ObjMap } from './ObjMap';\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the"
  },
  {
    "path": "src/jsutils/mapValue.ts",
    "chars": 432,
    "preview": "import type { ObjMap, ReadOnlyObjMap } from './ObjMap';\n\n/**\n * Creates an object map with the same keys as `map` and va"
  },
  {
    "path": "src/jsutils/memoize3.ts",
    "chars": 822,
    "preview": "/**\n * Memoizes the provided three-argument function.\n */\nexport function memoize3<\n  A1 extends object,\n  A2 extends ob"
  },
  {
    "path": "src/jsutils/naturalCompare.ts",
    "chars": 1314,
    "preview": "/**\n * Returns a number indicating whether a reference string comes before, or after,\n * or is the same as the given str"
  },
  {
    "path": "src/jsutils/printPathArray.ts",
    "chars": 253,
    "preview": "/**\n * Build a string describing the path.\n */\nexport function printPathArray(path: ReadonlyArray<string | number>): str"
  },
  {
    "path": "src/jsutils/promiseForObject.ts",
    "chars": 650,
    "preview": "import type { ObjMap } from './ObjMap';\n\n/**\n * This function transforms a JS object `ObjMap<Promise<T>>` into\n * a `Pro"
  },
  {
    "path": "src/jsutils/promiseReduce.ts",
    "chars": 802,
    "preview": "import { isPromise } from './isPromise';\nimport type { PromiseOrValue } from './PromiseOrValue';\n\n/**\n * Similar to Arra"
  },
  {
    "path": "src/jsutils/suggestionList.ts",
    "chars": 3938,
    "preview": "import { naturalCompare } from './naturalCompare';\n\n/**\n * Given an invalid input string and a list of valid options, re"
  },
  {
    "path": "src/jsutils/toError.ts",
    "chars": 542,
    "preview": "import { inspect } from './inspect';\n\n/**\n * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a c"
  },
  {
    "path": "src/jsutils/toObjMap.ts",
    "chars": 449,
    "preview": "import type { Maybe } from './Maybe';\nimport type { ReadOnlyObjMap, ReadOnlyObjMapLike } from './ObjMap';\n\nexport functi"
  },
  {
    "path": "src/language/README.md",
    "chars": 238,
    "preview": "## GraphQL Language\n\nThe `graphql/language` module is responsible for parsing and operating on the\nGraphQL language.\n\n``"
  },
  {
    "path": "src/language/__tests__/blockString-fuzz.ts",
    "chars": 2048,
    "preview": "import { describe, it } from 'mocha';\n\nimport { dedent } from '../../__testUtils__/dedent';\nimport { genFuzzStrings } fr"
  },
  {
    "path": "src/language/__tests__/blockString-test.ts",
    "chars": 7374,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport {\n  dedentBlockStringLines,\n  isPrintableAs"
  },
  {
    "path": "src/language/__tests__/lexer-test.ts",
    "chars": 32108,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { dedent } from '../../__testUtils__/dedent"
  },
  {
    "path": "src/language/__tests__/parser-test.ts",
    "chars": 33275,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { dedent } from '../../__testUtils__/dedent"
  },
  {
    "path": "src/language/__tests__/predicates-test.ts",
    "chars": 4190,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport type { ASTNode } from '../ast';\nimport { Ki"
  },
  {
    "path": "src/language/__tests__/printLocation-test.ts",
    "chars": 2580,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { dedent } from '../../__testUtils__/dedent"
  },
  {
    "path": "src/language/__tests__/printString-test.ts",
    "chars": 3258,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { printString } from '../printString';\n\ndes"
  },
  {
    "path": "src/language/__tests__/printer-test.ts",
    "chars": 7117,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { dedent, dedentString } from '../../__test"
  },
  {
    "path": "src/language/__tests__/schema-parser-test.ts",
    "chars": 29726,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { dedent } from '../../__testUtils__/dedent"
  },
  {
    "path": "src/language/__tests__/schema-printer-test.ts",
    "chars": 4755,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { dedent } from '../../__testUtils__/dedent"
  },
  {
    "path": "src/language/__tests__/schemaCoordinateLexer-test.ts",
    "chars": 1542,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { expectToThrowJSON } from '../../__testUti"
  },
  {
    "path": "src/language/__tests__/source-test.ts",
    "chars": 1418,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { Source } from '../source';\n\ndescribe('Sou"
  },
  {
    "path": "src/language/__tests__/visitor-test.ts",
    "chars": 48916,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { kitchenSinkQuery } from '../../__testUtil"
  },
  {
    "path": "src/language/ast.ts",
    "chars": 20659,
    "preview": "import type { Kind } from './kinds';\nimport type { Source } from './source';\nimport type { TokenKind } from './tokenKind"
  },
  {
    "path": "src/language/blockString.ts",
    "chars": 4567,
    "preview": "import { isWhiteSpace } from './characterClasses';\n\n/**\n * Produces the value of a block string from its parsed raw valu"
  },
  {
    "path": "src/language/characterClasses.ts",
    "chars": 1249,
    "preview": "/**\n * ```\n * WhiteSpace ::\n *   - \"Horizontal Tab (U+0009)\"\n *   - \"Space (U+0020)\"\n * ```\n * @internal\n */\nexport func"
  },
  {
    "path": "src/language/directiveLocation.ts",
    "chars": 978,
    "preview": "/**\n * The set of allowed directive location values.\n */\nenum DirectiveLocation {\n  /** Request Definitions */\n  QUERY ="
  },
  {
    "path": "src/language/index.ts",
    "chars": 2792,
    "preview": "export { Source } from './source';\n\nexport { getLocation } from './location';\nexport type { SourceLocation } from './loc"
  },
  {
    "path": "src/language/kinds.ts",
    "chars": 2435,
    "preview": "/**\n * The set of allowed kind values for AST nodes.\n */\nenum Kind {\n  /** Name */\n  NAME = 'Name',\n\n  /** Document */\n "
  },
  {
    "path": "src/language/lexer.ts",
    "chars": 24029,
    "preview": "import { syntaxError } from '../error/syntaxError';\n\nimport { Token } from './ast';\nimport { dedentBlockStringLines } fr"
  },
  {
    "path": "src/language/location.ts",
    "chars": 801,
    "preview": "import { invariant } from '../jsutils/invariant';\n\nimport type { Source } from './source';\n\nconst LineRegExp = /\\r\\n|[\\n"
  },
  {
    "path": "src/language/parser.ts",
    "chars": 48812,
    "preview": "import type { Maybe } from '../jsutils/Maybe';\n\nimport type { GraphQLError } from '../error/GraphQLError';\nimport { synt"
  },
  {
    "path": "src/language/predicates.ts",
    "chars": 3361,
    "preview": "import type {\n  ASTNode,\n  ConstValueNode,\n  DefinitionNode,\n  ExecutableDefinitionNode,\n  SchemaCoordinateNode,\n  Selec"
  },
  {
    "path": "src/language/printLocation.ts",
    "chars": 2511,
    "preview": "import type { Location } from './ast';\nimport type { SourceLocation } from './location';\nimport { getLocation } from './"
  },
  {
    "path": "src/language/printString.ts",
    "chars": 2277,
    "preview": "/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+002"
  },
  {
    "path": "src/language/printer.ts",
    "chars": 10121,
    "preview": "import type { Maybe } from '../jsutils/Maybe';\n\nimport type { ASTNode } from './ast';\nimport { printBlockString } from '"
  },
  {
    "path": "src/language/schemaCoordinateLexer.ts",
    "chars": 3518,
    "preview": "import { syntaxError } from '../error/syntaxError';\n\nimport { Token } from './ast';\nimport { isNameStart } from './chara"
  },
  {
    "path": "src/language/source.ts",
    "chars": 1566,
    "preview": "import { devAssert } from '../jsutils/devAssert';\nimport { inspect } from '../jsutils/inspect';\nimport { instanceOf } fr"
  },
  {
    "path": "src/language/tokenKind.ts",
    "chars": 707,
    "preview": "/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nenum TokenKind {\n  SOF = '"
  },
  {
    "path": "src/language/visitor.ts",
    "chars": 11896,
    "preview": "import { devAssert } from '../jsutils/devAssert';\nimport { inspect } from '../jsutils/inspect';\n\nimport type { ASTNode }"
  },
  {
    "path": "src/subscription/README.md",
    "chars": 717,
    "preview": "## GraphQL Subscription\n\nNOTE: the `graphql/subscription` module has been deprecated with its exported functions integra"
  },
  {
    "path": "src/subscription/index.ts",
    "chars": 962,
    "preview": "/**\n * NOTE: the `graphql/subscription` module has been deprecated with its\n * exported functions integrated into the `g"
  },
  {
    "path": "src/type/README.md",
    "chars": 213,
    "preview": "## GraphQL Type System\n\nThe `graphql/type` module is responsible for defining GraphQL types and schema.\n\n```js\nimport { "
  },
  {
    "path": "src/type/__tests__/assertName-test.ts",
    "chars": 2097,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { assertEnumValueName, assertName } from '."
  },
  {
    "path": "src/type/__tests__/definition-test.ts",
    "chars": 30490,
    "preview": "import { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { identityFunc } from '../../jsutils/identi"
  }
]

// ... and 208 more files (download for full content)

About this extraction

This page contains the full source code of the graphql/graphql-js GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 408 files (4.3 MB), approximately 1.1M tokens, and a symbol index with 1409 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!