@graphql-eslint/eslint-plugin 3.14.0-alpha-20221222211539-5e993f5 → 3.14.0-alpha-20221223011700-eed94bd
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/cjs/configs/index.js +10 -10
- package/cjs/documents.js +5 -5
- package/cjs/estree-converter/converter.js +2 -2
- package/cjs/estree-converter/index.js +3 -3
- package/cjs/estree-converter/utils.js +2 -2
- package/cjs/flat-configs.js +36 -0
- package/cjs/index.js +16 -14
- package/cjs/parser.js +13 -13
- package/cjs/processor.js +2 -2
- package/cjs/rules/alphabetize.js +7 -7
- package/cjs/rules/graphql-js-validation.js +9 -9
- package/cjs/rules/index.js +66 -66
- package/cjs/rules/lone-executable-definition.js +4 -4
- package/cjs/rules/match-document-filename.js +4 -4
- package/cjs/rules/naming-convention.js +6 -6
- package/cjs/rules/no-anonymous-operations.js +2 -2
- package/cjs/rules/no-deprecated.js +2 -2
- package/cjs/rules/no-one-place-fragments.js +3 -4
- package/cjs/rules/no-root-type.js +3 -3
- package/cjs/rules/no-scalar-result-type-on-mutation.js +2 -2
- package/cjs/rules/no-unreachable-types.js +3 -3
- package/cjs/rules/no-unused-fields.js +3 -3
- package/cjs/rules/relay-arguments.js +2 -2
- package/cjs/rules/relay-edge-types.js +6 -6
- package/cjs/rules/relay-page-info.js +5 -5
- package/cjs/rules/require-deprecation-date.js +2 -2
- package/cjs/rules/require-deprecation-reason.js +2 -2
- package/cjs/rules/require-description.js +8 -8
- package/cjs/rules/require-field-of-type-query-in-mutation-result.js +3 -3
- package/cjs/rules/require-id-when-available.js +8 -8
- package/cjs/rules/selection-set-depth.js +5 -5
- package/cjs/rules/strict-id-in-types.js +7 -7
- package/cjs/rules/unique-fragment-name.js +4 -4
- package/cjs/rules/unique-operation-name.js +2 -2
- package/cjs/schema.js +2 -2
- package/esm/cache.js +25 -0
- package/esm/configs/base.js +4 -0
- package/esm/configs/index.js +12 -0
- package/esm/configs/operations-all.js +29 -0
- package/esm/configs/operations-recommended.js +53 -0
- package/esm/configs/relay.js +9 -0
- package/esm/configs/schema-all.js +22 -0
- package/esm/configs/schema-recommended.js +49 -0
- package/esm/documents.js +144 -0
- package/esm/estree-converter/converter.js +58 -0
- package/esm/estree-converter/index.js +3 -0
- package/esm/estree-converter/types.js +1 -0
- package/esm/estree-converter/utils.js +102 -0
- package/esm/flat-configs.js +33 -0
- package/esm/graphql-config.js +49 -0
- package/esm/index.js +9 -0
- package/esm/package.json +1 -0
- package/esm/parser.js +56 -0
- package/esm/processor.js +75 -0
- package/esm/rules/alphabetize.js +344 -0
- package/esm/rules/description-style.js +75 -0
- package/esm/rules/graphql-js-validation.js +498 -0
- package/esm/rules/index.js +71 -0
- package/esm/rules/input-name.js +133 -0
- package/esm/rules/lone-executable-definition.js +85 -0
- package/esm/rules/match-document-filename.js +232 -0
- package/esm/rules/naming-convention.js +307 -0
- package/esm/rules/no-anonymous-operations.js +64 -0
- package/esm/rules/no-case-insensitive-enum-values-duplicates.js +58 -0
- package/esm/rules/no-deprecated.js +121 -0
- package/esm/rules/no-duplicate-fields.js +109 -0
- package/esm/rules/no-hashtag-description.js +86 -0
- package/esm/rules/no-one-place-fragments.js +80 -0
- package/esm/rules/no-root-type.js +83 -0
- package/esm/rules/no-scalar-result-type-on-mutation.js +63 -0
- package/esm/rules/no-typename-prefix.js +62 -0
- package/esm/rules/no-unreachable-types.js +154 -0
- package/esm/rules/no-unused-fields.js +127 -0
- package/esm/rules/relay-arguments.js +118 -0
- package/esm/rules/relay-connection-types.js +104 -0
- package/esm/rules/relay-edge-types.js +186 -0
- package/esm/rules/relay-page-info.js +97 -0
- package/esm/rules/require-deprecation-date.js +120 -0
- package/esm/rules/require-deprecation-reason.js +53 -0
- package/esm/rules/require-description.js +190 -0
- package/esm/rules/require-field-of-type-query-in-mutation-result.js +69 -0
- package/esm/rules/require-id-when-available.js +196 -0
- package/esm/rules/require-nullable-fields-with-oneof.js +58 -0
- package/esm/rules/require-type-pattern-with-oneof.js +57 -0
- package/esm/rules/selection-set-depth.js +131 -0
- package/esm/rules/strict-id-in-types.js +159 -0
- package/esm/rules/unique-fragment-name.js +86 -0
- package/esm/rules/unique-operation-name.js +62 -0
- package/esm/schema.js +37 -0
- package/esm/testkit.js +181 -0
- package/esm/types.js +1 -0
- package/esm/utils.js +83 -0
- package/package.json +10 -1
- package/typings/estree-converter/converter.d.cts +1 -1
- package/typings/estree-converter/converter.d.ts +1 -1
- package/typings/estree-converter/index.d.cts +3 -3
- package/typings/estree-converter/index.d.ts +3 -3
- package/typings/estree-converter/types.d.cts +3 -3
- package/typings/estree-converter/types.d.ts +3 -3
- package/typings/estree-converter/utils.d.cts +2 -2
- package/typings/estree-converter/utils.d.ts +2 -2
- package/typings/flat-configs.d.cts +248 -0
- package/typings/flat-configs.d.ts +248 -0
- package/typings/graphql-config.d.cts +1 -1
- package/typings/graphql-config.d.ts +1 -1
- package/typings/index.d.cts +8 -7
- package/typings/index.d.ts +8 -7
- package/typings/parser.d.cts +1 -1
- package/typings/parser.d.ts +1 -1
- package/typings/rules/alphabetize.d.cts +1 -1
- package/typings/rules/alphabetize.d.ts +1 -1
- package/typings/rules/description-style.d.cts +1 -1
- package/typings/rules/description-style.d.ts +1 -1
- package/typings/rules/graphql-js-validation.d.cts +1 -1
- package/typings/rules/graphql-js-validation.d.ts +1 -1
- package/typings/rules/index.d.cts +45 -45
- package/typings/rules/index.d.ts +45 -45
- package/typings/rules/input-name.d.cts +1 -1
- package/typings/rules/input-name.d.ts +1 -1
- package/typings/rules/lone-executable-definition.d.cts +1 -1
- package/typings/rules/lone-executable-definition.d.ts +1 -1
- package/typings/rules/match-document-filename.d.cts +2 -2
- package/typings/rules/match-document-filename.d.ts +2 -2
- package/typings/rules/naming-convention.d.cts +1 -1
- package/typings/rules/naming-convention.d.ts +1 -1
- package/typings/rules/no-anonymous-operations.d.cts +1 -1
- package/typings/rules/no-anonymous-operations.d.ts +1 -1
- package/typings/rules/no-case-insensitive-enum-values-duplicates.d.cts +1 -1
- package/typings/rules/no-case-insensitive-enum-values-duplicates.d.ts +1 -1
- package/typings/rules/no-deprecated.d.cts +1 -1
- package/typings/rules/no-deprecated.d.ts +1 -1
- package/typings/rules/no-duplicate-fields.d.cts +1 -1
- package/typings/rules/no-duplicate-fields.d.ts +1 -1
- package/typings/rules/no-hashtag-description.d.cts +1 -1
- package/typings/rules/no-hashtag-description.d.ts +1 -1
- package/typings/rules/no-one-place-fragments.d.cts +1 -1
- package/typings/rules/no-one-place-fragments.d.ts +1 -1
- package/typings/rules/no-root-type.d.cts +1 -1
- package/typings/rules/no-root-type.d.ts +1 -1
- package/typings/rules/no-scalar-result-type-on-mutation.d.cts +1 -1
- package/typings/rules/no-scalar-result-type-on-mutation.d.ts +1 -1
- package/typings/rules/no-typename-prefix.d.cts +1 -1
- package/typings/rules/no-typename-prefix.d.ts +1 -1
- package/typings/rules/no-unreachable-types.d.cts +1 -1
- package/typings/rules/no-unreachable-types.d.ts +1 -1
- package/typings/rules/no-unused-fields.d.cts +1 -1
- package/typings/rules/no-unused-fields.d.ts +1 -1
- package/typings/rules/relay-arguments.d.cts +1 -1
- package/typings/rules/relay-arguments.d.ts +1 -1
- package/typings/rules/relay-connection-types.d.cts +1 -1
- package/typings/rules/relay-connection-types.d.ts +1 -1
- package/typings/rules/relay-edge-types.d.cts +1 -1
- package/typings/rules/relay-edge-types.d.ts +1 -1
- package/typings/rules/relay-page-info.d.cts +1 -1
- package/typings/rules/relay-page-info.d.ts +1 -1
- package/typings/rules/require-deprecation-date.d.cts +1 -1
- package/typings/rules/require-deprecation-date.d.ts +1 -1
- package/typings/rules/require-deprecation-reason.d.cts +1 -1
- package/typings/rules/require-deprecation-reason.d.ts +1 -1
- package/typings/rules/require-description.d.cts +1 -1
- package/typings/rules/require-description.d.ts +1 -1
- package/typings/rules/require-field-of-type-query-in-mutation-result.d.cts +1 -1
- package/typings/rules/require-field-of-type-query-in-mutation-result.d.ts +1 -1
- package/typings/rules/require-id-when-available.d.cts +1 -1
- package/typings/rules/require-id-when-available.d.ts +1 -1
- package/typings/rules/require-nullable-fields-with-oneof.d.cts +1 -1
- package/typings/rules/require-nullable-fields-with-oneof.d.ts +1 -1
- package/typings/rules/require-type-pattern-with-oneof.d.cts +1 -1
- package/typings/rules/require-type-pattern-with-oneof.d.ts +1 -1
- package/typings/rules/selection-set-depth.d.cts +1 -1
- package/typings/rules/selection-set-depth.d.ts +1 -1
- package/typings/rules/strict-id-in-types.d.cts +1 -1
- package/typings/rules/strict-id-in-types.d.ts +1 -1
- package/typings/rules/unique-fragment-name.d.cts +2 -2
- package/typings/rules/unique-fragment-name.d.ts +2 -2
- package/typings/rules/unique-operation-name.d.cts +1 -1
- package/typings/rules/unique-operation-name.d.ts +1 -1
- package/typings/schema.d.cts +1 -1
- package/typings/schema.d.ts +1 -1
- package/typings/testkit.d.cts +3 -3
- package/typings/testkit.d.ts +3 -3
- package/typings/types.d.cts +2 -2
- package/typings/types.d.ts +2 -2
- package/typings/utils.d.cts +2 -2
- package/typings/utils.d.ts +2 -2
package/cjs/configs/index.js
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.configs = void 0;
|
4
4
|
const tslib_1 = require("tslib");
|
5
|
-
const
|
6
|
-
const
|
7
|
-
const
|
8
|
-
const
|
9
|
-
const
|
5
|
+
const schema_recommended_js_1 = tslib_1.__importDefault(require("./schema-recommended.js"));
|
6
|
+
const schema_all_js_1 = tslib_1.__importDefault(require("./schema-all.js"));
|
7
|
+
const operations_recommended_js_1 = tslib_1.__importDefault(require("./operations-recommended.js"));
|
8
|
+
const operations_all_js_1 = tslib_1.__importDefault(require("./operations-all.js"));
|
9
|
+
const relay_js_1 = tslib_1.__importDefault(require("./relay.js"));
|
10
10
|
exports.configs = {
|
11
|
-
'schema-recommended':
|
12
|
-
'schema-all':
|
13
|
-
'operations-recommended':
|
14
|
-
'operations-all':
|
15
|
-
relay:
|
11
|
+
'schema-recommended': schema_recommended_js_1.default,
|
12
|
+
'schema-all': schema_all_js_1.default,
|
13
|
+
'operations-recommended': operations_recommended_js_1.default,
|
14
|
+
'operations-all': operations_all_js_1.default,
|
15
|
+
relay: relay_js_1.default,
|
16
16
|
};
|
package/cjs/documents.js
CHANGED
@@ -6,8 +6,8 @@ const path_1 = require("path");
|
|
6
6
|
const graphql_1 = require("graphql");
|
7
7
|
const debug_1 = tslib_1.__importDefault(require("debug"));
|
8
8
|
const fast_glob_1 = tslib_1.__importDefault(require("fast-glob"));
|
9
|
-
const
|
10
|
-
const
|
9
|
+
const utils_js_1 = require("./utils.js");
|
10
|
+
const cache_js_1 = require("./cache.js");
|
11
11
|
const debug = (0, debug_1.default)('graphql-eslint:operations');
|
12
12
|
const handleVirtualPath = (documents) => {
|
13
13
|
const filepathMap = Object.create(null);
|
@@ -25,7 +25,7 @@ const handleVirtualPath = (documents) => {
|
|
25
25
|
};
|
26
26
|
});
|
27
27
|
};
|
28
|
-
const operationsCache = new
|
28
|
+
const operationsCache = new cache_js_1.ModuleCache();
|
29
29
|
const siblingOperationsCache = new Map();
|
30
30
|
const getSiblings = (project) => {
|
31
31
|
const documentsKey = project.documents;
|
@@ -55,7 +55,7 @@ function getDocuments(project) {
|
|
55
55
|
let printed = false;
|
56
56
|
const noopWarn = () => {
|
57
57
|
if (!printed) {
|
58
|
-
|
58
|
+
utils_js_1.logger.warn('getSiblingOperations was called without any operations. Make sure to set "parserOptions.operations" to make this feature available!');
|
59
59
|
printed = true;
|
60
60
|
}
|
61
61
|
return [];
|
@@ -120,7 +120,7 @@ function getDocuments(project) {
|
|
120
120
|
const fragmentName = spread.name.value;
|
121
121
|
const [fragment] = getFragment(fragmentName);
|
122
122
|
if (!fragment) {
|
123
|
-
|
123
|
+
utils_js_1.logger.warn(`Unable to locate fragment named "${fragmentName}", please make sure it's loaded using "parserOptions.operations"`);
|
124
124
|
return;
|
125
125
|
}
|
126
126
|
if (!collected.has(fragmentName)) {
|
@@ -2,7 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.convertToESTree = void 0;
|
4
4
|
const graphql_1 = require("graphql");
|
5
|
-
const
|
5
|
+
const utils_js_1 = require("./utils.js");
|
6
6
|
function convertToESTree(node, schema) {
|
7
7
|
const typeInfo = schema ? new graphql_1.TypeInfo(schema) : null;
|
8
8
|
const visitor = {
|
@@ -42,7 +42,7 @@ function convertToESTree(node, schema) {
|
|
42
42
|
const commonFields = {
|
43
43
|
...node,
|
44
44
|
type: node.kind,
|
45
|
-
loc: (0,
|
45
|
+
loc: (0, utils_js_1.convertLocation)(node.loc),
|
46
46
|
range: [node.loc.start, node.loc.end],
|
47
47
|
leadingComments,
|
48
48
|
// Use function to prevent RangeError: Maximum call stack size exceeded
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
const tslib_1 = require("tslib");
|
4
|
-
tslib_1.__exportStar(require("./converter"), exports);
|
5
|
-
tslib_1.__exportStar(require("./types"), exports);
|
6
|
-
tslib_1.__exportStar(require("./utils"), exports);
|
4
|
+
tslib_1.__exportStar(require("./converter.js"), exports);
|
5
|
+
tslib_1.__exportStar(require("./types.js"), exports);
|
6
|
+
tslib_1.__exportStar(require("./utils.js"), exports);
|
@@ -2,9 +2,9 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.convertLocation = exports.extractComments = exports.extractTokens = exports.convertToken = exports.getBaseType = exports.valueFromNode = void 0;
|
4
4
|
const graphql_1 = require("graphql");
|
5
|
-
const
|
5
|
+
const valueFromASTUntyped_js_1 = require("graphql/utilities/valueFromASTUntyped.js");
|
6
6
|
const valueFromNode = (...args) => {
|
7
|
-
return (0,
|
7
|
+
return (0, valueFromASTUntyped_js_1.valueFromASTUntyped)(...args);
|
8
8
|
};
|
9
9
|
exports.valueFromNode = valueFromNode;
|
10
10
|
function getBaseType(type) {
|
@@ -0,0 +1,36 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.flatConfigs = void 0;
|
4
|
+
const parser_js_1 = require("./parser.js");
|
5
|
+
const index_js_1 = require("./configs/index.js");
|
6
|
+
const languageOptions = {
|
7
|
+
parser: { parseForESLint: parser_js_1.parseForESLint },
|
8
|
+
};
|
9
|
+
exports.flatConfigs = {
|
10
|
+
'operations-all': {
|
11
|
+
languageOptions,
|
12
|
+
rules: {
|
13
|
+
...index_js_1.configs['operations-recommended'].rules,
|
14
|
+
...index_js_1.configs['operations-all'].rules,
|
15
|
+
},
|
16
|
+
},
|
17
|
+
'operations-recommended': {
|
18
|
+
languageOptions,
|
19
|
+
rules: index_js_1.configs['operations-recommended'].rules,
|
20
|
+
},
|
21
|
+
relay: {
|
22
|
+
languageOptions,
|
23
|
+
rules: index_js_1.configs.relay.rules,
|
24
|
+
},
|
25
|
+
'schema-all': {
|
26
|
+
languageOptions,
|
27
|
+
rules: {
|
28
|
+
...index_js_1.configs['schema-recommended'].rules,
|
29
|
+
...index_js_1.configs['schema-all'].rules,
|
30
|
+
},
|
31
|
+
},
|
32
|
+
'schema-recommended': {
|
33
|
+
languageOptions,
|
34
|
+
rules: index_js_1.configs['schema-recommended'].rules,
|
35
|
+
},
|
36
|
+
};
|
package/cjs/index.js
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.configs = exports.processors = exports.requireSiblingsOperations = exports.requireGraphQLSchemaFromContext = exports.parseForESLint = exports.rules = void 0;
|
3
|
+
exports.flatConfigs = exports.configs = exports.processors = exports.requireSiblingsOperations = exports.requireGraphQLSchemaFromContext = exports.parseForESLint = exports.rules = void 0;
|
4
4
|
const tslib_1 = require("tslib");
|
5
|
-
const
|
6
|
-
var
|
7
|
-
Object.defineProperty(exports, "rules", { enumerable: true, get: function () { return
|
8
|
-
var
|
9
|
-
Object.defineProperty(exports, "parseForESLint", { enumerable: true, get: function () { return
|
10
|
-
tslib_1.__exportStar(require("./testkit"), exports);
|
11
|
-
tslib_1.__exportStar(require("./types"), exports);
|
12
|
-
var
|
13
|
-
Object.defineProperty(exports, "requireGraphQLSchemaFromContext", { enumerable: true, get: function () { return
|
14
|
-
Object.defineProperty(exports, "requireSiblingsOperations", { enumerable: true, get: function () { return
|
15
|
-
exports.processors = { graphql:
|
16
|
-
var
|
17
|
-
Object.defineProperty(exports, "configs", { enumerable: true, get: function () { return
|
5
|
+
const processor_js_1 = require("./processor.js");
|
6
|
+
var index_js_1 = require("./rules/index.js");
|
7
|
+
Object.defineProperty(exports, "rules", { enumerable: true, get: function () { return index_js_1.rules; } });
|
8
|
+
var parser_js_1 = require("./parser.js");
|
9
|
+
Object.defineProperty(exports, "parseForESLint", { enumerable: true, get: function () { return parser_js_1.parseForESLint; } });
|
10
|
+
tslib_1.__exportStar(require("./testkit.js"), exports);
|
11
|
+
tslib_1.__exportStar(require("./types.js"), exports);
|
12
|
+
var utils_js_1 = require("./utils.js");
|
13
|
+
Object.defineProperty(exports, "requireGraphQLSchemaFromContext", { enumerable: true, get: function () { return utils_js_1.requireGraphQLSchemaFromContext; } });
|
14
|
+
Object.defineProperty(exports, "requireSiblingsOperations", { enumerable: true, get: function () { return utils_js_1.requireSiblingsOperations; } });
|
15
|
+
exports.processors = { graphql: processor_js_1.processor };
|
16
|
+
var index_js_2 = require("./configs/index.js");
|
17
|
+
Object.defineProperty(exports, "configs", { enumerable: true, get: function () { return index_js_2.configs; } });
|
18
|
+
var flat_configs_js_1 = require("./flat-configs.js");
|
19
|
+
Object.defineProperty(exports, "flatConfigs", { enumerable: true, get: function () { return flat_configs_js_1.flatConfigs; } });
|
package/cjs/parser.js
CHANGED
@@ -5,13 +5,13 @@ const tslib_1 = require("tslib");
|
|
5
5
|
const utils_1 = require("@graphql-tools/utils");
|
6
6
|
const graphql_1 = require("graphql");
|
7
7
|
const debug_1 = tslib_1.__importDefault(require("debug"));
|
8
|
-
const
|
9
|
-
const
|
10
|
-
const
|
11
|
-
const
|
12
|
-
const
|
8
|
+
const index_js_1 = require("./estree-converter/index.js");
|
9
|
+
const schema_js_1 = require("./schema.js");
|
10
|
+
const documents_js_1 = require("./documents.js");
|
11
|
+
const graphql_config_js_1 = require("./graphql-config.js");
|
12
|
+
const utils_js_1 = require("./utils.js");
|
13
13
|
const debug = (0, debug_1.default)('graphql-eslint:parser');
|
14
|
-
debug('cwd %o',
|
14
|
+
debug('cwd %o', utils_js_1.CWD);
|
15
15
|
function parseForESLint(code, options) {
|
16
16
|
try {
|
17
17
|
const { filePath } = options;
|
@@ -21,19 +21,19 @@ function parseForESLint(code, options) {
|
|
21
21
|
...options.graphQLParserOptions,
|
22
22
|
noLocation: false,
|
23
23
|
});
|
24
|
-
const gqlConfig = (0,
|
25
|
-
const realFilepath = filePath.replace(
|
24
|
+
const gqlConfig = (0, graphql_config_js_1.loadGraphQLConfig)(options);
|
25
|
+
const realFilepath = filePath.replace(utils_js_1.VIRTUAL_DOCUMENT_REGEX, '');
|
26
26
|
const project = gqlConfig.getProjectForFile(realFilepath);
|
27
|
-
const schema = (0,
|
28
|
-
const rootTree = (0,
|
27
|
+
const schema = (0, schema_js_1.getSchema)(project, options.schemaOptions);
|
28
|
+
const rootTree = (0, index_js_1.convertToESTree)(document, schema instanceof graphql_1.GraphQLSchema ? schema : null);
|
29
29
|
return {
|
30
30
|
services: {
|
31
31
|
schema,
|
32
|
-
siblingOperations: (0,
|
32
|
+
siblingOperations: (0, documents_js_1.getDocuments)(project),
|
33
33
|
},
|
34
34
|
ast: {
|
35
|
-
comments: (0,
|
36
|
-
tokens: (0,
|
35
|
+
comments: (0, index_js_1.extractComments)(document.loc),
|
36
|
+
tokens: (0, index_js_1.extractTokens)(filePath, code),
|
37
37
|
loc: rootTree.loc,
|
38
38
|
range: rootTree.range,
|
39
39
|
type: 'Program',
|
package/cjs/processor.js
CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.processor = void 0;
|
4
4
|
const graphql_tag_pluck_1 = require("@graphql-tools/graphql-tag-pluck");
|
5
5
|
const utils_1 = require("@graphql-tools/utils");
|
6
|
-
const
|
6
|
+
const graphql_config_js_1 = require("./graphql-config.js");
|
7
7
|
const blocksMap = new Map();
|
8
8
|
let onDiskConfig;
|
9
9
|
let onDiskConfigLoaded = false;
|
@@ -12,7 +12,7 @@ exports.processor = {
|
|
12
12
|
supportsAutofix: true,
|
13
13
|
preprocess(code, filePath) {
|
14
14
|
if (!onDiskConfigLoaded) {
|
15
|
-
onDiskConfig = (0,
|
15
|
+
onDiskConfig = (0, graphql_config_js_1.loadOnDiskGraphQLConfig)(filePath);
|
16
16
|
onDiskConfigLoaded = true;
|
17
17
|
}
|
18
18
|
let keywords = RELEVANT_KEYWORDS;
|
package/cjs/rules/alphabetize.js
CHANGED
@@ -4,7 +4,7 @@ exports.rule = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const graphql_1 = require("graphql");
|
6
6
|
const lodash_lowercase_1 = tslib_1.__importDefault(require("lodash.lowercase"));
|
7
|
-
const
|
7
|
+
const utils_js_1 = require("../utils.js");
|
8
8
|
const RULE_ID = 'alphabetize';
|
9
9
|
const fieldsEnum = [
|
10
10
|
graphql_1.Kind.OBJECT_TYPE_DEFINITION,
|
@@ -33,35 +33,35 @@ const schema = {
|
|
33
33
|
minProperties: 1,
|
34
34
|
properties: {
|
35
35
|
fields: {
|
36
|
-
...
|
36
|
+
...utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
37
37
|
items: {
|
38
38
|
enum: fieldsEnum,
|
39
39
|
},
|
40
40
|
description: 'Fields of `type`, `interface`, and `input`.',
|
41
41
|
},
|
42
42
|
values: {
|
43
|
-
...
|
43
|
+
...utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
44
44
|
items: {
|
45
45
|
enum: valuesEnum,
|
46
46
|
},
|
47
47
|
description: 'Values of `enum`.',
|
48
48
|
},
|
49
49
|
selections: {
|
50
|
-
...
|
50
|
+
...utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
51
51
|
items: {
|
52
52
|
enum: selectionsEnum,
|
53
53
|
},
|
54
54
|
description: 'Selections of `fragment` and operations `query`, `mutation` and `subscription`.',
|
55
55
|
},
|
56
56
|
variables: {
|
57
|
-
...
|
57
|
+
...utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
58
58
|
items: {
|
59
59
|
enum: variablesEnum,
|
60
60
|
},
|
61
61
|
description: 'Variables of operations `query`, `mutation` and `subscription`.',
|
62
62
|
},
|
63
63
|
arguments: {
|
64
|
-
...
|
64
|
+
...utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
65
65
|
items: {
|
66
66
|
enum: argumentsEnum,
|
67
67
|
},
|
@@ -73,7 +73,7 @@ const schema = {
|
|
73
73
|
default: false,
|
74
74
|
},
|
75
75
|
groups: {
|
76
|
-
...
|
76
|
+
...utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
77
77
|
minItems: 2,
|
78
78
|
description: "Custom order group. Example: `['id', '*', 'createdAt', 'updatedAt']` where `*` says for everything else.",
|
79
79
|
},
|
@@ -2,8 +2,8 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.GRAPHQL_JS_VALIDATIONS = void 0;
|
4
4
|
const graphql_1 = require("graphql");
|
5
|
-
const
|
6
|
-
const
|
5
|
+
const validate_js_1 = require("graphql/validation/validate.js");
|
6
|
+
const utils_js_1 = require("../utils.js");
|
7
7
|
function validateDocument({ context, schema = null, documentNode, rule, hasDidYouMeanSuggestions, }) {
|
8
8
|
var _a;
|
9
9
|
if (documentNode.definitions.length === 0) {
|
@@ -12,7 +12,7 @@ function validateDocument({ context, schema = null, documentNode, rule, hasDidYo
|
|
12
12
|
try {
|
13
13
|
const validationErrors = schema
|
14
14
|
? (0, graphql_1.validate)(schema, documentNode, [rule])
|
15
|
-
: (0,
|
15
|
+
: (0, validate_js_1.validateSDL)(documentNode, null, [rule]);
|
16
16
|
for (const error of validationErrors) {
|
17
17
|
const { line, column } = error.locations[0];
|
18
18
|
const sourceCode = context.getSourceCode();
|
@@ -48,7 +48,7 @@ function validateDocument({ context, schema = null, documentNode, rule, hasDidYo
|
|
48
48
|
}
|
49
49
|
catch (e) {
|
50
50
|
context.report({
|
51
|
-
loc:
|
51
|
+
loc: utils_js_1.REPORT_ON_FIRST_CHARACTER,
|
52
52
|
message: e.message,
|
53
53
|
});
|
54
54
|
}
|
@@ -74,7 +74,7 @@ const getMissingFragments = (node) => {
|
|
74
74
|
const handleMissingFragments = ({ ruleId, context, node }) => {
|
75
75
|
const missingFragments = getMissingFragments(node);
|
76
76
|
if (missingFragments.length > 0) {
|
77
|
-
const siblings = (0,
|
77
|
+
const siblings = (0, utils_js_1.requireSiblingsOperations)(ruleId, context);
|
78
78
|
const fragmentsToAdd = [];
|
79
79
|
for (const fragmentName of missingFragments) {
|
80
80
|
const [foundFragment] = siblings.getFragment(fragmentName).map(source => source.document);
|
@@ -124,13 +124,13 @@ const validationToRule = ({ ruleId, ruleName, getDocumentNode, schema = [], hasD
|
|
124
124
|
},
|
125
125
|
create(context) {
|
126
126
|
if (!ruleFn) {
|
127
|
-
|
127
|
+
utils_js_1.logger.warn(`Rule "${ruleId}" depends on a GraphQL validation rule "${ruleName}" but it's not available in the "graphql" version you are using. Skipping…`);
|
128
128
|
return {};
|
129
129
|
}
|
130
130
|
return {
|
131
131
|
Document(node) {
|
132
132
|
const schema = docs.requiresSchema
|
133
|
-
? (0,
|
133
|
+
? (0, utils_js_1.requireGraphQLSchemaFromContext)(ruleId, context)
|
134
134
|
: null;
|
135
135
|
const documentNode = getDocumentNode
|
136
136
|
? getDocumentNode({ ruleId, context, node: node.rawNode() })
|
@@ -203,7 +203,7 @@ exports.GRAPHQL_JS_VALIDATIONS = Object.assign({}, validationToRule({
|
|
203
203
|
additionalProperties: false,
|
204
204
|
required: ['ignoreClientDirectives'],
|
205
205
|
properties: {
|
206
|
-
ignoreClientDirectives:
|
206
|
+
ignoreClientDirectives: utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
207
207
|
},
|
208
208
|
},
|
209
209
|
},
|
@@ -320,7 +320,7 @@ exports.GRAPHQL_JS_VALIDATIONS = Object.assign({}, validationToRule({
|
|
320
320
|
ruleId: 'no-unused-fragments',
|
321
321
|
ruleName: 'NoUnusedFragments',
|
322
322
|
getDocumentNode: ({ ruleId, context, node }) => {
|
323
|
-
const siblings = (0,
|
323
|
+
const siblings = (0, utils_js_1.requireSiblingsOperations)(ruleId, context);
|
324
324
|
const FilePathToDocumentsMap = [
|
325
325
|
...siblings.getOperations(),
|
326
326
|
...siblings.getFragments(),
|
package/cjs/rules/index.js
CHANGED
@@ -4,71 +4,71 @@
|
|
4
4
|
*/
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.rules = void 0;
|
7
|
-
const
|
8
|
-
const
|
9
|
-
const
|
10
|
-
const
|
11
|
-
const
|
12
|
-
const
|
13
|
-
const
|
14
|
-
const
|
15
|
-
const
|
16
|
-
const
|
17
|
-
const
|
18
|
-
const
|
19
|
-
const
|
20
|
-
const
|
21
|
-
const
|
22
|
-
const
|
23
|
-
const
|
24
|
-
const
|
25
|
-
const
|
26
|
-
const
|
27
|
-
const
|
28
|
-
const
|
29
|
-
const
|
30
|
-
const
|
31
|
-
const
|
32
|
-
const
|
33
|
-
const
|
34
|
-
const
|
35
|
-
const
|
36
|
-
const
|
37
|
-
const
|
38
|
-
const
|
39
|
-
const
|
7
|
+
const graphql_js_validation_js_1 = require("./graphql-js-validation.js");
|
8
|
+
const alphabetize_js_1 = require("./alphabetize.js");
|
9
|
+
const description_style_js_1 = require("./description-style.js");
|
10
|
+
const input_name_js_1 = require("./input-name.js");
|
11
|
+
const lone_executable_definition_js_1 = require("./lone-executable-definition.js");
|
12
|
+
const match_document_filename_js_1 = require("./match-document-filename.js");
|
13
|
+
const naming_convention_js_1 = require("./naming-convention.js");
|
14
|
+
const no_anonymous_operations_js_1 = require("./no-anonymous-operations.js");
|
15
|
+
const no_case_insensitive_enum_values_duplicates_js_1 = require("./no-case-insensitive-enum-values-duplicates.js");
|
16
|
+
const no_deprecated_js_1 = require("./no-deprecated.js");
|
17
|
+
const no_duplicate_fields_js_1 = require("./no-duplicate-fields.js");
|
18
|
+
const no_hashtag_description_js_1 = require("./no-hashtag-description.js");
|
19
|
+
const no_one_place_fragments_js_1 = require("./no-one-place-fragments.js");
|
20
|
+
const no_root_type_js_1 = require("./no-root-type.js");
|
21
|
+
const no_scalar_result_type_on_mutation_js_1 = require("./no-scalar-result-type-on-mutation.js");
|
22
|
+
const no_typename_prefix_js_1 = require("./no-typename-prefix.js");
|
23
|
+
const no_unreachable_types_js_1 = require("./no-unreachable-types.js");
|
24
|
+
const no_unused_fields_js_1 = require("./no-unused-fields.js");
|
25
|
+
const relay_arguments_js_1 = require("./relay-arguments.js");
|
26
|
+
const relay_connection_types_js_1 = require("./relay-connection-types.js");
|
27
|
+
const relay_edge_types_js_1 = require("./relay-edge-types.js");
|
28
|
+
const relay_page_info_js_1 = require("./relay-page-info.js");
|
29
|
+
const require_deprecation_date_js_1 = require("./require-deprecation-date.js");
|
30
|
+
const require_deprecation_reason_js_1 = require("./require-deprecation-reason.js");
|
31
|
+
const require_description_js_1 = require("./require-description.js");
|
32
|
+
const require_field_of_type_query_in_mutation_result_js_1 = require("./require-field-of-type-query-in-mutation-result.js");
|
33
|
+
const require_id_when_available_js_1 = require("./require-id-when-available.js");
|
34
|
+
const require_nullable_fields_with_oneof_js_1 = require("./require-nullable-fields-with-oneof.js");
|
35
|
+
const require_type_pattern_with_oneof_js_1 = require("./require-type-pattern-with-oneof.js");
|
36
|
+
const selection_set_depth_js_1 = require("./selection-set-depth.js");
|
37
|
+
const strict_id_in_types_js_1 = require("./strict-id-in-types.js");
|
38
|
+
const unique_fragment_name_js_1 = require("./unique-fragment-name.js");
|
39
|
+
const unique_operation_name_js_1 = require("./unique-operation-name.js");
|
40
40
|
exports.rules = {
|
41
|
-
...
|
42
|
-
alphabetize:
|
43
|
-
'description-style':
|
44
|
-
'input-name':
|
45
|
-
'lone-executable-definition':
|
46
|
-
'match-document-filename':
|
47
|
-
'naming-convention':
|
48
|
-
'no-anonymous-operations':
|
49
|
-
'no-case-insensitive-enum-values-duplicates':
|
50
|
-
'no-deprecated':
|
51
|
-
'no-duplicate-fields':
|
52
|
-
'no-hashtag-description':
|
53
|
-
'no-one-place-fragments':
|
54
|
-
'no-root-type':
|
55
|
-
'no-scalar-result-type-on-mutation':
|
56
|
-
'no-typename-prefix':
|
57
|
-
'no-unreachable-types':
|
58
|
-
'no-unused-fields':
|
59
|
-
'relay-arguments':
|
60
|
-
'relay-connection-types':
|
61
|
-
'relay-edge-types':
|
62
|
-
'relay-page-info':
|
63
|
-
'require-deprecation-date':
|
64
|
-
'require-deprecation-reason':
|
65
|
-
'require-description':
|
66
|
-
'require-field-of-type-query-in-mutation-result':
|
67
|
-
'require-id-when-available':
|
68
|
-
'require-nullable-fields-with-oneof':
|
69
|
-
'require-type-pattern-with-oneof':
|
70
|
-
'selection-set-depth':
|
71
|
-
'strict-id-in-types':
|
72
|
-
'unique-fragment-name':
|
73
|
-
'unique-operation-name':
|
41
|
+
...graphql_js_validation_js_1.GRAPHQL_JS_VALIDATIONS,
|
42
|
+
alphabetize: alphabetize_js_1.rule,
|
43
|
+
'description-style': description_style_js_1.rule,
|
44
|
+
'input-name': input_name_js_1.rule,
|
45
|
+
'lone-executable-definition': lone_executable_definition_js_1.rule,
|
46
|
+
'match-document-filename': match_document_filename_js_1.rule,
|
47
|
+
'naming-convention': naming_convention_js_1.rule,
|
48
|
+
'no-anonymous-operations': no_anonymous_operations_js_1.rule,
|
49
|
+
'no-case-insensitive-enum-values-duplicates': no_case_insensitive_enum_values_duplicates_js_1.rule,
|
50
|
+
'no-deprecated': no_deprecated_js_1.rule,
|
51
|
+
'no-duplicate-fields': no_duplicate_fields_js_1.rule,
|
52
|
+
'no-hashtag-description': no_hashtag_description_js_1.rule,
|
53
|
+
'no-one-place-fragments': no_one_place_fragments_js_1.rule,
|
54
|
+
'no-root-type': no_root_type_js_1.rule,
|
55
|
+
'no-scalar-result-type-on-mutation': no_scalar_result_type_on_mutation_js_1.rule,
|
56
|
+
'no-typename-prefix': no_typename_prefix_js_1.rule,
|
57
|
+
'no-unreachable-types': no_unreachable_types_js_1.rule,
|
58
|
+
'no-unused-fields': no_unused_fields_js_1.rule,
|
59
|
+
'relay-arguments': relay_arguments_js_1.rule,
|
60
|
+
'relay-connection-types': relay_connection_types_js_1.rule,
|
61
|
+
'relay-edge-types': relay_edge_types_js_1.rule,
|
62
|
+
'relay-page-info': relay_page_info_js_1.rule,
|
63
|
+
'require-deprecation-date': require_deprecation_date_js_1.rule,
|
64
|
+
'require-deprecation-reason': require_deprecation_reason_js_1.rule,
|
65
|
+
'require-description': require_description_js_1.rule,
|
66
|
+
'require-field-of-type-query-in-mutation-result': require_field_of_type_query_in_mutation_result_js_1.rule,
|
67
|
+
'require-id-when-available': require_id_when_available_js_1.rule,
|
68
|
+
'require-nullable-fields-with-oneof': require_nullable_fields_with_oneof_js_1.rule,
|
69
|
+
'require-type-pattern-with-oneof': require_type_pattern_with_oneof_js_1.rule,
|
70
|
+
'selection-set-depth': selection_set_depth_js_1.rule,
|
71
|
+
'strict-id-in-types': strict_id_in_types_js_1.rule,
|
72
|
+
'unique-fragment-name': unique_fragment_name_js_1.rule,
|
73
|
+
'unique-operation-name': unique_operation_name_js_1.rule,
|
74
74
|
};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.rule = void 0;
|
4
|
-
const
|
4
|
+
const utils_js_1 = require("../utils.js");
|
5
5
|
const RULE_ID = 'lone-executable-definition';
|
6
6
|
const definitionTypes = ['fragment', 'query', 'mutation', 'subscription'];
|
7
7
|
const schema = {
|
@@ -13,7 +13,7 @@ const schema = {
|
|
13
13
|
additionalProperties: false,
|
14
14
|
properties: {
|
15
15
|
ignore: {
|
16
|
-
...
|
16
|
+
...utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
17
17
|
maxItems: 3,
|
18
18
|
items: {
|
19
19
|
enum: definitionTypes,
|
@@ -71,13 +71,13 @@ exports.rule = {
|
|
71
71
|
'Program:exit'() {
|
72
72
|
var _a, _b;
|
73
73
|
for (const { node, type } of definitions.slice(1) /* ignore first definition */) {
|
74
|
-
let name = (0,
|
74
|
+
let name = (0, utils_js_1.pascalCase)(type);
|
75
75
|
const definitionName = (_a = node.name) === null || _a === void 0 ? void 0 : _a.value;
|
76
76
|
if (definitionName) {
|
77
77
|
name += ` "${definitionName}"`;
|
78
78
|
}
|
79
79
|
context.report({
|
80
|
-
loc: ((_b = node.name) === null || _b === void 0 ? void 0 : _b.loc) || (0,
|
80
|
+
loc: ((_b = node.name) === null || _b === void 0 ? void 0 : _b.loc) || (0, utils_js_1.getLocation)(node.loc.start, type),
|
81
81
|
messageId: RULE_ID,
|
82
82
|
data: { name },
|
83
83
|
});
|
@@ -4,7 +4,7 @@ exports.rule = void 0;
|
|
4
4
|
const path_1 = require("path");
|
5
5
|
const fs_1 = require("fs");
|
6
6
|
const graphql_1 = require("graphql");
|
7
|
-
const
|
7
|
+
const utils_js_1 = require("../utils.js");
|
8
8
|
const MATCH_EXTENSION = 'MATCH_EXTENSION';
|
9
9
|
const MATCH_STYLE = 'MATCH_STYLE';
|
10
10
|
const CASE_STYLES = [
|
@@ -181,7 +181,7 @@ exports.rule = {
|
|
181
181
|
var _a;
|
182
182
|
if (options.fileExtension && options.fileExtension !== fileExtension) {
|
183
183
|
context.report({
|
184
|
-
loc:
|
184
|
+
loc: utils_js_1.REPORT_ON_FIRST_CHARACTER,
|
185
185
|
messageId: MATCH_EXTENSION,
|
186
186
|
data: {
|
187
187
|
fileExtension,
|
@@ -212,7 +212,7 @@ exports.rule = {
|
|
212
212
|
let expectedFilename = option.prefix || '';
|
213
213
|
if (option.style) {
|
214
214
|
expectedFilename +=
|
215
|
-
option.style === 'matchDocumentStyle' ? docName : (0,
|
215
|
+
option.style === 'matchDocumentStyle' ? docName : (0, utils_js_1.convertCase)(option.style, docName);
|
216
216
|
}
|
217
217
|
else {
|
218
218
|
expectedFilename += filename;
|
@@ -221,7 +221,7 @@ exports.rule = {
|
|
221
221
|
const filenameWithExtension = filename + expectedExtension;
|
222
222
|
if (expectedFilename !== filenameWithExtension) {
|
223
223
|
context.report({
|
224
|
-
loc:
|
224
|
+
loc: utils_js_1.REPORT_ON_FIRST_CHARACTER,
|
225
225
|
messageId: MATCH_STYLE,
|
226
226
|
data: {
|
227
227
|
expectedFilename,
|
@@ -2,7 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.rule = void 0;
|
4
4
|
const graphql_1 = require("graphql");
|
5
|
-
const
|
5
|
+
const utils_js_1 = require("../utils.js");
|
6
6
|
const KindToDisplayName = {
|
7
7
|
// types
|
8
8
|
[graphql_1.Kind.OBJECT_TYPE_DEFINITION]: 'Type',
|
@@ -46,8 +46,8 @@ const schema = {
|
|
46
46
|
style: { enum: ALLOWED_STYLES },
|
47
47
|
prefix: { type: 'string' },
|
48
48
|
suffix: { type: 'string' },
|
49
|
-
forbiddenPrefixes:
|
50
|
-
forbiddenSuffixes:
|
49
|
+
forbiddenPrefixes: utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
50
|
+
forbiddenSuffixes: utils_js_1.ARRAY_DEFAULT_OPTIONS,
|
51
51
|
ignorePattern: {
|
52
52
|
type: 'string',
|
53
53
|
description: 'Option to skip validation of some words, e.g. acronyms',
|
@@ -63,7 +63,7 @@ const schema = {
|
|
63
63
|
properties: {
|
64
64
|
types: {
|
65
65
|
...schemaOption,
|
66
|
-
description: `Includes:\n${
|
66
|
+
description: `Includes:\n${utils_js_1.TYPES_KINDS.map(kind => `- \`${kind}\``).join('\n')}`,
|
67
67
|
},
|
68
68
|
...Object.fromEntries(ALLOWED_KINDS.map(kind => [
|
69
69
|
kind,
|
@@ -285,7 +285,7 @@ exports.rule = {
|
|
285
285
|
if (!caseRegex.test(name)) {
|
286
286
|
return {
|
287
287
|
errorMessage: `be in ${style} format`,
|
288
|
-
renameToName: (0,
|
288
|
+
renameToName: (0, utils_js_1.convertCase)(style, name),
|
289
289
|
};
|
290
290
|
}
|
291
291
|
}
|
@@ -301,7 +301,7 @@ exports.rule = {
|
|
301
301
|
if (!allowTrailingUnderscore) {
|
302
302
|
listeners['Name[value=/_$/]:matches([parent.kind!=Field], [parent.kind=Field][parent.alias])'] = checkUnderscore(false);
|
303
303
|
}
|
304
|
-
const selectors = new Set([types &&
|
304
|
+
const selectors = new Set([types && utils_js_1.TYPES_KINDS, Object.keys(restOptions)].flat().filter(Boolean));
|
305
305
|
for (const selector of selectors) {
|
306
306
|
listeners[selector] = checkNode(selector);
|
307
307
|
}
|