@graphql-eslint/eslint-plugin 4.0.0-alpha.1 → 4.0.0-alpha.11
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/README.md +2 -0
- package/{esm/cache.d.mts → cjs/cache.d.cts} +1 -1
- package/cjs/cache.js +8 -36
- package/cjs/chunk-UIAXBAMD.js +8 -0
- package/cjs/configs/index.d.cts +24 -0
- package/cjs/configs/index.js +35 -38
- package/cjs/configs/operations-all.js +33 -26
- package/cjs/configs/operations-recommended.js +59 -52
- package/cjs/configs/schema-all.js +29 -22
- package/cjs/configs/schema-recommended.js +73 -66
- package/cjs/configs/schema-relay.js +17 -10
- package/cjs/documents.js +18 -38
- package/{esm/estree-converter/converter.d.mts → cjs/estree-converter/converter.d.cts} +1 -1
- package/cjs/estree-converter/converter.js +16 -30
- package/cjs/estree-converter/index.d.cts +8 -0
- package/cjs/estree-converter/index.js +3 -23
- package/cjs/estree-converter/types.js +1 -14
- package/{esm/estree-converter/utils.d.mts → cjs/estree-converter/utils.d.cts} +3 -3
- package/cjs/estree-converter/utils.js +22 -40
- package/{esm/graphql-config.d.mts → cjs/graphql-config.d.cts} +3 -3
- package/cjs/graphql-config.js +16 -42
- package/cjs/index.d.cts +186 -0
- package/cjs/index.js +24 -41
- package/cjs/meta.d.cts +3 -0
- package/cjs/meta.js +5 -0
- package/cjs/package.json +1 -0
- package/{esm/parser.d.mts → cjs/parser.d.cts} +11 -4
- package/cjs/parser.js +35 -46
- package/{esm/processor.d.mts → cjs/processor.d.cts} +4 -0
- package/cjs/processor.js +25 -34
- package/{esm/rules/alphabetize.d.mts → cjs/rules/alphabetize/index.d.cts} +4 -4
- package/cjs/rules/{alphabetize.js → alphabetize/index.js} +69 -77
- package/{esm/rules/description-style.d.mts → cjs/rules/description-style/index.d.cts} +3 -3
- package/cjs/rules/{description-style.js → description-style/index.js} +7 -27
- package/{esm/rules/graphql-js-validation.d.mts → cjs/rules/graphql-js-validation.d.cts} +3 -3
- package/cjs/rules/graphql-js-validation.js +93 -70
- package/cjs/rules/{index.d.ts → index.d.cts} +17 -15
- package/cjs/rules/index.js +74 -60
- package/cjs/rules/{input-name.d.ts → input-name/index.d.cts} +6 -4
- package/cjs/rules/{input-name.js → input-name/index.js} +10 -28
- package/cjs/rules/{lone-executable-definition.d.ts → lone-executable-definition/index.d.cts} +3 -3
- package/cjs/rules/{lone-executable-definition.js → lone-executable-definition/index.js} +13 -32
- package/cjs/rules/{match-document-filename.d.ts → match-document-filename/index.d.cts} +4 -4
- package/cjs/rules/{match-document-filename.js → match-document-filename/index.js} +21 -35
- package/{esm/rules/naming-convention.d.mts → cjs/rules/naming-convention/index.d.cts} +6 -4
- package/cjs/rules/{naming-convention.js → naming-convention/index.js} +41 -54
- package/cjs/rules/no-anonymous-operations/index.d.cts +13 -0
- package/cjs/rules/{no-anonymous-operations.js → no-anonymous-operations/index.js} +9 -28
- package/{esm/rules/no-deprecated.d.mts → cjs/rules/no-deprecated/index.d.cts} +3 -3
- package/cjs/rules/{no-deprecated.js → no-deprecated/index.js} +11 -30
- package/cjs/rules/no-duplicate-fields/index.d.cts +13 -0
- package/cjs/rules/{no-duplicate-fields.js → no-duplicate-fields/index.js} +8 -28
- package/cjs/rules/{no-hashtag-description.d.ts → no-hashtag-description/index.d.cts} +3 -3
- package/cjs/rules/{no-hashtag-description.js → no-hashtag-description/index.js} +11 -31
- package/cjs/rules/no-one-place-fragments/index.d.cts +13 -0
- package/cjs/rules/{no-one-place-fragments.js → no-one-place-fragments/index.js} +11 -29
- package/cjs/rules/{no-root-type.d.ts → no-root-type/index.d.cts} +3 -3
- package/cjs/rules/{no-root-type.js → no-root-type/index.js} +9 -29
- package/cjs/rules/no-scalar-result-type-on-mutation/index.d.cts +13 -0
- package/cjs/rules/no-scalar-result-type-on-mutation/index.js +69 -0
- package/cjs/rules/no-typename-prefix/index.d.cts +13 -0
- package/cjs/rules/{no-typename-prefix.js → no-typename-prefix/index.js} +5 -25
- package/cjs/rules/no-unreachable-types/index.d.cts +13 -0
- package/cjs/rules/no-unreachable-types/index.js +155 -0
- package/cjs/rules/no-unused-fields/index.d.cts +34 -0
- package/cjs/rules/no-unused-fields/index.js +224 -0
- package/{esm/rules/relay-arguments.d.mts → cjs/rules/relay-arguments/index.d.cts} +3 -3
- package/cjs/rules/{relay-arguments.js → relay-arguments/index.js} +11 -30
- package/{esm/rules/relay-connection-types.d.mts → cjs/rules/relay-connection-types/index.d.cts} +3 -3
- package/cjs/rules/{relay-connection-types.js → relay-connection-types/index.js} +19 -40
- package/cjs/rules/{relay-edge-types.d.ts → relay-edge-types/index.d.cts} +6 -4
- package/cjs/rules/{relay-edge-types.js → relay-edge-types/index.js} +31 -44
- package/cjs/rules/relay-page-info/index.d.cts +13 -0
- package/cjs/rules/{relay-page-info.js → relay-page-info/index.js} +13 -31
- package/{esm/rules/require-deprecation-date.d.mts → cjs/rules/require-deprecation-date/index.d.cts} +3 -3
- package/cjs/rules/{require-deprecation-date.js → require-deprecation-date/index.js} +13 -32
- package/cjs/rules/require-deprecation-reason/index.d.cts +13 -0
- package/cjs/rules/require-deprecation-reason/index.js +66 -0
- package/{esm/rules/require-description.d.mts → cjs/rules/require-description/index.d.cts} +3 -3
- package/cjs/rules/{require-description.js → require-description/index.js} +30 -44
- package/cjs/rules/require-field-of-type-query-in-mutation-result/index.d.cts +13 -0
- package/cjs/rules/{require-field-of-type-query-in-mutation-result.js → require-field-of-type-query-in-mutation-result/index.js} +10 -29
- package/cjs/rules/require-import-fragment/index.d.cts +13 -0
- package/cjs/rules/{require-import-fragment.js → require-import-fragment/index.js} +16 -38
- package/cjs/rules/require-nullable-fields-with-oneof/index.d.cts +13 -0
- package/cjs/rules/require-nullable-fields-with-oneof/index.js +62 -0
- package/cjs/rules/require-nullable-result-in-root/index.d.cts +13 -0
- package/cjs/rules/{require-nullable-result-in-root.js → require-nullable-result-in-root/index.js} +12 -31
- package/{esm/rules/require-selections.d.mts → cjs/rules/require-selections/index.d.cts} +3 -3
- package/cjs/rules/{require-selections.js → require-selections/index.js} +47 -45
- package/cjs/rules/require-type-pattern-with-oneof/index.d.cts +13 -0
- package/cjs/rules/require-type-pattern-with-oneof/index.js +63 -0
- package/{esm/rules/selection-set-depth.d.mts → cjs/rules/selection-set-depth/index.d.cts} +3 -3
- package/cjs/rules/{selection-set-depth.js → selection-set-depth/index.js} +16 -42
- package/cjs/rules/{strict-id-in-types.d.ts → strict-id-in-types/index.d.cts} +6 -4
- package/cjs/rules/{strict-id-in-types.js → strict-id-in-types/index.js} +26 -39
- package/cjs/rules/unique-enum-value-names/index.d.cts +13 -0
- package/cjs/rules/{unique-enum-value-names.js → unique-enum-value-names/index.js} +10 -29
- package/{esm/rules/unique-fragment-name.d.mts → cjs/rules/unique-fragment-name/index.d.cts} +3 -3
- package/cjs/rules/unique-fragment-name/index.js +87 -0
- package/cjs/rules/unique-operation-name/index.d.cts +13 -0
- package/cjs/rules/{unique-operation-name.js → unique-operation-name/index.js} +7 -27
- package/{esm/schema.d.mts → cjs/schema.d.cts} +3 -3
- package/cjs/schema.js +11 -36
- package/cjs/siblings.js +17 -33
- package/{esm/types.d.mts → cjs/types.d.cts} +2 -2
- package/cjs/types.js +1 -14
- package/{esm/utils.d.mts → cjs/utils.d.cts} +5 -5
- package/cjs/utils.js +94 -115
- package/{cjs → esm}/cache.d.ts +1 -1
- package/esm/configs/index.d.ts +24 -0
- package/esm/configs/index.js +22 -1
- package/esm/configs/operations-all.js +1 -1
- package/esm/documents.js +8 -3
- package/{cjs → esm}/estree-converter/index.d.ts +2 -2
- package/{cjs → esm}/estree-converter/utils.d.ts +3 -3
- package/esm/graphql-config.js +1 -1
- package/esm/index.d.ts +186 -0
- package/esm/index.js +10 -4
- package/esm/meta.d.ts +3 -0
- package/esm/meta.js +5 -0
- package/{cjs → esm}/parser.d.ts +8 -1
- package/esm/parser.js +10 -1
- package/{cjs → esm}/processor.d.ts +4 -0
- package/esm/processor.js +5 -0
- package/{cjs/rules/alphabetize.d.ts → esm/rules/alphabetize/index.d.ts} +5 -5
- package/esm/rules/{alphabetize.js → alphabetize/index.js} +26 -10
- package/{cjs/rules/description-style.d.ts → esm/rules/description-style/index.d.ts} +3 -3
- package/esm/rules/{description-style.js → description-style/index.js} +2 -2
- package/esm/rules/{index.d.mts → index.d.ts} +11 -9
- package/esm/rules/index.js +34 -34
- package/esm/rules/{input-name.d.mts → input-name/index.d.ts} +6 -4
- package/esm/rules/{input-name.js → input-name/index.js} +1 -1
- package/esm/rules/{lone-executable-definition.d.mts → lone-executable-definition/index.d.ts} +3 -3
- package/esm/rules/{lone-executable-definition.js → lone-executable-definition/index.js} +2 -2
- package/esm/rules/{match-document-filename.d.mts → match-document-filename/index.d.ts} +4 -4
- package/esm/rules/{match-document-filename.js → match-document-filename/index.js} +4 -4
- package/{cjs/rules/naming-convention.d.ts → esm/rules/naming-convention/index.d.ts} +6 -4
- package/esm/rules/{naming-convention.js → naming-convention/index.js} +2 -2
- package/{cjs/rules/no-one-place-fragments.d.ts → esm/rules/no-anonymous-operations/index.d.ts} +3 -3
- package/esm/rules/{no-anonymous-operations.js → no-anonymous-operations/index.js} +2 -2
- package/{cjs/rules/no-deprecated.d.ts → esm/rules/no-deprecated/index.d.ts} +3 -3
- package/esm/rules/{no-deprecated.js → no-deprecated/index.js} +2 -2
- package/{cjs/rules/no-scalar-result-type-on-mutation.d.ts → esm/rules/no-duplicate-fields/index.d.ts} +3 -3
- package/esm/rules/{no-duplicate-fields.js → no-duplicate-fields/index.js} +1 -1
- package/esm/rules/{no-hashtag-description.d.mts → no-hashtag-description/index.d.ts} +3 -3
- package/esm/rules/{no-hashtag-description.js → no-hashtag-description/index.js} +2 -2
- package/{cjs/rules/no-anonymous-operations.d.ts → esm/rules/no-one-place-fragments/index.d.ts} +3 -3
- package/esm/rules/{no-one-place-fragments.js → no-one-place-fragments/index.js} +2 -2
- package/esm/rules/{no-root-type.d.mts → no-root-type/index.d.ts} +3 -3
- package/esm/rules/{no-root-type.js → no-root-type/index.js} +2 -2
- package/{cjs/rules/no-duplicate-fields.d.ts → esm/rules/no-scalar-result-type-on-mutation/index.d.ts} +3 -3
- package/esm/rules/{no-scalar-result-type-on-mutation.js → no-scalar-result-type-on-mutation/index.js} +2 -2
- package/esm/rules/no-typename-prefix/index.d.ts +13 -0
- package/esm/rules/{no-typename-prefix.js → no-typename-prefix/index.js} +1 -1
- package/esm/rules/no-unreachable-types/index.d.ts +13 -0
- package/esm/rules/{no-unreachable-types.js → no-unreachable-types/index.js} +8 -8
- package/esm/rules/no-unused-fields/index.d.ts +34 -0
- package/esm/rules/no-unused-fields/index.js +224 -0
- package/{cjs/rules/relay-arguments.d.ts → esm/rules/relay-arguments/index.d.ts} +3 -3
- package/esm/rules/{relay-arguments.js → relay-arguments/index.js} +2 -2
- package/{cjs/rules/relay-connection-types.d.ts → esm/rules/relay-connection-types/index.d.ts} +3 -3
- package/esm/rules/{relay-connection-types.js → relay-connection-types/index.js} +1 -1
- package/esm/rules/{relay-edge-types.d.mts → relay-edge-types/index.d.ts} +6 -4
- package/esm/rules/{relay-edge-types.js → relay-edge-types/index.js} +3 -3
- package/esm/rules/relay-page-info/index.d.ts +13 -0
- package/esm/rules/{relay-page-info.js → relay-page-info/index.js} +4 -4
- package/{cjs/rules/require-deprecation-date.d.ts → esm/rules/require-deprecation-date/index.d.ts} +3 -3
- package/esm/rules/{require-deprecation-date.js → require-deprecation-date/index.js} +3 -3
- package/esm/rules/require-deprecation-reason/index.d.ts +13 -0
- package/esm/rules/{require-deprecation-reason.js → require-deprecation-reason/index.js} +3 -3
- package/{cjs/rules/require-description.d.ts → esm/rules/require-description/index.d.ts} +3 -3
- package/esm/rules/{require-description.js → require-description/index.js} +2 -2
- package/esm/rules/require-field-of-type-query-in-mutation-result/index.d.ts +13 -0
- package/esm/rules/{require-field-of-type-query-in-mutation-result.js → require-field-of-type-query-in-mutation-result/index.js} +2 -2
- package/esm/rules/require-import-fragment/index.d.ts +13 -0
- package/esm/rules/{require-import-fragment.js → require-import-fragment/index.js} +9 -4
- package/esm/rules/require-nullable-fields-with-oneof/index.d.ts +13 -0
- package/esm/rules/{require-nullable-fields-with-oneof.js → require-nullable-fields-with-oneof/index.js} +2 -2
- package/esm/rules/require-nullable-result-in-root/index.d.ts +13 -0
- package/esm/rules/{require-nullable-result-in-root.js → require-nullable-result-in-root/index.js} +2 -2
- package/{cjs/rules/require-selections.d.ts → esm/rules/require-selections/index.d.ts} +3 -3
- package/esm/rules/{require-selections.js → require-selections/index.js} +13 -7
- package/esm/rules/require-type-pattern-with-oneof/index.d.ts +13 -0
- package/esm/rules/{require-type-pattern-with-oneof.js → require-type-pattern-with-oneof/index.js} +2 -2
- package/{cjs/rules/selection-set-depth.d.ts → esm/rules/selection-set-depth/index.d.ts} +3 -3
- package/esm/rules/{selection-set-depth.js → selection-set-depth/index.js} +3 -3
- package/esm/rules/{strict-id-in-types.d.mts → strict-id-in-types/index.d.ts} +6 -4
- package/esm/rules/{strict-id-in-types.js → strict-id-in-types/index.js} +2 -2
- package/esm/rules/unique-enum-value-names/index.d.ts +13 -0
- package/esm/rules/{unique-enum-value-names.js → unique-enum-value-names/index.js} +2 -2
- package/{cjs/rules/unique-fragment-name.d.ts → esm/rules/unique-fragment-name/index.d.ts} +3 -3
- package/esm/rules/{unique-fragment-name.js → unique-fragment-name/index.js} +3 -3
- package/esm/rules/unique-operation-name/index.d.ts +13 -0
- package/esm/rules/{unique-operation-name.js → unique-operation-name/index.js} +2 -2
- package/{cjs → esm}/utils.d.ts +2 -2
- package/esm/utils.js +39 -16
- package/{index.browser.mjs → index.browser.js} +352 -181
- package/package.json +7 -11
- package/cjs/configs/index.d.ts +0 -174
- package/cjs/flat-configs.d.ts +0 -307
- package/cjs/flat-configs.js +0 -55
- package/cjs/index.d.ts +0 -26
- package/cjs/rules/no-scalar-result-type-on-mutation.js +0 -88
- package/cjs/rules/no-typename-prefix.d.ts +0 -13
- package/cjs/rules/no-unreachable-types.d.ts +0 -13
- package/cjs/rules/no-unreachable-types.js +0 -176
- package/cjs/rules/no-unused-fields.d.ts +0 -13
- package/cjs/rules/no-unused-fields.js +0 -132
- package/cjs/rules/relay-page-info.d.ts +0 -13
- package/cjs/rules/require-deprecation-reason.d.ts +0 -13
- package/cjs/rules/require-deprecation-reason.js +0 -85
- package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +0 -13
- package/cjs/rules/require-import-fragment.d.ts +0 -13
- package/cjs/rules/require-nullable-fields-with-oneof.d.ts +0 -13
- package/cjs/rules/require-nullable-fields-with-oneof.js +0 -81
- package/cjs/rules/require-nullable-result-in-root.d.ts +0 -13
- package/cjs/rules/require-type-pattern-with-oneof.d.ts +0 -13
- package/cjs/rules/require-type-pattern-with-oneof.js +0 -83
- package/cjs/rules/unique-enum-value-names.d.ts +0 -13
- package/cjs/rules/unique-fragment-name.js +0 -106
- package/cjs/rules/unique-operation-name.d.ts +0 -13
- package/esm/configs/index.d.mts +0 -174
- package/esm/estree-converter/index.d.mts +0 -8
- package/esm/flat-configs.d.mts +0 -307
- package/esm/flat-configs.js +0 -36
- package/esm/index.d.mts +0 -26
- package/esm/package.json +0 -1
- package/esm/rules/no-anonymous-operations.d.mts +0 -13
- package/esm/rules/no-duplicate-fields.d.mts +0 -13
- package/esm/rules/no-one-place-fragments.d.mts +0 -13
- package/esm/rules/no-scalar-result-type-on-mutation.d.mts +0 -13
- package/esm/rules/no-typename-prefix.d.mts +0 -13
- package/esm/rules/no-unreachable-types.d.mts +0 -13
- package/esm/rules/no-unused-fields.d.mts +0 -13
- package/esm/rules/no-unused-fields.js +0 -113
- package/esm/rules/relay-page-info.d.mts +0 -13
- package/esm/rules/require-deprecation-reason.d.mts +0 -13
- package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +0 -13
- package/esm/rules/require-import-fragment.d.mts +0 -13
- package/esm/rules/require-nullable-fields-with-oneof.d.mts +0 -13
- package/esm/rules/require-nullable-result-in-root.d.mts +0 -13
- package/esm/rules/require-type-pattern-with-oneof.d.mts +0 -13
- package/esm/rules/unique-enum-value-names.d.mts +0 -13
- package/esm/rules/unique-operation-name.d.mts +0 -13
- /package/cjs/configs/{operations-all.d.ts → operations-all.d.cts} +0 -0
- /package/cjs/configs/{operations-recommended.d.ts → operations-recommended.d.cts} +0 -0
- /package/cjs/configs/{schema-all.d.ts → schema-all.d.cts} +0 -0
- /package/cjs/configs/{schema-recommended.d.ts → schema-recommended.d.cts} +0 -0
- /package/cjs/configs/{schema-relay.d.ts → schema-relay.d.cts} +0 -0
- /package/cjs/{documents.d.ts → documents.d.cts} +0 -0
- /package/cjs/estree-converter/{types.d.ts → types.d.cts} +0 -0
- /package/cjs/{siblings.d.ts → siblings.d.cts} +0 -0
- /package/esm/configs/{operations-all.d.mts → operations-all.d.ts} +0 -0
- /package/esm/configs/{operations-recommended.d.mts → operations-recommended.d.ts} +0 -0
- /package/esm/configs/{schema-all.d.mts → schema-all.d.ts} +0 -0
- /package/esm/configs/{schema-recommended.d.mts → schema-recommended.d.ts} +0 -0
- /package/esm/configs/{schema-relay.d.mts → schema-relay.d.ts} +0 -0
- /package/esm/{documents.d.mts → documents.d.ts} +0 -0
- /package/{cjs → esm}/estree-converter/converter.d.ts +0 -0
- /package/esm/estree-converter/{types.d.mts → types.d.ts} +0 -0
- /package/{cjs → esm}/graphql-config.d.ts +0 -0
- /package/{cjs → esm}/rules/graphql-js-validation.d.ts +0 -0
- /package/{cjs → esm}/schema.d.ts +0 -0
- /package/esm/{siblings.d.mts → siblings.d.ts} +0 -0
- /package/{cjs → esm}/types.d.ts +0 -0
|
@@ -35,7 +35,7 @@ var require_operations_all = __commonJS({
|
|
|
35
35
|
selections: ["OperationDefinition", "FragmentDefinition"],
|
|
36
36
|
variables: !0,
|
|
37
37
|
arguments: ["Field", "Directive"],
|
|
38
|
-
groups: ["
|
|
38
|
+
groups: ["...", "id", "*", "{"]
|
|
39
39
|
}
|
|
40
40
|
],
|
|
41
41
|
"@graphql-eslint/lone-executable-definition": "error",
|
|
@@ -237,10 +237,23 @@ var require_schema_relay = __commonJS({
|
|
|
237
237
|
});
|
|
238
238
|
|
|
239
239
|
// src/parser.ts
|
|
240
|
-
import
|
|
240
|
+
import debugFactory2 from "debug";
|
|
241
241
|
import { buildSchema, GraphQLError } from "graphql";
|
|
242
242
|
import { parseGraphQLSDL } from "@graphql-tools/utils";
|
|
243
243
|
|
|
244
|
+
// src/cache.ts
|
|
245
|
+
import debugFactory from "debug";
|
|
246
|
+
var log = debugFactory("graphql-eslint:ModuleCache"), ModuleCache = class {
|
|
247
|
+
map = /* @__PURE__ */ new Map();
|
|
248
|
+
set(cacheKey, result) {
|
|
249
|
+
}
|
|
250
|
+
get(cacheKey, settings = {
|
|
251
|
+
lifetime: 10
|
|
252
|
+
/* seconds */
|
|
253
|
+
}) {
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
|
|
244
257
|
// src/estree-converter/converter.ts
|
|
245
258
|
import {
|
|
246
259
|
Kind,
|
|
@@ -328,8 +341,8 @@ function convertLocation(location) {
|
|
|
328
341
|
}
|
|
329
342
|
|
|
330
343
|
// src/estree-converter/converter.ts
|
|
331
|
-
function convertToESTree(node,
|
|
332
|
-
let typeInfo =
|
|
344
|
+
function convertToESTree(node, schema16) {
|
|
345
|
+
let typeInfo = schema16 && new TypeInfo(schema16), visitor = {
|
|
333
346
|
leave(node2, key, parent) {
|
|
334
347
|
let leadingComments = "description" in node2 && node2.description ? [
|
|
335
348
|
{
|
|
@@ -374,6 +387,9 @@ function convertToESTree(node, schema15) {
|
|
|
374
387
|
);
|
|
375
388
|
}
|
|
376
389
|
|
|
390
|
+
// src/meta.ts
|
|
391
|
+
var version = process.env.VERSION;
|
|
392
|
+
|
|
377
393
|
// src/siblings.ts
|
|
378
394
|
import {
|
|
379
395
|
Kind as Kind3,
|
|
@@ -392,12 +408,12 @@ function requireSiblingsOperations(ruleId, context) {
|
|
|
392
408
|
return siblingOperations;
|
|
393
409
|
}
|
|
394
410
|
function requireGraphQLSchemaFromContext(ruleId, context) {
|
|
395
|
-
let { schema:
|
|
396
|
-
if (!
|
|
411
|
+
let { schema: schema16 } = context.sourceCode.parserServices;
|
|
412
|
+
if (!schema16)
|
|
397
413
|
throw new Error(
|
|
398
414
|
`Rule \`${ruleId}\` requires graphql-config \`schema\` field to be set and loaded. See https://the-guild.dev/graphql/config/docs/user/schema for more info`
|
|
399
415
|
);
|
|
400
|
-
return
|
|
416
|
+
return schema16;
|
|
401
417
|
}
|
|
402
418
|
var chalk = {
|
|
403
419
|
red: (str) => `\x1B[31m${str}\x1B[39m`,
|
|
@@ -411,7 +427,7 @@ var chalk = {
|
|
|
411
427
|
// eslint-disable-next-line no-console
|
|
412
428
|
console.warn(chalk.yellow("warning"), "[graphql-eslint]", ...args)
|
|
413
429
|
)
|
|
414
|
-
},
|
|
430
|
+
}, slash = (path2) => path2.replaceAll("\\", "/"), VIRTUAL_DOCUMENT_REGEX = /[/\\]\d+_document.graphql$/, CWD = process.cwd(), getTypeName = (node) => "type" in node ? getTypeName(node.type) : "name" in node && node.name ? node.name.value : "", TYPES_KINDS = [
|
|
415
431
|
Kind2.OBJECT_TYPE_DEFINITION,
|
|
416
432
|
Kind2.INTERFACE_TYPE_DEFINITION,
|
|
417
433
|
Kind2.ENUM_TYPE_DEFINITION,
|
|
@@ -460,26 +476,49 @@ function truthy(value) {
|
|
|
460
476
|
return !!value;
|
|
461
477
|
}
|
|
462
478
|
var DisplayNodeNameMap = {
|
|
463
|
-
[Kind2.
|
|
464
|
-
[Kind2.
|
|
465
|
-
[Kind2.
|
|
466
|
-
[Kind2.
|
|
479
|
+
[Kind2.ARGUMENT]: "argument",
|
|
480
|
+
[Kind2.BOOLEAN]: "boolean",
|
|
481
|
+
[Kind2.DIRECTIVE_DEFINITION]: "directive",
|
|
482
|
+
[Kind2.DIRECTIVE]: "directive",
|
|
483
|
+
[Kind2.DOCUMENT]: "document",
|
|
467
484
|
[Kind2.ENUM_TYPE_DEFINITION]: "enum",
|
|
468
485
|
[Kind2.ENUM_TYPE_EXTENSION]: "enum",
|
|
469
|
-
[Kind2.
|
|
486
|
+
[Kind2.ENUM_VALUE_DEFINITION]: "enum value",
|
|
487
|
+
[Kind2.ENUM]: "enum",
|
|
488
|
+
[Kind2.FIELD_DEFINITION]: "field",
|
|
489
|
+
[Kind2.FIELD]: "field",
|
|
490
|
+
[Kind2.FLOAT]: "float",
|
|
491
|
+
[Kind2.FRAGMENT_DEFINITION]: "fragment",
|
|
492
|
+
[Kind2.FRAGMENT_SPREAD]: "fragment spread",
|
|
493
|
+
[Kind2.INLINE_FRAGMENT]: "inline fragment",
|
|
470
494
|
[Kind2.INPUT_OBJECT_TYPE_DEFINITION]: "input",
|
|
471
495
|
[Kind2.INPUT_OBJECT_TYPE_EXTENSION]: "input",
|
|
472
|
-
[Kind2.UNION_TYPE_DEFINITION]: "union",
|
|
473
|
-
[Kind2.UNION_TYPE_EXTENSION]: "union",
|
|
474
|
-
[Kind2.DIRECTIVE_DEFINITION]: "directive",
|
|
475
|
-
[Kind2.FIELD_DEFINITION]: "field",
|
|
476
|
-
[Kind2.ENUM_VALUE_DEFINITION]: "enum value",
|
|
477
496
|
[Kind2.INPUT_VALUE_DEFINITION]: "input value",
|
|
478
|
-
[Kind2.
|
|
479
|
-
[Kind2.
|
|
480
|
-
[Kind2.
|
|
497
|
+
[Kind2.INT]: "int",
|
|
498
|
+
[Kind2.INTERFACE_TYPE_DEFINITION]: "interface",
|
|
499
|
+
[Kind2.INTERFACE_TYPE_EXTENSION]: "interface",
|
|
500
|
+
[Kind2.LIST_TYPE]: "list type",
|
|
501
|
+
[Kind2.LIST]: "list",
|
|
502
|
+
[Kind2.NAME]: "name",
|
|
503
|
+
[Kind2.NAMED_TYPE]: "named type",
|
|
504
|
+
[Kind2.NON_NULL_TYPE]: "non-null type",
|
|
505
|
+
[Kind2.NULL]: "null",
|
|
506
|
+
[Kind2.OBJECT_FIELD]: "object field",
|
|
507
|
+
[Kind2.OBJECT_TYPE_DEFINITION]: "type",
|
|
508
|
+
[Kind2.OBJECT_TYPE_EXTENSION]: "type",
|
|
509
|
+
[Kind2.OBJECT]: "object",
|
|
481
510
|
[Kind2.OPERATION_DEFINITION]: "operation",
|
|
482
|
-
[Kind2.
|
|
511
|
+
[Kind2.OPERATION_TYPE_DEFINITION]: "operation type",
|
|
512
|
+
[Kind2.SCALAR_TYPE_DEFINITION]: "scalar",
|
|
513
|
+
[Kind2.SCALAR_TYPE_EXTENSION]: "scalar",
|
|
514
|
+
[Kind2.SCHEMA_DEFINITION]: "schema",
|
|
515
|
+
[Kind2.SCHEMA_EXTENSION]: "schema",
|
|
516
|
+
[Kind2.SELECTION_SET]: "selection set",
|
|
517
|
+
[Kind2.STRING]: "string",
|
|
518
|
+
[Kind2.UNION_TYPE_DEFINITION]: "union",
|
|
519
|
+
[Kind2.UNION_TYPE_EXTENSION]: "union",
|
|
520
|
+
[Kind2.VARIABLE_DEFINITION]: "variable",
|
|
521
|
+
[Kind2.VARIABLE]: "variable"
|
|
483
522
|
};
|
|
484
523
|
function displayNodeName(node) {
|
|
485
524
|
return `${node.kind === Kind2.OPERATION_DEFINITION ? node.operation : DisplayNodeNameMap[node.kind]} "${"alias" in node && node.alias?.value || "name" in node && node.name?.value}"`;
|
|
@@ -575,7 +614,7 @@ function getSiblings(documents) {
|
|
|
575
614
|
}
|
|
576
615
|
|
|
577
616
|
// src/parser.ts
|
|
578
|
-
var debug =
|
|
617
|
+
var debug = debugFactory2("graphql-eslint:parser");
|
|
579
618
|
debug("cwd %o", CWD);
|
|
580
619
|
var LEGACY_PARSER_OPTIONS_KEYS = [
|
|
581
620
|
"schema",
|
|
@@ -596,7 +635,7 @@ function parseForESLint(code, options) {
|
|
|
596
635
|
`\`parserOptions.${key}\` was removed in graphql-eslint@4. Use physical graphql-config for setting schema and documents or \`parserOptions.graphQLConfig\` for programmatic usage.`
|
|
597
636
|
);
|
|
598
637
|
try {
|
|
599
|
-
let { filePath } = options, { document } = parseGraphQLSDL(filePath, code, { noLocation: !1 }), project,
|
|
638
|
+
let { filePath } = options, { document } = parseGraphQLSDL(filePath, code, { noLocation: !1 }), project, schema16, documents;
|
|
600
639
|
documents = [
|
|
601
640
|
parseGraphQLSDL(
|
|
602
641
|
"operation.graphql",
|
|
@@ -605,14 +644,14 @@ function parseForESLint(code, options) {
|
|
|
605
644
|
)
|
|
606
645
|
];
|
|
607
646
|
try {
|
|
608
|
-
|
|
647
|
+
schema16 = buildSchema(options.graphQLConfig.schema);
|
|
609
648
|
} catch (error) {
|
|
610
649
|
throw error instanceof Error && (error.message = `Error while loading schema: ${error.message}`), error;
|
|
611
650
|
}
|
|
612
|
-
let rootTree = convertToESTree(document,
|
|
651
|
+
let rootTree = convertToESTree(document, schema16);
|
|
613
652
|
return {
|
|
614
653
|
services: {
|
|
615
|
-
schema:
|
|
654
|
+
schema: schema16,
|
|
616
655
|
siblingOperations: getSiblings(documents)
|
|
617
656
|
},
|
|
618
657
|
ast: {
|
|
@@ -640,8 +679,15 @@ function parseForESLint(code, options) {
|
|
|
640
679
|
throw error;
|
|
641
680
|
}
|
|
642
681
|
}
|
|
682
|
+
var parser = {
|
|
683
|
+
parseForESLint,
|
|
684
|
+
meta: {
|
|
685
|
+
name: "@graphql-eslint/parser",
|
|
686
|
+
version
|
|
687
|
+
}
|
|
688
|
+
};
|
|
643
689
|
|
|
644
|
-
// src/rules/alphabetize.ts
|
|
690
|
+
// src/rules/alphabetize/index.ts
|
|
645
691
|
import {
|
|
646
692
|
Kind as Kind4
|
|
647
693
|
} from "graphql";
|
|
@@ -703,7 +749,14 @@ var RULE_ID = "alphabetize", fieldsEnum = [
|
|
|
703
749
|
groups: {
|
|
704
750
|
...ARRAY_DEFAULT_OPTIONS,
|
|
705
751
|
minItems: 2,
|
|
706
|
-
description:
|
|
752
|
+
description: [
|
|
753
|
+
"Order group. Example: `['...', 'id', '*', '{']` where:",
|
|
754
|
+
"- `...` stands for fragment spreads",
|
|
755
|
+
"- `id` stands for field with name `id`",
|
|
756
|
+
"- `*` stands for everything else",
|
|
757
|
+
"- `{` stands for fields `selection set`"
|
|
758
|
+
].join(`
|
|
759
|
+
`)
|
|
707
760
|
}
|
|
708
761
|
}
|
|
709
762
|
}
|
|
@@ -825,7 +878,7 @@ var RULE_ID = "alphabetize", fieldsEnum = [
|
|
|
825
878
|
selections: selectionsEnum,
|
|
826
879
|
variables: !0,
|
|
827
880
|
arguments: [Kind4.FIELD, Kind4.DIRECTIVE],
|
|
828
|
-
groups: ["
|
|
881
|
+
groups: ["...", "id", "*", "{"]
|
|
829
882
|
}
|
|
830
883
|
]
|
|
831
884
|
}
|
|
@@ -863,19 +916,17 @@ var RULE_ID = "alphabetize", fieldsEnum = [
|
|
|
863
916
|
}
|
|
864
917
|
function checkNodes(nodes = []) {
|
|
865
918
|
for (let i = 1; i < nodes.length; i += 1) {
|
|
866
|
-
let currNode = nodes[i], currName =
|
|
919
|
+
let currNode = nodes[i], currName = getName(currNode);
|
|
867
920
|
if (!currName)
|
|
868
921
|
continue;
|
|
869
|
-
let prevNode = nodes[i - 1], prevName =
|
|
922
|
+
let prevNode = nodes[i - 1], prevName = getName(prevNode);
|
|
870
923
|
if (prevName) {
|
|
871
924
|
let compareResult = prevName.localeCompare(currName), { groups } = opts, shouldSortByGroup = !1;
|
|
872
925
|
if (groups?.length) {
|
|
873
926
|
if (!groups.includes("*"))
|
|
874
927
|
throw new Error("`groups` option should contain `*` string.");
|
|
875
|
-
let indexForPrev = groups
|
|
876
|
-
indexForPrev
|
|
877
|
-
let indexForCurr = groups.indexOf(currName);
|
|
878
|
-
if (indexForCurr === -1 && (indexForCurr = groups.indexOf("*")), shouldSortByGroup = indexForPrev - indexForCurr > 0, indexForPrev < indexForCurr)
|
|
928
|
+
let indexForPrev = getIndex({ node: prevNode, groups }), indexForCurr = getIndex({ node: currNode, groups });
|
|
929
|
+
if (shouldSortByGroup = indexForPrev - indexForCurr > 0, indexForPrev < indexForCurr)
|
|
879
930
|
continue;
|
|
880
931
|
}
|
|
881
932
|
if (!shouldSortByGroup && !(compareResult === 1) && (!(compareResult === 0) || !prevNode.kind.endsWith("Extension") || currNode.kind.endsWith("Extension")))
|
|
@@ -935,8 +986,19 @@ var RULE_ID = "alphabetize", fieldsEnum = [
|
|
|
935
986
|
}), listeners;
|
|
936
987
|
}
|
|
937
988
|
};
|
|
989
|
+
function getIndex({
|
|
990
|
+
node,
|
|
991
|
+
groups
|
|
992
|
+
}) {
|
|
993
|
+
let index = groups.indexOf(getName(node));
|
|
994
|
+
return index === -1 && "selectionSet" in node && node.selectionSet && (index = groups.indexOf("{")), index === -1 && node.kind === Kind4.FRAGMENT_SPREAD && (index = groups.indexOf("...")), index === -1 && (index = groups.indexOf("*")), index;
|
|
995
|
+
}
|
|
996
|
+
function getName(node) {
|
|
997
|
+
return "alias" in node && node.alias?.value || //
|
|
998
|
+
"name" in node && node.name?.value || "";
|
|
999
|
+
}
|
|
938
1000
|
|
|
939
|
-
// src/rules/description-style.ts
|
|
1001
|
+
// src/rules/description-style/index.ts
|
|
940
1002
|
var schema2 = {
|
|
941
1003
|
type: "array",
|
|
942
1004
|
maxItems: 1,
|
|
@@ -1056,14 +1118,14 @@ import {
|
|
|
1056
1118
|
import { validateSDL } from "graphql/validation/validate.js";
|
|
1057
1119
|
function validateDocument({
|
|
1058
1120
|
context,
|
|
1059
|
-
schema:
|
|
1121
|
+
schema: schema16 = null,
|
|
1060
1122
|
documentNode,
|
|
1061
1123
|
rule: rule35,
|
|
1062
1124
|
hasDidYouMeanSuggestions
|
|
1063
1125
|
}) {
|
|
1064
1126
|
if (documentNode.definitions.length !== 0)
|
|
1065
1127
|
try {
|
|
1066
|
-
let validationErrors =
|
|
1128
|
+
let validationErrors = schema16 ? validate(schema16, documentNode, [rule35]) : validateSDL(documentNode, null, [rule35]);
|
|
1067
1129
|
for (let error of validationErrors) {
|
|
1068
1130
|
let { line, column } = error.locations[0], sourceCode = context.getSourceCode(), { tokens } = sourceCode.ast, token = tokens.find(
|
|
1069
1131
|
(token2) => token2.loc.start.line === line && token2.loc.start.column === column - 1
|
|
@@ -1129,7 +1191,7 @@ var getFragmentDefsAndFragmentSpreads = (node) => {
|
|
|
1129
1191
|
ruleId,
|
|
1130
1192
|
rule: rule35,
|
|
1131
1193
|
getDocumentNode,
|
|
1132
|
-
schema:
|
|
1194
|
+
schema: schema16 = [],
|
|
1133
1195
|
hasDidYouMeanSuggestions
|
|
1134
1196
|
}, docs) => ({
|
|
1135
1197
|
[ruleId]: {
|
|
@@ -1142,16 +1204,16 @@ var getFragmentDefsAndFragmentSpreads = (node) => {
|
|
|
1142
1204
|
description: `${docs.description}
|
|
1143
1205
|
> This rule is a wrapper around a \`graphql-js\` validation function.`
|
|
1144
1206
|
},
|
|
1145
|
-
schema:
|
|
1207
|
+
schema: schema16,
|
|
1146
1208
|
hasSuggestions: hasDidYouMeanSuggestions
|
|
1147
1209
|
},
|
|
1148
1210
|
create(context) {
|
|
1149
1211
|
return {
|
|
1150
1212
|
Document(node) {
|
|
1151
|
-
let
|
|
1213
|
+
let schema17 = docs.requiresSchema ? requireGraphQLSchemaFromContext(ruleId, context) : null, documentNode = getDocumentNode ? getDocumentNode({ ruleId, context, node: node.rawNode() }) : node.rawNode();
|
|
1152
1214
|
validateDocument({
|
|
1153
1215
|
context,
|
|
1154
|
-
schema:
|
|
1216
|
+
schema: schema17,
|
|
1155
1217
|
documentNode,
|
|
1156
1218
|
rule: rule35,
|
|
1157
1219
|
hasDidYouMeanSuggestions
|
|
@@ -1624,7 +1686,7 @@ var getFragmentDefsAndFragmentSpreads = (node) => {
|
|
|
1624
1686
|
)
|
|
1625
1687
|
);
|
|
1626
1688
|
|
|
1627
|
-
// src/rules/input-name.ts
|
|
1689
|
+
// src/rules/input-name/index.ts
|
|
1628
1690
|
import {
|
|
1629
1691
|
Kind as Kind6
|
|
1630
1692
|
} from "graphql";
|
|
@@ -1758,7 +1820,7 @@ Using the same name for all input parameters will make your schemas easier to co
|
|
|
1758
1820
|
}
|
|
1759
1821
|
};
|
|
1760
1822
|
|
|
1761
|
-
// src/rules/lone-executable-definition.ts
|
|
1823
|
+
// src/rules/lone-executable-definition/index.ts
|
|
1762
1824
|
import { OperationTypeNode as OperationTypeNode2 } from "graphql";
|
|
1763
1825
|
var RULE_ID2 = "lone-executable-definition", definitionTypes = ["fragment", ...Object.values(OperationTypeNode2)], schema4 = {
|
|
1764
1826
|
type: "array",
|
|
@@ -1840,8 +1902,8 @@ var RULE_ID2 = "lone-executable-definition", definitionTypes = ["fragment", ...O
|
|
|
1840
1902
|
}
|
|
1841
1903
|
};
|
|
1842
1904
|
|
|
1843
|
-
// src/rules/match-document-filename.ts
|
|
1844
|
-
import { basename, extname } from "path";
|
|
1905
|
+
// src/rules/match-document-filename/index.ts
|
|
1906
|
+
import { basename, extname } from "node:path";
|
|
1845
1907
|
import { Kind as Kind7 } from "graphql";
|
|
1846
1908
|
var MATCH_EXTENSION = "MATCH_EXTENSION", MATCH_STYLE = "MATCH_STYLE", CASE_STYLES = [
|
|
1847
1909
|
"camelCase",
|
|
@@ -2068,7 +2130,7 @@ var MATCH_EXTENSION = "MATCH_EXTENSION", MATCH_STYLE = "MATCH_STYLE", CASE_STYLE
|
|
|
2068
2130
|
}
|
|
2069
2131
|
};
|
|
2070
2132
|
|
|
2071
|
-
// src/rules/naming-convention.ts
|
|
2133
|
+
// src/rules/naming-convention/index.ts
|
|
2072
2134
|
import { Kind as Kind8 } from "graphql";
|
|
2073
2135
|
var KindToDisplayName = {
|
|
2074
2136
|
// types
|
|
@@ -2462,7 +2524,7 @@ ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join(`
|
|
|
2462
2524
|
}
|
|
2463
2525
|
};
|
|
2464
2526
|
|
|
2465
|
-
// src/rules/no-anonymous-operations.ts
|
|
2527
|
+
// src/rules/no-anonymous-operations/index.ts
|
|
2466
2528
|
import { Kind as Kind9 } from "graphql";
|
|
2467
2529
|
var RULE_ID3 = "no-anonymous-operations", rule7 = {
|
|
2468
2530
|
meta: {
|
|
@@ -2531,7 +2593,7 @@ var RULE_ID3 = "no-anonymous-operations", rule7 = {
|
|
|
2531
2593
|
}
|
|
2532
2594
|
};
|
|
2533
2595
|
|
|
2534
|
-
// src/rules/no-deprecated.ts
|
|
2596
|
+
// src/rules/no-deprecated/index.ts
|
|
2535
2597
|
import { Kind as Kind10 } from "graphql";
|
|
2536
2598
|
var RULE_ID4 = "no-deprecated", rule8 = {
|
|
2537
2599
|
meta: {
|
|
@@ -2652,7 +2714,7 @@ var RULE_ID4 = "no-deprecated", rule8 = {
|
|
|
2652
2714
|
}
|
|
2653
2715
|
};
|
|
2654
2716
|
|
|
2655
|
-
// src/rules/no-duplicate-fields.ts
|
|
2717
|
+
// src/rules/no-duplicate-fields/index.ts
|
|
2656
2718
|
import { Kind as Kind11 } from "graphql";
|
|
2657
2719
|
var RULE_ID5 = "no-duplicate-fields", rule9 = {
|
|
2658
2720
|
meta: {
|
|
@@ -2766,7 +2828,7 @@ var RULE_ID5 = "no-duplicate-fields", rule9 = {
|
|
|
2766
2828
|
}
|
|
2767
2829
|
};
|
|
2768
2830
|
|
|
2769
|
-
// src/rules/no-hashtag-description.ts
|
|
2831
|
+
// src/rules/no-hashtag-description/index.ts
|
|
2770
2832
|
import { TokenKind as TokenKind2 } from "graphql";
|
|
2771
2833
|
var RULE_ID6 = "HASHTAG_COMMENT", rule10 = {
|
|
2772
2834
|
meta: {
|
|
@@ -2869,8 +2931,8 @@ var RULE_ID6 = "HASHTAG_COMMENT", rule10 = {
|
|
|
2869
2931
|
}
|
|
2870
2932
|
};
|
|
2871
2933
|
|
|
2872
|
-
// src/rules/no-one-place-fragments.ts
|
|
2873
|
-
import { relative } from "path";
|
|
2934
|
+
// src/rules/no-one-place-fragments/index.ts
|
|
2935
|
+
import { relative } from "node:path";
|
|
2874
2936
|
import { visit as visit4 } from "graphql";
|
|
2875
2937
|
var RULE_ID7 = "no-one-place-fragments", rule11 = {
|
|
2876
2938
|
meta: {
|
|
@@ -2949,7 +3011,7 @@ var RULE_ID7 = "no-one-place-fragments", rule11 = {
|
|
|
2949
3011
|
}
|
|
2950
3012
|
};
|
|
2951
3013
|
|
|
2952
|
-
// src/rules/no-root-type.ts
|
|
3014
|
+
// src/rules/no-root-type/index.ts
|
|
2953
3015
|
var schema7 = {
|
|
2954
3016
|
type: "array",
|
|
2955
3017
|
minItems: 1,
|
|
@@ -3007,9 +3069,9 @@ var schema7 = {
|
|
|
3007
3069
|
schema: schema7
|
|
3008
3070
|
},
|
|
3009
3071
|
create(context) {
|
|
3010
|
-
let
|
|
3011
|
-
disallow.has("mutation") &&
|
|
3012
|
-
disallow.has("subscription") &&
|
|
3072
|
+
let schema16 = requireGraphQLSchemaFromContext("no-root-type", context), disallow = new Set(context.options[0].disallow), rootTypeNames = [
|
|
3073
|
+
disallow.has("mutation") && schema16.getMutationType(),
|
|
3074
|
+
disallow.has("subscription") && schema16.getSubscriptionType()
|
|
3013
3075
|
].filter(truthy).map((type) => type.name).join("|");
|
|
3014
3076
|
return rootTypeNames ? {
|
|
3015
3077
|
[`:matches(ObjectTypeDefinition, ObjectTypeExtension) > .name[value=/^(${rootTypeNames})$/]`](node) {
|
|
@@ -3029,7 +3091,7 @@ var schema7 = {
|
|
|
3029
3091
|
}
|
|
3030
3092
|
};
|
|
3031
3093
|
|
|
3032
|
-
// src/rules/no-scalar-result-type-on-mutation.ts
|
|
3094
|
+
// src/rules/no-scalar-result-type-on-mutation/index.ts
|
|
3033
3095
|
import { isScalarType, Kind as Kind12 } from "graphql";
|
|
3034
3096
|
var RULE_ID8 = "no-scalar-result-type-on-mutation", rule13 = {
|
|
3035
3097
|
meta: {
|
|
@@ -3068,13 +3130,13 @@ var RULE_ID8 = "no-scalar-result-type-on-mutation", rule13 = {
|
|
|
3068
3130
|
schema: []
|
|
3069
3131
|
},
|
|
3070
3132
|
create(context) {
|
|
3071
|
-
let
|
|
3133
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID8, context), mutationType = schema16.getMutationType();
|
|
3072
3134
|
return mutationType ? {
|
|
3073
3135
|
[[
|
|
3074
3136
|
`:matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=${mutationType.name}]`,
|
|
3075
3137
|
"> FieldDefinition > .gqlType Name"
|
|
3076
3138
|
].join(" ")](node) {
|
|
3077
|
-
let typeName = node.value, graphQLType =
|
|
3139
|
+
let typeName = node.value, graphQLType = schema16.getType(typeName);
|
|
3078
3140
|
if (isScalarType(graphQLType)) {
|
|
3079
3141
|
let fieldDef = node.parent;
|
|
3080
3142
|
for (; fieldDef.kind !== Kind12.FIELD_DEFINITION; )
|
|
@@ -3095,7 +3157,7 @@ var RULE_ID8 = "no-scalar-result-type-on-mutation", rule13 = {
|
|
|
3095
3157
|
}
|
|
3096
3158
|
};
|
|
3097
3159
|
|
|
3098
|
-
// src/rules/no-typename-prefix.ts
|
|
3160
|
+
// src/rules/no-typename-prefix/index.ts
|
|
3099
3161
|
var NO_TYPENAME_PREFIX = "NO_TYPENAME_PREFIX", rule14 = {
|
|
3100
3162
|
meta: {
|
|
3101
3163
|
type: "suggestion",
|
|
@@ -3164,7 +3226,7 @@ var NO_TYPENAME_PREFIX = "NO_TYPENAME_PREFIX", rule14 = {
|
|
|
3164
3226
|
}
|
|
3165
3227
|
};
|
|
3166
3228
|
|
|
3167
|
-
// src/rules/no-unreachable-types.ts
|
|
3229
|
+
// src/rules/no-unreachable-types/index.ts
|
|
3168
3230
|
import {
|
|
3169
3231
|
DirectiveLocation,
|
|
3170
3232
|
isInterfaceType,
|
|
@@ -3186,7 +3248,7 @@ var RULE_ID9 = "no-unreachable-types", KINDS = [
|
|
|
3186
3248
|
Kind13.UNION_TYPE_EXTENSION,
|
|
3187
3249
|
Kind13.ENUM_TYPE_DEFINITION,
|
|
3188
3250
|
Kind13.ENUM_TYPE_EXTENSION
|
|
3189
|
-
], reachableTypesCache, RequestDirectiveLocations = /* @__PURE__ */ new Set([
|
|
3251
|
+
], reachableTypesCache = new ModuleCache(), RequestDirectiveLocations = /* @__PURE__ */ new Set([
|
|
3190
3252
|
DirectiveLocation.QUERY,
|
|
3191
3253
|
DirectiveLocation.MUTATION,
|
|
3192
3254
|
DirectiveLocation.SUBSCRIPTION,
|
|
@@ -3196,17 +3258,18 @@ var RULE_ID9 = "no-unreachable-types", KINDS = [
|
|
|
3196
3258
|
DirectiveLocation.INLINE_FRAGMENT,
|
|
3197
3259
|
DirectiveLocation.VARIABLE_DEFINITION
|
|
3198
3260
|
]);
|
|
3199
|
-
function getReachableTypes(
|
|
3200
|
-
|
|
3201
|
-
|
|
3261
|
+
function getReachableTypes(schema16) {
|
|
3262
|
+
let cachedValue = reachableTypesCache.get(schema16);
|
|
3263
|
+
if (cachedValue)
|
|
3264
|
+
return cachedValue;
|
|
3202
3265
|
let reachableTypes = /* @__PURE__ */ new Set(), collect = (node) => {
|
|
3203
3266
|
let typeName = getTypeName(node);
|
|
3204
3267
|
if (reachableTypes.has(typeName))
|
|
3205
3268
|
return;
|
|
3206
3269
|
reachableTypes.add(typeName);
|
|
3207
|
-
let type =
|
|
3270
|
+
let type = schema16.getType(typeName) || schema16.getDirective(typeName);
|
|
3208
3271
|
if (isInterfaceType(type)) {
|
|
3209
|
-
let { objects, interfaces } =
|
|
3272
|
+
let { objects, interfaces } = schema16.getImplementations(type);
|
|
3210
3273
|
for (let { astNode } of [...objects, ...interfaces])
|
|
3211
3274
|
visit5(astNode, visitor);
|
|
3212
3275
|
} else type?.astNode && visit5(type.astNode, visitor);
|
|
@@ -3220,14 +3283,14 @@ function getReachableTypes(schema15) {
|
|
|
3220
3283
|
NamedType: collect
|
|
3221
3284
|
};
|
|
3222
3285
|
for (let type of [
|
|
3223
|
-
|
|
3286
|
+
schema16,
|
|
3224
3287
|
// visiting SchemaDefinition node
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3288
|
+
schema16.getQueryType(),
|
|
3289
|
+
schema16.getMutationType(),
|
|
3290
|
+
schema16.getSubscriptionType()
|
|
3228
3291
|
])
|
|
3229
3292
|
type?.astNode && visit5(type.astNode, visitor);
|
|
3230
|
-
for (let node of
|
|
3293
|
+
for (let node of schema16.getDirectives())
|
|
3231
3294
|
if (node.locations.some((location) => RequestDirectiveLocations.has(location))) {
|
|
3232
3295
|
reachableTypes.add(node.name);
|
|
3233
3296
|
for (let arg of node.args) {
|
|
@@ -3235,7 +3298,7 @@ function getReachableTypes(schema15) {
|
|
|
3235
3298
|
argTypeName && reachableTypes.add(argTypeName);
|
|
3236
3299
|
}
|
|
3237
3300
|
}
|
|
3238
|
-
return reachableTypesCache
|
|
3301
|
+
return reachableTypesCache.set(schema16, reachableTypes), reachableTypes;
|
|
3239
3302
|
}
|
|
3240
3303
|
var rule15 = {
|
|
3241
3304
|
meta: {
|
|
@@ -3288,7 +3351,7 @@ var rule15 = {
|
|
|
3288
3351
|
hasSuggestions: !0
|
|
3289
3352
|
},
|
|
3290
3353
|
create(context) {
|
|
3291
|
-
let
|
|
3354
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID9, context), reachableTypes = getReachableTypes(schema16);
|
|
3292
3355
|
return {
|
|
3293
3356
|
[`:matches(${KINDS}) > .name`](node) {
|
|
3294
3357
|
let typeName = node.value;
|
|
@@ -3314,13 +3377,107 @@ var rule15 = {
|
|
|
3314
3377
|
}
|
|
3315
3378
|
};
|
|
3316
3379
|
|
|
3317
|
-
// src/rules/no-unused-fields.ts
|
|
3380
|
+
// src/rules/no-unused-fields/index.ts
|
|
3318
3381
|
import { TypeInfo as TypeInfo2, visit as visit6, visitWithTypeInfo as visitWithTypeInfo2 } from "graphql";
|
|
3319
|
-
var RULE_ID10 = "no-unused-fields",
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3382
|
+
var RULE_ID10 = "no-unused-fields", RELAY_SCHEMA = (
|
|
3383
|
+
/* GraphQL */
|
|
3384
|
+
`
|
|
3385
|
+
# Root Query Type
|
|
3386
|
+
type Query {
|
|
3387
|
+
user: User
|
|
3388
|
+
}
|
|
3389
|
+
|
|
3390
|
+
# User Type
|
|
3391
|
+
type User {
|
|
3392
|
+
id: ID!
|
|
3393
|
+
name: String!
|
|
3394
|
+
friends(first: Int, after: String): FriendConnection!
|
|
3395
|
+
}
|
|
3396
|
+
|
|
3397
|
+
# FriendConnection Type (Relay Connection)
|
|
3398
|
+
type FriendConnection {
|
|
3399
|
+
edges: [FriendEdge]
|
|
3400
|
+
pageInfo: PageInfo!
|
|
3401
|
+
}
|
|
3402
|
+
|
|
3403
|
+
# FriendEdge Type
|
|
3404
|
+
type FriendEdge {
|
|
3405
|
+
cursor: String!
|
|
3406
|
+
node: Friend!
|
|
3407
|
+
}
|
|
3408
|
+
|
|
3409
|
+
# Friend Type
|
|
3410
|
+
type Friend {
|
|
3411
|
+
id: ID!
|
|
3412
|
+
name: String!
|
|
3413
|
+
}
|
|
3414
|
+
|
|
3415
|
+
# PageInfo Type (Relay Pagination)
|
|
3416
|
+
type PageInfo {
|
|
3417
|
+
hasPreviousPage: Boolean!
|
|
3418
|
+
hasNextPage: Boolean!
|
|
3419
|
+
startCursor: String
|
|
3420
|
+
endCursor: String
|
|
3421
|
+
}
|
|
3422
|
+
`
|
|
3423
|
+
), RELAY_QUERY = (
|
|
3424
|
+
/* GraphQL */
|
|
3425
|
+
`
|
|
3426
|
+
query {
|
|
3427
|
+
user {
|
|
3428
|
+
id
|
|
3429
|
+
name
|
|
3430
|
+
friends(first: 10) {
|
|
3431
|
+
edges {
|
|
3432
|
+
node {
|
|
3433
|
+
id
|
|
3434
|
+
name
|
|
3435
|
+
}
|
|
3436
|
+
}
|
|
3437
|
+
}
|
|
3438
|
+
}
|
|
3439
|
+
}
|
|
3440
|
+
`
|
|
3441
|
+
), RELAY_DEFAULT_IGNORED_FIELD_SELECTORS = [
|
|
3442
|
+
"[parent.name.value=PageInfo][name.value=/(endCursor|startCursor|hasNextPage|hasPreviousPage)/]",
|
|
3443
|
+
"[parent.name.value=/Edge$/][name.value=cursor]",
|
|
3444
|
+
"[parent.name.value=/Connection$/][name.value=pageInfo]"
|
|
3445
|
+
], schema8 = {
|
|
3446
|
+
type: "array",
|
|
3447
|
+
maxItems: 1,
|
|
3448
|
+
items: {
|
|
3449
|
+
type: "object",
|
|
3450
|
+
additionalProperties: !1,
|
|
3451
|
+
properties: {
|
|
3452
|
+
ignoredFieldSelectors: {
|
|
3453
|
+
type: "array",
|
|
3454
|
+
uniqueItems: !0,
|
|
3455
|
+
minItems: 1,
|
|
3456
|
+
description: [
|
|
3457
|
+
"Fields that will be ignored and are allowed to be unused.",
|
|
3458
|
+
"",
|
|
3459
|
+
"E.g. The following selector will ignore all the relay pagination fields for every connection exposed in the schema:",
|
|
3460
|
+
"```json",
|
|
3461
|
+
JSON.stringify(RELAY_DEFAULT_IGNORED_FIELD_SELECTORS, null, 2),
|
|
3462
|
+
"```",
|
|
3463
|
+
"",
|
|
3464
|
+
"> These fields are defined by ESLint [`selectors`](https://eslint.org/docs/developer-guide/selectors).",
|
|
3465
|
+
"> Paste or drop code into the editor in [ASTExplorer](https://astexplorer.net) and inspect the generated AST to compose your selector."
|
|
3466
|
+
].join(`
|
|
3467
|
+
`),
|
|
3468
|
+
items: {
|
|
3469
|
+
type: "string",
|
|
3470
|
+
pattern: "^\\[(.+)]$"
|
|
3471
|
+
}
|
|
3472
|
+
}
|
|
3473
|
+
}
|
|
3474
|
+
}
|
|
3475
|
+
}, usedFieldsCache = new ModuleCache();
|
|
3476
|
+
function getUsedFields(schema16, operations) {
|
|
3477
|
+
let cachedValue = usedFieldsCache.get(schema16);
|
|
3478
|
+
if (cachedValue)
|
|
3479
|
+
return cachedValue;
|
|
3480
|
+
let usedFields = /* @__PURE__ */ Object.create(null), typeInfo = new TypeInfo2(schema16), visitor = visitWithTypeInfo2(typeInfo, {
|
|
3324
3481
|
Field(node) {
|
|
3325
3482
|
if (!typeInfo.getFieldDef())
|
|
3326
3483
|
return !1;
|
|
@@ -3330,7 +3487,7 @@ function getUsedFields(schema15, operations) {
|
|
|
3330
3487
|
}), allDocuments = [...operations.getOperations(), ...operations.getFragments()];
|
|
3331
3488
|
for (let { document } of allDocuments)
|
|
3332
3489
|
visit6(document, visitor);
|
|
3333
|
-
return usedFieldsCache
|
|
3490
|
+
return usedFieldsCache.set(schema16, usedFields), usedFields;
|
|
3334
3491
|
}
|
|
3335
3492
|
var rule16 = {
|
|
3336
3493
|
meta: {
|
|
@@ -3392,17 +3549,34 @@ var rule16 = {
|
|
|
3392
3549
|
}
|
|
3393
3550
|
`
|
|
3394
3551
|
)
|
|
3552
|
+
},
|
|
3553
|
+
{
|
|
3554
|
+
title: "Correct (ignoring fields)",
|
|
3555
|
+
usage: [{ ignoredFieldSelectors: RELAY_DEFAULT_IGNORED_FIELD_SELECTORS }],
|
|
3556
|
+
code: (
|
|
3557
|
+
/* GraphQL */
|
|
3558
|
+
`
|
|
3559
|
+
### 1\uFE0F\u20E3 YOUR SCHEMA
|
|
3560
|
+
${RELAY_SCHEMA}
|
|
3561
|
+
|
|
3562
|
+
### 2\uFE0F\u20E3 YOUR QUERY
|
|
3563
|
+
${RELAY_QUERY}
|
|
3564
|
+
`
|
|
3565
|
+
)
|
|
3395
3566
|
}
|
|
3396
3567
|
]
|
|
3397
3568
|
},
|
|
3398
3569
|
type: "suggestion",
|
|
3399
|
-
schema:
|
|
3570
|
+
schema: schema8,
|
|
3400
3571
|
hasSuggestions: !0
|
|
3401
3572
|
},
|
|
3402
3573
|
create(context) {
|
|
3403
|
-
let
|
|
3574
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID10, context), siblingsOperations = requireSiblingsOperations(RULE_ID10, context), usedFields = getUsedFields(schema16, siblingsOperations), { ignoredFieldSelectors } = context.options[0] || {};
|
|
3404
3575
|
return {
|
|
3405
|
-
|
|
3576
|
+
[(ignoredFieldSelectors || []).reduce(
|
|
3577
|
+
(acc, selector2) => `${acc}:not(${selector2})`,
|
|
3578
|
+
"FieldDefinition"
|
|
3579
|
+
)](node) {
|
|
3406
3580
|
let fieldName = node.name.value, parentTypeName = node.parent.name.value;
|
|
3407
3581
|
usedFields[parentTypeName]?.has(fieldName) || context.report({
|
|
3408
3582
|
node: node.name,
|
|
@@ -3423,9 +3597,9 @@ var rule16 = {
|
|
|
3423
3597
|
}
|
|
3424
3598
|
};
|
|
3425
3599
|
|
|
3426
|
-
// src/rules/relay-arguments.ts
|
|
3600
|
+
// src/rules/relay-arguments/index.ts
|
|
3427
3601
|
import { isScalarType as isScalarType2, Kind as Kind14 } from "graphql";
|
|
3428
|
-
var RULE_ID11 = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS",
|
|
3602
|
+
var RULE_ID11 = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS", schema9 = {
|
|
3429
3603
|
type: "array",
|
|
3430
3604
|
maxItems: 1,
|
|
3431
3605
|
items: {
|
|
@@ -3491,10 +3665,10 @@ var RULE_ID11 = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS", sche
|
|
|
3491
3665
|
messages: {
|
|
3492
3666
|
[MISSING_ARGUMENTS]: "A field that returns a Connection type must include forward pagination arguments (`first` and `after`), backward pagination arguments (`last` and `before`), or both."
|
|
3493
3667
|
},
|
|
3494
|
-
schema:
|
|
3668
|
+
schema: schema9
|
|
3495
3669
|
},
|
|
3496
3670
|
create(context) {
|
|
3497
|
-
let
|
|
3671
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID11, context), { includeBoth = !0 } = context.options[0] || {};
|
|
3498
3672
|
return {
|
|
3499
3673
|
"FieldDefinition > .gqlType Name[value=/Connection$/]"(node) {
|
|
3500
3674
|
let fieldNode = node.parent;
|
|
@@ -3512,7 +3686,7 @@ var RULE_ID11 = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS", sche
|
|
|
3512
3686
|
}
|
|
3513
3687
|
function checkField(typeName, argumentName) {
|
|
3514
3688
|
let argument = args[argumentName], hasArgument = !!argument, type = argument;
|
|
3515
|
-
if (hasArgument && type.gqlType.kind === Kind14.NON_NULL_TYPE && (type = type.gqlType), !(hasArgument && type.gqlType.kind === Kind14.NAMED_TYPE && (type.gqlType.name.value === typeName || typeName === "String" && isScalarType2(
|
|
3689
|
+
if (hasArgument && type.gqlType.kind === Kind14.NON_NULL_TYPE && (type = type.gqlType), !(hasArgument && type.gqlType.kind === Kind14.NAMED_TYPE && (type.gqlType.name.value === typeName || typeName === "String" && isScalarType2(schema16.getType(type.gqlType.name.value))))) {
|
|
3516
3690
|
let returnType = typeName === "String" ? "String or Scalar" : typeName;
|
|
3517
3691
|
context.report({
|
|
3518
3692
|
node: (argument || fieldNode).name,
|
|
@@ -3526,7 +3700,7 @@ var RULE_ID11 = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS", sche
|
|
|
3526
3700
|
}
|
|
3527
3701
|
};
|
|
3528
3702
|
|
|
3529
|
-
// src/rules/relay-connection-types.ts
|
|
3703
|
+
// src/rules/relay-connection-types/index.ts
|
|
3530
3704
|
import { Kind as Kind15 } from "graphql";
|
|
3531
3705
|
var MUST_BE_OBJECT_TYPE = "MUST_BE_OBJECT_TYPE", MUST_CONTAIN_FIELD_EDGES = "MUST_CONTAIN_FIELD_EDGES", MUST_CONTAIN_FIELD_PAGE_INFO = "MUST_CONTAIN_FIELD_PAGE_INFO", MUST_HAVE_CONNECTION_SUFFIX = "MUST_HAVE_CONNECTION_SUFFIX", EDGES_FIELD_MUST_RETURN_LIST_TYPE = "EDGES_FIELD_MUST_RETURN_LIST_TYPE", PAGE_INFO_FIELD_MUST_RETURN_NON_NULL_TYPE = "PAGE_INFO_FIELD_MUST_RETURN_NON_NULL_TYPE", NON_OBJECT_TYPES = [
|
|
3532
3706
|
Kind15.SCALAR_TYPE_DEFINITION,
|
|
@@ -3613,7 +3787,7 @@ var MUST_BE_OBJECT_TYPE = "MUST_BE_OBJECT_TYPE", MUST_CONTAIN_FIELD_EDGES = "MUS
|
|
|
3613
3787
|
}
|
|
3614
3788
|
};
|
|
3615
3789
|
|
|
3616
|
-
// src/rules/relay-edge-types.ts
|
|
3790
|
+
// src/rules/relay-edge-types/index.ts
|
|
3617
3791
|
import {
|
|
3618
3792
|
isObjectType as isObjectType2,
|
|
3619
3793
|
isScalarType as isScalarType3,
|
|
@@ -3622,7 +3796,7 @@ import {
|
|
|
3622
3796
|
} from "graphql";
|
|
3623
3797
|
import { getDocumentNodeFromSchema } from "@graphql-tools/utils";
|
|
3624
3798
|
var RULE_ID12 = "relay-edge-types", MESSAGE_MUST_BE_OBJECT_TYPE = "MESSAGE_MUST_BE_OBJECT_TYPE", MESSAGE_MISSING_EDGE_SUFFIX = "MESSAGE_MISSING_EDGE_SUFFIX", MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE = "MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE", MESSAGE_SHOULD_IMPLEMENTS_NODE = "MESSAGE_SHOULD_IMPLEMENTS_NODE", edgeTypesCache;
|
|
3625
|
-
function getEdgeTypes(
|
|
3799
|
+
function getEdgeTypes(schema16) {
|
|
3626
3800
|
if (edgeTypesCache)
|
|
3627
3801
|
return edgeTypesCache;
|
|
3628
3802
|
let edgeTypes = /* @__PURE__ */ new Set(), visitor = {
|
|
@@ -3631,14 +3805,14 @@ function getEdgeTypes(schema15) {
|
|
|
3631
3805
|
return;
|
|
3632
3806
|
let edges = node.fields?.find((field) => field.name.value === "edges");
|
|
3633
3807
|
if (edges) {
|
|
3634
|
-
let edgesTypeName = getTypeName(edges), edgesType =
|
|
3808
|
+
let edgesTypeName = getTypeName(edges), edgesType = schema16.getType(edgesTypeName);
|
|
3635
3809
|
isObjectType2(edgesType) && edgeTypes.add(edgesTypeName);
|
|
3636
3810
|
}
|
|
3637
3811
|
}
|
|
3638
|
-
}, astNode = getDocumentNodeFromSchema(
|
|
3812
|
+
}, astNode = getDocumentNodeFromSchema(schema16);
|
|
3639
3813
|
return visit7(astNode, visitor), edgeTypesCache = edgeTypes, edgeTypesCache;
|
|
3640
3814
|
}
|
|
3641
|
-
var
|
|
3815
|
+
var schema10 = {
|
|
3642
3816
|
type: "array",
|
|
3643
3817
|
maxItems: 1,
|
|
3644
3818
|
items: {
|
|
@@ -3704,10 +3878,10 @@ var schema9 = {
|
|
|
3704
3878
|
[MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE]: "A list type should only wrap an edge type.",
|
|
3705
3879
|
[MESSAGE_SHOULD_IMPLEMENTS_NODE]: "Edge type's field `node` must implement `Node` interface."
|
|
3706
3880
|
},
|
|
3707
|
-
schema:
|
|
3881
|
+
schema: schema10
|
|
3708
3882
|
},
|
|
3709
3883
|
create(context) {
|
|
3710
|
-
let
|
|
3884
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID12, context), edgeTypes = getEdgeTypes(schema16), options = {
|
|
3711
3885
|
withEdgeSuffix: !0,
|
|
3712
3886
|
shouldImplementNode: !0,
|
|
3713
3887
|
listTypeCanWrapOnlyEdgeType: !0,
|
|
@@ -3722,7 +3896,7 @@ var schema9 = {
|
|
|
3722
3896
|
else if (!isNamedOrNonNullNamed(nodeField.gqlType))
|
|
3723
3897
|
context.report({ node: nodeField.name, message: `Field \`node\` must ${message}` });
|
|
3724
3898
|
else if (options.shouldImplementNode) {
|
|
3725
|
-
let nodeReturnTypeName = getTypeName(nodeField.gqlType.rawNode()), type =
|
|
3899
|
+
let nodeReturnTypeName = getTypeName(nodeField.gqlType.rawNode()), type = schema16.getType(nodeReturnTypeName);
|
|
3726
3900
|
if (!isObjectType2(type))
|
|
3727
3901
|
return;
|
|
3728
3902
|
type.astNode.interfaces?.some((n) => n.name.value === "Node") || context.report({ node: node.name, messageId: MESSAGE_SHOULD_IMPLEMENTS_NODE });
|
|
@@ -3737,10 +3911,10 @@ var schema9 = {
|
|
|
3737
3911
|
return;
|
|
3738
3912
|
}
|
|
3739
3913
|
let typeName = getTypeName(cursorField.rawNode());
|
|
3740
|
-
(!isNamedOrNonNullNamed(cursorField.gqlType) || typeName !== "String" && !isScalarType3(
|
|
3914
|
+
(!isNamedOrNonNullNamed(cursorField.gqlType) || typeName !== "String" && !isScalarType3(schema16.getType(typeName))) && context.report({ node: cursorField.name, message: `Field \`cursor\` must ${message}` });
|
|
3741
3915
|
}, listeners = {
|
|
3742
3916
|
":matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=/Connection$/] > FieldDefinition[name.value=edges] > .gqlType Name"(node) {
|
|
3743
|
-
let type =
|
|
3917
|
+
let type = schema16.getType(node.value);
|
|
3744
3918
|
isObjectType2(type) || context.report({ node, messageId: MESSAGE_MUST_BE_OBJECT_TYPE });
|
|
3745
3919
|
},
|
|
3746
3920
|
":matches(ObjectTypeDefinition, ObjectTypeExtension)"(node) {
|
|
@@ -3757,7 +3931,7 @@ var schema9 = {
|
|
|
3757
3931
|
}
|
|
3758
3932
|
};
|
|
3759
3933
|
|
|
3760
|
-
// src/rules/relay-page-info.ts
|
|
3934
|
+
// src/rules/relay-page-info/index.ts
|
|
3761
3935
|
import { isScalarType as isScalarType4, Kind as Kind17 } from "graphql";
|
|
3762
3936
|
var RULE_ID13 = "relay-page-info", MESSAGE_MUST_EXIST = "MESSAGE_MUST_EXIST", MESSAGE_MUST_BE_OBJECT_TYPE2 = "MESSAGE_MUST_BE_OBJECT_TYPE", notPageInfoTypesSelector = `:matches(${NON_OBJECT_TYPES})[name.value=PageInfo] > .name`, hasPageInfoChecked = !1, rule20 = {
|
|
3763
3937
|
meta: {
|
|
@@ -3799,8 +3973,8 @@ var RULE_ID13 = "relay-page-info", MESSAGE_MUST_EXIST = "MESSAGE_MUST_EXIST", ME
|
|
|
3799
3973
|
schema: []
|
|
3800
3974
|
},
|
|
3801
3975
|
create(context) {
|
|
3802
|
-
let
|
|
3803
|
-
return hasPageInfoChecked || (
|
|
3976
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID13, context);
|
|
3977
|
+
return hasPageInfoChecked || (schema16.getType("PageInfo") || context.report({
|
|
3804
3978
|
loc: REPORT_ON_FIRST_CHARACTER,
|
|
3805
3979
|
messageId: MESSAGE_MUST_EXIST
|
|
3806
3980
|
}), hasPageInfoChecked = !0), {
|
|
@@ -3814,7 +3988,7 @@ var RULE_ID13 = "relay-page-info", MESSAGE_MUST_EXIST = "MESSAGE_MUST_EXIST", ME
|
|
|
3814
3988
|
let field = fieldMap[fieldName], isAllowedType = !1;
|
|
3815
3989
|
if (field) {
|
|
3816
3990
|
let type = field.gqlType;
|
|
3817
|
-
typeName === "Boolean" ? isAllowedType = type.kind === Kind17.NON_NULL_TYPE && type.gqlType.kind === Kind17.NAMED_TYPE && type.gqlType.name.value === "Boolean" : type.kind === Kind17.NAMED_TYPE && (isAllowedType = type.name.value === "String" || isScalarType4(
|
|
3991
|
+
typeName === "Boolean" ? isAllowedType = type.kind === Kind17.NON_NULL_TYPE && type.gqlType.kind === Kind17.NAMED_TYPE && type.gqlType.name.value === "Boolean" : type.kind === Kind17.NAMED_TYPE && (isAllowedType = type.name.value === "String" || isScalarType4(schema16.getType(type.name.value)));
|
|
3818
3992
|
}
|
|
3819
3993
|
if (!isAllowedType) {
|
|
3820
3994
|
let returnType = typeName === "Boolean" ? "non-null Boolean" : "either String or Scalar, which can be null if there are no results";
|
|
@@ -3830,8 +4004,8 @@ var RULE_ID13 = "relay-page-info", MESSAGE_MUST_EXIST = "MESSAGE_MUST_EXIST", ME
|
|
|
3830
4004
|
}
|
|
3831
4005
|
};
|
|
3832
4006
|
|
|
3833
|
-
// src/rules/require-deprecation-date.ts
|
|
3834
|
-
var DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/, MESSAGE_REQUIRE_DATE = "MESSAGE_REQUIRE_DATE", MESSAGE_INVALID_FORMAT = "MESSAGE_INVALID_FORMAT", MESSAGE_INVALID_DATE = "MESSAGE_INVALID_DATE", MESSAGE_CAN_BE_REMOVED = "MESSAGE_CAN_BE_REMOVED",
|
|
4007
|
+
// src/rules/require-deprecation-date/index.ts
|
|
4008
|
+
var DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/, MESSAGE_REQUIRE_DATE = "MESSAGE_REQUIRE_DATE", MESSAGE_INVALID_FORMAT = "MESSAGE_INVALID_FORMAT", MESSAGE_INVALID_DATE = "MESSAGE_INVALID_DATE", MESSAGE_CAN_BE_REMOVED = "MESSAGE_CAN_BE_REMOVED", schema11 = {
|
|
3835
4009
|
type: "array",
|
|
3836
4010
|
maxItems: 1,
|
|
3837
4011
|
items: {
|
|
@@ -3897,7 +4071,7 @@ var DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/, MESSAGE_REQUIRE_DATE = "MESSAGE_REQUIR
|
|
|
3897
4071
|
[MESSAGE_INVALID_DATE]: 'Invalid "{{ deletionDate }}" deletion date for {{ nodeName }}',
|
|
3898
4072
|
[MESSAGE_CAN_BE_REMOVED]: "{{ nodeName }} \u0441an be removed"
|
|
3899
4073
|
},
|
|
3900
|
-
schema:
|
|
4074
|
+
schema: schema11
|
|
3901
4075
|
},
|
|
3902
4076
|
create(context) {
|
|
3903
4077
|
return {
|
|
@@ -3955,7 +4129,7 @@ var DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/, MESSAGE_REQUIRE_DATE = "MESSAGE_REQUIR
|
|
|
3955
4129
|
}
|
|
3956
4130
|
};
|
|
3957
4131
|
|
|
3958
|
-
// src/rules/require-deprecation-reason.ts
|
|
4132
|
+
// src/rules/require-deprecation-reason/index.ts
|
|
3959
4133
|
var rule22 = {
|
|
3960
4134
|
meta: {
|
|
3961
4135
|
docs: {
|
|
@@ -4017,7 +4191,7 @@ var rule22 = {
|
|
|
4017
4191
|
}
|
|
4018
4192
|
};
|
|
4019
4193
|
|
|
4020
|
-
// src/rules/require-description.ts
|
|
4194
|
+
// src/rules/require-description/index.ts
|
|
4021
4195
|
import { Kind as Kind18, TokenKind as TokenKind3 } from "graphql";
|
|
4022
4196
|
import { getRootTypeNames } from "@graphql-tools/utils";
|
|
4023
4197
|
var RULE_ID14 = "require-description", ALLOWED_KINDS2 = [
|
|
@@ -4027,7 +4201,7 @@ var RULE_ID14 = "require-description", ALLOWED_KINDS2 = [
|
|
|
4027
4201
|
Kind18.INPUT_VALUE_DEFINITION,
|
|
4028
4202
|
Kind18.ENUM_VALUE_DEFINITION,
|
|
4029
4203
|
Kind18.OPERATION_DEFINITION
|
|
4030
|
-
],
|
|
4204
|
+
], schema12 = {
|
|
4031
4205
|
type: "array",
|
|
4032
4206
|
minItems: 1,
|
|
4033
4207
|
maxItems: 1,
|
|
@@ -4135,14 +4309,14 @@ ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join(`
|
|
|
4135
4309
|
messages: {
|
|
4136
4310
|
[RULE_ID14]: "Description is required for {{ nodeName }}"
|
|
4137
4311
|
},
|
|
4138
|
-
schema:
|
|
4312
|
+
schema: schema12
|
|
4139
4313
|
},
|
|
4140
4314
|
create(context) {
|
|
4141
4315
|
let { types, rootField, ...restOptions } = context.options[0] || {}, kinds = new Set(types ? TYPES_KINDS : []);
|
|
4142
4316
|
for (let [kind, isEnabled] of Object.entries(restOptions))
|
|
4143
4317
|
isEnabled ? kinds.add(kind) : kinds.delete(kind);
|
|
4144
4318
|
if (rootField) {
|
|
4145
|
-
let
|
|
4319
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID14, context), rootTypeNames = getRootTypeNames(schema16);
|
|
4146
4320
|
kinds.add(
|
|
4147
4321
|
`:matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=/^(${[
|
|
4148
4322
|
...rootTypeNames
|
|
@@ -4172,7 +4346,7 @@ ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join(`
|
|
|
4172
4346
|
}
|
|
4173
4347
|
};
|
|
4174
4348
|
|
|
4175
|
-
// src/rules/require-field-of-type-query-in-mutation-result.ts
|
|
4349
|
+
// src/rules/require-field-of-type-query-in-mutation-result/index.ts
|
|
4176
4350
|
import { isObjectType as isObjectType3 } from "graphql";
|
|
4177
4351
|
var RULE_ID15 = "require-field-of-type-query-in-mutation-result", rule24 = {
|
|
4178
4352
|
meta: {
|
|
@@ -4221,10 +4395,10 @@ var RULE_ID15 = "require-field-of-type-query-in-mutation-result", rule24 = {
|
|
|
4221
4395
|
schema: []
|
|
4222
4396
|
},
|
|
4223
4397
|
create(context) {
|
|
4224
|
-
let
|
|
4398
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID15, context), mutationType = schema16.getMutationType(), queryType = schema16.getQueryType();
|
|
4225
4399
|
return !mutationType || !queryType ? {} : {
|
|
4226
4400
|
[`:matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=${mutationType.name}] > FieldDefinition > .gqlType Name`](node) {
|
|
4227
|
-
let typeName = node.value, graphQLType =
|
|
4401
|
+
let typeName = node.value, graphQLType = schema16.getType(typeName);
|
|
4228
4402
|
if (isObjectType3(graphQLType)) {
|
|
4229
4403
|
let { fields } = graphQLType.astNode;
|
|
4230
4404
|
fields?.some((field) => getTypeName(field) === queryType.name) || context.report({
|
|
@@ -4237,8 +4411,8 @@ var RULE_ID15 = "require-field-of-type-query-in-mutation-result", rule24 = {
|
|
|
4237
4411
|
}
|
|
4238
4412
|
};
|
|
4239
4413
|
|
|
4240
|
-
// src/rules/require-import-fragment.ts
|
|
4241
|
-
import path from "path";
|
|
4414
|
+
// src/rules/require-import-fragment/index.ts
|
|
4415
|
+
import path from "node:path";
|
|
4242
4416
|
var RULE_ID16 = "require-import-fragment", SUGGESTION_ID = "add-import-expression", rule25 = {
|
|
4243
4417
|
meta: {
|
|
4244
4418
|
type: "suggestion",
|
|
@@ -4323,7 +4497,7 @@ var RULE_ID16 = "require-import-fragment", SUGGESTION_ID = "add-import-expressio
|
|
|
4323
4497
|
).test(comment.value)) continue;
|
|
4324
4498
|
let extractedImportPath = comment.value.match(/(["'])((?:\1|.)*?)\1/)?.[2];
|
|
4325
4499
|
if (!extractedImportPath) continue;
|
|
4326
|
-
let importPath = path.join(
|
|
4500
|
+
let importPath = path.join(filePath, "..", extractedImportPath);
|
|
4327
4501
|
if (fragmentsFromSiblings.some(
|
|
4328
4502
|
(source) => source.filePath === importPath
|
|
4329
4503
|
)) return;
|
|
@@ -4331,7 +4505,12 @@ var RULE_ID16 = "require-import-fragment", SUGGESTION_ID = "add-import-expressio
|
|
|
4331
4505
|
if (fragmentsFromSiblings.some(
|
|
4332
4506
|
(source) => source.filePath === filePath
|
|
4333
4507
|
)) return;
|
|
4334
|
-
let suggestedFilePaths = fragmentsFromSiblings.length ? fragmentsFromSiblings.map(
|
|
4508
|
+
let suggestedFilePaths = fragmentsFromSiblings.length ? fragmentsFromSiblings.map(
|
|
4509
|
+
(o) => (
|
|
4510
|
+
// Use always forward slash for suggested import path
|
|
4511
|
+
slash(path.relative(path.dirname(filePath), o.filePath))
|
|
4512
|
+
)
|
|
4513
|
+
) : ["CHANGE_ME.graphql"];
|
|
4335
4514
|
context.report({
|
|
4336
4515
|
node,
|
|
4337
4516
|
messageId: RULE_ID16,
|
|
@@ -4351,7 +4530,7 @@ var RULE_ID16 = "require-import-fragment", SUGGESTION_ID = "add-import-expressio
|
|
|
4351
4530
|
}
|
|
4352
4531
|
};
|
|
4353
4532
|
|
|
4354
|
-
// src/rules/require-nullable-fields-with-oneof.ts
|
|
4533
|
+
// src/rules/require-nullable-fields-with-oneof/index.ts
|
|
4355
4534
|
import { Kind as Kind19 } from "graphql";
|
|
4356
4535
|
var RULE_ID17 = "require-nullable-fields-with-oneof", rule26 = {
|
|
4357
4536
|
meta: {
|
|
@@ -4410,7 +4589,7 @@ var RULE_ID17 = "require-nullable-fields-with-oneof", rule26 = {
|
|
|
4410
4589
|
}
|
|
4411
4590
|
};
|
|
4412
4591
|
|
|
4413
|
-
// src/rules/require-nullable-result-in-root.ts
|
|
4592
|
+
// src/rules/require-nullable-result-in-root/index.ts
|
|
4414
4593
|
import { Kind as Kind20 } from "graphql";
|
|
4415
4594
|
var RULE_ID18 = "require-nullable-result-in-root", rule27 = {
|
|
4416
4595
|
meta: {
|
|
@@ -4454,8 +4633,8 @@ var RULE_ID18 = "require-nullable-result-in-root", rule27 = {
|
|
|
4454
4633
|
schema: []
|
|
4455
4634
|
},
|
|
4456
4635
|
create(context) {
|
|
4457
|
-
let
|
|
4458
|
-
[
|
|
4636
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID18, context), rootTypeNames = new Set(
|
|
4637
|
+
[schema16.getQueryType(), schema16.getMutationType()].filter(truthy).map((type) => type.name)
|
|
4459
4638
|
), sourceCode = context.getSourceCode();
|
|
4460
4639
|
return {
|
|
4461
4640
|
"ObjectTypeDefinition,ObjectTypeExtension"(node) {
|
|
@@ -4463,7 +4642,7 @@ var RULE_ID18 = "require-nullable-result-in-root", rule27 = {
|
|
|
4463
4642
|
for (let field of node.fields || []) {
|
|
4464
4643
|
if (field.gqlType.type !== Kind20.NON_NULL_TYPE || field.gqlType.gqlType.type !== Kind20.NAMED_TYPE)
|
|
4465
4644
|
continue;
|
|
4466
|
-
let name = field.gqlType.gqlType.name.value, type =
|
|
4645
|
+
let name = field.gqlType.gqlType.name.value, type = schema16.getType(name), resultType = type?.astNode ? getNodeName(type.astNode) : type?.name;
|
|
4467
4646
|
context.report({
|
|
4468
4647
|
node: field.gqlType,
|
|
4469
4648
|
messageId: RULE_ID18,
|
|
@@ -4487,7 +4666,7 @@ var RULE_ID18 = "require-nullable-result-in-root", rule27 = {
|
|
|
4487
4666
|
}
|
|
4488
4667
|
};
|
|
4489
4668
|
|
|
4490
|
-
// src/rules/require-selections.ts
|
|
4669
|
+
// src/rules/require-selections/index.ts
|
|
4491
4670
|
import {
|
|
4492
4671
|
GraphQLInterfaceType,
|
|
4493
4672
|
GraphQLObjectType,
|
|
@@ -4498,7 +4677,7 @@ import {
|
|
|
4498
4677
|
visitWithTypeInfo as visitWithTypeInfo3
|
|
4499
4678
|
} from "graphql";
|
|
4500
4679
|
import { asArray } from "@graphql-tools/utils";
|
|
4501
|
-
var RULE_ID19 = "require-selections", DEFAULT_ID_FIELD_NAME = "id",
|
|
4680
|
+
var RULE_ID19 = "require-selections", DEFAULT_ID_FIELD_NAME = "id", schema13 = {
|
|
4502
4681
|
definitions: {
|
|
4503
4682
|
asString: {
|
|
4504
4683
|
type: "string"
|
|
@@ -4583,10 +4762,10 @@ var RULE_ID19 = "require-selections", DEFAULT_ID_FIELD_NAME = "id", schema12 = {
|
|
|
4583
4762
|
[RULE_ID19]: `Field{{ pluralSuffix }} {{ fieldName }} must be selected when it's available on a type.
|
|
4584
4763
|
Include it in your selection set{{ addition }}.`
|
|
4585
4764
|
},
|
|
4586
|
-
schema:
|
|
4765
|
+
schema: schema13
|
|
4587
4766
|
},
|
|
4588
4767
|
create(context) {
|
|
4589
|
-
let
|
|
4768
|
+
let schema16 = requireGraphQLSchemaFromContext(RULE_ID19, context), siblings = requireSiblingsOperations(RULE_ID19, context), { fieldName = DEFAULT_ID_FIELD_NAME } = context.options[0] || {}, idNames = asArray(fieldName), selector = "OperationDefinition SelectionSet[parent.kind!=/(^OperationDefinition|InlineFragment)$/]", typeInfo = new TypeInfo3(schema16);
|
|
4590
4769
|
function checkFragments(node) {
|
|
4591
4770
|
for (let selection of node.selections) {
|
|
4592
4771
|
if (selection.kind !== Kind21.FRAGMENT_SPREAD)
|
|
@@ -4613,13 +4792,19 @@ Include it in your selection set{{ addition }}.`
|
|
|
4613
4792
|
let rawType = getBaseType(type);
|
|
4614
4793
|
if (rawType instanceof GraphQLObjectType || rawType instanceof GraphQLInterfaceType)
|
|
4615
4794
|
checkFields(rawType);
|
|
4616
|
-
else if (rawType instanceof GraphQLUnionType)
|
|
4617
|
-
for (let selection of node.selections)
|
|
4795
|
+
else if (rawType instanceof GraphQLUnionType)
|
|
4796
|
+
for (let selection of node.selections) {
|
|
4797
|
+
let types = rawType.getTypes();
|
|
4618
4798
|
if (selection.kind === Kind21.INLINE_FRAGMENT) {
|
|
4619
|
-
let t =
|
|
4799
|
+
let t = types.find((t2) => t2.name === selection.typeCondition.name.value);
|
|
4620
4800
|
t && checkFields(t);
|
|
4801
|
+
} else if (selection.kind === Kind21.FRAGMENT_SPREAD) {
|
|
4802
|
+
let [foundSpread] = siblings.getFragment(selection.name.value);
|
|
4803
|
+
if (!foundSpread) return;
|
|
4804
|
+
let fragmentSpread = foundSpread.document, t = fragmentSpread.typeCondition.name.value === rawType.name ? rawType : types.find((t2) => t2.name === fragmentSpread.typeCondition.name.value);
|
|
4805
|
+
checkedFragmentSpreads.add(fragmentSpread.name.value), checkSelections(fragmentSpread.selectionSet, t, loc, parent, checkedFragmentSpreads);
|
|
4621
4806
|
}
|
|
4622
|
-
|
|
4807
|
+
}
|
|
4623
4808
|
function checkFields(rawType2) {
|
|
4624
4809
|
let fields = rawType2.getFields();
|
|
4625
4810
|
if (!idNames.some((name) => fields[name]))
|
|
@@ -4672,7 +4857,7 @@ Include it in your selection set{{ addition }}.`
|
|
|
4672
4857
|
}
|
|
4673
4858
|
};
|
|
4674
4859
|
|
|
4675
|
-
// src/rules/require-type-pattern-with-oneof.ts
|
|
4860
|
+
// src/rules/require-type-pattern-with-oneof/index.ts
|
|
4676
4861
|
var RULE_ID20 = "require-type-pattern-with-oneof", rule29 = {
|
|
4677
4862
|
meta: {
|
|
4678
4863
|
type: "suggestion",
|
|
@@ -4732,10 +4917,10 @@ var RULE_ID20 = "require-type-pattern-with-oneof", rule29 = {
|
|
|
4732
4917
|
}
|
|
4733
4918
|
};
|
|
4734
4919
|
|
|
4735
|
-
// src/rules/selection-set-depth.ts
|
|
4920
|
+
// src/rules/selection-set-depth/index.ts
|
|
4736
4921
|
import { Kind as Kind22 } from "graphql";
|
|
4737
4922
|
import depthLimit from "graphql-depth-limit";
|
|
4738
|
-
var RULE_ID21 = "selection-set-depth",
|
|
4923
|
+
var RULE_ID21 = "selection-set-depth", schema14 = {
|
|
4739
4924
|
type: "array",
|
|
4740
4925
|
minItems: 1,
|
|
4741
4926
|
maxItems: 1,
|
|
@@ -4803,7 +4988,7 @@ var RULE_ID21 = "selection-set-depth", schema13 = {
|
|
|
4803
4988
|
recommended: !0,
|
|
4804
4989
|
configOptions: [{ maxDepth: 7 }]
|
|
4805
4990
|
},
|
|
4806
|
-
schema:
|
|
4991
|
+
schema: schema14
|
|
4807
4992
|
},
|
|
4808
4993
|
create(context) {
|
|
4809
4994
|
let siblings = null;
|
|
@@ -4825,7 +5010,7 @@ var RULE_ID21 = "selection-set-depth", schema13 = {
|
|
|
4825
5010
|
checkFn({
|
|
4826
5011
|
getDocument: () => document,
|
|
4827
5012
|
reportError(error) {
|
|
4828
|
-
let { line, column } = error.locations[0], token = context.getAncestors()[0].tokens.find(
|
|
5013
|
+
let { line, column } = error.locations[0], token = context.sourceCode.getAncestors(node)[0].tokens.find(
|
|
4829
5014
|
(token2) => token2.loc.start.line === line && token2.loc.start.column === column - 1
|
|
4830
5015
|
);
|
|
4831
5016
|
context.report({
|
|
@@ -4862,9 +5047,9 @@ var RULE_ID21 = "selection-set-depth", schema13 = {
|
|
|
4862
5047
|
}
|
|
4863
5048
|
};
|
|
4864
5049
|
|
|
4865
|
-
// src/rules/strict-id-in-types.ts
|
|
5050
|
+
// src/rules/strict-id-in-types/index.ts
|
|
4866
5051
|
import { Kind as Kind23 } from "graphql";
|
|
4867
|
-
var RULE_ID22 = "strict-id-in-types",
|
|
5052
|
+
var RULE_ID22 = "strict-id-in-types", schema15 = {
|
|
4868
5053
|
type: "array",
|
|
4869
5054
|
maxItems: 1,
|
|
4870
5055
|
items: {
|
|
@@ -4972,7 +5157,7 @@ var RULE_ID22 = "strict-id-in-types", schema14 = {
|
|
|
4972
5157
|
}
|
|
4973
5158
|
]
|
|
4974
5159
|
},
|
|
4975
|
-
schema:
|
|
5160
|
+
schema: schema15
|
|
4976
5161
|
},
|
|
4977
5162
|
create(context) {
|
|
4978
5163
|
let options = {
|
|
@@ -4980,12 +5165,12 @@ var RULE_ID22 = "strict-id-in-types", schema14 = {
|
|
|
4980
5165
|
acceptedIdTypes: ["ID"],
|
|
4981
5166
|
exceptions: {},
|
|
4982
5167
|
...context.options[0]
|
|
4983
|
-
},
|
|
5168
|
+
}, schema16 = requireGraphQLSchemaFromContext(RULE_ID22, context);
|
|
4984
5169
|
return {
|
|
4985
5170
|
[`ObjectTypeDefinition[name.value!=/^(${[
|
|
4986
|
-
|
|
4987
|
-
|
|
4988
|
-
|
|
5171
|
+
schema16.getQueryType(),
|
|
5172
|
+
schema16.getMutationType(),
|
|
5173
|
+
schema16.getSubscriptionType()
|
|
4989
5174
|
].filter(truthy).map((type) => type.name).join("|")})$/]`](node) {
|
|
4990
5175
|
let typeName = node.name.value;
|
|
4991
5176
|
if (options.exceptions.types?.includes(typeName) || options.exceptions.suffixes?.some((suffix) => typeName.endsWith(suffix)))
|
|
@@ -5007,7 +5192,7 @@ Accepted type${pluralTypesSuffix}: ${englishJoinWords(options.acceptedIdTypes)}.
|
|
|
5007
5192
|
}
|
|
5008
5193
|
};
|
|
5009
5194
|
|
|
5010
|
-
// src/rules/unique-enum-value-names.ts
|
|
5195
|
+
// src/rules/unique-enum-value-names/index.ts
|
|
5011
5196
|
import { Kind as Kind24 } from "graphql";
|
|
5012
5197
|
var rule32 = {
|
|
5013
5198
|
meta: {
|
|
@@ -5076,12 +5261,12 @@ var rule32 = {
|
|
|
5076
5261
|
}
|
|
5077
5262
|
};
|
|
5078
5263
|
|
|
5079
|
-
// src/rules/unique-fragment-name.ts
|
|
5080
|
-
import { relative as relative2 } from "path";
|
|
5264
|
+
// src/rules/unique-fragment-name/index.ts
|
|
5265
|
+
import { relative as relative2 } from "node:path";
|
|
5081
5266
|
import { Kind as Kind25 } from "graphql";
|
|
5082
5267
|
var RULE_ID23 = "unique-fragment-name", checkNode = (context, node, ruleId) => {
|
|
5083
5268
|
let documentName = node.name.value, siblings = requireSiblingsOperations(ruleId, context), siblingDocuments = node.kind === Kind25.FRAGMENT_DEFINITION ? siblings.getFragment(documentName) : siblings.getOperation(documentName), filepath = context.filename, conflictingDocuments = siblingDocuments.filter((f) => {
|
|
5084
|
-
let isSameName = f.document.name?.value === documentName, isSamePath =
|
|
5269
|
+
let isSameName = f.document.name?.value === documentName, isSamePath = slash(f.filePath) === slash(filepath);
|
|
5085
5270
|
return isSameName && !isSamePath;
|
|
5086
5271
|
});
|
|
5087
5272
|
conflictingDocuments.length > 0 && context.report({
|
|
@@ -5159,7 +5344,7 @@ var RULE_ID23 = "unique-fragment-name", checkNode = (context, node, ruleId) => {
|
|
|
5159
5344
|
}
|
|
5160
5345
|
};
|
|
5161
5346
|
|
|
5162
|
-
// src/rules/unique-operation-name.ts
|
|
5347
|
+
// src/rules/unique-operation-name/index.ts
|
|
5163
5348
|
var RULE_ID24 = "unique-operation-name", rule34 = {
|
|
5164
5349
|
meta: {
|
|
5165
5350
|
type: "suggestion",
|
|
@@ -5269,50 +5454,36 @@ var rules = {
|
|
|
5269
5454
|
};
|
|
5270
5455
|
|
|
5271
5456
|
// src/configs/index.ts
|
|
5272
|
-
var import_operations_all = __toESM(require_operations_all()), import_operations_recommended = __toESM(require_operations_recommended()), import_schema_all = __toESM(require_schema_all()), import_schema_recommended = __toESM(require_schema_recommended()), import_schema_relay = __toESM(require_schema_relay()), configs = {
|
|
5457
|
+
var import_operations_all = __toESM(require_operations_all(), 1), import_operations_recommended = __toESM(require_operations_recommended(), 1), import_schema_all = __toESM(require_schema_all(), 1), import_schema_recommended = __toESM(require_schema_recommended(), 1), import_schema_relay = __toESM(require_schema_relay(), 1), configs = {
|
|
5273
5458
|
"schema-recommended": import_schema_recommended.default,
|
|
5274
5459
|
"schema-all": import_schema_all.default,
|
|
5275
5460
|
"schema-relay": import_schema_relay.default,
|
|
5276
5461
|
"operations-recommended": import_operations_recommended.default,
|
|
5277
|
-
"operations-all": import_operations_all.default
|
|
5278
|
-
|
|
5279
|
-
|
|
5280
|
-
|
|
5281
|
-
|
|
5282
|
-
parser: { parseForESLint }
|
|
5283
|
-
}, flatConfigs = {
|
|
5284
|
-
"operations-all": {
|
|
5285
|
-
languageOptions,
|
|
5462
|
+
"operations-all": import_operations_all.default,
|
|
5463
|
+
"flat/schema-recommended": {
|
|
5464
|
+
rules: import_schema_recommended.default.rules
|
|
5465
|
+
},
|
|
5466
|
+
"flat/schema-all": {
|
|
5286
5467
|
rules: {
|
|
5287
|
-
...
|
|
5288
|
-
...
|
|
5468
|
+
...import_schema_recommended.default.rules,
|
|
5469
|
+
...import_schema_all.default.rules
|
|
5289
5470
|
}
|
|
5290
5471
|
},
|
|
5291
|
-
"
|
|
5292
|
-
|
|
5293
|
-
rules: configs["operations-recommended"].rules
|
|
5472
|
+
"flat/schema-relay": {
|
|
5473
|
+
rules: import_schema_relay.default.rules
|
|
5294
5474
|
},
|
|
5295
|
-
"
|
|
5296
|
-
|
|
5297
|
-
rules: configs["schema-relay"].rules
|
|
5475
|
+
"flat/operations-recommended": {
|
|
5476
|
+
rules: import_operations_recommended.default.rules
|
|
5298
5477
|
},
|
|
5299
|
-
"
|
|
5300
|
-
languageOptions,
|
|
5478
|
+
"flat/operations-all": {
|
|
5301
5479
|
rules: {
|
|
5302
|
-
...
|
|
5303
|
-
...
|
|
5480
|
+
...import_operations_recommended.default.rules,
|
|
5481
|
+
...import_operations_all.default.rules
|
|
5304
5482
|
}
|
|
5305
|
-
},
|
|
5306
|
-
"schema-recommended": {
|
|
5307
|
-
languageOptions,
|
|
5308
|
-
rules: configs["schema-recommended"].rules
|
|
5309
5483
|
}
|
|
5310
5484
|
};
|
|
5311
5485
|
export {
|
|
5312
5486
|
configs,
|
|
5313
|
-
|
|
5314
|
-
parseForESLint,
|
|
5315
|
-
requireGraphQLSchemaFromContext,
|
|
5316
|
-
requireSiblingsOperations,
|
|
5487
|
+
parser,
|
|
5317
5488
|
rules
|
|
5318
5489
|
};
|