@graphql-eslint/eslint-plugin 4.0.0-alpha.7 → 4.0.0-alpha.8
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/operations-all.js +1 -1
- package/cjs/meta.js +1 -1
- package/cjs/rules/alphabetize/index.d.cts +1 -1
- package/cjs/rules/alphabetize/index.js +27 -11
- package/cjs/utils.js +37 -14
- package/esm/configs/operations-all.js +1 -1
- package/esm/meta.js +1 -1
- package/esm/rules/alphabetize/index.d.ts +1 -1
- package/esm/rules/alphabetize/index.js +24 -8
- package/esm/utils.js +37 -14
- package/index.browser.js +62 -23
- package/package.json +1 -1
@@ -13,7 +13,7 @@ var require_operations_all = _chunkUIAXBAMDjs.__commonJS.call(void 0, {
|
|
13
13
|
selections: ["OperationDefinition", "FragmentDefinition"],
|
14
14
|
variables: !0,
|
15
15
|
arguments: ["Field", "Directive"],
|
16
|
-
groups: ["
|
16
|
+
groups: ["...", "id", "*", "{"]
|
17
17
|
}
|
18
18
|
],
|
19
19
|
"@graphql-eslint/lone-executable-definition": "error",
|
package/cjs/meta.js
CHANGED
@@ -58,7 +58,7 @@ declare const schema: {
|
|
58
58
|
};
|
59
59
|
readonly groups: {
|
60
60
|
readonly minItems: 2;
|
61
|
-
readonly description:
|
61
|
+
readonly description: string;
|
62
62
|
readonly type: "array";
|
63
63
|
readonly uniqueItems: true;
|
64
64
|
readonly items: {
|
@@ -61,7 +61,14 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
61
61
|
groups: {
|
62
62
|
..._utilsjs.ARRAY_DEFAULT_OPTIONS,
|
63
63
|
minItems: 2,
|
64
|
-
description:
|
64
|
+
description: [
|
65
|
+
"Order group. Example: `['...', 'id', '*', '{']` where:",
|
66
|
+
"- `...` stands for fragment spreads",
|
67
|
+
"- `id` stands for field with name `id`",
|
68
|
+
"- `*` stands for everything else",
|
69
|
+
"- `{` stands for fields `selection set`"
|
70
|
+
].join(`
|
71
|
+
`)
|
65
72
|
}
|
66
73
|
}
|
67
74
|
}
|
@@ -183,7 +190,7 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
183
190
|
selections: selectionsEnum,
|
184
191
|
variables: !0,
|
185
192
|
arguments: [_graphql.Kind.FIELD, _graphql.Kind.DIRECTIVE],
|
186
|
-
groups: ["
|
193
|
+
groups: ["...", "id", "*", "{"]
|
187
194
|
}
|
188
195
|
]
|
189
196
|
}
|
@@ -221,20 +228,18 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
221
228
|
}
|
222
229
|
function checkNodes(nodes = []) {
|
223
230
|
for (let i = 1; i < nodes.length; i += 1) {
|
224
|
-
const currNode = nodes[i], currName =
|
231
|
+
const currNode = nodes[i], currName = getName(currNode);
|
225
232
|
if (!currName)
|
226
233
|
continue;
|
227
|
-
const prevNode = nodes[i - 1], prevName =
|
234
|
+
const prevNode = nodes[i - 1], prevName = getName(prevNode);
|
228
235
|
if (prevName) {
|
229
236
|
const compareResult = prevName.localeCompare(currName), { groups } = opts;
|
230
237
|
let shouldSortByGroup = !1;
|
231
|
-
if (_optionalChain([groups, 'optionalAccess',
|
238
|
+
if (_optionalChain([groups, 'optionalAccess', _ => _.length])) {
|
232
239
|
if (!groups.includes("*"))
|
233
240
|
throw new Error("`groups` option should contain `*` string.");
|
234
|
-
|
235
|
-
indexForPrev
|
236
|
-
let indexForCurr = groups.indexOf(currName);
|
237
|
-
if (indexForCurr === -1 && (indexForCurr = groups.indexOf("*")), shouldSortByGroup = indexForPrev - indexForCurr > 0, indexForPrev < indexForCurr)
|
241
|
+
const indexForPrev = getIndex({ node: prevNode, groups }), indexForCurr = getIndex({ node: currNode, groups });
|
242
|
+
if (shouldSortByGroup = indexForPrev - indexForCurr > 0, indexForPrev < indexForCurr)
|
238
243
|
continue;
|
239
244
|
}
|
240
245
|
if (!shouldSortByGroup && !(compareResult === 1) && (!(compareResult === 0) || !prevNode.kind.endsWith("Extension") || currNode.kind.endsWith("Extension")))
|
@@ -274,7 +279,7 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
274
279
|
_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION,
|
275
280
|
_graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION
|
276
281
|
]
|
277
|
-
].filter(_utilsjs.truthy).flat().join(","), selectionsSelector = _optionalChain([opts, 'access',
|
282
|
+
].filter(_utilsjs.truthy).flat().join(","), selectionsSelector = _optionalChain([opts, 'access', _2 => _2.selections, 'optionalAccess', _3 => _3.join, 'call', _4 => _4(",")]), argumentsSelector = _optionalChain([opts, 'access', _5 => _5.arguments, 'optionalAccess', _6 => _6.join, 'call', _7 => _7(",")]);
|
278
283
|
if (fieldsSelector && (listeners[fieldsSelector] = (node) => {
|
279
284
|
checkNodes(node.fields);
|
280
285
|
}), opts.values) {
|
@@ -286,7 +291,7 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
286
291
|
return selectionsSelector && (listeners[`:matches(${selectionsSelector}) SelectionSet`] = (node) => {
|
287
292
|
checkNodes(node.selections);
|
288
293
|
}), opts.variables && (listeners.OperationDefinition = (node) => {
|
289
|
-
checkNodes(_optionalChain([node, 'access',
|
294
|
+
checkNodes(_optionalChain([node, 'access', _8 => _8.variableDefinitions, 'optionalAccess', _9 => _9.map, 'call', _10 => _10((varDef) => varDef.variable)]));
|
290
295
|
}), argumentsSelector && (listeners[argumentsSelector] = (node) => {
|
291
296
|
checkNodes(node.arguments);
|
292
297
|
}), opts.definitions && (listeners.Document = (node) => {
|
@@ -294,6 +299,17 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
294
299
|
}), listeners;
|
295
300
|
}
|
296
301
|
};
|
302
|
+
function getIndex({
|
303
|
+
node,
|
304
|
+
groups
|
305
|
+
}) {
|
306
|
+
let index = groups.indexOf(getName(node));
|
307
|
+
return index === -1 && "selectionSet" in node && node.selectionSet && (index = groups.indexOf("{")), index === -1 && node.kind === _graphql.Kind.FRAGMENT_SPREAD && (index = groups.indexOf("...")), index === -1 && (index = groups.indexOf("*")), index;
|
308
|
+
}
|
309
|
+
function getName(node) {
|
310
|
+
return "alias" in node && _optionalChain([node, 'access', _11 => _11.alias, 'optionalAccess', _12 => _12.value]) || //
|
311
|
+
"name" in node && _optionalChain([node, 'access', _13 => _13.name, 'optionalAccess', _14 => _14.value]) || "";
|
312
|
+
}
|
297
313
|
|
298
314
|
|
299
315
|
exports.rule = rule;
|
package/cjs/utils.js
CHANGED
@@ -78,26 +78,49 @@ function truthy(value) {
|
|
78
78
|
return !!value;
|
79
79
|
}
|
80
80
|
const DisplayNodeNameMap = {
|
81
|
-
[_graphql.Kind.
|
82
|
-
[_graphql.Kind.
|
83
|
-
[_graphql.Kind.
|
84
|
-
[_graphql.Kind.
|
81
|
+
[_graphql.Kind.ARGUMENT]: "argument",
|
82
|
+
[_graphql.Kind.BOOLEAN]: "boolean",
|
83
|
+
[_graphql.Kind.DIRECTIVE_DEFINITION]: "directive",
|
84
|
+
[_graphql.Kind.DIRECTIVE]: "directive",
|
85
|
+
[_graphql.Kind.DOCUMENT]: "document",
|
85
86
|
[_graphql.Kind.ENUM_TYPE_DEFINITION]: "enum",
|
86
87
|
[_graphql.Kind.ENUM_TYPE_EXTENSION]: "enum",
|
87
|
-
[_graphql.Kind.
|
88
|
+
[_graphql.Kind.ENUM_VALUE_DEFINITION]: "enum value",
|
89
|
+
[_graphql.Kind.ENUM]: "enum",
|
90
|
+
[_graphql.Kind.FIELD_DEFINITION]: "field",
|
91
|
+
[_graphql.Kind.FIELD]: "field",
|
92
|
+
[_graphql.Kind.FLOAT]: "float",
|
93
|
+
[_graphql.Kind.FRAGMENT_DEFINITION]: "fragment",
|
94
|
+
[_graphql.Kind.FRAGMENT_SPREAD]: "fragment spread",
|
95
|
+
[_graphql.Kind.INLINE_FRAGMENT]: "inline fragment",
|
88
96
|
[_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION]: "input",
|
89
97
|
[_graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION]: "input",
|
90
|
-
[_graphql.Kind.UNION_TYPE_DEFINITION]: "union",
|
91
|
-
[_graphql.Kind.UNION_TYPE_EXTENSION]: "union",
|
92
|
-
[_graphql.Kind.DIRECTIVE_DEFINITION]: "directive",
|
93
|
-
[_graphql.Kind.FIELD_DEFINITION]: "field",
|
94
|
-
[_graphql.Kind.ENUM_VALUE_DEFINITION]: "enum value",
|
95
98
|
[_graphql.Kind.INPUT_VALUE_DEFINITION]: "input value",
|
96
|
-
[_graphql.Kind.
|
97
|
-
[_graphql.Kind.
|
98
|
-
[_graphql.Kind.
|
99
|
+
[_graphql.Kind.INT]: "int",
|
100
|
+
[_graphql.Kind.INTERFACE_TYPE_DEFINITION]: "interface",
|
101
|
+
[_graphql.Kind.INTERFACE_TYPE_EXTENSION]: "interface",
|
102
|
+
[_graphql.Kind.LIST_TYPE]: "list type",
|
103
|
+
[_graphql.Kind.LIST]: "list",
|
104
|
+
[_graphql.Kind.NAME]: "name",
|
105
|
+
[_graphql.Kind.NAMED_TYPE]: "named type",
|
106
|
+
[_graphql.Kind.NON_NULL_TYPE]: "non-null type",
|
107
|
+
[_graphql.Kind.NULL]: "null",
|
108
|
+
[_graphql.Kind.OBJECT_FIELD]: "object field",
|
109
|
+
[_graphql.Kind.OBJECT_TYPE_DEFINITION]: "type",
|
110
|
+
[_graphql.Kind.OBJECT_TYPE_EXTENSION]: "type",
|
111
|
+
[_graphql.Kind.OBJECT]: "object",
|
99
112
|
[_graphql.Kind.OPERATION_DEFINITION]: "operation",
|
100
|
-
[_graphql.Kind.
|
113
|
+
[_graphql.Kind.OPERATION_TYPE_DEFINITION]: "operation type",
|
114
|
+
[_graphql.Kind.SCALAR_TYPE_DEFINITION]: "scalar",
|
115
|
+
[_graphql.Kind.SCALAR_TYPE_EXTENSION]: "scalar",
|
116
|
+
[_graphql.Kind.SCHEMA_DEFINITION]: "schema",
|
117
|
+
[_graphql.Kind.SCHEMA_EXTENSION]: "schema",
|
118
|
+
[_graphql.Kind.SELECTION_SET]: "selection set",
|
119
|
+
[_graphql.Kind.STRING]: "string",
|
120
|
+
[_graphql.Kind.UNION_TYPE_DEFINITION]: "union",
|
121
|
+
[_graphql.Kind.UNION_TYPE_EXTENSION]: "union",
|
122
|
+
[_graphql.Kind.VARIABLE_DEFINITION]: "variable",
|
123
|
+
[_graphql.Kind.VARIABLE]: "variable"
|
101
124
|
};
|
102
125
|
function displayNodeName(node) {
|
103
126
|
return `${node.kind === _graphql.Kind.OPERATION_DEFINITION ? node.operation : DisplayNodeNameMap[node.kind]} "${"alias" in node && _optionalChain([node, 'access', _ => _.alias, 'optionalAccess', _2 => _2.value]) || "name" in node && _optionalChain([node, 'access', _3 => _3.name, 'optionalAccess', _4 => _4.value])}"`;
|
@@ -13,7 +13,7 @@ var require_operations_all = __commonJS({
|
|
13
13
|
selections: ["OperationDefinition", "FragmentDefinition"],
|
14
14
|
variables: !0,
|
15
15
|
arguments: ["Field", "Directive"],
|
16
|
-
groups: ["
|
16
|
+
groups: ["...", "id", "*", "{"]
|
17
17
|
}
|
18
18
|
],
|
19
19
|
"@graphql-eslint/lone-executable-definition": "error",
|
package/esm/meta.js
CHANGED
@@ -58,7 +58,7 @@ declare const schema: {
|
|
58
58
|
};
|
59
59
|
readonly groups: {
|
60
60
|
readonly minItems: 2;
|
61
|
-
readonly description:
|
61
|
+
readonly description: string;
|
62
62
|
readonly type: "array";
|
63
63
|
readonly uniqueItems: true;
|
64
64
|
readonly items: {
|
@@ -61,7 +61,14 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
61
61
|
groups: {
|
62
62
|
...ARRAY_DEFAULT_OPTIONS,
|
63
63
|
minItems: 2,
|
64
|
-
description:
|
64
|
+
description: [
|
65
|
+
"Order group. Example: `['...', 'id', '*', '{']` where:",
|
66
|
+
"- `...` stands for fragment spreads",
|
67
|
+
"- `id` stands for field with name `id`",
|
68
|
+
"- `*` stands for everything else",
|
69
|
+
"- `{` stands for fields `selection set`"
|
70
|
+
].join(`
|
71
|
+
`)
|
65
72
|
}
|
66
73
|
}
|
67
74
|
}
|
@@ -183,7 +190,7 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
183
190
|
selections: selectionsEnum,
|
184
191
|
variables: !0,
|
185
192
|
arguments: [Kind.FIELD, Kind.DIRECTIVE],
|
186
|
-
groups: ["
|
193
|
+
groups: ["...", "id", "*", "{"]
|
187
194
|
}
|
188
195
|
]
|
189
196
|
}
|
@@ -221,20 +228,18 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
221
228
|
}
|
222
229
|
function checkNodes(nodes = []) {
|
223
230
|
for (let i = 1; i < nodes.length; i += 1) {
|
224
|
-
const currNode = nodes[i], currName =
|
231
|
+
const currNode = nodes[i], currName = getName(currNode);
|
225
232
|
if (!currName)
|
226
233
|
continue;
|
227
|
-
const prevNode = nodes[i - 1], prevName =
|
234
|
+
const prevNode = nodes[i - 1], prevName = getName(prevNode);
|
228
235
|
if (prevName) {
|
229
236
|
const compareResult = prevName.localeCompare(currName), { groups } = opts;
|
230
237
|
let shouldSortByGroup = !1;
|
231
238
|
if (groups?.length) {
|
232
239
|
if (!groups.includes("*"))
|
233
240
|
throw new Error("`groups` option should contain `*` string.");
|
234
|
-
|
235
|
-
indexForPrev
|
236
|
-
let indexForCurr = groups.indexOf(currName);
|
237
|
-
if (indexForCurr === -1 && (indexForCurr = groups.indexOf("*")), shouldSortByGroup = indexForPrev - indexForCurr > 0, indexForPrev < indexForCurr)
|
241
|
+
const indexForPrev = getIndex({ node: prevNode, groups }), indexForCurr = getIndex({ node: currNode, groups });
|
242
|
+
if (shouldSortByGroup = indexForPrev - indexForCurr > 0, indexForPrev < indexForCurr)
|
238
243
|
continue;
|
239
244
|
}
|
240
245
|
if (!shouldSortByGroup && !(compareResult === 1) && (!(compareResult === 0) || !prevNode.kind.endsWith("Extension") || currNode.kind.endsWith("Extension")))
|
@@ -294,6 +299,17 @@ const RULE_ID = "alphabetize", fieldsEnum = [
|
|
294
299
|
}), listeners;
|
295
300
|
}
|
296
301
|
};
|
302
|
+
function getIndex({
|
303
|
+
node,
|
304
|
+
groups
|
305
|
+
}) {
|
306
|
+
let index = groups.indexOf(getName(node));
|
307
|
+
return index === -1 && "selectionSet" in node && node.selectionSet && (index = groups.indexOf("{")), index === -1 && node.kind === Kind.FRAGMENT_SPREAD && (index = groups.indexOf("...")), index === -1 && (index = groups.indexOf("*")), index;
|
308
|
+
}
|
309
|
+
function getName(node) {
|
310
|
+
return "alias" in node && node.alias?.value || //
|
311
|
+
"name" in node && node.name?.value || "";
|
312
|
+
}
|
297
313
|
export {
|
298
314
|
rule
|
299
315
|
};
|
package/esm/utils.js
CHANGED
@@ -78,26 +78,49 @@ function truthy(value) {
|
|
78
78
|
return !!value;
|
79
79
|
}
|
80
80
|
const DisplayNodeNameMap = {
|
81
|
-
[Kind.
|
82
|
-
[Kind.
|
83
|
-
[Kind.
|
84
|
-
[Kind.
|
81
|
+
[Kind.ARGUMENT]: "argument",
|
82
|
+
[Kind.BOOLEAN]: "boolean",
|
83
|
+
[Kind.DIRECTIVE_DEFINITION]: "directive",
|
84
|
+
[Kind.DIRECTIVE]: "directive",
|
85
|
+
[Kind.DOCUMENT]: "document",
|
85
86
|
[Kind.ENUM_TYPE_DEFINITION]: "enum",
|
86
87
|
[Kind.ENUM_TYPE_EXTENSION]: "enum",
|
87
|
-
[Kind.
|
88
|
+
[Kind.ENUM_VALUE_DEFINITION]: "enum value",
|
89
|
+
[Kind.ENUM]: "enum",
|
90
|
+
[Kind.FIELD_DEFINITION]: "field",
|
91
|
+
[Kind.FIELD]: "field",
|
92
|
+
[Kind.FLOAT]: "float",
|
93
|
+
[Kind.FRAGMENT_DEFINITION]: "fragment",
|
94
|
+
[Kind.FRAGMENT_SPREAD]: "fragment spread",
|
95
|
+
[Kind.INLINE_FRAGMENT]: "inline fragment",
|
88
96
|
[Kind.INPUT_OBJECT_TYPE_DEFINITION]: "input",
|
89
97
|
[Kind.INPUT_OBJECT_TYPE_EXTENSION]: "input",
|
90
|
-
[Kind.UNION_TYPE_DEFINITION]: "union",
|
91
|
-
[Kind.UNION_TYPE_EXTENSION]: "union",
|
92
|
-
[Kind.DIRECTIVE_DEFINITION]: "directive",
|
93
|
-
[Kind.FIELD_DEFINITION]: "field",
|
94
|
-
[Kind.ENUM_VALUE_DEFINITION]: "enum value",
|
95
98
|
[Kind.INPUT_VALUE_DEFINITION]: "input value",
|
96
|
-
[Kind.
|
97
|
-
[Kind.
|
98
|
-
[Kind.
|
99
|
+
[Kind.INT]: "int",
|
100
|
+
[Kind.INTERFACE_TYPE_DEFINITION]: "interface",
|
101
|
+
[Kind.INTERFACE_TYPE_EXTENSION]: "interface",
|
102
|
+
[Kind.LIST_TYPE]: "list type",
|
103
|
+
[Kind.LIST]: "list",
|
104
|
+
[Kind.NAME]: "name",
|
105
|
+
[Kind.NAMED_TYPE]: "named type",
|
106
|
+
[Kind.NON_NULL_TYPE]: "non-null type",
|
107
|
+
[Kind.NULL]: "null",
|
108
|
+
[Kind.OBJECT_FIELD]: "object field",
|
109
|
+
[Kind.OBJECT_TYPE_DEFINITION]: "type",
|
110
|
+
[Kind.OBJECT_TYPE_EXTENSION]: "type",
|
111
|
+
[Kind.OBJECT]: "object",
|
99
112
|
[Kind.OPERATION_DEFINITION]: "operation",
|
100
|
-
[Kind.
|
113
|
+
[Kind.OPERATION_TYPE_DEFINITION]: "operation type",
|
114
|
+
[Kind.SCALAR_TYPE_DEFINITION]: "scalar",
|
115
|
+
[Kind.SCALAR_TYPE_EXTENSION]: "scalar",
|
116
|
+
[Kind.SCHEMA_DEFINITION]: "schema",
|
117
|
+
[Kind.SCHEMA_EXTENSION]: "schema",
|
118
|
+
[Kind.SELECTION_SET]: "selection set",
|
119
|
+
[Kind.STRING]: "string",
|
120
|
+
[Kind.UNION_TYPE_DEFINITION]: "union",
|
121
|
+
[Kind.UNION_TYPE_EXTENSION]: "union",
|
122
|
+
[Kind.VARIABLE_DEFINITION]: "variable",
|
123
|
+
[Kind.VARIABLE]: "variable"
|
101
124
|
};
|
102
125
|
function displayNodeName(node) {
|
103
126
|
return `${node.kind === Kind.OPERATION_DEFINITION ? node.operation : DisplayNodeNameMap[node.kind]} "${"alias" in node && node.alias?.value || "name" in node && node.name?.value}"`;
|
package/index.browser.js
CHANGED
@@ -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",
|
@@ -476,26 +476,49 @@ function truthy(value) {
|
|
476
476
|
return !!value;
|
477
477
|
}
|
478
478
|
var DisplayNodeNameMap = {
|
479
|
-
[Kind2.
|
480
|
-
[Kind2.
|
481
|
-
[Kind2.
|
482
|
-
[Kind2.
|
479
|
+
[Kind2.ARGUMENT]: "argument",
|
480
|
+
[Kind2.BOOLEAN]: "boolean",
|
481
|
+
[Kind2.DIRECTIVE_DEFINITION]: "directive",
|
482
|
+
[Kind2.DIRECTIVE]: "directive",
|
483
|
+
[Kind2.DOCUMENT]: "document",
|
483
484
|
[Kind2.ENUM_TYPE_DEFINITION]: "enum",
|
484
485
|
[Kind2.ENUM_TYPE_EXTENSION]: "enum",
|
485
|
-
[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",
|
486
494
|
[Kind2.INPUT_OBJECT_TYPE_DEFINITION]: "input",
|
487
495
|
[Kind2.INPUT_OBJECT_TYPE_EXTENSION]: "input",
|
488
|
-
[Kind2.UNION_TYPE_DEFINITION]: "union",
|
489
|
-
[Kind2.UNION_TYPE_EXTENSION]: "union",
|
490
|
-
[Kind2.DIRECTIVE_DEFINITION]: "directive",
|
491
|
-
[Kind2.FIELD_DEFINITION]: "field",
|
492
|
-
[Kind2.ENUM_VALUE_DEFINITION]: "enum value",
|
493
496
|
[Kind2.INPUT_VALUE_DEFINITION]: "input value",
|
494
|
-
[Kind2.
|
495
|
-
[Kind2.
|
496
|
-
[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",
|
497
510
|
[Kind2.OPERATION_DEFINITION]: "operation",
|
498
|
-
[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"
|
499
522
|
};
|
500
523
|
function displayNodeName(node) {
|
501
524
|
return `${node.kind === Kind2.OPERATION_DEFINITION ? node.operation : DisplayNodeNameMap[node.kind]} "${"alias" in node && node.alias?.value || "name" in node && node.name?.value}"`;
|
@@ -726,7 +749,14 @@ var RULE_ID = "alphabetize", fieldsEnum = [
|
|
726
749
|
groups: {
|
727
750
|
...ARRAY_DEFAULT_OPTIONS,
|
728
751
|
minItems: 2,
|
729
|
-
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
|
+
`)
|
730
760
|
}
|
731
761
|
}
|
732
762
|
}
|
@@ -848,7 +878,7 @@ var RULE_ID = "alphabetize", fieldsEnum = [
|
|
848
878
|
selections: selectionsEnum,
|
849
879
|
variables: !0,
|
850
880
|
arguments: [Kind4.FIELD, Kind4.DIRECTIVE],
|
851
|
-
groups: ["
|
881
|
+
groups: ["...", "id", "*", "{"]
|
852
882
|
}
|
853
883
|
]
|
854
884
|
}
|
@@ -886,19 +916,17 @@ var RULE_ID = "alphabetize", fieldsEnum = [
|
|
886
916
|
}
|
887
917
|
function checkNodes(nodes = []) {
|
888
918
|
for (let i = 1; i < nodes.length; i += 1) {
|
889
|
-
let currNode = nodes[i], currName =
|
919
|
+
let currNode = nodes[i], currName = getName(currNode);
|
890
920
|
if (!currName)
|
891
921
|
continue;
|
892
|
-
let prevNode = nodes[i - 1], prevName =
|
922
|
+
let prevNode = nodes[i - 1], prevName = getName(prevNode);
|
893
923
|
if (prevName) {
|
894
924
|
let compareResult = prevName.localeCompare(currName), { groups } = opts, shouldSortByGroup = !1;
|
895
925
|
if (groups?.length) {
|
896
926
|
if (!groups.includes("*"))
|
897
927
|
throw new Error("`groups` option should contain `*` string.");
|
898
|
-
let indexForPrev = groups
|
899
|
-
indexForPrev
|
900
|
-
let indexForCurr = groups.indexOf(currName);
|
901
|
-
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)
|
902
930
|
continue;
|
903
931
|
}
|
904
932
|
if (!shouldSortByGroup && !(compareResult === 1) && (!(compareResult === 0) || !prevNode.kind.endsWith("Extension") || currNode.kind.endsWith("Extension")))
|
@@ -958,6 +986,17 @@ var RULE_ID = "alphabetize", fieldsEnum = [
|
|
958
986
|
}), listeners;
|
959
987
|
}
|
960
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
|
+
}
|
961
1000
|
|
962
1001
|
// src/rules/description-style/index.ts
|
963
1002
|
var schema2 = {
|