@graphql-eslint/eslint-plugin 4.0.0-alpha.3 → 4.0.0-alpha.5
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +2 -0
- package/cjs/meta.d.cts +1 -2
- package/cjs/meta.js +3 -5
- package/cjs/rules/index.d.cts +3 -3
- package/cjs/rules/input-name.d.cts +3 -1
- package/cjs/rules/naming-convention.d.cts +3 -1
- package/cjs/rules/relay-edge-types.d.cts +3 -1
- package/cjs/rules/strict-id-in-types.d.cts +3 -1
- package/esm/meta.d.ts +1 -2
- package/esm/meta.js +2 -3
- package/esm/rules/index.d.ts +3 -3
- package/esm/rules/input-name.d.ts +3 -1
- package/esm/rules/naming-convention.d.ts +3 -1
- package/esm/rules/relay-edge-types.d.ts +3 -1
- package/esm/rules/strict-id-in-types.d.ts +3 -1
- package/index.browser.js +46 -51
- package/package.json +3 -8
package/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
[![GraphQLConf 2024 Banner: September 10-12, San Francisco. Hosted by the GraphQL Foundation](https://github.com/user-attachments/assets/bdb8cd5d-5186-4ece-b06b-b00a499b7868)](https://graphql.org/conf/2024/?utm_source=github&utm_medium=graphql_eslint&utm_campaign=readme)
|
2
|
+
|
1
3
|
# GraphQL-ESLint
|
2
4
|
|
3
5
|
[![npm version](https://badge.fury.io/js/%40graphql-eslint%2Feslint-plugin.svg)](https://badge.fury.io/js/%40graphql-eslint%2Feslint-plugin)
|
package/cjs/meta.d.cts
CHANGED
package/cjs/meta.js
CHANGED
@@ -5,8 +5,8 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
6
|
var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
7
|
var __export = (target, all) => {
|
8
|
-
for (var
|
9
|
-
__defProp(target,
|
8
|
+
for (var name in all)
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
10
10
|
}, __copyProps = (to, from, except, desc) => {
|
11
11
|
if (from && typeof from == "object" || typeof from == "function")
|
12
12
|
for (let key of __getOwnPropNames(from))
|
@@ -23,14 +23,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
23
23
|
)), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
24
24
|
var meta_exports = {};
|
25
25
|
__export(meta_exports, {
|
26
|
-
name: () => name,
|
27
26
|
version: () => version
|
28
27
|
});
|
29
28
|
module.exports = __toCommonJS(meta_exports);
|
30
29
|
var import_package = __toESM(require("../package.json"), 1);
|
31
|
-
const {
|
30
|
+
const { version } = import_package.default;
|
32
31
|
// Annotate the CommonJS export names for ESM import in node:
|
33
32
|
0 && (module.exports = {
|
34
|
-
name,
|
35
33
|
version
|
36
34
|
});
|
package/cjs/rules/index.d.cts
CHANGED
@@ -21,7 +21,7 @@ declare const rules: {
|
|
21
21
|
groups?: string[] | undefined;
|
22
22
|
}[]>;
|
23
23
|
'description-style': GraphQLESLintRule<{
|
24
|
-
style
|
24
|
+
style: "block" | "inline";
|
25
25
|
}[]>;
|
26
26
|
'input-name': GraphQLESLintRule<{
|
27
27
|
checkInputType?: boolean | undefined;
|
@@ -83,7 +83,7 @@ declare const rules: {
|
|
83
83
|
'no-unreachable-types': GraphQLESLintRule;
|
84
84
|
'no-unused-fields': GraphQLESLintRule;
|
85
85
|
'relay-arguments': GraphQLESLintRule<{
|
86
|
-
includeBoth
|
86
|
+
includeBoth: boolean;
|
87
87
|
}[], true>;
|
88
88
|
'relay-connection-types': GraphQLESLintRule;
|
89
89
|
'relay-edge-types': GraphQLESLintRule<{
|
@@ -102,7 +102,7 @@ declare const rules: {
|
|
102
102
|
'require-nullable-fields-with-oneof': GraphQLESLintRule;
|
103
103
|
'require-nullable-result-in-root': GraphQLESLintRule;
|
104
104
|
'require-selections': GraphQLESLintRule<{
|
105
|
-
fieldName
|
105
|
+
fieldName: string | string[];
|
106
106
|
}[], true>;
|
107
107
|
'require-type-pattern-with-oneof': GraphQLESLintRule;
|
108
108
|
'selection-set-depth': GraphQLESLintRule<{
|
@@ -38,7 +38,9 @@ declare const schema: {
|
|
38
38
|
};
|
39
39
|
};
|
40
40
|
};
|
41
|
-
type RuleOptions = FromSchema<typeof schema
|
41
|
+
type RuleOptions = FromSchema<typeof schema, {
|
42
|
+
keepDefaultedPropertiesOptional: true;
|
43
|
+
}>;
|
42
44
|
declare const rule: GraphQLESLintRule<RuleOptions>;
|
43
45
|
|
44
46
|
export { type RuleOptions, rule };
|
@@ -102,7 +102,9 @@ declare const schema: {
|
|
102
102
|
readonly description: string;
|
103
103
|
};
|
104
104
|
};
|
105
|
-
type RuleOptions = FromSchema<typeof schema
|
105
|
+
type RuleOptions = FromSchema<typeof schema, {
|
106
|
+
keepDefaultedPropertiesOptional: true;
|
107
|
+
}>;
|
106
108
|
declare const rule: GraphQLESLintRule<RuleOptions>;
|
107
109
|
|
108
110
|
export { type RuleOptions, rule };
|
@@ -34,7 +34,9 @@ declare const schema: {
|
|
34
34
|
};
|
35
35
|
};
|
36
36
|
};
|
37
|
-
type RuleOptions = FromSchema<typeof schema
|
37
|
+
type RuleOptions = FromSchema<typeof schema, {
|
38
|
+
keepDefaultedPropertiesOptional: true;
|
39
|
+
}>;
|
38
40
|
declare const rule: GraphQLESLintRule<RuleOptions, true>;
|
39
41
|
|
40
42
|
export { type RuleOptions, rule };
|
@@ -60,7 +60,9 @@ declare const schema: {
|
|
60
60
|
};
|
61
61
|
};
|
62
62
|
};
|
63
|
-
type RuleOptions = FromSchema<typeof schema
|
63
|
+
type RuleOptions = FromSchema<typeof schema, {
|
64
|
+
keepDefaultedPropertiesOptional: true;
|
65
|
+
}>;
|
64
66
|
declare const rule: GraphQLESLintRule<RuleOptions>;
|
65
67
|
|
66
68
|
export { type RuleOptions, rule };
|
package/esm/meta.d.ts
CHANGED
package/esm/meta.js
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
import "./chunk-UIAXBAMD.js";
|
2
|
-
import packageJson from "../package.json"
|
3
|
-
const {
|
2
|
+
import packageJson from "../package.json" with { type: "json" };
|
3
|
+
const { version } = packageJson;
|
4
4
|
export {
|
5
|
-
name,
|
6
5
|
version
|
7
6
|
};
|
package/esm/rules/index.d.ts
CHANGED
@@ -21,7 +21,7 @@ declare const rules: {
|
|
21
21
|
groups?: string[] | undefined;
|
22
22
|
}[]>;
|
23
23
|
'description-style': GraphQLESLintRule<{
|
24
|
-
style
|
24
|
+
style: "block" | "inline";
|
25
25
|
}[]>;
|
26
26
|
'input-name': GraphQLESLintRule<{
|
27
27
|
checkInputType?: boolean | undefined;
|
@@ -83,7 +83,7 @@ declare const rules: {
|
|
83
83
|
'no-unreachable-types': GraphQLESLintRule;
|
84
84
|
'no-unused-fields': GraphQLESLintRule;
|
85
85
|
'relay-arguments': GraphQLESLintRule<{
|
86
|
-
includeBoth
|
86
|
+
includeBoth: boolean;
|
87
87
|
}[], true>;
|
88
88
|
'relay-connection-types': GraphQLESLintRule;
|
89
89
|
'relay-edge-types': GraphQLESLintRule<{
|
@@ -102,7 +102,7 @@ declare const rules: {
|
|
102
102
|
'require-nullable-fields-with-oneof': GraphQLESLintRule;
|
103
103
|
'require-nullable-result-in-root': GraphQLESLintRule;
|
104
104
|
'require-selections': GraphQLESLintRule<{
|
105
|
-
fieldName
|
105
|
+
fieldName: string | string[];
|
106
106
|
}[], true>;
|
107
107
|
'require-type-pattern-with-oneof': GraphQLESLintRule;
|
108
108
|
'selection-set-depth': GraphQLESLintRule<{
|
@@ -38,7 +38,9 @@ declare const schema: {
|
|
38
38
|
};
|
39
39
|
};
|
40
40
|
};
|
41
|
-
type RuleOptions = FromSchema<typeof schema
|
41
|
+
type RuleOptions = FromSchema<typeof schema, {
|
42
|
+
keepDefaultedPropertiesOptional: true;
|
43
|
+
}>;
|
42
44
|
declare const rule: GraphQLESLintRule<RuleOptions>;
|
43
45
|
|
44
46
|
export { type RuleOptions, rule };
|
@@ -102,7 +102,9 @@ declare const schema: {
|
|
102
102
|
readonly description: string;
|
103
103
|
};
|
104
104
|
};
|
105
|
-
type RuleOptions = FromSchema<typeof schema
|
105
|
+
type RuleOptions = FromSchema<typeof schema, {
|
106
|
+
keepDefaultedPropertiesOptional: true;
|
107
|
+
}>;
|
106
108
|
declare const rule: GraphQLESLintRule<RuleOptions>;
|
107
109
|
|
108
110
|
export { type RuleOptions, rule };
|
@@ -34,7 +34,9 @@ declare const schema: {
|
|
34
34
|
};
|
35
35
|
};
|
36
36
|
};
|
37
|
-
type RuleOptions = FromSchema<typeof schema
|
37
|
+
type RuleOptions = FromSchema<typeof schema, {
|
38
|
+
keepDefaultedPropertiesOptional: true;
|
39
|
+
}>;
|
38
40
|
declare const rule: GraphQLESLintRule<RuleOptions, true>;
|
39
41
|
|
40
42
|
export { type RuleOptions, rule };
|
@@ -60,7 +60,9 @@ declare const schema: {
|
|
60
60
|
};
|
61
61
|
};
|
62
62
|
};
|
63
|
-
type RuleOptions = FromSchema<typeof schema
|
63
|
+
type RuleOptions = FromSchema<typeof schema, {
|
64
|
+
keepDefaultedPropertiesOptional: true;
|
65
|
+
}>;
|
64
66
|
declare const rule: GraphQLESLintRule<RuleOptions>;
|
65
67
|
|
66
68
|
export { type RuleOptions, rule };
|
package/index.browser.js
CHANGED
@@ -390,7 +390,7 @@ function convertToESTree(node, schema15) {
|
|
390
390
|
// package.json
|
391
391
|
var package_default = {
|
392
392
|
name: "@graphql-eslint/eslint-plugin",
|
393
|
-
version: "4.0.0-alpha.
|
393
|
+
version: "4.0.0-alpha.5",
|
394
394
|
type: "module",
|
395
395
|
description: "GraphQL plugin for ESLint",
|
396
396
|
repository: "https://github.com/B2o5T/graphql-eslint",
|
@@ -399,21 +399,16 @@ var package_default = {
|
|
399
399
|
engines: {
|
400
400
|
node: ">=18"
|
401
401
|
},
|
402
|
-
main: "dist/cjs/index.js",
|
403
402
|
exports: {
|
404
403
|
"./package.json": "./package.json",
|
405
404
|
".": {
|
406
405
|
require: {
|
407
|
-
types: "./dist/cjs/index.d.
|
406
|
+
types: "./dist/cjs/index.d.cts",
|
408
407
|
default: "./dist/cjs/index.js"
|
409
408
|
},
|
410
409
|
import: {
|
411
410
|
types: "./dist/esm/index.d.ts",
|
412
411
|
default: "./dist/esm/index.js"
|
413
|
-
},
|
414
|
-
default: {
|
415
|
-
types: "./dist/esm/index.d.ts",
|
416
|
-
default: "./dist/esm/index.js"
|
417
412
|
}
|
418
413
|
}
|
419
414
|
},
|
@@ -435,7 +430,7 @@ var package_default = {
|
|
435
430
|
},
|
436
431
|
dependencies: {
|
437
432
|
"@graphql-tools/code-file-loader": "^8.0.0",
|
438
|
-
"@graphql-tools/graphql-tag-pluck": "8.3.2
|
433
|
+
"@graphql-tools/graphql-tag-pluck": "8.3.2",
|
439
434
|
"@graphql-tools/utils": "^10.0.0",
|
440
435
|
debug: "^4.3.4",
|
441
436
|
"fast-glob": "^3.2.12",
|
@@ -446,14 +441,14 @@ var package_default = {
|
|
446
441
|
devDependencies: {
|
447
442
|
"@theguild/eslint-rule-tester": "workspace:*",
|
448
443
|
"@types/debug": "4.1.12",
|
449
|
-
"@types/eslint": "9.6.
|
450
|
-
"@types/estree": "1.0.
|
444
|
+
"@types/eslint": "9.6.1",
|
445
|
+
"@types/estree": "1.0.6",
|
451
446
|
"@types/graphql-depth-limit": "1.1.6",
|
452
447
|
"@types/json-schema": "7.0.15",
|
453
448
|
"@types/lodash.lowercase": "4.3.9",
|
454
449
|
graphql: "16.9.0",
|
455
|
-
"json-schema-to-ts": "
|
456
|
-
"vite-tsconfig-paths": "^
|
450
|
+
"json-schema-to-ts": "3.1.1",
|
451
|
+
"vite-tsconfig-paths": "^5.0.0"
|
457
452
|
},
|
458
453
|
publishConfig: {
|
459
454
|
directory: "dist",
|
@@ -463,7 +458,7 @@ var package_default = {
|
|
463
458
|
};
|
464
459
|
|
465
460
|
// src/meta.ts
|
466
|
-
var {
|
461
|
+
var { version } = package_default;
|
467
462
|
|
468
463
|
// src/siblings.ts
|
469
464
|
import {
|
@@ -641,7 +636,7 @@ function getSiblings(documents) {
|
|
641
636
|
cachedOperations = result;
|
642
637
|
}
|
643
638
|
return cachedOperations;
|
644
|
-
}, getFragment = (
|
639
|
+
}, getFragment = (name) => getFragments().filter((f) => f.document.name.value === name), collectFragments = (selectable, recursive, collected = /* @__PURE__ */ new Map()) => (visit2(selectable, {
|
645
640
|
FragmentSpread(spread) {
|
646
641
|
let fragmentName = spread.name.value, [fragment] = getFragment(fragmentName);
|
647
642
|
if (!fragment) {
|
@@ -658,7 +653,7 @@ function getSiblings(documents) {
|
|
658
653
|
getFragments,
|
659
654
|
getFragmentByType: (typeName) => getFragments().filter((f) => f.document.typeCondition.name.value === typeName),
|
660
655
|
getFragmentsInUse: (selectable, recursive = !0) => Array.from(collectFragments(selectable, recursive).values()),
|
661
|
-
getOperation: (
|
656
|
+
getOperation: (name) => getOperations().filter((o) => o.document.name?.value === name),
|
662
657
|
getOperations,
|
663
658
|
getOperationByType: (type) => getOperations().filter((o) => o.document.operation === type)
|
664
659
|
};
|
@@ -1176,10 +1171,10 @@ function validateDocument({
|
|
1176
1171
|
loc,
|
1177
1172
|
message: error.message,
|
1178
1173
|
suggest: hasDidYouMeanSuggestions ? matches.map((match) => {
|
1179
|
-
let { name
|
1174
|
+
let { name } = match.groups;
|
1180
1175
|
return {
|
1181
|
-
desc: `Rename to \`${
|
1182
|
-
fix: (fixer) => fixer.replaceText(token,
|
1176
|
+
desc: `Rename to \`${name}\``,
|
1177
|
+
fix: (fixer) => fixer.replaceText(token, name)
|
1183
1178
|
};
|
1184
1179
|
}) : []
|
1185
1180
|
});
|
@@ -1203,7 +1198,7 @@ var getFragmentDefsAndFragmentSpreads = (node) => {
|
|
1203
1198
|
}), { fragmentDefs, fragmentSpreads };
|
1204
1199
|
}, getMissingFragments = (node) => {
|
1205
1200
|
let { fragmentDefs, fragmentSpreads } = getFragmentDefsAndFragmentSpreads(node);
|
1206
|
-
return [...fragmentSpreads].filter((
|
1201
|
+
return [...fragmentSpreads].filter((name) => !fragmentDefs.has(name));
|
1207
1202
|
}, handleMissingFragments = ({ ruleId, context, node }) => {
|
1208
1203
|
let missingFragments = getMissingFragments(node);
|
1209
1204
|
if (missingFragments.length > 0) {
|
@@ -1840,10 +1835,10 @@ Using the same name for all input parameters will make your schemas easier to co
|
|
1840
1835
|
return currentNode;
|
1841
1836
|
})(node);
|
1842
1837
|
if (shouldCheckType(inputValueNode.parent.parent)) {
|
1843
|
-
let mutationName = `${inputValueNode.parent.name.value}Input`,
|
1844
|
-
(options.caseSensitiveInputType && node.name.value !== mutationName ||
|
1838
|
+
let mutationName = `${inputValueNode.parent.name.value}Input`, name = node.name.value;
|
1839
|
+
(options.caseSensitiveInputType && node.name.value !== mutationName || name.toLowerCase() !== mutationName.toLowerCase()) && context.report({
|
1845
1840
|
node: node.name,
|
1846
|
-
message: `Input type \`${
|
1841
|
+
message: `Input type \`${name}\` name should be \`${mutationName}\`.`,
|
1847
1842
|
suggest: [
|
1848
1843
|
{
|
1849
1844
|
desc: `Rename to \`${mutationName}\``,
|
@@ -1926,11 +1921,11 @@ var RULE_ID2 = "lone-executable-definition", definitionTypes = ["fragment", ...O
|
|
1926
1921
|
},
|
1927
1922
|
"Document:exit"() {
|
1928
1923
|
for (let { node, type } of definitions.slice(1)) {
|
1929
|
-
let
|
1930
|
-
definitionName && (
|
1924
|
+
let name = pascalCase(type), definitionName = node.name?.value;
|
1925
|
+
definitionName && (name += ` "${definitionName}"`), context.report({
|
1931
1926
|
loc: node.name?.loc || getLocation(node.loc.start, type),
|
1932
1927
|
messageId: RULE_ID2,
|
1933
|
-
data: { name
|
1928
|
+
data: { name }
|
1934
1929
|
});
|
1935
1930
|
}
|
1936
1931
|
}
|
@@ -1939,7 +1934,7 @@ var RULE_ID2 = "lone-executable-definition", definitionTypes = ["fragment", ...O
|
|
1939
1934
|
};
|
1940
1935
|
|
1941
1936
|
// src/rules/match-document-filename.ts
|
1942
|
-
import { basename, extname } from "path";
|
1937
|
+
import { basename, extname } from "node:path";
|
1943
1938
|
import { Kind as Kind7 } from "graphql";
|
1944
1939
|
var MATCH_EXTENSION = "MATCH_EXTENSION", MATCH_STYLE = "MATCH_STYLE", CASE_STYLES = [
|
1945
1940
|
"camelCase",
|
@@ -2497,51 +2492,51 @@ ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join(`
|
|
2497
2492
|
report(node, `${nodeType} "${nodeName}" should ${errorMessage}`, suggestedNames);
|
2498
2493
|
}
|
2499
2494
|
function getError() {
|
2500
|
-
let
|
2501
|
-
if (ignorePattern && new RegExp(ignorePattern, "u").test(
|
2495
|
+
let name = nodeName.replace(/(^_+)|(_+$)/g, "");
|
2496
|
+
if (ignorePattern && new RegExp(ignorePattern, "u").test(name))
|
2502
2497
|
return;
|
2503
|
-
if (prefix && !
|
2498
|
+
if (prefix && !name.startsWith(prefix))
|
2504
2499
|
return {
|
2505
2500
|
errorMessage: `have "${prefix}" prefix`,
|
2506
|
-
renameToNames: [prefix +
|
2501
|
+
renameToNames: [prefix + name]
|
2507
2502
|
};
|
2508
|
-
if (suffix && !
|
2503
|
+
if (suffix && !name.endsWith(suffix))
|
2509
2504
|
return {
|
2510
2505
|
errorMessage: `have "${suffix}" suffix`,
|
2511
|
-
renameToNames: [
|
2506
|
+
renameToNames: [name + suffix]
|
2512
2507
|
};
|
2513
|
-
let forbiddenPrefix = forbiddenPrefixes?.find((prefix2) =>
|
2508
|
+
let forbiddenPrefix = forbiddenPrefixes?.find((prefix2) => name.startsWith(prefix2));
|
2514
2509
|
if (forbiddenPrefix)
|
2515
2510
|
return {
|
2516
2511
|
errorMessage: `not have "${forbiddenPrefix}" prefix`,
|
2517
|
-
renameToNames: [
|
2512
|
+
renameToNames: [name.replace(new RegExp(`^${forbiddenPrefix}`), "")]
|
2518
2513
|
};
|
2519
|
-
let forbiddenSuffix = forbiddenSuffixes?.find((suffix2) =>
|
2514
|
+
let forbiddenSuffix = forbiddenSuffixes?.find((suffix2) => name.endsWith(suffix2));
|
2520
2515
|
if (forbiddenSuffix)
|
2521
2516
|
return {
|
2522
2517
|
errorMessage: `not have "${forbiddenSuffix}" suffix`,
|
2523
|
-
renameToNames: [
|
2518
|
+
renameToNames: [name.replace(new RegExp(`${forbiddenSuffix}$`), "")]
|
2524
2519
|
};
|
2525
|
-
if (requiredPrefixes && !requiredPrefixes.some((requiredPrefix) =>
|
2520
|
+
if (requiredPrefixes && !requiredPrefixes.some((requiredPrefix) => name.startsWith(requiredPrefix)))
|
2526
2521
|
return {
|
2527
2522
|
errorMessage: `have one of the following prefixes: ${englishJoinWords(
|
2528
2523
|
requiredPrefixes
|
2529
2524
|
)}`,
|
2530
|
-
renameToNames: style ? requiredPrefixes.map((prefix2) => convertCase(style, `${prefix2} ${
|
2525
|
+
renameToNames: style ? requiredPrefixes.map((prefix2) => convertCase(style, `${prefix2} ${name}`)) : requiredPrefixes.map((prefix2) => `${prefix2}${name}`)
|
2531
2526
|
};
|
2532
|
-
if (requiredSuffixes && !requiredSuffixes.some((requiredSuffix) =>
|
2527
|
+
if (requiredSuffixes && !requiredSuffixes.some((requiredSuffix) => name.endsWith(requiredSuffix)))
|
2533
2528
|
return {
|
2534
2529
|
errorMessage: `have one of the following suffixes: ${englishJoinWords(
|
2535
2530
|
requiredSuffixes
|
2536
2531
|
)}`,
|
2537
|
-
renameToNames: style ? requiredSuffixes.map((suffix2) => convertCase(style, `${
|
2532
|
+
renameToNames: style ? requiredSuffixes.map((suffix2) => convertCase(style, `${name} ${suffix2}`)) : requiredSuffixes.map((suffix2) => `${name}${suffix2}`)
|
2538
2533
|
};
|
2539
2534
|
if (!style)
|
2540
2535
|
return;
|
2541
|
-
if (!StyleToRegex[style].test(
|
2536
|
+
if (!StyleToRegex[style].test(name))
|
2542
2537
|
return {
|
2543
2538
|
errorMessage: `be in ${style} format`,
|
2544
|
-
renameToNames: [convertCase(style,
|
2539
|
+
renameToNames: [convertCase(style, name)]
|
2545
2540
|
};
|
2546
2541
|
}
|
2547
2542
|
}, checkUnderscore = (isLeading) => (node) => {
|
@@ -2968,7 +2963,7 @@ var RULE_ID6 = "HASHTAG_COMMENT", rule10 = {
|
|
2968
2963
|
};
|
2969
2964
|
|
2970
2965
|
// src/rules/no-one-place-fragments.ts
|
2971
|
-
import { relative } from "path";
|
2966
|
+
import { relative } from "node:path";
|
2972
2967
|
import { visit as visit4 } from "graphql";
|
2973
2968
|
var RULE_ID7 = "no-one-place-fragments", rule11 = {
|
2974
2969
|
meta: {
|
@@ -3028,8 +3023,8 @@ var RULE_ID7 = "no-one-place-fragments", rule11 = {
|
|
3028
3023
|
for (let { document, filePath } of allDocuments) {
|
3029
3024
|
let relativeFilePath = relative(CWD, filePath);
|
3030
3025
|
visit4(document, {
|
3031
|
-
FragmentSpread({ name
|
3032
|
-
let spreadName =
|
3026
|
+
FragmentSpread({ name }) {
|
3027
|
+
let spreadName = name.value;
|
3033
3028
|
usedFragmentsMap[spreadName] ||= [], usedFragmentsMap[spreadName].push(relativeFilePath);
|
3034
3029
|
}
|
3035
3030
|
});
|
@@ -4338,7 +4333,7 @@ var RULE_ID15 = "require-field-of-type-query-in-mutation-result", rule24 = {
|
|
4338
4333
|
};
|
4339
4334
|
|
4340
4335
|
// src/rules/require-import-fragment.ts
|
4341
|
-
import path from "path";
|
4336
|
+
import path from "node:path";
|
4342
4337
|
var RULE_ID16 = "require-import-fragment", SUGGESTION_ID = "add-import-expression", rule25 = {
|
4343
4338
|
meta: {
|
4344
4339
|
type: "suggestion",
|
@@ -4563,7 +4558,7 @@ var RULE_ID18 = "require-nullable-result-in-root", rule27 = {
|
|
4563
4558
|
for (let field of node.fields || []) {
|
4564
4559
|
if (field.gqlType.type !== Kind20.NON_NULL_TYPE || field.gqlType.gqlType.type !== Kind20.NAMED_TYPE)
|
4565
4560
|
continue;
|
4566
|
-
let
|
4561
|
+
let name = field.gqlType.gqlType.name.value, type = schema15.getType(name), resultType = type?.astNode ? getNodeName(type.astNode) : type?.name;
|
4567
4562
|
context.report({
|
4568
4563
|
node: field.gqlType,
|
4569
4564
|
messageId: RULE_ID18,
|
@@ -4723,7 +4718,7 @@ Include it in your selection set{{ addition }}.`
|
|
4723
4718
|
}
|
4724
4719
|
function checkFields(rawType2) {
|
4725
4720
|
let fields = rawType2.getFields();
|
4726
|
-
if (!idNames.some((
|
4721
|
+
if (!idNames.some((name) => fields[name]))
|
4727
4722
|
return;
|
4728
4723
|
function hasIdField({ selections }) {
|
4729
4724
|
return selections.some((selection) => {
|
@@ -4745,8 +4740,8 @@ Include it in your selection set{{ addition }}.`
|
|
4745
4740
|
if (checkFragments(node), hasId)
|
4746
4741
|
return;
|
4747
4742
|
let pluralSuffix = idNames.length > 1 ? "s" : "", fieldName2 = englishJoinWords(
|
4748
|
-
idNames.map((
|
4749
|
-
), addition = checkedFragmentSpreads.size === 0 ? "" : ` or add to used fragment${checkedFragmentSpreads.size > 1 ? "s" : ""} ${englishJoinWords([...checkedFragmentSpreads].map((
|
4743
|
+
idNames.map((name) => `\`${(parent.alias || parent.name).value}.${name}\``)
|
4744
|
+
), addition = checkedFragmentSpreads.size === 0 ? "" : ` or add to used fragment${checkedFragmentSpreads.size > 1 ? "s" : ""} ${englishJoinWords([...checkedFragmentSpreads].map((name) => `\`${name}\``))}`, problem = {
|
4750
4745
|
loc,
|
4751
4746
|
messageId: RULE_ID19,
|
4752
4747
|
data: {
|
@@ -5178,7 +5173,7 @@ var rule32 = {
|
|
5178
5173
|
};
|
5179
5174
|
|
5180
5175
|
// src/rules/unique-fragment-name.ts
|
5181
|
-
import { relative as relative2 } from "path";
|
5176
|
+
import { relative as relative2 } from "node:path";
|
5182
5177
|
import { Kind as Kind25 } from "graphql";
|
5183
5178
|
var RULE_ID23 = "unique-fragment-name", checkNode = (context, node, ruleId) => {
|
5184
5179
|
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) => {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@graphql-eslint/eslint-plugin",
|
3
|
-
"version": "4.0.0-alpha.
|
3
|
+
"version": "4.0.0-alpha.5",
|
4
4
|
"type": "module",
|
5
5
|
"description": "GraphQL plugin for ESLint",
|
6
6
|
"repository": "https://github.com/B2o5T/graphql-eslint",
|
@@ -9,21 +9,16 @@
|
|
9
9
|
"engines": {
|
10
10
|
"node": ">=18"
|
11
11
|
},
|
12
|
-
"main": "cjs/index.js",
|
13
12
|
"exports": {
|
14
13
|
"./package.json": "./package.json",
|
15
14
|
".": {
|
16
15
|
"require": {
|
17
|
-
"types": "./cjs/index.d.
|
16
|
+
"types": "./cjs/index.d.cts",
|
18
17
|
"default": "./cjs/index.js"
|
19
18
|
},
|
20
19
|
"import": {
|
21
20
|
"types": "./esm/index.d.ts",
|
22
21
|
"default": "./esm/index.js"
|
23
|
-
},
|
24
|
-
"default": {
|
25
|
-
"types": "./esm/index.d.ts",
|
26
|
-
"default": "./esm/index.js"
|
27
22
|
}
|
28
23
|
}
|
29
24
|
},
|
@@ -40,7 +35,7 @@
|
|
40
35
|
},
|
41
36
|
"dependencies": {
|
42
37
|
"@graphql-tools/code-file-loader": "^8.0.0",
|
43
|
-
"@graphql-tools/graphql-tag-pluck": "8.3.2
|
38
|
+
"@graphql-tools/graphql-tag-pluck": "8.3.2",
|
44
39
|
"@graphql-tools/utils": "^10.0.0",
|
45
40
|
"debug": "^4.3.4",
|
46
41
|
"fast-glob": "^3.2.12",
|