@graphql-tools/import 7.1.1-alpha-20250905084227-a20ed1fabf7f2c69761699dc9c4e0676cd9e8c28 → 7.1.1-alpha-20250905110939-465ce4b83eaffe7e8ad2d10538526654c551aeff
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/index.js +39 -41
- package/esm/index.js +40 -42
- package/package.json +1 -1
- package/typings/index.d.cts +5 -2
- package/typings/index.d.ts +5 -2
package/cjs/index.js
CHANGED
|
@@ -95,7 +95,7 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports, pathAliases)
|
|
|
95
95
|
addDefinition(importedDefinition, fieldDefinitionName, definitionsWithDeps);
|
|
96
96
|
}
|
|
97
97
|
});
|
|
98
|
-
const newDependencySet = new
|
|
98
|
+
const newDependencySet = new Map();
|
|
99
99
|
switch (field.kind) {
|
|
100
100
|
case graphql_1.Kind.FIELD_DEFINITION:
|
|
101
101
|
visitFieldDefinitionNode(field, newDependencySet, dependenciesByDefinitionName);
|
|
@@ -104,7 +104,7 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports, pathAliases)
|
|
|
104
104
|
visitInputValueDefinitionNode(field, newDependencySet, dependenciesByDefinitionName);
|
|
105
105
|
break;
|
|
106
106
|
}
|
|
107
|
-
newDependencySet.forEach(dependencyName => {
|
|
107
|
+
Array.from(newDependencySet.keys()).forEach(dependencyName => {
|
|
108
108
|
const definitionsInCurrentFile = fileDefinitionMap.get(dependencyName);
|
|
109
109
|
definitionsInCurrentFile?.forEach(def => addDefinition(def, definitionName, definitionSet));
|
|
110
110
|
const definitionsFromImports = allImportedDefinitionsMap.get(dependencyName);
|
|
@@ -131,11 +131,11 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports, pathAliases)
|
|
|
131
131
|
});
|
|
132
132
|
const dependenciesOfDefinition = dependenciesByDefinitionName.get(definitionName);
|
|
133
133
|
if (dependenciesOfDefinition) {
|
|
134
|
-
for (const dependencyName of dependenciesOfDefinition) {
|
|
134
|
+
for (const [dependencyName, dependencyNodes] of dependenciesOfDefinition.entries()) {
|
|
135
135
|
// If that dependency cannot be found both in imports and this file, throw an error
|
|
136
136
|
if (!allImportedDefinitionsMap.has(dependencyName) &&
|
|
137
137
|
!definitionsByName.has(dependencyName)) {
|
|
138
|
-
throw
|
|
138
|
+
throw (0, utils_1.createGraphQLError)(`Couldn't find type ${dependencyName} in any of the schemas.`, { nodes: Array.from(dependencyNodes) });
|
|
139
139
|
}
|
|
140
140
|
const dependencyDefinitionsFromImports = allImportedDefinitionsMap.get(dependencyName);
|
|
141
141
|
dependencyDefinitionsFromImports?.forEach(dependencyDefinition => {
|
|
@@ -158,9 +158,7 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports, pathAliases)
|
|
|
158
158
|
function extractDependencies(filePath, fileContents) {
|
|
159
159
|
const definitionsByName = new Map();
|
|
160
160
|
const dependenciesByDefinitionName = new Map();
|
|
161
|
-
const { document } = (0, utils_1.parseGraphQLSDL)(filePath, fileContents
|
|
162
|
-
noLocation: true,
|
|
163
|
-
});
|
|
161
|
+
const { document } = (0, utils_1.parseGraphQLSDL)(filePath, fileContents);
|
|
164
162
|
for (const definition of document.definitions) {
|
|
165
163
|
visitDefinition(definition, definitionsByName, dependenciesByDefinitionName);
|
|
166
164
|
}
|
|
@@ -234,7 +232,7 @@ function visitDefinition(definition, definitionsByName, dependenciesByDefinition
|
|
|
234
232
|
definitionsSet.add(definition);
|
|
235
233
|
let dependencySet = dependenciesByDefinitionName.get(definitionName);
|
|
236
234
|
if (!dependencySet) {
|
|
237
|
-
dependencySet = new
|
|
235
|
+
dependencySet = new Map();
|
|
238
236
|
dependenciesByDefinitionName.set(definitionName, dependencySet);
|
|
239
237
|
}
|
|
240
238
|
switch (definition.kind) {
|
|
@@ -304,7 +302,7 @@ function visitDefinition(definition, definitionsByName, dependenciesByDefinition
|
|
|
304
302
|
});
|
|
305
303
|
let dependencySet = dependenciesByDefinitionName.get(definitionName);
|
|
306
304
|
if (!dependencySet) {
|
|
307
|
-
dependencySet = new
|
|
305
|
+
dependencySet = new Map();
|
|
308
306
|
dependenciesByDefinitionName.set(definitionName, dependencySet);
|
|
309
307
|
}
|
|
310
308
|
switch (field.kind) {
|
|
@@ -332,7 +330,7 @@ function getFileDefinitionMap(definitionsByName, dependenciesByDefinitionName) {
|
|
|
332
330
|
}
|
|
333
331
|
const dependenciesOfDefinition = dependenciesByDefinitionName.get(definitionName);
|
|
334
332
|
if (dependenciesOfDefinition) {
|
|
335
|
-
for (const dependencyName of dependenciesOfDefinition) {
|
|
333
|
+
for (const dependencyName of dependenciesOfDefinition.keys()) {
|
|
336
334
|
const dependencyDefinitions = definitionsByName.get(dependencyName);
|
|
337
335
|
if (dependencyDefinitions != null) {
|
|
338
336
|
for (const dependencyDefinition of dependencyDefinitions) {
|
|
@@ -513,9 +511,17 @@ function applyPathAlias(prefixPattern, mapping, importFrom) {
|
|
|
513
511
|
}
|
|
514
512
|
return mapping;
|
|
515
513
|
}
|
|
514
|
+
function addToDependencySet(dependencySet, node) {
|
|
515
|
+
const existingNodes = dependencySet.get(node.value);
|
|
516
|
+
if (existingNodes != null) {
|
|
517
|
+
existingNodes.add(node);
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
dependencySet.set(node.value, new Set([node]));
|
|
521
|
+
}
|
|
516
522
|
function visitOperationDefinitionNode(node, dependencySet) {
|
|
517
523
|
if (node.name?.value) {
|
|
518
|
-
dependencySet
|
|
524
|
+
addToDependencySet(dependencySet, node.name);
|
|
519
525
|
}
|
|
520
526
|
node.selectionSet.selections.forEach(selectionNode => visitSelectionNode(selectionNode, dependencySet));
|
|
521
527
|
}
|
|
@@ -536,22 +542,20 @@ function visitFieldNode(node, dependencySet) {
|
|
|
536
542
|
node.selectionSet?.selections.forEach(selectionNode => visitSelectionNode(selectionNode, dependencySet));
|
|
537
543
|
}
|
|
538
544
|
function visitFragmentSpreadNode(node, dependencySet) {
|
|
539
|
-
dependencySet
|
|
545
|
+
addToDependencySet(dependencySet, node.name);
|
|
540
546
|
}
|
|
541
547
|
function visitInlineFragmentNode(node, dependencySet) {
|
|
542
548
|
node.selectionSet.selections.forEach(selectionNode => visitSelectionNode(selectionNode, dependencySet));
|
|
543
549
|
}
|
|
544
550
|
function visitFragmentDefinitionNode(node, dependencySet) {
|
|
545
|
-
dependencySet
|
|
551
|
+
addToDependencySet(dependencySet, node.name);
|
|
546
552
|
node.selectionSet.selections.forEach(selectionNode => visitSelectionNode(selectionNode, dependencySet));
|
|
547
553
|
}
|
|
548
554
|
function addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName) {
|
|
549
|
-
const typeName = node.name.value;
|
|
550
555
|
// all interfaces should be dependent to each other
|
|
551
556
|
const allDependencies = [
|
|
552
|
-
|
|
553
|
-
...(node.interfaces?.map((namedTypeNode) => namedTypeNode.name
|
|
554
|
-
[]),
|
|
557
|
+
node.name,
|
|
558
|
+
...(node.interfaces?.map((namedTypeNode) => namedTypeNode.name) || []),
|
|
555
559
|
];
|
|
556
560
|
node.interfaces?.forEach((namedTypeNode) => {
|
|
557
561
|
visitNamedTypeNode(namedTypeNode, dependencySet);
|
|
@@ -559,19 +563,18 @@ function addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionN
|
|
|
559
563
|
let set = dependenciesByDefinitionName.get(interfaceName);
|
|
560
564
|
// interface should be dependent to the type as well
|
|
561
565
|
if (set == null) {
|
|
562
|
-
set = new
|
|
566
|
+
set = new Map();
|
|
563
567
|
dependenciesByDefinitionName.set(interfaceName, set);
|
|
564
568
|
}
|
|
565
569
|
allDependencies.forEach(dependency => {
|
|
566
|
-
if (dependency !== interfaceName) {
|
|
567
|
-
set
|
|
570
|
+
if (dependency.value !== interfaceName) {
|
|
571
|
+
addToDependencySet(set, dependency);
|
|
568
572
|
}
|
|
569
573
|
});
|
|
570
574
|
});
|
|
571
575
|
}
|
|
572
576
|
function visitObjectTypeDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
573
|
-
|
|
574
|
-
dependencySet.add(typeName);
|
|
577
|
+
addToDependencySet(dependencySet, node.name);
|
|
575
578
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
576
579
|
node.fields?.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
577
580
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
@@ -579,7 +582,7 @@ function visitObjectTypeDefinitionNode(node, dependencySet, dependenciesByDefini
|
|
|
579
582
|
function visitDirectiveNode(node, dependencySet) {
|
|
580
583
|
const directiveName = node.name.value;
|
|
581
584
|
if (!builtinDirectives.includes(directiveName)) {
|
|
582
|
-
dependencySet
|
|
585
|
+
addToDependencySet(dependencySet, node.name);
|
|
583
586
|
}
|
|
584
587
|
}
|
|
585
588
|
function visitFieldDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
@@ -609,7 +612,7 @@ function visitNonNullTypeNode(node, dependencySet, dependenciesByDefinitionName)
|
|
|
609
612
|
function visitNamedTypeNode(node, dependencySet) {
|
|
610
613
|
const namedTypeName = node.name.value;
|
|
611
614
|
if (!builtinTypes.includes(namedTypeName)) {
|
|
612
|
-
dependencySet
|
|
615
|
+
addToDependencySet(dependencySet, node.name);
|
|
613
616
|
}
|
|
614
617
|
}
|
|
615
618
|
function visitInputValueDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
@@ -617,74 +620,69 @@ function visitInputValueDefinitionNode(node, dependencySet, dependenciesByDefini
|
|
|
617
620
|
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
618
621
|
}
|
|
619
622
|
function visitInterfaceTypeDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
620
|
-
|
|
621
|
-
dependencySet.add(typeName);
|
|
623
|
+
addToDependencySet(dependencySet, node.name);
|
|
622
624
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
623
625
|
node.fields?.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
624
626
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
625
627
|
}
|
|
626
628
|
function visitUnionTypeDefinitionNode(node, dependencySet) {
|
|
627
|
-
dependencySet
|
|
629
|
+
addToDependencySet(dependencySet, node.name);
|
|
628
630
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
629
631
|
node.types?.forEach(namedTypeNode => visitNamedTypeNode(namedTypeNode, dependencySet));
|
|
630
632
|
}
|
|
631
633
|
function visitEnumTypeDefinitionNode(node, dependencySet) {
|
|
632
|
-
dependencySet
|
|
634
|
+
addToDependencySet(dependencySet, node.name);
|
|
633
635
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
634
636
|
}
|
|
635
637
|
function visitInputObjectTypeDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
636
|
-
dependencySet
|
|
638
|
+
addToDependencySet(dependencySet, node.name);
|
|
637
639
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
638
640
|
node.fields?.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
639
641
|
}
|
|
640
642
|
function visitDirectiveDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
641
|
-
dependencySet
|
|
643
|
+
addToDependencySet(dependencySet, node.name);
|
|
642
644
|
node.arguments?.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
643
645
|
}
|
|
644
646
|
function visitObjectTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
645
|
-
|
|
646
|
-
dependencySet.add(typeName);
|
|
647
|
+
addToDependencySet(dependencySet, node.name);
|
|
647
648
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
648
649
|
node.fields?.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
649
650
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
650
651
|
}
|
|
651
652
|
function visitInterfaceTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
652
|
-
|
|
653
|
-
dependencySet.add(typeName);
|
|
653
|
+
addToDependencySet(dependencySet, node.name);
|
|
654
654
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
655
655
|
node.fields?.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
656
656
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
657
657
|
}
|
|
658
658
|
function visitUnionTypeExtensionNode(node, dependencySet) {
|
|
659
|
-
dependencySet
|
|
659
|
+
addToDependencySet(dependencySet, node.name);
|
|
660
660
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
661
661
|
node.types?.forEach(namedTypeNode => visitNamedTypeNode(namedTypeNode, dependencySet));
|
|
662
662
|
}
|
|
663
663
|
function visitEnumTypeExtensionNode(node, dependencySet) {
|
|
664
|
-
dependencySet
|
|
664
|
+
addToDependencySet(dependencySet, node.name);
|
|
665
665
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
666
666
|
}
|
|
667
667
|
function visitInputObjectTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
668
|
-
dependencySet
|
|
668
|
+
addToDependencySet(dependencySet, node.name);
|
|
669
669
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
670
670
|
node.fields?.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
671
671
|
}
|
|
672
672
|
function visitSchemaDefinitionNode(node, dependencySet) {
|
|
673
|
-
dependencySet.add('schema');
|
|
674
673
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
675
674
|
node.operationTypes.forEach(operationTypeDefinitionNode => visitOperationTypeDefinitionNode(operationTypeDefinitionNode, dependencySet));
|
|
676
675
|
}
|
|
677
676
|
function visitSchemaExtensionDefinitionNode(node, dependencySet) {
|
|
678
|
-
dependencySet.add('schema');
|
|
679
677
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
680
678
|
node.operationTypes?.forEach(operationTypeDefinitionNode => visitOperationTypeDefinitionNode(operationTypeDefinitionNode, dependencySet));
|
|
681
679
|
}
|
|
682
680
|
function visitScalarDefinitionNode(node, dependencySet) {
|
|
683
|
-
dependencySet
|
|
681
|
+
addToDependencySet(dependencySet, node.name);
|
|
684
682
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
685
683
|
}
|
|
686
684
|
function visitScalarExtensionNode(node, dependencySet) {
|
|
687
|
-
dependencySet
|
|
685
|
+
addToDependencySet(dependencySet, node.name);
|
|
688
686
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
689
687
|
}
|
|
690
688
|
function visitOperationTypeDefinitionNode(node, dependencySet) {
|
package/esm/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { readFileSync, realpathSync } from 'fs';
|
|
|
2
2
|
import { dirname, isAbsolute, join } from 'path';
|
|
3
3
|
import { Kind, parse, print, Source, } from 'graphql';
|
|
4
4
|
import resolveFrom from 'resolve-from';
|
|
5
|
-
import { parseGraphQLSDL } from '@graphql-tools/utils';
|
|
5
|
+
import { createGraphQLError, parseGraphQLSDL } from '@graphql-tools/utils';
|
|
6
6
|
import { extractLinkImplementations } from '@theguild/federation-composition';
|
|
7
7
|
const builtinTypes = ['String', 'Float', 'Int', 'Boolean', 'ID', 'Upload'];
|
|
8
8
|
const federationV1Directives = ['key', 'provides', 'requires', 'external'];
|
|
@@ -87,7 +87,7 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports, pathAliases)
|
|
|
87
87
|
addDefinition(importedDefinition, fieldDefinitionName, definitionsWithDeps);
|
|
88
88
|
}
|
|
89
89
|
});
|
|
90
|
-
const newDependencySet = new
|
|
90
|
+
const newDependencySet = new Map();
|
|
91
91
|
switch (field.kind) {
|
|
92
92
|
case Kind.FIELD_DEFINITION:
|
|
93
93
|
visitFieldDefinitionNode(field, newDependencySet, dependenciesByDefinitionName);
|
|
@@ -96,7 +96,7 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports, pathAliases)
|
|
|
96
96
|
visitInputValueDefinitionNode(field, newDependencySet, dependenciesByDefinitionName);
|
|
97
97
|
break;
|
|
98
98
|
}
|
|
99
|
-
newDependencySet.forEach(dependencyName => {
|
|
99
|
+
Array.from(newDependencySet.keys()).forEach(dependencyName => {
|
|
100
100
|
const definitionsInCurrentFile = fileDefinitionMap.get(dependencyName);
|
|
101
101
|
definitionsInCurrentFile?.forEach(def => addDefinition(def, definitionName, definitionSet));
|
|
102
102
|
const definitionsFromImports = allImportedDefinitionsMap.get(dependencyName);
|
|
@@ -123,11 +123,11 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports, pathAliases)
|
|
|
123
123
|
});
|
|
124
124
|
const dependenciesOfDefinition = dependenciesByDefinitionName.get(definitionName);
|
|
125
125
|
if (dependenciesOfDefinition) {
|
|
126
|
-
for (const dependencyName of dependenciesOfDefinition) {
|
|
126
|
+
for (const [dependencyName, dependencyNodes] of dependenciesOfDefinition.entries()) {
|
|
127
127
|
// If that dependency cannot be found both in imports and this file, throw an error
|
|
128
128
|
if (!allImportedDefinitionsMap.has(dependencyName) &&
|
|
129
129
|
!definitionsByName.has(dependencyName)) {
|
|
130
|
-
throw
|
|
130
|
+
throw createGraphQLError(`Couldn't find type ${dependencyName} in any of the schemas.`, { nodes: Array.from(dependencyNodes) });
|
|
131
131
|
}
|
|
132
132
|
const dependencyDefinitionsFromImports = allImportedDefinitionsMap.get(dependencyName);
|
|
133
133
|
dependencyDefinitionsFromImports?.forEach(dependencyDefinition => {
|
|
@@ -150,9 +150,7 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports, pathAliases)
|
|
|
150
150
|
export function extractDependencies(filePath, fileContents) {
|
|
151
151
|
const definitionsByName = new Map();
|
|
152
152
|
const dependenciesByDefinitionName = new Map();
|
|
153
|
-
const { document } = parseGraphQLSDL(filePath, fileContents
|
|
154
|
-
noLocation: true,
|
|
155
|
-
});
|
|
153
|
+
const { document } = parseGraphQLSDL(filePath, fileContents);
|
|
156
154
|
for (const definition of document.definitions) {
|
|
157
155
|
visitDefinition(definition, definitionsByName, dependenciesByDefinitionName);
|
|
158
156
|
}
|
|
@@ -226,7 +224,7 @@ function visitDefinition(definition, definitionsByName, dependenciesByDefinition
|
|
|
226
224
|
definitionsSet.add(definition);
|
|
227
225
|
let dependencySet = dependenciesByDefinitionName.get(definitionName);
|
|
228
226
|
if (!dependencySet) {
|
|
229
|
-
dependencySet = new
|
|
227
|
+
dependencySet = new Map();
|
|
230
228
|
dependenciesByDefinitionName.set(definitionName, dependencySet);
|
|
231
229
|
}
|
|
232
230
|
switch (definition.kind) {
|
|
@@ -296,7 +294,7 @@ function visitDefinition(definition, definitionsByName, dependenciesByDefinition
|
|
|
296
294
|
});
|
|
297
295
|
let dependencySet = dependenciesByDefinitionName.get(definitionName);
|
|
298
296
|
if (!dependencySet) {
|
|
299
|
-
dependencySet = new
|
|
297
|
+
dependencySet = new Map();
|
|
300
298
|
dependenciesByDefinitionName.set(definitionName, dependencySet);
|
|
301
299
|
}
|
|
302
300
|
switch (field.kind) {
|
|
@@ -324,7 +322,7 @@ function getFileDefinitionMap(definitionsByName, dependenciesByDefinitionName) {
|
|
|
324
322
|
}
|
|
325
323
|
const dependenciesOfDefinition = dependenciesByDefinitionName.get(definitionName);
|
|
326
324
|
if (dependenciesOfDefinition) {
|
|
327
|
-
for (const dependencyName of dependenciesOfDefinition) {
|
|
325
|
+
for (const dependencyName of dependenciesOfDefinition.keys()) {
|
|
328
326
|
const dependencyDefinitions = definitionsByName.get(dependencyName);
|
|
329
327
|
if (dependencyDefinitions != null) {
|
|
330
328
|
for (const dependencyDefinition of dependencyDefinitions) {
|
|
@@ -505,9 +503,17 @@ function applyPathAlias(prefixPattern, mapping, importFrom) {
|
|
|
505
503
|
}
|
|
506
504
|
return mapping;
|
|
507
505
|
}
|
|
506
|
+
function addToDependencySet(dependencySet, node) {
|
|
507
|
+
const existingNodes = dependencySet.get(node.value);
|
|
508
|
+
if (existingNodes != null) {
|
|
509
|
+
existingNodes.add(node);
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
512
|
+
dependencySet.set(node.value, new Set([node]));
|
|
513
|
+
}
|
|
508
514
|
function visitOperationDefinitionNode(node, dependencySet) {
|
|
509
515
|
if (node.name?.value) {
|
|
510
|
-
dependencySet
|
|
516
|
+
addToDependencySet(dependencySet, node.name);
|
|
511
517
|
}
|
|
512
518
|
node.selectionSet.selections.forEach(selectionNode => visitSelectionNode(selectionNode, dependencySet));
|
|
513
519
|
}
|
|
@@ -528,22 +534,20 @@ function visitFieldNode(node, dependencySet) {
|
|
|
528
534
|
node.selectionSet?.selections.forEach(selectionNode => visitSelectionNode(selectionNode, dependencySet));
|
|
529
535
|
}
|
|
530
536
|
function visitFragmentSpreadNode(node, dependencySet) {
|
|
531
|
-
dependencySet
|
|
537
|
+
addToDependencySet(dependencySet, node.name);
|
|
532
538
|
}
|
|
533
539
|
function visitInlineFragmentNode(node, dependencySet) {
|
|
534
540
|
node.selectionSet.selections.forEach(selectionNode => visitSelectionNode(selectionNode, dependencySet));
|
|
535
541
|
}
|
|
536
542
|
function visitFragmentDefinitionNode(node, dependencySet) {
|
|
537
|
-
dependencySet
|
|
543
|
+
addToDependencySet(dependencySet, node.name);
|
|
538
544
|
node.selectionSet.selections.forEach(selectionNode => visitSelectionNode(selectionNode, dependencySet));
|
|
539
545
|
}
|
|
540
546
|
function addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName) {
|
|
541
|
-
const typeName = node.name.value;
|
|
542
547
|
// all interfaces should be dependent to each other
|
|
543
548
|
const allDependencies = [
|
|
544
|
-
|
|
545
|
-
...(node.interfaces?.map((namedTypeNode) => namedTypeNode.name
|
|
546
|
-
[]),
|
|
549
|
+
node.name,
|
|
550
|
+
...(node.interfaces?.map((namedTypeNode) => namedTypeNode.name) || []),
|
|
547
551
|
];
|
|
548
552
|
node.interfaces?.forEach((namedTypeNode) => {
|
|
549
553
|
visitNamedTypeNode(namedTypeNode, dependencySet);
|
|
@@ -551,19 +555,18 @@ function addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionN
|
|
|
551
555
|
let set = dependenciesByDefinitionName.get(interfaceName);
|
|
552
556
|
// interface should be dependent to the type as well
|
|
553
557
|
if (set == null) {
|
|
554
|
-
set = new
|
|
558
|
+
set = new Map();
|
|
555
559
|
dependenciesByDefinitionName.set(interfaceName, set);
|
|
556
560
|
}
|
|
557
561
|
allDependencies.forEach(dependency => {
|
|
558
|
-
if (dependency !== interfaceName) {
|
|
559
|
-
set
|
|
562
|
+
if (dependency.value !== interfaceName) {
|
|
563
|
+
addToDependencySet(set, dependency);
|
|
560
564
|
}
|
|
561
565
|
});
|
|
562
566
|
});
|
|
563
567
|
}
|
|
564
568
|
function visitObjectTypeDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
565
|
-
|
|
566
|
-
dependencySet.add(typeName);
|
|
569
|
+
addToDependencySet(dependencySet, node.name);
|
|
567
570
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
568
571
|
node.fields?.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
569
572
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
@@ -571,7 +574,7 @@ function visitObjectTypeDefinitionNode(node, dependencySet, dependenciesByDefini
|
|
|
571
574
|
function visitDirectiveNode(node, dependencySet) {
|
|
572
575
|
const directiveName = node.name.value;
|
|
573
576
|
if (!builtinDirectives.includes(directiveName)) {
|
|
574
|
-
dependencySet
|
|
577
|
+
addToDependencySet(dependencySet, node.name);
|
|
575
578
|
}
|
|
576
579
|
}
|
|
577
580
|
function visitFieldDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
@@ -601,7 +604,7 @@ function visitNonNullTypeNode(node, dependencySet, dependenciesByDefinitionName)
|
|
|
601
604
|
function visitNamedTypeNode(node, dependencySet) {
|
|
602
605
|
const namedTypeName = node.name.value;
|
|
603
606
|
if (!builtinTypes.includes(namedTypeName)) {
|
|
604
|
-
dependencySet
|
|
607
|
+
addToDependencySet(dependencySet, node.name);
|
|
605
608
|
}
|
|
606
609
|
}
|
|
607
610
|
function visitInputValueDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
@@ -609,74 +612,69 @@ function visitInputValueDefinitionNode(node, dependencySet, dependenciesByDefini
|
|
|
609
612
|
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
610
613
|
}
|
|
611
614
|
function visitInterfaceTypeDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
612
|
-
|
|
613
|
-
dependencySet.add(typeName);
|
|
615
|
+
addToDependencySet(dependencySet, node.name);
|
|
614
616
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
615
617
|
node.fields?.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
616
618
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
617
619
|
}
|
|
618
620
|
function visitUnionTypeDefinitionNode(node, dependencySet) {
|
|
619
|
-
dependencySet
|
|
621
|
+
addToDependencySet(dependencySet, node.name);
|
|
620
622
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
621
623
|
node.types?.forEach(namedTypeNode => visitNamedTypeNode(namedTypeNode, dependencySet));
|
|
622
624
|
}
|
|
623
625
|
function visitEnumTypeDefinitionNode(node, dependencySet) {
|
|
624
|
-
dependencySet
|
|
626
|
+
addToDependencySet(dependencySet, node.name);
|
|
625
627
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
626
628
|
}
|
|
627
629
|
function visitInputObjectTypeDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
628
|
-
dependencySet
|
|
630
|
+
addToDependencySet(dependencySet, node.name);
|
|
629
631
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
630
632
|
node.fields?.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
631
633
|
}
|
|
632
634
|
function visitDirectiveDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
633
|
-
dependencySet
|
|
635
|
+
addToDependencySet(dependencySet, node.name);
|
|
634
636
|
node.arguments?.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
635
637
|
}
|
|
636
638
|
function visitObjectTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
637
|
-
|
|
638
|
-
dependencySet.add(typeName);
|
|
639
|
+
addToDependencySet(dependencySet, node.name);
|
|
639
640
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
640
641
|
node.fields?.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
641
642
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
642
643
|
}
|
|
643
644
|
function visitInterfaceTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
644
|
-
|
|
645
|
-
dependencySet.add(typeName);
|
|
645
|
+
addToDependencySet(dependencySet, node.name);
|
|
646
646
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
647
647
|
node.fields?.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
648
648
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
649
649
|
}
|
|
650
650
|
function visitUnionTypeExtensionNode(node, dependencySet) {
|
|
651
|
-
dependencySet
|
|
651
|
+
addToDependencySet(dependencySet, node.name);
|
|
652
652
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
653
653
|
node.types?.forEach(namedTypeNode => visitNamedTypeNode(namedTypeNode, dependencySet));
|
|
654
654
|
}
|
|
655
655
|
function visitEnumTypeExtensionNode(node, dependencySet) {
|
|
656
|
-
dependencySet
|
|
656
|
+
addToDependencySet(dependencySet, node.name);
|
|
657
657
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
658
658
|
}
|
|
659
659
|
function visitInputObjectTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
660
|
-
dependencySet
|
|
660
|
+
addToDependencySet(dependencySet, node.name);
|
|
661
661
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
662
662
|
node.fields?.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
663
663
|
}
|
|
664
664
|
function visitSchemaDefinitionNode(node, dependencySet) {
|
|
665
|
-
dependencySet.add('schema');
|
|
666
665
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
667
666
|
node.operationTypes.forEach(operationTypeDefinitionNode => visitOperationTypeDefinitionNode(operationTypeDefinitionNode, dependencySet));
|
|
668
667
|
}
|
|
669
668
|
function visitSchemaExtensionDefinitionNode(node, dependencySet) {
|
|
670
|
-
dependencySet.add('schema');
|
|
671
669
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
672
670
|
node.operationTypes?.forEach(operationTypeDefinitionNode => visitOperationTypeDefinitionNode(operationTypeDefinitionNode, dependencySet));
|
|
673
671
|
}
|
|
674
672
|
function visitScalarDefinitionNode(node, dependencySet) {
|
|
675
|
-
dependencySet
|
|
673
|
+
addToDependencySet(dependencySet, node.name);
|
|
676
674
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
677
675
|
}
|
|
678
676
|
function visitScalarExtensionNode(node, dependencySet) {
|
|
679
|
-
dependencySet
|
|
677
|
+
addToDependencySet(dependencySet, node.name);
|
|
680
678
|
node.directives?.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
681
679
|
}
|
|
682
680
|
function visitOperationTypeDefinitionNode(node, dependencySet) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphql-tools/import",
|
|
3
|
-
"version": "7.1.1-alpha-
|
|
3
|
+
"version": "7.1.1-alpha-20250905110939-465ce4b83eaffe7e8ad2d10538526654c551aeff",
|
|
4
4
|
"description": "A set of utils for faster development of GraphQL tools",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"peerDependencies": {
|
package/typings/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DefinitionNode, DocumentNode } from 'graphql';
|
|
1
|
+
import { DefinitionNode, DocumentNode, NameNode } from 'graphql';
|
|
2
2
|
export type VisitedFilesMap = Map<string, Map<string, Set<DefinitionNode>>>;
|
|
3
3
|
/**
|
|
4
4
|
* Configuration for path aliasing in GraphQL import statements using the same
|
|
@@ -69,9 +69,11 @@ export interface PathAliases {
|
|
|
69
69
|
* processImport does not merge the typeDefs as designed ( https://github.com/ardatan/graphql-tools/issues/2980#issuecomment-1003692728 )
|
|
70
70
|
*/
|
|
71
71
|
export declare function processImport(filePath: string, cwd?: string, predefinedImports?: Record<string, string>, visitedFiles?: VisitedFilesMap, pathAliases?: PathAliases): DocumentNode;
|
|
72
|
+
type DependencySet = Map<string, Set<NameNode>>;
|
|
73
|
+
type DependenciesByDefinitionName = Map<string, DependencySet>;
|
|
72
74
|
export declare function extractDependencies(filePath: string, fileContents: string): {
|
|
73
75
|
definitionsByName: Map<string, Set<DefinitionNode>>;
|
|
74
|
-
dependenciesByDefinitionName:
|
|
76
|
+
dependenciesByDefinitionName: DependenciesByDefinitionName;
|
|
75
77
|
};
|
|
76
78
|
export declare function processImports(importLines: string[], filePath: string, visitedFiles: VisitedFilesMap, predefinedImports: Record<string, string>, pathAliases?: PathAliases): {
|
|
77
79
|
allImportedDefinitionsMap: Map<string, Set<DefinitionNode>>;
|
|
@@ -95,3 +97,4 @@ export declare function parseImportLine(importLine: string): {
|
|
|
95
97
|
imports: string[];
|
|
96
98
|
from: string;
|
|
97
99
|
};
|
|
100
|
+
export {};
|
package/typings/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DefinitionNode, DocumentNode } from 'graphql';
|
|
1
|
+
import { DefinitionNode, DocumentNode, NameNode } from 'graphql';
|
|
2
2
|
export type VisitedFilesMap = Map<string, Map<string, Set<DefinitionNode>>>;
|
|
3
3
|
/**
|
|
4
4
|
* Configuration for path aliasing in GraphQL import statements using the same
|
|
@@ -69,9 +69,11 @@ export interface PathAliases {
|
|
|
69
69
|
* processImport does not merge the typeDefs as designed ( https://github.com/ardatan/graphql-tools/issues/2980#issuecomment-1003692728 )
|
|
70
70
|
*/
|
|
71
71
|
export declare function processImport(filePath: string, cwd?: string, predefinedImports?: Record<string, string>, visitedFiles?: VisitedFilesMap, pathAliases?: PathAliases): DocumentNode;
|
|
72
|
+
type DependencySet = Map<string, Set<NameNode>>;
|
|
73
|
+
type DependenciesByDefinitionName = Map<string, DependencySet>;
|
|
72
74
|
export declare function extractDependencies(filePath: string, fileContents: string): {
|
|
73
75
|
definitionsByName: Map<string, Set<DefinitionNode>>;
|
|
74
|
-
dependenciesByDefinitionName:
|
|
76
|
+
dependenciesByDefinitionName: DependenciesByDefinitionName;
|
|
75
77
|
};
|
|
76
78
|
export declare function processImports(importLines: string[], filePath: string, visitedFiles: VisitedFilesMap, predefinedImports: Record<string, string>, pathAliases?: PathAliases): {
|
|
77
79
|
allImportedDefinitionsMap: Map<string, Set<DefinitionNode>>;
|
|
@@ -95,3 +97,4 @@ export declare function parseImportLine(importLine: string): {
|
|
|
95
97
|
imports: string[];
|
|
96
98
|
from: string;
|
|
97
99
|
};
|
|
100
|
+
export {};
|