@graphql-eslint/eslint-plugin 4.0.0-alpha-20220821140530-e968cfc → 4.0.0-alpha-20230801163310-8bc4340
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +13 -253
- package/cjs/cache.d.ts +12 -0
- package/cjs/cache.js +62 -0
- package/cjs/configs/index.d.ts +148 -0
- package/cjs/configs/index.js +49 -0
- package/cjs/configs/operations-all.d.ts +22 -0
- package/cjs/configs/operations-all.js +27 -0
- package/cjs/configs/operations-recommended.d.ts +52 -0
- package/{configs/operations-recommended.json → cjs/configs/operations-recommended.js} +16 -14
- package/cjs/configs/relay.d.ts +12 -0
- package/{configs/relay.json → cjs/configs/relay.js} +6 -4
- package/cjs/configs/schema-all.d.ts +19 -0
- package/cjs/configs/schema-all.js +21 -0
- package/cjs/configs/schema-recommended.d.ts +49 -0
- package/{configs/schema-recommended.json → cjs/configs/schema-recommended.js} +19 -20
- package/cjs/documents.d.ts +6 -0
- package/cjs/documents.js +81 -0
- package/cjs/estree-converter/converter.d.ts +8 -0
- package/cjs/estree-converter/converter.js +83 -0
- package/cjs/estree-converter/index.d.ts +8 -0
- package/cjs/estree-converter/index.js +26 -0
- package/cjs/estree-converter/types.d.ts +42 -0
- package/cjs/estree-converter/types.js +16 -0
- package/cjs/estree-converter/utils.d.ts +18 -0
- package/cjs/estree-converter/utils.js +135 -0
- package/cjs/flat-configs.d.ts +260 -0
- package/cjs/flat-configs.js +60 -0
- package/cjs/graphql-config.d.ts +13 -0
- package/cjs/graphql-config.js +86 -0
- package/cjs/index.d.ts +22 -0
- package/cjs/index.js +49 -0
- package/cjs/parser.d.ts +12 -0
- package/cjs/parser.js +103 -0
- package/cjs/processor.d.ts +9 -0
- package/cjs/processor.js +127 -0
- package/cjs/rules/alphabetize.d.ts +84 -0
- package/cjs/rules/alphabetize.js +395 -0
- package/cjs/rules/description-style.d.ts +28 -0
- package/cjs/rules/description-style.js +109 -0
- package/cjs/rules/graphql-js-validation.d.ts +12 -0
- package/cjs/rules/graphql-js-validation.js +669 -0
- package/cjs/rules/index.d.ts +125 -0
- package/cjs/rules/index.js +99 -0
- package/cjs/rules/input-name.d.ts +43 -0
- package/cjs/rules/input-name.js +170 -0
- package/cjs/rules/lone-executable-definition.d.ts +34 -0
- package/cjs/rules/lone-executable-definition.js +119 -0
- package/cjs/rules/match-document-filename.d.ts +80 -0
- package/cjs/rules/match-document-filename.js +282 -0
- package/cjs/rules/naming-convention.d.ts +107 -0
- package/cjs/rules/naming-convention.js +434 -0
- package/cjs/rules/no-anonymous-operations.d.ts +12 -0
- package/cjs/rules/no-anonymous-operations.js +98 -0
- package/cjs/rules/no-case-insensitive-enum-values-duplicates.d.ts +12 -0
- package/cjs/rules/no-case-insensitive-enum-values-duplicates.js +96 -0
- package/cjs/rules/no-deprecated.d.ts +12 -0
- package/cjs/rules/no-deprecated.js +157 -0
- package/cjs/rules/no-duplicate-fields.d.ts +12 -0
- package/cjs/rules/no-duplicate-fields.js +146 -0
- package/cjs/rules/no-hashtag-description.d.ts +13 -0
- package/cjs/rules/no-hashtag-description.js +140 -0
- package/cjs/rules/no-one-place-fragments.d.ts +12 -0
- package/cjs/rules/no-one-place-fragments.js +113 -0
- package/cjs/rules/no-root-type.d.ts +33 -0
- package/cjs/rules/no-root-type.js +113 -0
- package/cjs/rules/no-scalar-result-type-on-mutation.d.ts +12 -0
- package/cjs/rules/no-scalar-result-type-on-mutation.js +100 -0
- package/cjs/rules/no-typename-prefix.d.ts +12 -0
- package/cjs/rules/no-typename-prefix.js +98 -0
- package/cjs/rules/no-unreachable-types.d.ts +12 -0
- package/cjs/rules/no-unreachable-types.js +199 -0
- package/cjs/rules/no-unused-fields.d.ts +12 -0
- package/cjs/rules/no-unused-fields.js +157 -0
- package/cjs/rules/relay-arguments.d.ts +29 -0
- package/cjs/rules/relay-arguments.js +149 -0
- package/cjs/rules/relay-connection-types.d.ts +13 -0
- package/cjs/rules/relay-connection-types.js +142 -0
- package/cjs/rules/relay-edge-types.d.ts +39 -0
- package/cjs/rules/relay-edge-types.js +212 -0
- package/cjs/rules/relay-page-info.d.ts +12 -0
- package/cjs/rules/relay-page-info.js +121 -0
- package/cjs/rules/require-deprecation-date.d.ts +26 -0
- package/cjs/rules/require-deprecation-date.js +164 -0
- package/cjs/rules/require-deprecation-reason.d.ts +12 -0
- package/cjs/rules/require-deprecation-reason.js +93 -0
- package/cjs/rules/require-description.d.ts +23 -0
- package/cjs/rules/require-description.js +205 -0
- package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +12 -0
- package/cjs/rules/require-field-of-type-query-in-mutation-result.js +102 -0
- package/cjs/rules/require-id-when-available.d.ts +44 -0
- package/cjs/rules/require-id-when-available.js +241 -0
- package/cjs/rules/require-import-fragment.d.ts +12 -0
- package/cjs/rules/require-import-fragment.js +166 -0
- package/cjs/rules/require-nullable-fields-with-oneof.d.ts +12 -0
- package/cjs/rules/require-nullable-fields-with-oneof.js +92 -0
- package/cjs/rules/require-nullable-result-in-root.d.ts +12 -0
- package/cjs/rules/require-nullable-result-in-root.js +109 -0
- package/cjs/rules/require-type-pattern-with-oneof.d.ts +12 -0
- package/cjs/rules/require-type-pattern-with-oneof.js +91 -0
- package/cjs/rules/selection-set-depth.d.ts +36 -0
- package/cjs/rules/selection-set-depth.js +175 -0
- package/cjs/rules/strict-id-in-types.d.ts +65 -0
- package/cjs/rules/strict-id-in-types.js +186 -0
- package/cjs/rules/unique-fragment-name.d.ts +13 -0
- package/cjs/rules/unique-fragment-name.js +118 -0
- package/cjs/rules/unique-operation-name.d.ts +12 -0
- package/cjs/rules/unique-operation-name.js +95 -0
- package/cjs/schema.d.ts +12 -0
- package/cjs/schema.js +65 -0
- package/cjs/siblings.d.ts +8 -0
- package/cjs/siblings.js +136 -0
- package/cjs/types-8d5f4ae0.d.ts +107 -0
- package/cjs/types.d.ts +8 -0
- package/cjs/types.js +16 -0
- package/cjs/utils.d.ts +44 -0
- package/cjs/utils.js +205 -0
- package/esm/cache.d.mts +12 -0
- package/esm/cache.js +29 -0
- package/esm/chunk-BMTV3EA2.js +8 -0
- package/esm/configs/index.d.mts +148 -0
- package/esm/configs/index.js +16 -0
- package/esm/configs/operations-all.d.mts +22 -0
- package/esm/configs/operations-all.js +34 -0
- package/esm/configs/operations-recommended.d.mts +52 -0
- package/esm/configs/operations-recommended.js +59 -0
- package/esm/configs/relay.d.mts +12 -0
- package/esm/configs/relay.js +18 -0
- package/esm/configs/schema-all.d.mts +19 -0
- package/esm/configs/schema-all.js +28 -0
- package/esm/configs/schema-recommended.d.mts +49 -0
- package/esm/configs/schema-recommended.js +55 -0
- package/esm/documents.d.mts +6 -0
- package/esm/documents.js +48 -0
- package/esm/estree-converter/converter.d.mts +8 -0
- package/esm/estree-converter/converter.js +65 -0
- package/esm/estree-converter/index.d.mts +8 -0
- package/esm/estree-converter/index.js +3 -0
- package/esm/estree-converter/types.d.mts +42 -0
- package/esm/estree-converter/types.js +0 -0
- package/esm/estree-converter/utils.d.mts +18 -0
- package/esm/estree-converter/utils.js +114 -0
- package/esm/flat-configs.d.mts +260 -0
- package/esm/flat-configs.js +37 -0
- package/esm/graphql-config.d.mts +13 -0
- package/esm/graphql-config.js +55 -0
- package/esm/index.d.mts +22 -0
- package/esm/index.js +18 -0
- package/esm/package.json +1 -0
- package/esm/parser.d.mts +12 -0
- package/esm/parser.js +70 -0
- package/esm/processor.d.mts +9 -0
- package/esm/processor.js +106 -0
- package/esm/rules/alphabetize.d.mts +84 -0
- package/esm/rules/alphabetize.js +364 -0
- package/esm/rules/description-style.d.mts +28 -0
- package/esm/rules/description-style.js +86 -0
- package/esm/rules/graphql-js-validation.d.mts +12 -0
- package/esm/rules/graphql-js-validation.js +658 -0
- package/esm/rules/index.d.mts +125 -0
- package/esm/rules/index.js +76 -0
- package/esm/rules/input-name.d.mts +43 -0
- package/esm/rules/input-name.js +149 -0
- package/esm/rules/lone-executable-definition.d.mts +34 -0
- package/esm/rules/lone-executable-definition.js +96 -0
- package/esm/rules/match-document-filename.d.mts +80 -0
- package/esm/rules/match-document-filename.js +263 -0
- package/esm/rules/naming-convention.d.mts +107 -0
- package/esm/rules/naming-convention.js +417 -0
- package/esm/rules/no-anonymous-operations.d.mts +12 -0
- package/esm/rules/no-anonymous-operations.js +75 -0
- package/esm/rules/no-case-insensitive-enum-values-duplicates.d.mts +12 -0
- package/esm/rules/no-case-insensitive-enum-values-duplicates.js +73 -0
- package/esm/rules/no-deprecated.d.mts +12 -0
- package/esm/rules/no-deprecated.js +134 -0
- package/esm/rules/no-duplicate-fields.d.mts +12 -0
- package/esm/rules/no-duplicate-fields.js +123 -0
- package/esm/rules/no-hashtag-description.d.mts +13 -0
- package/esm/rules/no-hashtag-description.js +116 -0
- package/esm/rules/no-one-place-fragments.d.mts +12 -0
- package/esm/rules/no-one-place-fragments.js +90 -0
- package/esm/rules/no-root-type.d.mts +33 -0
- package/esm/rules/no-root-type.js +90 -0
- package/esm/rules/no-scalar-result-type-on-mutation.d.mts +12 -0
- package/esm/rules/no-scalar-result-type-on-mutation.js +77 -0
- package/esm/rules/no-typename-prefix.d.mts +12 -0
- package/esm/rules/no-typename-prefix.js +75 -0
- package/esm/rules/no-unreachable-types.d.mts +12 -0
- package/esm/rules/no-unreachable-types.js +171 -0
- package/esm/rules/no-unused-fields.d.mts +12 -0
- package/esm/rules/no-unused-fields.js +134 -0
- package/esm/rules/relay-arguments.d.mts +29 -0
- package/esm/rules/relay-arguments.js +126 -0
- package/esm/rules/relay-connection-types.d.mts +13 -0
- package/esm/rules/relay-connection-types.js +118 -0
- package/esm/rules/relay-edge-types.d.mts +39 -0
- package/esm/rules/relay-edge-types.js +194 -0
- package/esm/rules/relay-page-info.d.mts +12 -0
- package/esm/rules/relay-page-info.js +98 -0
- package/esm/rules/require-deprecation-date.d.mts +26 -0
- package/esm/rules/require-deprecation-date.js +141 -0
- package/esm/rules/require-deprecation-reason.d.mts +12 -0
- package/esm/rules/require-deprecation-reason.js +70 -0
- package/esm/rules/require-description.d.mts +23 -0
- package/esm/rules/require-description.js +186 -0
- package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +12 -0
- package/esm/rules/require-field-of-type-query-in-mutation-result.js +79 -0
- package/esm/rules/require-id-when-available.d.mts +44 -0
- package/esm/rules/require-id-when-available.js +231 -0
- package/esm/rules/require-import-fragment.d.mts +12 -0
- package/esm/rules/require-import-fragment.js +133 -0
- package/esm/rules/require-nullable-fields-with-oneof.d.mts +12 -0
- package/esm/rules/require-nullable-fields-with-oneof.js +69 -0
- package/esm/rules/require-nullable-result-in-root.d.mts +12 -0
- package/esm/rules/require-nullable-result-in-root.js +86 -0
- package/esm/rules/require-type-pattern-with-oneof.d.mts +12 -0
- package/esm/rules/require-type-pattern-with-oneof.js +68 -0
- package/esm/rules/selection-set-depth.d.mts +36 -0
- package/esm/rules/selection-set-depth.js +142 -0
- package/esm/rules/strict-id-in-types.d.mts +65 -0
- package/esm/rules/strict-id-in-types.js +169 -0
- package/esm/rules/unique-fragment-name.d.mts +13 -0
- package/esm/rules/unique-fragment-name.js +94 -0
- package/esm/rules/unique-operation-name.d.mts +12 -0
- package/esm/rules/unique-operation-name.js +72 -0
- package/esm/schema.d.mts +12 -0
- package/esm/schema.js +32 -0
- package/esm/siblings.d.mts +8 -0
- package/esm/siblings.js +116 -0
- package/esm/types-ace77d86.d.ts +107 -0
- package/esm/types.d.mts +8 -0
- package/esm/types.js +0 -0
- package/esm/utils.d.mts +44 -0
- package/esm/utils.js +155 -0
- package/package.json +47 -34
- package/configs/base.json +0 -4
- package/configs/operations-all.json +0 -24
- package/configs/schema-all.json +0 -26
- package/docs/README.md +0 -75
- package/docs/custom-rules.md +0 -148
- package/docs/deprecated-rules.md +0 -21
- package/docs/parser-options.md +0 -85
- package/docs/parser.md +0 -49
- package/docs/rules/alphabetize.md +0 -178
- package/docs/rules/description-style.md +0 -54
- package/docs/rules/executable-definitions.md +0 -17
- package/docs/rules/fields-on-correct-type.md +0 -17
- package/docs/rules/fragments-on-composite-type.md +0 -17
- package/docs/rules/input-name.md +0 -76
- package/docs/rules/known-argument-names.md +0 -17
- package/docs/rules/known-directives.md +0 -44
- package/docs/rules/known-fragment-names.md +0 -69
- package/docs/rules/known-type-names.md +0 -17
- package/docs/rules/lone-anonymous-operation.md +0 -17
- package/docs/rules/lone-schema-definition.md +0 -17
- package/docs/rules/match-document-filename.md +0 -156
- package/docs/rules/naming-convention.md +0 -300
- package/docs/rules/no-anonymous-operations.md +0 -39
- package/docs/rules/no-case-insensitive-enum-values-duplicates.md +0 -43
- package/docs/rules/no-deprecated.md +0 -85
- package/docs/rules/no-duplicate-fields.md +0 -65
- package/docs/rules/no-fragment-cycles.md +0 -17
- package/docs/rules/no-hashtag-description.md +0 -59
- package/docs/rules/no-root-type.md +0 -53
- package/docs/rules/no-scalar-result-type-on-mutation.md +0 -37
- package/docs/rules/no-typename-prefix.md +0 -39
- package/docs/rules/no-undefined-variables.md +0 -17
- package/docs/rules/no-unreachable-types.md +0 -49
- package/docs/rules/no-unused-fields.md +0 -62
- package/docs/rules/no-unused-fragments.md +0 -17
- package/docs/rules/no-unused-variables.md +0 -17
- package/docs/rules/one-field-subscriptions.md +0 -17
- package/docs/rules/overlapping-fields-can-be-merged.md +0 -17
- package/docs/rules/possible-fragment-spread.md +0 -17
- package/docs/rules/possible-type-extension.md +0 -15
- package/docs/rules/provided-required-arguments.md +0 -17
- package/docs/rules/relay-arguments.md +0 -57
- package/docs/rules/relay-connection-types.md +0 -42
- package/docs/rules/relay-edge-types.md +0 -56
- package/docs/rules/relay-page-info.md +0 -32
- package/docs/rules/require-deprecation-date.md +0 -56
- package/docs/rules/require-deprecation-reason.md +0 -47
- package/docs/rules/require-description.md +0 -115
- package/docs/rules/require-field-of-type-query-in-mutation-result.md +0 -47
- package/docs/rules/require-id-when-available.md +0 -88
- package/docs/rules/scalar-leafs.md +0 -17
- package/docs/rules/selection-set-depth.md +0 -76
- package/docs/rules/strict-id-in-types.md +0 -130
- package/docs/rules/unique-argument-names.md +0 -17
- package/docs/rules/unique-directive-names-per-location.md +0 -17
- package/docs/rules/unique-directive-names.md +0 -17
- package/docs/rules/unique-enum-value-names.md +0 -15
- package/docs/rules/unique-field-definition-names.md +0 -17
- package/docs/rules/unique-fragment-name.md +0 -51
- package/docs/rules/unique-input-field-names.md +0 -17
- package/docs/rules/unique-operation-name.md +0 -55
- package/docs/rules/unique-operation-types.md +0 -17
- package/docs/rules/unique-type-names.md +0 -17
- package/docs/rules/unique-variable-names.md +0 -17
- package/docs/rules/value-literals-of-correct-type.md +0 -17
- package/docs/rules/variables-are-input-types.md +0 -17
- package/docs/rules/variables-in-allowed-position.md +0 -17
- package/estree-converter/converter.d.ts +0 -3
- package/estree-converter/index.d.ts +0 -3
- package/estree-converter/types.d.ts +0 -40
- package/estree-converter/utils.d.ts +0 -13
- package/graphql-config.d.ts +0 -3
- package/index.d.ts +0 -16
- package/index.js +0 -4653
- package/index.mjs +0 -4641
- package/parser.d.ts +0 -2
- package/processor.d.ts +0 -7
- package/rules/alphabetize.d.ts +0 -16
- package/rules/description-style.d.ts +0 -6
- package/rules/graphql-js-validation.d.ts +0 -2
- package/rules/index.d.ts +0 -41
- package/rules/input-name.d.ts +0 -9
- package/rules/match-document-filename.d.ts +0 -18
- package/rules/naming-convention.d.ts +0 -37
- package/rules/no-anonymous-operations.d.ts +0 -3
- package/rules/no-case-insensitive-enum-values-duplicates.d.ts +0 -3
- package/rules/no-deprecated.d.ts +0 -3
- package/rules/no-duplicate-fields.d.ts +0 -3
- package/rules/no-hashtag-description.d.ts +0 -3
- package/rules/no-root-type.d.ts +0 -7
- package/rules/no-scalar-result-type-on-mutation.d.ts +0 -3
- package/rules/no-typename-prefix.d.ts +0 -3
- package/rules/no-unreachable-types.d.ts +0 -3
- package/rules/no-unused-fields.d.ts +0 -3
- package/rules/relay-arguments.d.ts +0 -6
- package/rules/relay-connection-types.d.ts +0 -5
- package/rules/relay-edge-types.d.ts +0 -8
- package/rules/relay-page-info.d.ts +0 -3
- package/rules/require-deprecation-date.d.ts +0 -5
- package/rules/require-deprecation-reason.d.ts +0 -3
- package/rules/require-description.d.ts +0 -11
- package/rules/require-field-of-type-query-in-mutation-result.d.ts +0 -3
- package/rules/require-id-when-available.d.ts +0 -6
- package/rules/selection-set-depth.d.ts +0 -7
- package/rules/strict-id-in-types.d.ts +0 -11
- package/rules/unique-fragment-name.d.ts +0 -6
- package/rules/unique-operation-name.d.ts +0 -3
- package/schema.d.ts +0 -3
- package/sibling-operations.d.ts +0 -21
- package/testkit.d.ts +0 -27
- package/types.d.ts +0 -79
- package/utils.d.ts +0 -39
@@ -0,0 +1,205 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var require_description_exports = {};
|
20
|
+
__export(require_description_exports, {
|
21
|
+
RULE_ID: () => RULE_ID,
|
22
|
+
rule: () => rule
|
23
|
+
});
|
24
|
+
module.exports = __toCommonJS(require_description_exports);
|
25
|
+
var import_utils = require("@graphql-tools/utils");
|
26
|
+
var import_graphql = require("graphql");
|
27
|
+
var import_utils2 = require("../utils.js");
|
28
|
+
const RULE_ID = "require-description";
|
29
|
+
const ALLOWED_KINDS = [
|
30
|
+
...import_utils2.TYPES_KINDS,
|
31
|
+
import_graphql.Kind.DIRECTIVE_DEFINITION,
|
32
|
+
import_graphql.Kind.FIELD_DEFINITION,
|
33
|
+
import_graphql.Kind.INPUT_VALUE_DEFINITION,
|
34
|
+
import_graphql.Kind.ENUM_VALUE_DEFINITION,
|
35
|
+
import_graphql.Kind.OPERATION_DEFINITION
|
36
|
+
];
|
37
|
+
const schema = {
|
38
|
+
type: "array",
|
39
|
+
minItems: 1,
|
40
|
+
maxItems: 1,
|
41
|
+
items: {
|
42
|
+
type: "object",
|
43
|
+
additionalProperties: false,
|
44
|
+
minProperties: 1,
|
45
|
+
properties: {
|
46
|
+
types: {
|
47
|
+
type: "boolean",
|
48
|
+
description: `Includes:
|
49
|
+
${import_utils2.TYPES_KINDS.map((kind) => `- \`${kind}\``).join("\n")}`
|
50
|
+
},
|
51
|
+
rootField: {
|
52
|
+
type: "boolean",
|
53
|
+
description: "Definitions within `Query`, `Mutation`, and `Subscription` root types."
|
54
|
+
},
|
55
|
+
...Object.fromEntries(
|
56
|
+
[...ALLOWED_KINDS].sort().map((kind) => {
|
57
|
+
let description = `Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#${kind}).`;
|
58
|
+
if (kind === import_graphql.Kind.OPERATION_DEFINITION) {
|
59
|
+
description += '\n> You must use only comment syntax `#` and not description syntax `"""` or `"`.';
|
60
|
+
}
|
61
|
+
return [kind, { type: "boolean", description }];
|
62
|
+
})
|
63
|
+
)
|
64
|
+
}
|
65
|
+
}
|
66
|
+
};
|
67
|
+
const rule = {
|
68
|
+
meta: {
|
69
|
+
docs: {
|
70
|
+
category: "Schema",
|
71
|
+
description: "Enforce descriptions in type definitions and operations.",
|
72
|
+
url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
|
73
|
+
examples: [
|
74
|
+
{
|
75
|
+
title: "Incorrect",
|
76
|
+
usage: [{ types: true, FieldDefinition: true }],
|
77
|
+
code: (
|
78
|
+
/* GraphQL */
|
79
|
+
`
|
80
|
+
type someTypeName {
|
81
|
+
name: String
|
82
|
+
}
|
83
|
+
`
|
84
|
+
)
|
85
|
+
},
|
86
|
+
{
|
87
|
+
title: "Correct",
|
88
|
+
usage: [{ types: true, FieldDefinition: true }],
|
89
|
+
code: (
|
90
|
+
/* GraphQL */
|
91
|
+
`
|
92
|
+
"""
|
93
|
+
Some type description
|
94
|
+
"""
|
95
|
+
type someTypeName {
|
96
|
+
"""
|
97
|
+
Name description
|
98
|
+
"""
|
99
|
+
name: String
|
100
|
+
}
|
101
|
+
`
|
102
|
+
)
|
103
|
+
},
|
104
|
+
{
|
105
|
+
title: "Correct",
|
106
|
+
usage: [{ OperationDefinition: true }],
|
107
|
+
code: (
|
108
|
+
/* GraphQL */
|
109
|
+
`
|
110
|
+
# Create a new user
|
111
|
+
mutation createUser {
|
112
|
+
# ...
|
113
|
+
}
|
114
|
+
`
|
115
|
+
)
|
116
|
+
},
|
117
|
+
{
|
118
|
+
title: "Correct",
|
119
|
+
usage: [{ rootField: true }],
|
120
|
+
code: (
|
121
|
+
/* GraphQL */
|
122
|
+
`
|
123
|
+
type Mutation {
|
124
|
+
"Create a new user"
|
125
|
+
createUser: User
|
126
|
+
}
|
127
|
+
|
128
|
+
type User {
|
129
|
+
name: String
|
130
|
+
}
|
131
|
+
`
|
132
|
+
)
|
133
|
+
}
|
134
|
+
],
|
135
|
+
configOptions: [
|
136
|
+
{
|
137
|
+
types: true,
|
138
|
+
[import_graphql.Kind.DIRECTIVE_DEFINITION]: true
|
139
|
+
// rootField: true TODO enable in graphql-eslint v4
|
140
|
+
}
|
141
|
+
],
|
142
|
+
recommended: true
|
143
|
+
},
|
144
|
+
type: "suggestion",
|
145
|
+
messages: {
|
146
|
+
[RULE_ID]: "Description is required for {{ nodeName }}"
|
147
|
+
},
|
148
|
+
schema
|
149
|
+
},
|
150
|
+
create(context) {
|
151
|
+
const { types, rootField, ...restOptions } = context.options[0] || {};
|
152
|
+
const kinds = new Set(types ? import_utils2.TYPES_KINDS : []);
|
153
|
+
for (const [kind, isEnabled] of Object.entries(restOptions)) {
|
154
|
+
if (isEnabled) {
|
155
|
+
kinds.add(kind);
|
156
|
+
} else {
|
157
|
+
kinds.delete(kind);
|
158
|
+
}
|
159
|
+
}
|
160
|
+
if (rootField) {
|
161
|
+
const schema2 = (0, import_utils2.requireGraphQLSchemaFromContext)(RULE_ID, context);
|
162
|
+
const rootTypeNames = (0, import_utils.getRootTypeNames)(schema2);
|
163
|
+
kinds.add(
|
164
|
+
`:matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=/^(${[
|
165
|
+
...rootTypeNames
|
166
|
+
].join(",")})$/] > FieldDefinition`
|
167
|
+
);
|
168
|
+
}
|
169
|
+
const selector = [...kinds].join(",");
|
170
|
+
return {
|
171
|
+
[selector](node) {
|
172
|
+
var _a;
|
173
|
+
let description = "";
|
174
|
+
const isOperation = node.kind === import_graphql.Kind.OPERATION_DEFINITION;
|
175
|
+
if (isOperation) {
|
176
|
+
const rawNode = node.rawNode();
|
177
|
+
const { prev, line } = rawNode.loc.startToken;
|
178
|
+
if ((prev == null ? void 0 : prev.kind) === import_graphql.TokenKind.COMMENT) {
|
179
|
+
const value = prev.value.trim();
|
180
|
+
const linesBefore = line - prev.line;
|
181
|
+
if (!value.startsWith("eslint") && linesBefore === 1) {
|
182
|
+
description = value;
|
183
|
+
}
|
184
|
+
}
|
185
|
+
} else {
|
186
|
+
description = ((_a = node.description) == null ? void 0 : _a.value.trim()) || "";
|
187
|
+
}
|
188
|
+
if (description.length === 0) {
|
189
|
+
context.report({
|
190
|
+
loc: isOperation ? (0, import_utils2.getLocation)(node.loc.start, node.operation) : node.name.loc,
|
191
|
+
messageId: RULE_ID,
|
192
|
+
data: {
|
193
|
+
nodeName: (0, import_utils2.getNodeName)(node)
|
194
|
+
}
|
195
|
+
});
|
196
|
+
}
|
197
|
+
}
|
198
|
+
};
|
199
|
+
}
|
200
|
+
};
|
201
|
+
// Annotate the CommonJS export names for ESM import in node:
|
202
|
+
0 && (module.exports = {
|
203
|
+
RULE_ID,
|
204
|
+
rule
|
205
|
+
});
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
|
2
|
+
import '@graphql-tools/utils';
|
3
|
+
import 'eslint';
|
4
|
+
import 'estree';
|
5
|
+
import 'graphql';
|
6
|
+
import 'graphql-config';
|
7
|
+
import 'json-schema-to-ts';
|
8
|
+
import '../estree-converter/types.js';
|
9
|
+
|
10
|
+
declare const rule: GraphQLESLintRule;
|
11
|
+
|
12
|
+
export { rule };
|
@@ -0,0 +1,102 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var require_field_of_type_query_in_mutation_result_exports = {};
|
20
|
+
__export(require_field_of_type_query_in_mutation_result_exports, {
|
21
|
+
rule: () => rule
|
22
|
+
});
|
23
|
+
module.exports = __toCommonJS(require_field_of_type_query_in_mutation_result_exports);
|
24
|
+
var import_graphql = require("graphql");
|
25
|
+
var import_utils = require("../utils.js");
|
26
|
+
const RULE_ID = "require-field-of-type-query-in-mutation-result";
|
27
|
+
const rule = {
|
28
|
+
meta: {
|
29
|
+
type: "suggestion",
|
30
|
+
docs: {
|
31
|
+
category: "Schema",
|
32
|
+
description: "Allow the client in one round-trip not only to call mutation but also to get a wagon of data to update their application.\n> Currently, no errors are reported for result type `union`, `interface` and `scalar`.",
|
33
|
+
url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
|
34
|
+
requiresSchema: true,
|
35
|
+
examples: [
|
36
|
+
{
|
37
|
+
title: "Incorrect",
|
38
|
+
code: (
|
39
|
+
/* GraphQL */
|
40
|
+
`
|
41
|
+
type User { ... }
|
42
|
+
|
43
|
+
type Mutation {
|
44
|
+
createUser: User!
|
45
|
+
}
|
46
|
+
`
|
47
|
+
)
|
48
|
+
},
|
49
|
+
{
|
50
|
+
title: "Correct",
|
51
|
+
code: (
|
52
|
+
/* GraphQL */
|
53
|
+
`
|
54
|
+
type User { ... }
|
55
|
+
|
56
|
+
type Query { ... }
|
57
|
+
|
58
|
+
type CreateUserPayload {
|
59
|
+
user: User!
|
60
|
+
query: Query!
|
61
|
+
}
|
62
|
+
|
63
|
+
type Mutation {
|
64
|
+
createUser: CreateUserPayload!
|
65
|
+
}
|
66
|
+
`
|
67
|
+
)
|
68
|
+
}
|
69
|
+
]
|
70
|
+
},
|
71
|
+
schema: []
|
72
|
+
},
|
73
|
+
create(context) {
|
74
|
+
const schema = (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context);
|
75
|
+
const mutationType = schema.getMutationType();
|
76
|
+
const queryType = schema.getQueryType();
|
77
|
+
if (!mutationType || !queryType) {
|
78
|
+
return {};
|
79
|
+
}
|
80
|
+
const selector = `:matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=${mutationType.name}] > FieldDefinition > .gqlType Name`;
|
81
|
+
return {
|
82
|
+
[selector](node) {
|
83
|
+
const typeName = node.value;
|
84
|
+
const graphQLType = schema.getType(typeName);
|
85
|
+
if ((0, import_graphql.isObjectType)(graphQLType)) {
|
86
|
+
const { fields } = graphQLType.astNode;
|
87
|
+
const hasQueryType = fields == null ? void 0 : fields.some((field) => (0, import_utils.getTypeName)(field) === queryType.name);
|
88
|
+
if (!hasQueryType) {
|
89
|
+
context.report({
|
90
|
+
node,
|
91
|
+
message: `Mutation result type "${graphQLType.name}" must contain field of type "${queryType.name}"`
|
92
|
+
});
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|
96
|
+
};
|
97
|
+
}
|
98
|
+
};
|
99
|
+
// Annotate the CommonJS export names for ESM import in node:
|
100
|
+
0 && (module.exports = {
|
101
|
+
rule
|
102
|
+
});
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import { FromSchema } from 'json-schema-to-ts';
|
2
|
+
import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
|
3
|
+
import '@graphql-tools/utils';
|
4
|
+
import 'eslint';
|
5
|
+
import 'estree';
|
6
|
+
import 'graphql';
|
7
|
+
import 'graphql-config';
|
8
|
+
import '../estree-converter/types.js';
|
9
|
+
|
10
|
+
declare const schema: {
|
11
|
+
readonly definitions: {
|
12
|
+
readonly asString: {
|
13
|
+
readonly type: "string";
|
14
|
+
};
|
15
|
+
readonly asArray: {
|
16
|
+
readonly type: "array";
|
17
|
+
readonly uniqueItems: true;
|
18
|
+
readonly minItems: 1;
|
19
|
+
readonly items: {
|
20
|
+
readonly type: "string";
|
21
|
+
};
|
22
|
+
};
|
23
|
+
};
|
24
|
+
readonly type: "array";
|
25
|
+
readonly maxItems: 1;
|
26
|
+
readonly items: {
|
27
|
+
readonly type: "object";
|
28
|
+
readonly additionalProperties: false;
|
29
|
+
readonly properties: {
|
30
|
+
readonly fieldName: {
|
31
|
+
readonly oneOf: readonly [{
|
32
|
+
readonly $ref: "#/definitions/asString";
|
33
|
+
}, {
|
34
|
+
readonly $ref: "#/definitions/asArray";
|
35
|
+
}];
|
36
|
+
readonly default: "id";
|
37
|
+
};
|
38
|
+
};
|
39
|
+
};
|
40
|
+
};
|
41
|
+
type RuleOptions = FromSchema<typeof schema>;
|
42
|
+
declare const rule: GraphQLESLintRule<RuleOptions, true>;
|
43
|
+
|
44
|
+
export { RuleOptions, rule };
|
@@ -0,0 +1,241 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var require_id_when_available_exports = {};
|
20
|
+
__export(require_id_when_available_exports, {
|
21
|
+
rule: () => rule
|
22
|
+
});
|
23
|
+
module.exports = __toCommonJS(require_id_when_available_exports);
|
24
|
+
var import_utils = require("@graphql-tools/utils");
|
25
|
+
var import_graphql = require("graphql");
|
26
|
+
var import_estree_converter = require("../estree-converter/index.js");
|
27
|
+
var import_utils2 = require("../utils.js");
|
28
|
+
const RULE_ID = "require-id-when-available";
|
29
|
+
const DEFAULT_ID_FIELD_NAME = "id";
|
30
|
+
const schema = {
|
31
|
+
definitions: {
|
32
|
+
asString: {
|
33
|
+
type: "string"
|
34
|
+
},
|
35
|
+
asArray: import_utils2.ARRAY_DEFAULT_OPTIONS
|
36
|
+
},
|
37
|
+
type: "array",
|
38
|
+
maxItems: 1,
|
39
|
+
items: {
|
40
|
+
type: "object",
|
41
|
+
additionalProperties: false,
|
42
|
+
properties: {
|
43
|
+
fieldName: {
|
44
|
+
oneOf: [{ $ref: "#/definitions/asString" }, { $ref: "#/definitions/asArray" }],
|
45
|
+
default: DEFAULT_ID_FIELD_NAME
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
};
|
50
|
+
const rule = {
|
51
|
+
meta: {
|
52
|
+
type: "suggestion",
|
53
|
+
hasSuggestions: true,
|
54
|
+
docs: {
|
55
|
+
category: "Operations",
|
56
|
+
description: "Enforce selecting specific fields when they are available on the GraphQL type.",
|
57
|
+
url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
|
58
|
+
requiresSchema: true,
|
59
|
+
requiresSiblings: true,
|
60
|
+
examples: [
|
61
|
+
{
|
62
|
+
title: "Incorrect",
|
63
|
+
code: (
|
64
|
+
/* GraphQL */
|
65
|
+
`
|
66
|
+
# In your schema
|
67
|
+
type User {
|
68
|
+
id: ID!
|
69
|
+
name: String!
|
70
|
+
}
|
71
|
+
|
72
|
+
# Query
|
73
|
+
query {
|
74
|
+
user {
|
75
|
+
name
|
76
|
+
}
|
77
|
+
}
|
78
|
+
`
|
79
|
+
)
|
80
|
+
},
|
81
|
+
{
|
82
|
+
title: "Correct",
|
83
|
+
code: (
|
84
|
+
/* GraphQL */
|
85
|
+
`
|
86
|
+
# In your schema
|
87
|
+
type User {
|
88
|
+
id: ID!
|
89
|
+
name: String!
|
90
|
+
}
|
91
|
+
|
92
|
+
# Query
|
93
|
+
query {
|
94
|
+
user {
|
95
|
+
id
|
96
|
+
name
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
# Selecting \`id\` with an alias is also valid
|
101
|
+
query {
|
102
|
+
user {
|
103
|
+
id: name
|
104
|
+
}
|
105
|
+
}
|
106
|
+
`
|
107
|
+
)
|
108
|
+
}
|
109
|
+
],
|
110
|
+
recommended: true
|
111
|
+
},
|
112
|
+
messages: {
|
113
|
+
[RULE_ID]: "Field{{ pluralSuffix }} {{ fieldName }} must be selected when it's available on a type.\nInclude it in your selection set{{ addition }}."
|
114
|
+
},
|
115
|
+
schema
|
116
|
+
},
|
117
|
+
create(context) {
|
118
|
+
const schema2 = (0, import_utils2.requireGraphQLSchemaFromContext)(RULE_ID, context);
|
119
|
+
const siblings = (0, import_utils2.requireSiblingsOperations)(RULE_ID, context);
|
120
|
+
const { fieldName = DEFAULT_ID_FIELD_NAME } = context.options[0] || {};
|
121
|
+
const idNames = (0, import_utils.asArray)(fieldName);
|
122
|
+
const selector = "OperationDefinition SelectionSet[parent.kind!=/(^OperationDefinition|InlineFragment)$/]";
|
123
|
+
const typeInfo = new import_graphql.TypeInfo(schema2);
|
124
|
+
function checkFragments(node) {
|
125
|
+
for (const selection of node.selections) {
|
126
|
+
if (selection.kind !== import_graphql.Kind.FRAGMENT_SPREAD) {
|
127
|
+
continue;
|
128
|
+
}
|
129
|
+
const [foundSpread] = siblings.getFragment(selection.name.value);
|
130
|
+
if (!foundSpread) {
|
131
|
+
continue;
|
132
|
+
}
|
133
|
+
const checkedFragmentSpreads = /* @__PURE__ */ new Set();
|
134
|
+
const visitor = (0, import_graphql.visitWithTypeInfo)(typeInfo, {
|
135
|
+
SelectionSet(node2, key, _parent) {
|
136
|
+
const parent = _parent;
|
137
|
+
if (parent.kind === import_graphql.Kind.FRAGMENT_DEFINITION) {
|
138
|
+
checkedFragmentSpreads.add(parent.name.value);
|
139
|
+
} else if (parent.kind !== import_graphql.Kind.INLINE_FRAGMENT) {
|
140
|
+
checkSelections(
|
141
|
+
node2,
|
142
|
+
typeInfo.getType(),
|
143
|
+
selection.loc.start,
|
144
|
+
parent,
|
145
|
+
checkedFragmentSpreads
|
146
|
+
);
|
147
|
+
}
|
148
|
+
}
|
149
|
+
});
|
150
|
+
(0, import_graphql.visit)(foundSpread.document, visitor);
|
151
|
+
}
|
152
|
+
}
|
153
|
+
function checkSelections(node, type, loc, parent, checkedFragmentSpreads = /* @__PURE__ */ new Set()) {
|
154
|
+
const rawType = (0, import_estree_converter.getBaseType)(type);
|
155
|
+
if (rawType instanceof import_graphql.GraphQLObjectType || rawType instanceof import_graphql.GraphQLInterfaceType) {
|
156
|
+
checkFields(rawType);
|
157
|
+
} else if (rawType instanceof import_graphql.GraphQLUnionType) {
|
158
|
+
for (const selection of node.selections) {
|
159
|
+
if (selection.kind === import_graphql.Kind.INLINE_FRAGMENT) {
|
160
|
+
const types = rawType.getTypes();
|
161
|
+
const t = types.find((t2) => t2.name === selection.typeCondition.name.value);
|
162
|
+
if (t) {
|
163
|
+
checkFields(t);
|
164
|
+
}
|
165
|
+
}
|
166
|
+
}
|
167
|
+
}
|
168
|
+
function checkFields(rawType2) {
|
169
|
+
const fields = rawType2.getFields();
|
170
|
+
const hasIdFieldInType = idNames.some((name) => fields[name]);
|
171
|
+
if (!hasIdFieldInType) {
|
172
|
+
return;
|
173
|
+
}
|
174
|
+
function hasIdField({ selections }) {
|
175
|
+
return selections.some((selection) => {
|
176
|
+
if (selection.kind === import_graphql.Kind.FIELD) {
|
177
|
+
if (selection.alias && idNames.includes(selection.alias.value)) {
|
178
|
+
return true;
|
179
|
+
}
|
180
|
+
return idNames.includes(selection.name.value);
|
181
|
+
}
|
182
|
+
if (selection.kind === import_graphql.Kind.INLINE_FRAGMENT) {
|
183
|
+
return hasIdField(selection.selectionSet);
|
184
|
+
}
|
185
|
+
if (selection.kind === import_graphql.Kind.FRAGMENT_SPREAD) {
|
186
|
+
const [foundSpread] = siblings.getFragment(selection.name.value);
|
187
|
+
if (foundSpread) {
|
188
|
+
const fragmentSpread = foundSpread.document;
|
189
|
+
checkedFragmentSpreads.add(fragmentSpread.name.value);
|
190
|
+
return hasIdField(fragmentSpread.selectionSet);
|
191
|
+
}
|
192
|
+
}
|
193
|
+
return false;
|
194
|
+
});
|
195
|
+
}
|
196
|
+
const hasId = hasIdField(node);
|
197
|
+
checkFragments(node);
|
198
|
+
if (hasId) {
|
199
|
+
return;
|
200
|
+
}
|
201
|
+
const pluralSuffix = idNames.length > 1 ? "s" : "";
|
202
|
+
const fieldName2 = (0, import_utils2.englishJoinWords)(
|
203
|
+
idNames.map((name) => `\`${(parent.alias || parent.name).value}.${name}\``)
|
204
|
+
);
|
205
|
+
const addition = checkedFragmentSpreads.size === 0 ? "" : ` or add to used fragment${checkedFragmentSpreads.size > 1 ? "s" : ""} ${(0, import_utils2.englishJoinWords)([...checkedFragmentSpreads].map((name) => `\`${name}\``))}`;
|
206
|
+
const problem = {
|
207
|
+
loc,
|
208
|
+
messageId: RULE_ID,
|
209
|
+
data: {
|
210
|
+
pluralSuffix,
|
211
|
+
fieldName: fieldName2,
|
212
|
+
addition
|
213
|
+
}
|
214
|
+
};
|
215
|
+
if ("type" in node) {
|
216
|
+
problem.suggest = idNames.map((idName) => ({
|
217
|
+
desc: `Add \`${idName}\` selection`,
|
218
|
+
fix: (fixer) => {
|
219
|
+
let insertNode = node.selections[0];
|
220
|
+
insertNode = insertNode.kind === import_graphql.Kind.INLINE_FRAGMENT ? insertNode.selectionSet.selections[0] : insertNode;
|
221
|
+
return fixer.insertTextBefore(insertNode, `${idName} `);
|
222
|
+
}
|
223
|
+
}));
|
224
|
+
}
|
225
|
+
context.report(problem);
|
226
|
+
}
|
227
|
+
}
|
228
|
+
return {
|
229
|
+
[selector](node) {
|
230
|
+
const typeInfo2 = node.typeInfo();
|
231
|
+
if (typeInfo2.gqlType) {
|
232
|
+
checkSelections(node, typeInfo2.gqlType, node.loc.start, node.parent);
|
233
|
+
}
|
234
|
+
}
|
235
|
+
};
|
236
|
+
}
|
237
|
+
};
|
238
|
+
// Annotate the CommonJS export names for ESM import in node:
|
239
|
+
0 && (module.exports = {
|
240
|
+
rule
|
241
|
+
});
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
|
2
|
+
import '@graphql-tools/utils';
|
3
|
+
import 'eslint';
|
4
|
+
import 'estree';
|
5
|
+
import 'graphql';
|
6
|
+
import 'graphql-config';
|
7
|
+
import 'json-schema-to-ts';
|
8
|
+
import '../estree-converter/types.js';
|
9
|
+
|
10
|
+
declare const rule: GraphQLESLintRule;
|
11
|
+
|
12
|
+
export { rule };
|