@graphql-mesh/transform-federation 0.104.11 → 0.104.12-alpha-20250905102937-2c1c7941372e68f4027f991785f8f2030352d08c
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 +80 -78
- package/esm/index.js +80 -78
- package/package.json +4 -4
package/cjs/index.js
CHANGED
|
@@ -32,96 +32,98 @@ class FederationTransform {
|
|
|
32
32
|
rawSource.merge = {};
|
|
33
33
|
if (this.config?.types) {
|
|
34
34
|
const queryType = schema.getQueryType();
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
typeObj.extensions.directives
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (type.config?.shareable) {
|
|
46
|
-
typeDirectivesObj.shareable = type.config.shareable;
|
|
47
|
-
}
|
|
48
|
-
if (type.config?.extends) {
|
|
49
|
-
typeDirectivesObj.extends = type.config.extends;
|
|
50
|
-
}
|
|
51
|
-
const typeFieldObjs = typeObj.getFields();
|
|
52
|
-
if (type.config?.fields) {
|
|
53
|
-
for (const field of type.config.fields) {
|
|
54
|
-
const typeField = typeFieldObjs[field.name];
|
|
55
|
-
if (typeField) {
|
|
56
|
-
typeField.extensions = typeField.extensions || {};
|
|
57
|
-
const directivesObj = (typeField.extensions.directives =
|
|
58
|
-
typeField.extensions.directives || {});
|
|
59
|
-
Object.assign(directivesObj, field.config);
|
|
60
|
-
}
|
|
61
|
-
rawSource.merge[type.name].fields = rawSource.merge[type.name].fields || {};
|
|
62
|
-
rawSource.merge[type.name].fields[field.name] =
|
|
63
|
-
rawSource.merge[type.name].fields[field.name] || {};
|
|
64
|
-
if (field.config.requires) {
|
|
65
|
-
rawSource.merge[type.name].fields[field.name].computed = true;
|
|
66
|
-
rawSource.merge[type.name].fields[field.name].selectionSet =
|
|
67
|
-
`{ ${field.config.requires} }`;
|
|
68
|
-
}
|
|
35
|
+
if (queryType) {
|
|
36
|
+
const queryTypeFields = queryType.getFields();
|
|
37
|
+
for (const type of this.config.types) {
|
|
38
|
+
rawSource.merge[type.name] = {};
|
|
39
|
+
const typeObj = schema.getType(type.name);
|
|
40
|
+
typeObj.extensions = typeObj.extensions || {};
|
|
41
|
+
const typeDirectivesObj = (typeObj.extensions.directives =
|
|
42
|
+
typeObj.extensions.directives || {});
|
|
43
|
+
if (type.config?.key) {
|
|
44
|
+
typeDirectivesObj.key = type.config.key;
|
|
69
45
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (type.config?.key) {
|
|
73
|
-
let selectionSetContent = '';
|
|
74
|
-
for (const keyField of type.config.key) {
|
|
75
|
-
selectionSetContent += '\n';
|
|
76
|
-
selectionSetContent += keyField.fields || '';
|
|
46
|
+
if (type.config?.shareable) {
|
|
47
|
+
typeDirectivesObj.shareable = type.config.shareable;
|
|
77
48
|
}
|
|
78
|
-
if (
|
|
79
|
-
|
|
49
|
+
if (type.config?.extends) {
|
|
50
|
+
typeDirectivesObj.extends = type.config.extends;
|
|
80
51
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
52
|
+
const typeFieldObjs = typeObj.getFields();
|
|
53
|
+
if (type.config?.fields) {
|
|
54
|
+
for (const field of type.config.fields) {
|
|
55
|
+
const typeField = typeFieldObjs[field.name];
|
|
56
|
+
if (typeField) {
|
|
57
|
+
typeField.extensions = typeField.extensions || {};
|
|
58
|
+
const directivesObj = (typeField.extensions.directives =
|
|
59
|
+
typeField.extensions.directives || {});
|
|
60
|
+
Object.assign(directivesObj, field.config);
|
|
61
|
+
}
|
|
62
|
+
rawSource.merge[type.name].fields = rawSource.merge[type.name].fields || {};
|
|
63
|
+
rawSource.merge[type.name].fields[field.name] =
|
|
64
|
+
rawSource.merge[type.name].fields[field.name] || {};
|
|
65
|
+
if (field.config.requires) {
|
|
66
|
+
rawSource.merge[type.name].fields[field.name].computed = true;
|
|
67
|
+
rawSource.merge[type.name].fields[field.name].selectionSet =
|
|
68
|
+
`{ ${field.config.requires} }`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
92
71
|
}
|
|
93
|
-
|
|
94
|
-
|
|
72
|
+
// If a field is a key field, it should be GraphQLID
|
|
73
|
+
if (type.config?.key) {
|
|
74
|
+
let selectionSetContent = '';
|
|
75
|
+
for (const keyField of type.config.key) {
|
|
76
|
+
selectionSetContent += '\n';
|
|
77
|
+
selectionSetContent += keyField.fields || '';
|
|
78
|
+
}
|
|
79
|
+
if (selectionSetContent) {
|
|
80
|
+
rawSource.merge[type.name].selectionSet = `{ ${selectionSetContent} }`;
|
|
81
|
+
}
|
|
95
82
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
83
|
+
let resolveReference;
|
|
84
|
+
if (type.config?.resolveReference) {
|
|
85
|
+
const resolveReferenceConfig = type.config.resolveReference;
|
|
86
|
+
if (typeof resolveReferenceConfig === 'string') {
|
|
87
|
+
const fn$ = (0, utils_1.loadFromModuleExportExpression)(resolveReferenceConfig, {
|
|
88
|
+
cwd: this.baseDir,
|
|
89
|
+
defaultExportName: 'default',
|
|
90
|
+
importFn: this.importFn,
|
|
91
|
+
});
|
|
92
|
+
resolveReference = (...args) => fn$.then(fn => fn(...args));
|
|
93
|
+
}
|
|
94
|
+
else if (typeof resolveReferenceConfig === 'function') {
|
|
95
|
+
resolveReference = resolveReferenceConfig;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
const queryField = queryTypeFields[resolveReferenceConfig.queryFieldName];
|
|
99
|
+
resolveReference = async (root, context, info) => {
|
|
100
|
+
const args = {};
|
|
101
|
+
for (const argName in resolveReferenceConfig.args) {
|
|
102
|
+
const argVal = string_interpolation_1.stringInterpolator.parse(resolveReferenceConfig.args[argName], {
|
|
103
|
+
root,
|
|
104
|
+
args,
|
|
105
|
+
context,
|
|
106
|
+
info,
|
|
107
|
+
env: process.env,
|
|
108
|
+
});
|
|
109
|
+
if (argVal) {
|
|
110
|
+
(0, dset_1.dset)(args, argName, argVal);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const result = await context[this.apiName].Query[queryField.name]({
|
|
102
114
|
root,
|
|
103
115
|
args,
|
|
104
116
|
context,
|
|
105
117
|
info,
|
|
106
|
-
env: process.env,
|
|
107
118
|
});
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const result = await context[this.apiName].Query[queryField.name]({
|
|
113
|
-
root,
|
|
114
|
-
args,
|
|
115
|
-
context,
|
|
116
|
-
info,
|
|
117
|
-
});
|
|
118
|
-
return {
|
|
119
|
-
...root,
|
|
120
|
-
...result,
|
|
119
|
+
return {
|
|
120
|
+
...root,
|
|
121
|
+
...result,
|
|
122
|
+
};
|
|
121
123
|
};
|
|
122
|
-
}
|
|
124
|
+
}
|
|
125
|
+
rawSource.merge[type.name].resolve = resolveReference;
|
|
123
126
|
}
|
|
124
|
-
rawSource.merge[type.name].resolve = resolveReference;
|
|
125
127
|
}
|
|
126
128
|
}
|
|
127
129
|
}
|
package/esm/index.js
CHANGED
|
@@ -30,96 +30,98 @@ export default class FederationTransform {
|
|
|
30
30
|
rawSource.merge = {};
|
|
31
31
|
if (this.config?.types) {
|
|
32
32
|
const queryType = schema.getQueryType();
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
typeObj.extensions.directives
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (type.config?.shareable) {
|
|
44
|
-
typeDirectivesObj.shareable = type.config.shareable;
|
|
45
|
-
}
|
|
46
|
-
if (type.config?.extends) {
|
|
47
|
-
typeDirectivesObj.extends = type.config.extends;
|
|
48
|
-
}
|
|
49
|
-
const typeFieldObjs = typeObj.getFields();
|
|
50
|
-
if (type.config?.fields) {
|
|
51
|
-
for (const field of type.config.fields) {
|
|
52
|
-
const typeField = typeFieldObjs[field.name];
|
|
53
|
-
if (typeField) {
|
|
54
|
-
typeField.extensions = typeField.extensions || {};
|
|
55
|
-
const directivesObj = (typeField.extensions.directives =
|
|
56
|
-
typeField.extensions.directives || {});
|
|
57
|
-
Object.assign(directivesObj, field.config);
|
|
58
|
-
}
|
|
59
|
-
rawSource.merge[type.name].fields = rawSource.merge[type.name].fields || {};
|
|
60
|
-
rawSource.merge[type.name].fields[field.name] =
|
|
61
|
-
rawSource.merge[type.name].fields[field.name] || {};
|
|
62
|
-
if (field.config.requires) {
|
|
63
|
-
rawSource.merge[type.name].fields[field.name].computed = true;
|
|
64
|
-
rawSource.merge[type.name].fields[field.name].selectionSet =
|
|
65
|
-
`{ ${field.config.requires} }`;
|
|
66
|
-
}
|
|
33
|
+
if (queryType) {
|
|
34
|
+
const queryTypeFields = queryType.getFields();
|
|
35
|
+
for (const type of this.config.types) {
|
|
36
|
+
rawSource.merge[type.name] = {};
|
|
37
|
+
const typeObj = schema.getType(type.name);
|
|
38
|
+
typeObj.extensions = typeObj.extensions || {};
|
|
39
|
+
const typeDirectivesObj = (typeObj.extensions.directives =
|
|
40
|
+
typeObj.extensions.directives || {});
|
|
41
|
+
if (type.config?.key) {
|
|
42
|
+
typeDirectivesObj.key = type.config.key;
|
|
67
43
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (type.config?.key) {
|
|
71
|
-
let selectionSetContent = '';
|
|
72
|
-
for (const keyField of type.config.key) {
|
|
73
|
-
selectionSetContent += '\n';
|
|
74
|
-
selectionSetContent += keyField.fields || '';
|
|
44
|
+
if (type.config?.shareable) {
|
|
45
|
+
typeDirectivesObj.shareable = type.config.shareable;
|
|
75
46
|
}
|
|
76
|
-
if (
|
|
77
|
-
|
|
47
|
+
if (type.config?.extends) {
|
|
48
|
+
typeDirectivesObj.extends = type.config.extends;
|
|
78
49
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
50
|
+
const typeFieldObjs = typeObj.getFields();
|
|
51
|
+
if (type.config?.fields) {
|
|
52
|
+
for (const field of type.config.fields) {
|
|
53
|
+
const typeField = typeFieldObjs[field.name];
|
|
54
|
+
if (typeField) {
|
|
55
|
+
typeField.extensions = typeField.extensions || {};
|
|
56
|
+
const directivesObj = (typeField.extensions.directives =
|
|
57
|
+
typeField.extensions.directives || {});
|
|
58
|
+
Object.assign(directivesObj, field.config);
|
|
59
|
+
}
|
|
60
|
+
rawSource.merge[type.name].fields = rawSource.merge[type.name].fields || {};
|
|
61
|
+
rawSource.merge[type.name].fields[field.name] =
|
|
62
|
+
rawSource.merge[type.name].fields[field.name] || {};
|
|
63
|
+
if (field.config.requires) {
|
|
64
|
+
rawSource.merge[type.name].fields[field.name].computed = true;
|
|
65
|
+
rawSource.merge[type.name].fields[field.name].selectionSet =
|
|
66
|
+
`{ ${field.config.requires} }`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
90
69
|
}
|
|
91
|
-
|
|
92
|
-
|
|
70
|
+
// If a field is a key field, it should be GraphQLID
|
|
71
|
+
if (type.config?.key) {
|
|
72
|
+
let selectionSetContent = '';
|
|
73
|
+
for (const keyField of type.config.key) {
|
|
74
|
+
selectionSetContent += '\n';
|
|
75
|
+
selectionSetContent += keyField.fields || '';
|
|
76
|
+
}
|
|
77
|
+
if (selectionSetContent) {
|
|
78
|
+
rawSource.merge[type.name].selectionSet = `{ ${selectionSetContent} }`;
|
|
79
|
+
}
|
|
93
80
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
81
|
+
let resolveReference;
|
|
82
|
+
if (type.config?.resolveReference) {
|
|
83
|
+
const resolveReferenceConfig = type.config.resolveReference;
|
|
84
|
+
if (typeof resolveReferenceConfig === 'string') {
|
|
85
|
+
const fn$ = loadFromModuleExportExpression(resolveReferenceConfig, {
|
|
86
|
+
cwd: this.baseDir,
|
|
87
|
+
defaultExportName: 'default',
|
|
88
|
+
importFn: this.importFn,
|
|
89
|
+
});
|
|
90
|
+
resolveReference = (...args) => fn$.then(fn => fn(...args));
|
|
91
|
+
}
|
|
92
|
+
else if (typeof resolveReferenceConfig === 'function') {
|
|
93
|
+
resolveReference = resolveReferenceConfig;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
const queryField = queryTypeFields[resolveReferenceConfig.queryFieldName];
|
|
97
|
+
resolveReference = async (root, context, info) => {
|
|
98
|
+
const args = {};
|
|
99
|
+
for (const argName in resolveReferenceConfig.args) {
|
|
100
|
+
const argVal = stringInterpolator.parse(resolveReferenceConfig.args[argName], {
|
|
101
|
+
root,
|
|
102
|
+
args,
|
|
103
|
+
context,
|
|
104
|
+
info,
|
|
105
|
+
env: process.env,
|
|
106
|
+
});
|
|
107
|
+
if (argVal) {
|
|
108
|
+
dset(args, argName, argVal);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const result = await context[this.apiName].Query[queryField.name]({
|
|
100
112
|
root,
|
|
101
113
|
args,
|
|
102
114
|
context,
|
|
103
115
|
info,
|
|
104
|
-
env: process.env,
|
|
105
116
|
});
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const result = await context[this.apiName].Query[queryField.name]({
|
|
111
|
-
root,
|
|
112
|
-
args,
|
|
113
|
-
context,
|
|
114
|
-
info,
|
|
115
|
-
});
|
|
116
|
-
return {
|
|
117
|
-
...root,
|
|
118
|
-
...result,
|
|
117
|
+
return {
|
|
118
|
+
...root,
|
|
119
|
+
...result,
|
|
120
|
+
};
|
|
119
121
|
};
|
|
120
|
-
}
|
|
122
|
+
}
|
|
123
|
+
rawSource.merge[type.name].resolve = resolveReference;
|
|
121
124
|
}
|
|
122
|
-
rawSource.merge[type.name].resolve = resolveReference;
|
|
123
125
|
}
|
|
124
126
|
}
|
|
125
127
|
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphql-mesh/transform-federation",
|
|
3
|
-
"version": "0.104.
|
|
3
|
+
"version": "0.104.12-alpha-20250905102937-2c1c7941372e68f4027f991785f8f2030352d08c",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"graphql": "*"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@apollo/subgraph": "^2.4.1",
|
|
10
|
-
"@graphql-mesh/string-interpolation": "
|
|
11
|
-
"@graphql-mesh/types": "
|
|
12
|
-
"@graphql-mesh/utils": "
|
|
10
|
+
"@graphql-mesh/string-interpolation": "0.5.9-alpha-20250905102937-2c1c7941372e68f4027f991785f8f2030352d08c",
|
|
11
|
+
"@graphql-mesh/types": "0.104.12-alpha-20250905102937-2c1c7941372e68f4027f991785f8f2030352d08c",
|
|
12
|
+
"@graphql-mesh/utils": "0.104.12-alpha-20250905102937-2c1c7941372e68f4027f991785f8f2030352d08c",
|
|
13
13
|
"@graphql-tools/delegate": "^10.0.28",
|
|
14
14
|
"@graphql-tools/stitching-directives": "^3.1.9",
|
|
15
15
|
"@graphql-tools/utils": "^10.8.0",
|