@graphql-tools/schema 8.2.1-alpha-d8af46a9.0 → 8.2.1-alpha-8ae2f1b1.0

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/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@graphql-tools/schema",
3
- "version": "8.2.1-alpha-d8af46a9.0",
3
+ "version": "8.2.1-alpha-8ae2f1b1.0",
4
4
  "description": "A set of utils for faster development of GraphQL tools",
5
5
  "sideEffects": false,
6
6
  "peerDependencies": {
7
7
  "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
8
8
  },
9
9
  "dependencies": {
10
- "@graphql-tools/merge": "8.1.2-alpha-d8af46a9.0",
11
- "@graphql-tools/utils": "^8.2.0",
10
+ "@graphql-tools/merge": "8.1.3-alpha-8ae2f1b1.0",
11
+ "@graphql-tools/utils": "9.0.0-alpha-8ae2f1b1.0",
12
12
  "tslib": "~2.3.0",
13
13
  "value-or-promise": "1.0.10"
14
14
  },
package/es5/README.md DELETED
@@ -1,6 +0,0 @@
1
- Check API Reference for more information about this package;
2
- https://www.graphql-tools.com/docs/api/modules/schema
3
-
4
- You can also learn more about Generating Executable Schemas in this chapter;
5
- https://www.graphql-tools.com/docs/generate-schema
6
-
@@ -1,3 +0,0 @@
1
- import { GraphQLSchema } from 'graphql';
2
- import { IResolvers, IResolverValidationOptions, IAddResolversToSchemaOptions } from '@graphql-tools/utils';
3
- export declare function addResolversToSchema(schemaOrOptions: GraphQLSchema | IAddResolversToSchemaOptions, legacyInputResolvers?: IResolvers, legacyInputValidationOptions?: IResolverValidationOptions): GraphQLSchema;
@@ -1,3 +0,0 @@
1
- import { GraphQLSchema } from 'graphql';
2
- import { IResolverValidationOptions } from '@graphql-tools/utils';
3
- export declare function assertResolversPresent(schema: GraphQLSchema, resolverValidationOptions?: IResolverValidationOptions): void;
@@ -1,5 +0,0 @@
1
- import { GraphQLResolveInfo, GraphQLFieldResolver } from 'graphql';
2
- import { Maybe } from '@graphql-tools/utils';
3
- export declare function chainResolvers<TArgs extends {
4
- [argName: string]: any;
5
- }>(resolvers: Array<Maybe<GraphQLFieldResolver<any, any, TArgs>>>): (root: any, args: TArgs, ctx: any, info: GraphQLResolveInfo) => any;
@@ -1,3 +0,0 @@
1
- import { GraphQLSchema } from 'graphql';
2
- import { ValidatorBehavior } from '@graphql-tools/utils';
3
- export declare function checkForResolveTypeResolver(schema: GraphQLSchema, requireResolversForResolveType?: ValidatorBehavior): void;
@@ -1,3 +0,0 @@
1
- import { GraphQLSchema } from 'graphql';
2
- import { IResolvers } from '@graphql-tools/utils';
3
- export declare function extendResolversFromInterfaces(schema: GraphQLSchema, resolvers: IResolvers): IResolvers;
package/es5/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export { assertResolversPresent } from './assertResolversPresent';
2
- export { chainResolvers } from './chainResolvers';
3
- export { addResolversToSchema } from './addResolversToSchema';
4
- export { checkForResolveTypeResolver } from './checkForResolveTypeResolver';
5
- export { extendResolversFromInterfaces } from './extendResolversFromInterfaces';
6
- export * from './makeExecutableSchema';
7
- export * from './types';
8
- export * from './merge-schemas';
package/es5/index.js DELETED
@@ -1,546 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- const graphql = require('graphql');
6
- const utils = require('@graphql-tools/utils/es5');
7
- const tslib = require('tslib');
8
- const merge = require('@graphql-tools/merge/es5');
9
-
10
- function assertResolversPresent(schema, resolverValidationOptions) {
11
- if (resolverValidationOptions === void 0) { resolverValidationOptions = {}; }
12
- var requireResolversForArgs = resolverValidationOptions.requireResolversForArgs, requireResolversForNonScalar = resolverValidationOptions.requireResolversForNonScalar, requireResolversForAllFields = resolverValidationOptions.requireResolversForAllFields;
13
- if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {
14
- throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +
15
- 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +
16
- 'requireResolversForNonScalar, but not a combination of them.');
17
- }
18
- utils.forEachField(schema, function (field, typeName, fieldName) {
19
- // requires a resolver for *every* field.
20
- if (requireResolversForAllFields) {
21
- expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName);
22
- }
23
- // requires a resolver on every field that has arguments
24
- if (requireResolversForArgs && field.args.length > 0) {
25
- expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName);
26
- }
27
- // requires a resolver on every field that returns a non-scalar type
28
- if (requireResolversForNonScalar !== 'ignore' && !graphql.isScalarType(graphql.getNamedType(field.type))) {
29
- expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName);
30
- }
31
- });
32
- }
33
- function expectResolver(validator, behavior, field, typeName, fieldName) {
34
- if (!field.resolve) {
35
- var message = "Resolver missing for \"" + typeName + "." + fieldName + "\".\nTo disable this validator, use:\n resolverValidationOptions: {\n " + validator + ": 'ignore'\n }";
36
- if (behavior === 'error') {
37
- throw new Error(message);
38
- }
39
- if (behavior === 'warn') {
40
- // eslint-disable-next-line no-console
41
- console.warn(message);
42
- }
43
- return;
44
- }
45
- if (typeof field.resolve !== 'function') {
46
- throw new Error("Resolver \"" + typeName + "." + fieldName + "\" must be a function");
47
- }
48
- }
49
-
50
- function chainResolvers(resolvers) {
51
- return function (root, args, ctx, info) {
52
- return resolvers.reduce(function (prev, curResolver) {
53
- if (curResolver != null) {
54
- return curResolver(prev, args, ctx, info);
55
- }
56
- return graphql.defaultFieldResolver(prev, args, ctx, info);
57
- }, root);
58
- };
59
- }
60
-
61
- // If we have any union or interface types throw if no there is no resolveType resolver
62
- function checkForResolveTypeResolver(schema, requireResolversForResolveType) {
63
- var _a;
64
- utils.mapSchema(schema, (_a = {},
65
- _a[utils.MapperKind.ABSTRACT_TYPE] = function (type) {
66
- if (!type.resolveType) {
67
- var message = "Type \"" + type.name + "\" is missing a \"__resolveType\" resolver. Pass 'ignore' into " +
68
- '"resolverValidationOptions.requireResolversForResolveType" to disable this error.';
69
- if (requireResolversForResolveType === 'error') {
70
- throw new Error(message);
71
- }
72
- if (requireResolversForResolveType === 'warn') {
73
- // eslint-disable-next-line no-console
74
- console.warn(message);
75
- }
76
- }
77
- return undefined;
78
- },
79
- _a));
80
- }
81
-
82
- function extendResolversFromInterfaces(schema, resolvers) {
83
- var e_1, _a;
84
- var extendedResolvers = {};
85
- var typeMap = schema.getTypeMap();
86
- for (var typeName in typeMap) {
87
- var type = typeMap[typeName];
88
- if ('getInterfaces' in type) {
89
- extendedResolvers[typeName] = {};
90
- try {
91
- for (var _b = (e_1 = void 0, tslib.__values(type.getInterfaces())), _c = _b.next(); !_c.done; _c = _b.next()) {
92
- var iFace = _c.value;
93
- if (resolvers[iFace.name]) {
94
- for (var fieldName in resolvers[iFace.name]) {
95
- if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {
96
- extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName];
97
- }
98
- }
99
- }
100
- }
101
- }
102
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
103
- finally {
104
- try {
105
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
106
- }
107
- finally { if (e_1) throw e_1.error; }
108
- }
109
- var typeResolvers = resolvers[typeName];
110
- extendedResolvers[typeName] = tslib.__assign(tslib.__assign({}, extendedResolvers[typeName]), typeResolvers);
111
- }
112
- else {
113
- var typeResolvers = resolvers[typeName];
114
- if (typeResolvers != null) {
115
- extendedResolvers[typeName] = typeResolvers;
116
- }
117
- }
118
- }
119
- return extendedResolvers;
120
- }
121
-
122
- function addResolversToSchema(schemaOrOptions, legacyInputResolvers, legacyInputValidationOptions) {
123
- var options = graphql.isSchema(schemaOrOptions)
124
- ? {
125
- schema: schemaOrOptions,
126
- resolvers: legacyInputResolvers !== null && legacyInputResolvers !== void 0 ? legacyInputResolvers : {},
127
- resolverValidationOptions: legacyInputValidationOptions,
128
- }
129
- : schemaOrOptions;
130
- var schema = options.schema, inputResolvers = options.resolvers, defaultFieldResolver = options.defaultFieldResolver, _a = options.resolverValidationOptions, resolverValidationOptions = _a === void 0 ? {} : _a, _b = options.inheritResolversFromInterfaces, inheritResolversFromInterfaces = _b === void 0 ? false : _b, _c = options.updateResolversInPlace, updateResolversInPlace = _c === void 0 ? false : _c;
131
- var _d = resolverValidationOptions.requireResolversToMatchSchema, requireResolversToMatchSchema = _d === void 0 ? 'error' : _d, requireResolversForResolveType = resolverValidationOptions.requireResolversForResolveType;
132
- var resolvers = inheritResolversFromInterfaces
133
- ? extendResolversFromInterfaces(schema, inputResolvers)
134
- : inputResolvers;
135
- for (var typeName in resolvers) {
136
- var resolverValue = resolvers[typeName];
137
- var resolverType = typeof resolverValue;
138
- if (resolverType !== 'object') {
139
- throw new Error("\"" + typeName + "\" defined in resolvers, but has invalid value \"" + resolverValue + "\". The resolver's value must be of type object.");
140
- }
141
- var type = schema.getType(typeName);
142
- if (type == null) {
143
- if (requireResolversToMatchSchema === 'ignore') {
144
- break;
145
- }
146
- throw new Error("\"" + typeName + "\" defined in resolvers, but not in schema");
147
- }
148
- else if (graphql.isSpecifiedScalarType(type)) {
149
- // allow -- without recommending -- overriding of specified scalar types
150
- for (var fieldName in resolverValue) {
151
- if (fieldName.startsWith('__')) {
152
- type[fieldName.substring(2)] = resolverValue[fieldName];
153
- }
154
- else {
155
- type[fieldName] = resolverValue[fieldName];
156
- }
157
- }
158
- }
159
- else if (graphql.isEnumType(type)) {
160
- var values = type.getValues();
161
- var _loop_1 = function (fieldName) {
162
- if (!fieldName.startsWith('__') &&
163
- !values.some(function (value) { return value.name === fieldName; }) &&
164
- requireResolversToMatchSchema &&
165
- requireResolversToMatchSchema !== 'ignore') {
166
- throw new Error(type.name + "." + fieldName + " was defined in resolvers, but not present within " + type.name);
167
- }
168
- };
169
- for (var fieldName in resolverValue) {
170
- _loop_1(fieldName);
171
- }
172
- }
173
- else if (graphql.isUnionType(type)) {
174
- for (var fieldName in resolverValue) {
175
- if (!fieldName.startsWith('__') &&
176
- requireResolversToMatchSchema &&
177
- requireResolversToMatchSchema !== 'ignore') {
178
- throw new Error(type.name + "." + fieldName + " was defined in resolvers, but " + type.name + " is not an object or interface type");
179
- }
180
- }
181
- }
182
- else if (graphql.isObjectType(type) || graphql.isInterfaceType(type)) {
183
- for (var fieldName in resolverValue) {
184
- if (!fieldName.startsWith('__')) {
185
- var fields = type.getFields();
186
- var field = fields[fieldName];
187
- if (field == null) {
188
- // Field present in resolver but not in schema
189
- if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'ignore') {
190
- throw new Error(typeName + "." + fieldName + " defined in resolvers, but not in schema");
191
- }
192
- }
193
- else {
194
- // Field present in both the resolver and schema
195
- var fieldResolve = resolverValue[fieldName];
196
- if (typeof fieldResolve !== 'function' && typeof fieldResolve !== 'object') {
197
- throw new Error("Resolver " + typeName + "." + fieldName + " must be object or function");
198
- }
199
- }
200
- }
201
- }
202
- }
203
- }
204
- schema = updateResolversInPlace
205
- ? addResolversToExistingSchema(schema, resolvers, defaultFieldResolver)
206
- : createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver);
207
- if (requireResolversForResolveType && requireResolversForResolveType !== 'ignore') {
208
- checkForResolveTypeResolver(schema, requireResolversForResolveType);
209
- }
210
- return schema;
211
- }
212
- function addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) {
213
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
214
- var typeMap = schema.getTypeMap();
215
- for (var typeName in resolvers) {
216
- var type = schema.getType(typeName);
217
- var resolverValue = resolvers[typeName];
218
- if (graphql.isScalarType(type)) {
219
- for (var fieldName in resolverValue) {
220
- if (fieldName.startsWith('__')) {
221
- type[fieldName.substring(2)] = resolverValue[fieldName];
222
- }
223
- else if (fieldName === 'astNode' && type.astNode != null) {
224
- type.astNode = tslib.__assign(tslib.__assign({}, type.astNode), { description: (_c = (_b = (_a = resolverValue) === null || _a === void 0 ? void 0 : _a.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : type.astNode.description, directives: ((_d = type.astNode.directives) !== null && _d !== void 0 ? _d : []).concat((_g = (_f = (_e = resolverValue) === null || _e === void 0 ? void 0 : _e.astNode) === null || _f === void 0 ? void 0 : _f.directives) !== null && _g !== void 0 ? _g : []) });
225
- }
226
- else if (fieldName === 'extensionASTNodes' && type.extensionASTNodes != null) {
227
- type.extensionASTNodes = type.extensionASTNodes.concat((_j = (_h = resolverValue) === null || _h === void 0 ? void 0 : _h.extensionASTNodes) !== null && _j !== void 0 ? _j : []);
228
- }
229
- else if (fieldName === 'extensions' &&
230
- type.extensions != null &&
231
- resolverValue.extensions != null) {
232
- type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
233
- }
234
- else {
235
- type[fieldName] = resolverValue[fieldName];
236
- }
237
- }
238
- }
239
- else if (graphql.isEnumType(type)) {
240
- var config = type.toConfig();
241
- var enumValueConfigMap = config.values;
242
- for (var fieldName in resolverValue) {
243
- if (fieldName.startsWith('__')) {
244
- config[fieldName.substring(2)] = resolverValue[fieldName];
245
- }
246
- else if (fieldName === 'astNode' && config.astNode != null) {
247
- config.astNode = tslib.__assign(tslib.__assign({}, config.astNode), { description: (_m = (_l = (_k = resolverValue) === null || _k === void 0 ? void 0 : _k.astNode) === null || _l === void 0 ? void 0 : _l.description) !== null && _m !== void 0 ? _m : config.astNode.description, directives: ((_o = config.astNode.directives) !== null && _o !== void 0 ? _o : []).concat((_r = (_q = (_p = resolverValue) === null || _p === void 0 ? void 0 : _p.astNode) === null || _q === void 0 ? void 0 : _q.directives) !== null && _r !== void 0 ? _r : []) });
248
- }
249
- else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {
250
- config.extensionASTNodes = config.extensionASTNodes.concat((_t = (_s = resolverValue) === null || _s === void 0 ? void 0 : _s.extensionASTNodes) !== null && _t !== void 0 ? _t : []);
251
- }
252
- else if (fieldName === 'extensions' &&
253
- type.extensions != null &&
254
- resolverValue.extensions != null) {
255
- type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
256
- }
257
- else if (enumValueConfigMap[fieldName]) {
258
- enumValueConfigMap[fieldName].value = resolverValue[fieldName];
259
- }
260
- }
261
- typeMap[typeName] = new graphql.GraphQLEnumType(config);
262
- }
263
- else if (graphql.isUnionType(type)) {
264
- for (var fieldName in resolverValue) {
265
- if (fieldName.startsWith('__')) {
266
- type[fieldName.substring(2)] = resolverValue[fieldName];
267
- }
268
- }
269
- }
270
- else if (graphql.isObjectType(type) || graphql.isInterfaceType(type)) {
271
- for (var fieldName in resolverValue) {
272
- if (fieldName.startsWith('__')) {
273
- // this is for isTypeOf and resolveType and all the other stuff.
274
- type[fieldName.substring(2)] = resolverValue[fieldName];
275
- break;
276
- }
277
- var fields = type.getFields();
278
- var field = fields[fieldName];
279
- if (field != null) {
280
- var fieldResolve = resolverValue[fieldName];
281
- if (typeof fieldResolve === 'function') {
282
- // for convenience. Allows shorter syntax in resolver definition file
283
- field.resolve = fieldResolve.bind(resolverValue);
284
- }
285
- else {
286
- setFieldProperties(field, fieldResolve);
287
- }
288
- }
289
- }
290
- }
291
- }
292
- // serialize all default values prior to healing fields with new scalar/enum types.
293
- utils.forEachDefaultValue(schema, utils.serializeInputValue);
294
- // schema may have new scalar/enum types that require healing
295
- utils.healSchema(schema);
296
- // reparse all default values with new parsing functions.
297
- utils.forEachDefaultValue(schema, utils.parseInputValue);
298
- if (defaultFieldResolver != null) {
299
- utils.forEachField(schema, function (field) {
300
- if (!field.resolve) {
301
- field.resolve = defaultFieldResolver;
302
- }
303
- });
304
- }
305
- return schema;
306
- }
307
- function createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver) {
308
- var _a, _b;
309
- schema = utils.mapSchema(schema, (_a = {},
310
- _a[utils.MapperKind.SCALAR_TYPE] = function (type) {
311
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
312
- var config = type.toConfig();
313
- var resolverValue = resolvers[type.name];
314
- if (!graphql.isSpecifiedScalarType(type) && resolverValue != null) {
315
- for (var fieldName in resolverValue) {
316
- if (fieldName.startsWith('__')) {
317
- config[fieldName.substring(2)] = resolverValue[fieldName];
318
- }
319
- else if (fieldName === 'astNode' && config.astNode != null) {
320
- config.astNode = tslib.__assign(tslib.__assign({}, config.astNode), { description: (_c = (_b = (_a = resolverValue) === null || _a === void 0 ? void 0 : _a.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : config.astNode.description, directives: ((_d = config.astNode.directives) !== null && _d !== void 0 ? _d : []).concat((_g = (_f = (_e = resolverValue) === null || _e === void 0 ? void 0 : _e.astNode) === null || _f === void 0 ? void 0 : _f.directives) !== null && _g !== void 0 ? _g : []) });
321
- }
322
- else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {
323
- config.extensionASTNodes = config.extensionASTNodes.concat((_j = (_h = resolverValue) === null || _h === void 0 ? void 0 : _h.extensionASTNodes) !== null && _j !== void 0 ? _j : []);
324
- }
325
- else if (fieldName === 'extensions' &&
326
- config.extensions != null &&
327
- resolverValue.extensions != null) {
328
- config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
329
- }
330
- else {
331
- config[fieldName] = resolverValue[fieldName];
332
- }
333
- }
334
- return new graphql.GraphQLScalarType(config);
335
- }
336
- },
337
- _a[utils.MapperKind.ENUM_TYPE] = function (type) {
338
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
339
- var resolverValue = resolvers[type.name];
340
- var config = type.toConfig();
341
- var enumValueConfigMap = config.values;
342
- if (resolverValue != null) {
343
- for (var fieldName in resolverValue) {
344
- if (fieldName.startsWith('__')) {
345
- config[fieldName.substring(2)] = resolverValue[fieldName];
346
- }
347
- else if (fieldName === 'astNode' && config.astNode != null) {
348
- config.astNode = tslib.__assign(tslib.__assign({}, config.astNode), { description: (_c = (_b = (_a = resolverValue) === null || _a === void 0 ? void 0 : _a.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : config.astNode.description, directives: ((_d = config.astNode.directives) !== null && _d !== void 0 ? _d : []).concat((_g = (_f = (_e = resolverValue) === null || _e === void 0 ? void 0 : _e.astNode) === null || _f === void 0 ? void 0 : _f.directives) !== null && _g !== void 0 ? _g : []) });
349
- }
350
- else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {
351
- config.extensionASTNodes = config.extensionASTNodes.concat((_j = (_h = resolverValue) === null || _h === void 0 ? void 0 : _h.extensionASTNodes) !== null && _j !== void 0 ? _j : []);
352
- }
353
- else if (fieldName === 'extensions' &&
354
- config.extensions != null &&
355
- resolverValue.extensions != null) {
356
- config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
357
- }
358
- else if (enumValueConfigMap[fieldName]) {
359
- enumValueConfigMap[fieldName].value = resolverValue[fieldName];
360
- }
361
- }
362
- return new graphql.GraphQLEnumType(config);
363
- }
364
- },
365
- _a[utils.MapperKind.UNION_TYPE] = function (type) {
366
- var resolverValue = resolvers[type.name];
367
- if (resolverValue != null) {
368
- var config = type.toConfig();
369
- if (resolverValue['__resolveType']) {
370
- config.resolveType = resolverValue['__resolveType'];
371
- }
372
- return new graphql.GraphQLUnionType(config);
373
- }
374
- },
375
- _a[utils.MapperKind.OBJECT_TYPE] = function (type) {
376
- var resolverValue = resolvers[type.name];
377
- if (resolverValue != null) {
378
- var config = type.toConfig();
379
- if (resolverValue['__isTypeOf']) {
380
- config.isTypeOf = resolverValue['__isTypeOf'];
381
- }
382
- return new graphql.GraphQLObjectType(config);
383
- }
384
- },
385
- _a[utils.MapperKind.INTERFACE_TYPE] = function (type) {
386
- var resolverValue = resolvers[type.name];
387
- if (resolverValue != null) {
388
- var config = type.toConfig();
389
- if (resolverValue['__resolveType']) {
390
- config.resolveType = resolverValue['__resolveType'];
391
- }
392
- return new graphql.GraphQLInterfaceType(config);
393
- }
394
- },
395
- _a[utils.MapperKind.COMPOSITE_FIELD] = function (fieldConfig, fieldName, typeName) {
396
- var resolverValue = resolvers[typeName];
397
- if (resolverValue != null) {
398
- var fieldResolve = resolverValue[fieldName];
399
- if (fieldResolve != null) {
400
- var newFieldConfig = tslib.__assign({}, fieldConfig);
401
- if (typeof fieldResolve === 'function') {
402
- // for convenience. Allows shorter syntax in resolver definition file
403
- newFieldConfig.resolve = fieldResolve.bind(resolverValue);
404
- }
405
- else {
406
- setFieldProperties(newFieldConfig, fieldResolve);
407
- }
408
- return newFieldConfig;
409
- }
410
- }
411
- },
412
- _a));
413
- if (defaultFieldResolver != null) {
414
- schema = utils.mapSchema(schema, (_b = {},
415
- _b[utils.MapperKind.OBJECT_FIELD] = function (fieldConfig) { return (tslib.__assign(tslib.__assign({}, fieldConfig), { resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver })); },
416
- _b));
417
- }
418
- return schema;
419
- }
420
- function setFieldProperties(field, propertiesObj) {
421
- for (var propertyName in propertiesObj) {
422
- field[propertyName] = propertiesObj[propertyName];
423
- }
424
- }
425
-
426
- /**
427
- * Builds a schema from the provided type definitions and resolvers.
428
- *
429
- * The type definitions are written using Schema Definition Language (SDL). They
430
- * can be provided as a string, a `DocumentNode`, a function, or an array of any
431
- * of these. If a function is provided, it will be passed no arguments and
432
- * should return an array of strings or `DocumentNode`s.
433
- *
434
- * Note: You can use `graphql-tag` to not only parse a string into a
435
- * `DocumentNode` but also to provide additional syntax highlighting in your
436
- * editor (with the appropriate editor plugin).
437
- *
438
- * ```js
439
- * const typeDefs = gql`
440
- * type Query {
441
- * posts: [Post]
442
- * author(id: Int!): Author
443
- * }
444
- * `;
445
- * ```
446
- *
447
- * The `resolvers` object should be a map of type names to nested object, which
448
- * themselves map the type's fields to their appropriate resolvers.
449
- * See the [Resolvers](/docs/resolvers) section of the documentation for more details.
450
- *
451
- * ```js
452
- * const resolvers = {
453
- * Query: {
454
- * posts: (obj, args, ctx, info) => getAllPosts(),
455
- * author: (obj, args, ctx, info) => getAuthorById(args.id)
456
- * }
457
- * };
458
- * ```
459
- *
460
- * Once you've defined both the `typeDefs` and `resolvers`, you can create your
461
- * schema:
462
- *
463
- * ```js
464
- * const schema = makeExecutableSchema({
465
- * typeDefs,
466
- * resolvers,
467
- * })
468
- * ```
469
- */
470
- function makeExecutableSchema(_a) {
471
- var typeDefs = _a.typeDefs, _b = _a.resolvers, resolvers = _b === void 0 ? {} : _b, _c = _a.resolverValidationOptions, resolverValidationOptions = _c === void 0 ? {} : _c, _d = _a.parseOptions, parseOptions = _d === void 0 ? {} : _d, _e = _a.inheritResolversFromInterfaces, inheritResolversFromInterfaces = _e === void 0 ? false : _e, pruningOptions = _a.pruningOptions, _f = _a.updateResolversInPlace, updateResolversInPlace = _f === void 0 ? false : _f, schemaExtensions = _a.schemaExtensions;
472
- // Validate and clean up arguments
473
- if (typeof resolverValidationOptions !== 'object') {
474
- throw new Error('Expected `resolverValidationOptions` to be an object');
475
- }
476
- if (!typeDefs) {
477
- throw new Error('Must provide typeDefs');
478
- }
479
- var schema;
480
- if (graphql.isSchema(typeDefs)) {
481
- schema = typeDefs;
482
- }
483
- else if (parseOptions === null || parseOptions === void 0 ? void 0 : parseOptions.commentDescriptions) {
484
- var mergedTypeDefs = merge.mergeTypeDefs(typeDefs, tslib.__assign(tslib.__assign({}, parseOptions), { commentDescriptions: true }));
485
- schema = graphql.buildSchema(mergedTypeDefs, parseOptions);
486
- }
487
- else {
488
- var mergedTypeDefs = merge.mergeTypeDefs(typeDefs, parseOptions);
489
- schema = graphql.buildASTSchema(mergedTypeDefs, parseOptions);
490
- }
491
- if (pruningOptions) {
492
- schema = utils.pruneSchema(schema);
493
- }
494
- // We allow passing in an array of resolver maps, in which case we merge them
495
- schema = addResolversToSchema({
496
- schema: schema,
497
- resolvers: merge.mergeResolvers(resolvers),
498
- resolverValidationOptions: resolverValidationOptions,
499
- inheritResolversFromInterfaces: inheritResolversFromInterfaces,
500
- updateResolversInPlace: updateResolversInPlace,
501
- });
502
- if (Object.keys(resolverValidationOptions).length > 0) {
503
- assertResolversPresent(schema, resolverValidationOptions);
504
- }
505
- if (schemaExtensions) {
506
- schemaExtensions = merge.mergeExtensions(utils.asArray(schemaExtensions));
507
- merge.applyExtensions(schema, schemaExtensions);
508
- }
509
- return schema;
510
- }
511
-
512
- /**
513
- * Synchronously merges multiple schemas, typeDefinitions and/or resolvers into a single schema.
514
- * @param config Configuration object
515
- */
516
- function mergeSchemas(config) {
517
- var e_1, _a;
518
- var extractedTypeDefs = utils.asArray(config.typeDefs || []);
519
- var extractedResolvers = utils.asArray(config.resolvers || []);
520
- var extractedSchemaExtensions = utils.asArray(config.schemaExtensions || []);
521
- var schemas = config.schemas || [];
522
- try {
523
- for (var schemas_1 = tslib.__values(schemas), schemas_1_1 = schemas_1.next(); !schemas_1_1.done; schemas_1_1 = schemas_1.next()) {
524
- var schema = schemas_1_1.value;
525
- extractedTypeDefs.push(schema);
526
- extractedResolvers.push(utils.getResolversFromSchema(schema));
527
- extractedSchemaExtensions.push(merge.extractExtensionsFromSchema(schema));
528
- }
529
- }
530
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
531
- finally {
532
- try {
533
- if (schemas_1_1 && !schemas_1_1.done && (_a = schemas_1.return)) _a.call(schemas_1);
534
- }
535
- finally { if (e_1) throw e_1.error; }
536
- }
537
- return makeExecutableSchema(tslib.__assign(tslib.__assign({ parseOptions: config }, config), { typeDefs: extractedTypeDefs, resolvers: extractedResolvers, schemaExtensions: extractedSchemaExtensions }));
538
- }
539
-
540
- exports.addResolversToSchema = addResolversToSchema;
541
- exports.assertResolversPresent = assertResolversPresent;
542
- exports.chainResolvers = chainResolvers;
543
- exports.checkForResolveTypeResolver = checkForResolveTypeResolver;
544
- exports.extendResolversFromInterfaces = extendResolversFromInterfaces;
545
- exports.makeExecutableSchema = makeExecutableSchema;
546
- exports.mergeSchemas = mergeSchemas;
package/es5/index.mjs DELETED
@@ -1,536 +0,0 @@
1
- import { isScalarType, getNamedType, defaultFieldResolver, isSchema, isSpecifiedScalarType, isEnumType, isUnionType, isObjectType, isInterfaceType, GraphQLEnumType, GraphQLScalarType, GraphQLUnionType, GraphQLObjectType, GraphQLInterfaceType, buildSchema, buildASTSchema } from 'graphql';
2
- import { forEachField, mapSchema, MapperKind, forEachDefaultValue, serializeInputValue, healSchema, parseInputValue, pruneSchema, asArray, getResolversFromSchema } from '@graphql-tools/utils/es5';
3
- import { __values, __assign } from 'tslib';
4
- import { mergeTypeDefs, mergeResolvers, mergeExtensions, applyExtensions, extractExtensionsFromSchema } from '@graphql-tools/merge/es5';
5
-
6
- function assertResolversPresent(schema, resolverValidationOptions) {
7
- if (resolverValidationOptions === void 0) { resolverValidationOptions = {}; }
8
- var requireResolversForArgs = resolverValidationOptions.requireResolversForArgs, requireResolversForNonScalar = resolverValidationOptions.requireResolversForNonScalar, requireResolversForAllFields = resolverValidationOptions.requireResolversForAllFields;
9
- if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {
10
- throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +
11
- 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +
12
- 'requireResolversForNonScalar, but not a combination of them.');
13
- }
14
- forEachField(schema, function (field, typeName, fieldName) {
15
- // requires a resolver for *every* field.
16
- if (requireResolversForAllFields) {
17
- expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName);
18
- }
19
- // requires a resolver on every field that has arguments
20
- if (requireResolversForArgs && field.args.length > 0) {
21
- expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName);
22
- }
23
- // requires a resolver on every field that returns a non-scalar type
24
- if (requireResolversForNonScalar !== 'ignore' && !isScalarType(getNamedType(field.type))) {
25
- expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName);
26
- }
27
- });
28
- }
29
- function expectResolver(validator, behavior, field, typeName, fieldName) {
30
- if (!field.resolve) {
31
- var message = "Resolver missing for \"" + typeName + "." + fieldName + "\".\nTo disable this validator, use:\n resolverValidationOptions: {\n " + validator + ": 'ignore'\n }";
32
- if (behavior === 'error') {
33
- throw new Error(message);
34
- }
35
- if (behavior === 'warn') {
36
- // eslint-disable-next-line no-console
37
- console.warn(message);
38
- }
39
- return;
40
- }
41
- if (typeof field.resolve !== 'function') {
42
- throw new Error("Resolver \"" + typeName + "." + fieldName + "\" must be a function");
43
- }
44
- }
45
-
46
- function chainResolvers(resolvers) {
47
- return function (root, args, ctx, info) {
48
- return resolvers.reduce(function (prev, curResolver) {
49
- if (curResolver != null) {
50
- return curResolver(prev, args, ctx, info);
51
- }
52
- return defaultFieldResolver(prev, args, ctx, info);
53
- }, root);
54
- };
55
- }
56
-
57
- // If we have any union or interface types throw if no there is no resolveType resolver
58
- function checkForResolveTypeResolver(schema, requireResolversForResolveType) {
59
- var _a;
60
- mapSchema(schema, (_a = {},
61
- _a[MapperKind.ABSTRACT_TYPE] = function (type) {
62
- if (!type.resolveType) {
63
- var message = "Type \"" + type.name + "\" is missing a \"__resolveType\" resolver. Pass 'ignore' into " +
64
- '"resolverValidationOptions.requireResolversForResolveType" to disable this error.';
65
- if (requireResolversForResolveType === 'error') {
66
- throw new Error(message);
67
- }
68
- if (requireResolversForResolveType === 'warn') {
69
- // eslint-disable-next-line no-console
70
- console.warn(message);
71
- }
72
- }
73
- return undefined;
74
- },
75
- _a));
76
- }
77
-
78
- function extendResolversFromInterfaces(schema, resolvers) {
79
- var e_1, _a;
80
- var extendedResolvers = {};
81
- var typeMap = schema.getTypeMap();
82
- for (var typeName in typeMap) {
83
- var type = typeMap[typeName];
84
- if ('getInterfaces' in type) {
85
- extendedResolvers[typeName] = {};
86
- try {
87
- for (var _b = (e_1 = void 0, __values(type.getInterfaces())), _c = _b.next(); !_c.done; _c = _b.next()) {
88
- var iFace = _c.value;
89
- if (resolvers[iFace.name]) {
90
- for (var fieldName in resolvers[iFace.name]) {
91
- if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {
92
- extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName];
93
- }
94
- }
95
- }
96
- }
97
- }
98
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
99
- finally {
100
- try {
101
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
102
- }
103
- finally { if (e_1) throw e_1.error; }
104
- }
105
- var typeResolvers = resolvers[typeName];
106
- extendedResolvers[typeName] = __assign(__assign({}, extendedResolvers[typeName]), typeResolvers);
107
- }
108
- else {
109
- var typeResolvers = resolvers[typeName];
110
- if (typeResolvers != null) {
111
- extendedResolvers[typeName] = typeResolvers;
112
- }
113
- }
114
- }
115
- return extendedResolvers;
116
- }
117
-
118
- function addResolversToSchema(schemaOrOptions, legacyInputResolvers, legacyInputValidationOptions) {
119
- var options = isSchema(schemaOrOptions)
120
- ? {
121
- schema: schemaOrOptions,
122
- resolvers: legacyInputResolvers !== null && legacyInputResolvers !== void 0 ? legacyInputResolvers : {},
123
- resolverValidationOptions: legacyInputValidationOptions,
124
- }
125
- : schemaOrOptions;
126
- var schema = options.schema, inputResolvers = options.resolvers, defaultFieldResolver = options.defaultFieldResolver, _a = options.resolverValidationOptions, resolverValidationOptions = _a === void 0 ? {} : _a, _b = options.inheritResolversFromInterfaces, inheritResolversFromInterfaces = _b === void 0 ? false : _b, _c = options.updateResolversInPlace, updateResolversInPlace = _c === void 0 ? false : _c;
127
- var _d = resolverValidationOptions.requireResolversToMatchSchema, requireResolversToMatchSchema = _d === void 0 ? 'error' : _d, requireResolversForResolveType = resolverValidationOptions.requireResolversForResolveType;
128
- var resolvers = inheritResolversFromInterfaces
129
- ? extendResolversFromInterfaces(schema, inputResolvers)
130
- : inputResolvers;
131
- for (var typeName in resolvers) {
132
- var resolverValue = resolvers[typeName];
133
- var resolverType = typeof resolverValue;
134
- if (resolverType !== 'object') {
135
- throw new Error("\"" + typeName + "\" defined in resolvers, but has invalid value \"" + resolverValue + "\". The resolver's value must be of type object.");
136
- }
137
- var type = schema.getType(typeName);
138
- if (type == null) {
139
- if (requireResolversToMatchSchema === 'ignore') {
140
- break;
141
- }
142
- throw new Error("\"" + typeName + "\" defined in resolvers, but not in schema");
143
- }
144
- else if (isSpecifiedScalarType(type)) {
145
- // allow -- without recommending -- overriding of specified scalar types
146
- for (var fieldName in resolverValue) {
147
- if (fieldName.startsWith('__')) {
148
- type[fieldName.substring(2)] = resolverValue[fieldName];
149
- }
150
- else {
151
- type[fieldName] = resolverValue[fieldName];
152
- }
153
- }
154
- }
155
- else if (isEnumType(type)) {
156
- var values = type.getValues();
157
- var _loop_1 = function (fieldName) {
158
- if (!fieldName.startsWith('__') &&
159
- !values.some(function (value) { return value.name === fieldName; }) &&
160
- requireResolversToMatchSchema &&
161
- requireResolversToMatchSchema !== 'ignore') {
162
- throw new Error(type.name + "." + fieldName + " was defined in resolvers, but not present within " + type.name);
163
- }
164
- };
165
- for (var fieldName in resolverValue) {
166
- _loop_1(fieldName);
167
- }
168
- }
169
- else if (isUnionType(type)) {
170
- for (var fieldName in resolverValue) {
171
- if (!fieldName.startsWith('__') &&
172
- requireResolversToMatchSchema &&
173
- requireResolversToMatchSchema !== 'ignore') {
174
- throw new Error(type.name + "." + fieldName + " was defined in resolvers, but " + type.name + " is not an object or interface type");
175
- }
176
- }
177
- }
178
- else if (isObjectType(type) || isInterfaceType(type)) {
179
- for (var fieldName in resolverValue) {
180
- if (!fieldName.startsWith('__')) {
181
- var fields = type.getFields();
182
- var field = fields[fieldName];
183
- if (field == null) {
184
- // Field present in resolver but not in schema
185
- if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'ignore') {
186
- throw new Error(typeName + "." + fieldName + " defined in resolvers, but not in schema");
187
- }
188
- }
189
- else {
190
- // Field present in both the resolver and schema
191
- var fieldResolve = resolverValue[fieldName];
192
- if (typeof fieldResolve !== 'function' && typeof fieldResolve !== 'object') {
193
- throw new Error("Resolver " + typeName + "." + fieldName + " must be object or function");
194
- }
195
- }
196
- }
197
- }
198
- }
199
- }
200
- schema = updateResolversInPlace
201
- ? addResolversToExistingSchema(schema, resolvers, defaultFieldResolver)
202
- : createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver);
203
- if (requireResolversForResolveType && requireResolversForResolveType !== 'ignore') {
204
- checkForResolveTypeResolver(schema, requireResolversForResolveType);
205
- }
206
- return schema;
207
- }
208
- function addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) {
209
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
210
- var typeMap = schema.getTypeMap();
211
- for (var typeName in resolvers) {
212
- var type = schema.getType(typeName);
213
- var resolverValue = resolvers[typeName];
214
- if (isScalarType(type)) {
215
- for (var fieldName in resolverValue) {
216
- if (fieldName.startsWith('__')) {
217
- type[fieldName.substring(2)] = resolverValue[fieldName];
218
- }
219
- else if (fieldName === 'astNode' && type.astNode != null) {
220
- type.astNode = __assign(__assign({}, type.astNode), { description: (_c = (_b = (_a = resolverValue) === null || _a === void 0 ? void 0 : _a.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : type.astNode.description, directives: ((_d = type.astNode.directives) !== null && _d !== void 0 ? _d : []).concat((_g = (_f = (_e = resolverValue) === null || _e === void 0 ? void 0 : _e.astNode) === null || _f === void 0 ? void 0 : _f.directives) !== null && _g !== void 0 ? _g : []) });
221
- }
222
- else if (fieldName === 'extensionASTNodes' && type.extensionASTNodes != null) {
223
- type.extensionASTNodes = type.extensionASTNodes.concat((_j = (_h = resolverValue) === null || _h === void 0 ? void 0 : _h.extensionASTNodes) !== null && _j !== void 0 ? _j : []);
224
- }
225
- else if (fieldName === 'extensions' &&
226
- type.extensions != null &&
227
- resolverValue.extensions != null) {
228
- type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
229
- }
230
- else {
231
- type[fieldName] = resolverValue[fieldName];
232
- }
233
- }
234
- }
235
- else if (isEnumType(type)) {
236
- var config = type.toConfig();
237
- var enumValueConfigMap = config.values;
238
- for (var fieldName in resolverValue) {
239
- if (fieldName.startsWith('__')) {
240
- config[fieldName.substring(2)] = resolverValue[fieldName];
241
- }
242
- else if (fieldName === 'astNode' && config.astNode != null) {
243
- config.astNode = __assign(__assign({}, config.astNode), { description: (_m = (_l = (_k = resolverValue) === null || _k === void 0 ? void 0 : _k.astNode) === null || _l === void 0 ? void 0 : _l.description) !== null && _m !== void 0 ? _m : config.astNode.description, directives: ((_o = config.astNode.directives) !== null && _o !== void 0 ? _o : []).concat((_r = (_q = (_p = resolverValue) === null || _p === void 0 ? void 0 : _p.astNode) === null || _q === void 0 ? void 0 : _q.directives) !== null && _r !== void 0 ? _r : []) });
244
- }
245
- else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {
246
- config.extensionASTNodes = config.extensionASTNodes.concat((_t = (_s = resolverValue) === null || _s === void 0 ? void 0 : _s.extensionASTNodes) !== null && _t !== void 0 ? _t : []);
247
- }
248
- else if (fieldName === 'extensions' &&
249
- type.extensions != null &&
250
- resolverValue.extensions != null) {
251
- type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
252
- }
253
- else if (enumValueConfigMap[fieldName]) {
254
- enumValueConfigMap[fieldName].value = resolverValue[fieldName];
255
- }
256
- }
257
- typeMap[typeName] = new GraphQLEnumType(config);
258
- }
259
- else if (isUnionType(type)) {
260
- for (var fieldName in resolverValue) {
261
- if (fieldName.startsWith('__')) {
262
- type[fieldName.substring(2)] = resolverValue[fieldName];
263
- }
264
- }
265
- }
266
- else if (isObjectType(type) || isInterfaceType(type)) {
267
- for (var fieldName in resolverValue) {
268
- if (fieldName.startsWith('__')) {
269
- // this is for isTypeOf and resolveType and all the other stuff.
270
- type[fieldName.substring(2)] = resolverValue[fieldName];
271
- break;
272
- }
273
- var fields = type.getFields();
274
- var field = fields[fieldName];
275
- if (field != null) {
276
- var fieldResolve = resolverValue[fieldName];
277
- if (typeof fieldResolve === 'function') {
278
- // for convenience. Allows shorter syntax in resolver definition file
279
- field.resolve = fieldResolve.bind(resolverValue);
280
- }
281
- else {
282
- setFieldProperties(field, fieldResolve);
283
- }
284
- }
285
- }
286
- }
287
- }
288
- // serialize all default values prior to healing fields with new scalar/enum types.
289
- forEachDefaultValue(schema, serializeInputValue);
290
- // schema may have new scalar/enum types that require healing
291
- healSchema(schema);
292
- // reparse all default values with new parsing functions.
293
- forEachDefaultValue(schema, parseInputValue);
294
- if (defaultFieldResolver != null) {
295
- forEachField(schema, function (field) {
296
- if (!field.resolve) {
297
- field.resolve = defaultFieldResolver;
298
- }
299
- });
300
- }
301
- return schema;
302
- }
303
- function createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver) {
304
- var _a, _b;
305
- schema = mapSchema(schema, (_a = {},
306
- _a[MapperKind.SCALAR_TYPE] = function (type) {
307
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
308
- var config = type.toConfig();
309
- var resolverValue = resolvers[type.name];
310
- if (!isSpecifiedScalarType(type) && resolverValue != null) {
311
- for (var fieldName in resolverValue) {
312
- if (fieldName.startsWith('__')) {
313
- config[fieldName.substring(2)] = resolverValue[fieldName];
314
- }
315
- else if (fieldName === 'astNode' && config.astNode != null) {
316
- config.astNode = __assign(__assign({}, config.astNode), { description: (_c = (_b = (_a = resolverValue) === null || _a === void 0 ? void 0 : _a.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : config.astNode.description, directives: ((_d = config.astNode.directives) !== null && _d !== void 0 ? _d : []).concat((_g = (_f = (_e = resolverValue) === null || _e === void 0 ? void 0 : _e.astNode) === null || _f === void 0 ? void 0 : _f.directives) !== null && _g !== void 0 ? _g : []) });
317
- }
318
- else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {
319
- config.extensionASTNodes = config.extensionASTNodes.concat((_j = (_h = resolverValue) === null || _h === void 0 ? void 0 : _h.extensionASTNodes) !== null && _j !== void 0 ? _j : []);
320
- }
321
- else if (fieldName === 'extensions' &&
322
- config.extensions != null &&
323
- resolverValue.extensions != null) {
324
- config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
325
- }
326
- else {
327
- config[fieldName] = resolverValue[fieldName];
328
- }
329
- }
330
- return new GraphQLScalarType(config);
331
- }
332
- },
333
- _a[MapperKind.ENUM_TYPE] = function (type) {
334
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
335
- var resolverValue = resolvers[type.name];
336
- var config = type.toConfig();
337
- var enumValueConfigMap = config.values;
338
- if (resolverValue != null) {
339
- for (var fieldName in resolverValue) {
340
- if (fieldName.startsWith('__')) {
341
- config[fieldName.substring(2)] = resolverValue[fieldName];
342
- }
343
- else if (fieldName === 'astNode' && config.astNode != null) {
344
- config.astNode = __assign(__assign({}, config.astNode), { description: (_c = (_b = (_a = resolverValue) === null || _a === void 0 ? void 0 : _a.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : config.astNode.description, directives: ((_d = config.astNode.directives) !== null && _d !== void 0 ? _d : []).concat((_g = (_f = (_e = resolverValue) === null || _e === void 0 ? void 0 : _e.astNode) === null || _f === void 0 ? void 0 : _f.directives) !== null && _g !== void 0 ? _g : []) });
345
- }
346
- else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {
347
- config.extensionASTNodes = config.extensionASTNodes.concat((_j = (_h = resolverValue) === null || _h === void 0 ? void 0 : _h.extensionASTNodes) !== null && _j !== void 0 ? _j : []);
348
- }
349
- else if (fieldName === 'extensions' &&
350
- config.extensions != null &&
351
- resolverValue.extensions != null) {
352
- config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
353
- }
354
- else if (enumValueConfigMap[fieldName]) {
355
- enumValueConfigMap[fieldName].value = resolverValue[fieldName];
356
- }
357
- }
358
- return new GraphQLEnumType(config);
359
- }
360
- },
361
- _a[MapperKind.UNION_TYPE] = function (type) {
362
- var resolverValue = resolvers[type.name];
363
- if (resolverValue != null) {
364
- var config = type.toConfig();
365
- if (resolverValue['__resolveType']) {
366
- config.resolveType = resolverValue['__resolveType'];
367
- }
368
- return new GraphQLUnionType(config);
369
- }
370
- },
371
- _a[MapperKind.OBJECT_TYPE] = function (type) {
372
- var resolverValue = resolvers[type.name];
373
- if (resolverValue != null) {
374
- var config = type.toConfig();
375
- if (resolverValue['__isTypeOf']) {
376
- config.isTypeOf = resolverValue['__isTypeOf'];
377
- }
378
- return new GraphQLObjectType(config);
379
- }
380
- },
381
- _a[MapperKind.INTERFACE_TYPE] = function (type) {
382
- var resolverValue = resolvers[type.name];
383
- if (resolverValue != null) {
384
- var config = type.toConfig();
385
- if (resolverValue['__resolveType']) {
386
- config.resolveType = resolverValue['__resolveType'];
387
- }
388
- return new GraphQLInterfaceType(config);
389
- }
390
- },
391
- _a[MapperKind.COMPOSITE_FIELD] = function (fieldConfig, fieldName, typeName) {
392
- var resolverValue = resolvers[typeName];
393
- if (resolverValue != null) {
394
- var fieldResolve = resolverValue[fieldName];
395
- if (fieldResolve != null) {
396
- var newFieldConfig = __assign({}, fieldConfig);
397
- if (typeof fieldResolve === 'function') {
398
- // for convenience. Allows shorter syntax in resolver definition file
399
- newFieldConfig.resolve = fieldResolve.bind(resolverValue);
400
- }
401
- else {
402
- setFieldProperties(newFieldConfig, fieldResolve);
403
- }
404
- return newFieldConfig;
405
- }
406
- }
407
- },
408
- _a));
409
- if (defaultFieldResolver != null) {
410
- schema = mapSchema(schema, (_b = {},
411
- _b[MapperKind.OBJECT_FIELD] = function (fieldConfig) { return (__assign(__assign({}, fieldConfig), { resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver })); },
412
- _b));
413
- }
414
- return schema;
415
- }
416
- function setFieldProperties(field, propertiesObj) {
417
- for (var propertyName in propertiesObj) {
418
- field[propertyName] = propertiesObj[propertyName];
419
- }
420
- }
421
-
422
- /**
423
- * Builds a schema from the provided type definitions and resolvers.
424
- *
425
- * The type definitions are written using Schema Definition Language (SDL). They
426
- * can be provided as a string, a `DocumentNode`, a function, or an array of any
427
- * of these. If a function is provided, it will be passed no arguments and
428
- * should return an array of strings or `DocumentNode`s.
429
- *
430
- * Note: You can use `graphql-tag` to not only parse a string into a
431
- * `DocumentNode` but also to provide additional syntax highlighting in your
432
- * editor (with the appropriate editor plugin).
433
- *
434
- * ```js
435
- * const typeDefs = gql`
436
- * type Query {
437
- * posts: [Post]
438
- * author(id: Int!): Author
439
- * }
440
- * `;
441
- * ```
442
- *
443
- * The `resolvers` object should be a map of type names to nested object, which
444
- * themselves map the type's fields to their appropriate resolvers.
445
- * See the [Resolvers](/docs/resolvers) section of the documentation for more details.
446
- *
447
- * ```js
448
- * const resolvers = {
449
- * Query: {
450
- * posts: (obj, args, ctx, info) => getAllPosts(),
451
- * author: (obj, args, ctx, info) => getAuthorById(args.id)
452
- * }
453
- * };
454
- * ```
455
- *
456
- * Once you've defined both the `typeDefs` and `resolvers`, you can create your
457
- * schema:
458
- *
459
- * ```js
460
- * const schema = makeExecutableSchema({
461
- * typeDefs,
462
- * resolvers,
463
- * })
464
- * ```
465
- */
466
- function makeExecutableSchema(_a) {
467
- var typeDefs = _a.typeDefs, _b = _a.resolvers, resolvers = _b === void 0 ? {} : _b, _c = _a.resolverValidationOptions, resolverValidationOptions = _c === void 0 ? {} : _c, _d = _a.parseOptions, parseOptions = _d === void 0 ? {} : _d, _e = _a.inheritResolversFromInterfaces, inheritResolversFromInterfaces = _e === void 0 ? false : _e, pruningOptions = _a.pruningOptions, _f = _a.updateResolversInPlace, updateResolversInPlace = _f === void 0 ? false : _f, schemaExtensions = _a.schemaExtensions;
468
- // Validate and clean up arguments
469
- if (typeof resolverValidationOptions !== 'object') {
470
- throw new Error('Expected `resolverValidationOptions` to be an object');
471
- }
472
- if (!typeDefs) {
473
- throw new Error('Must provide typeDefs');
474
- }
475
- var schema;
476
- if (isSchema(typeDefs)) {
477
- schema = typeDefs;
478
- }
479
- else if (parseOptions === null || parseOptions === void 0 ? void 0 : parseOptions.commentDescriptions) {
480
- var mergedTypeDefs = mergeTypeDefs(typeDefs, __assign(__assign({}, parseOptions), { commentDescriptions: true }));
481
- schema = buildSchema(mergedTypeDefs, parseOptions);
482
- }
483
- else {
484
- var mergedTypeDefs = mergeTypeDefs(typeDefs, parseOptions);
485
- schema = buildASTSchema(mergedTypeDefs, parseOptions);
486
- }
487
- if (pruningOptions) {
488
- schema = pruneSchema(schema);
489
- }
490
- // We allow passing in an array of resolver maps, in which case we merge them
491
- schema = addResolversToSchema({
492
- schema: schema,
493
- resolvers: mergeResolvers(resolvers),
494
- resolverValidationOptions: resolverValidationOptions,
495
- inheritResolversFromInterfaces: inheritResolversFromInterfaces,
496
- updateResolversInPlace: updateResolversInPlace,
497
- });
498
- if (Object.keys(resolverValidationOptions).length > 0) {
499
- assertResolversPresent(schema, resolverValidationOptions);
500
- }
501
- if (schemaExtensions) {
502
- schemaExtensions = mergeExtensions(asArray(schemaExtensions));
503
- applyExtensions(schema, schemaExtensions);
504
- }
505
- return schema;
506
- }
507
-
508
- /**
509
- * Synchronously merges multiple schemas, typeDefinitions and/or resolvers into a single schema.
510
- * @param config Configuration object
511
- */
512
- function mergeSchemas(config) {
513
- var e_1, _a;
514
- var extractedTypeDefs = asArray(config.typeDefs || []);
515
- var extractedResolvers = asArray(config.resolvers || []);
516
- var extractedSchemaExtensions = asArray(config.schemaExtensions || []);
517
- var schemas = config.schemas || [];
518
- try {
519
- for (var schemas_1 = __values(schemas), schemas_1_1 = schemas_1.next(); !schemas_1_1.done; schemas_1_1 = schemas_1.next()) {
520
- var schema = schemas_1_1.value;
521
- extractedTypeDefs.push(schema);
522
- extractedResolvers.push(getResolversFromSchema(schema));
523
- extractedSchemaExtensions.push(extractExtensionsFromSchema(schema));
524
- }
525
- }
526
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
527
- finally {
528
- try {
529
- if (schemas_1_1 && !schemas_1_1.done && (_a = schemas_1.return)) _a.call(schemas_1);
530
- }
531
- finally { if (e_1) throw e_1.error; }
532
- }
533
- return makeExecutableSchema(__assign(__assign({ parseOptions: config }, config), { typeDefs: extractedTypeDefs, resolvers: extractedResolvers, schemaExtensions: extractedSchemaExtensions }));
534
- }
535
-
536
- export { addResolversToSchema, assertResolversPresent, chainResolvers, checkForResolveTypeResolver, extendResolversFromInterfaces, makeExecutableSchema, mergeSchemas };
@@ -1,47 +0,0 @@
1
- import { GraphQLSchema } from 'graphql';
2
- import { IExecutableSchemaDefinition } from './types';
3
- /**
4
- * Builds a schema from the provided type definitions and resolvers.
5
- *
6
- * The type definitions are written using Schema Definition Language (SDL). They
7
- * can be provided as a string, a `DocumentNode`, a function, or an array of any
8
- * of these. If a function is provided, it will be passed no arguments and
9
- * should return an array of strings or `DocumentNode`s.
10
- *
11
- * Note: You can use `graphql-tag` to not only parse a string into a
12
- * `DocumentNode` but also to provide additional syntax highlighting in your
13
- * editor (with the appropriate editor plugin).
14
- *
15
- * ```js
16
- * const typeDefs = gql`
17
- * type Query {
18
- * posts: [Post]
19
- * author(id: Int!): Author
20
- * }
21
- * `;
22
- * ```
23
- *
24
- * The `resolvers` object should be a map of type names to nested object, which
25
- * themselves map the type's fields to their appropriate resolvers.
26
- * See the [Resolvers](/docs/resolvers) section of the documentation for more details.
27
- *
28
- * ```js
29
- * const resolvers = {
30
- * Query: {
31
- * posts: (obj, args, ctx, info) => getAllPosts(),
32
- * author: (obj, args, ctx, info) => getAuthorById(args.id)
33
- * }
34
- * };
35
- * ```
36
- *
37
- * Once you've defined both the `typeDefs` and `resolvers`, you can create your
38
- * schema:
39
- *
40
- * ```js
41
- * const schema = makeExecutableSchema({
42
- * typeDefs,
43
- * resolvers,
44
- * })
45
- * ```
46
- */
47
- export declare function makeExecutableSchema<TContext = any>({ typeDefs, resolvers, resolverValidationOptions, parseOptions, inheritResolversFromInterfaces, pruningOptions, updateResolversInPlace, schemaExtensions, }: IExecutableSchemaDefinition<TContext>): GraphQLSchema;
@@ -1,16 +0,0 @@
1
- import { GraphQLSchema } from 'graphql';
2
- import { IExecutableSchemaDefinition } from './types';
3
- /**
4
- * Configuration object for schema merging
5
- */
6
- export declare type MergeSchemasConfig<T = any> = Partial<IExecutableSchemaDefinition<T>> & IExecutableSchemaDefinition<T>['parseOptions'] & {
7
- /**
8
- * The schemas to be merged
9
- */
10
- schemas?: GraphQLSchema[];
11
- };
12
- /**
13
- * Synchronously merges multiple schemas, typeDefinitions and/or resolvers into a single schema.
14
- * @param config Configuration object
15
- */
16
- export declare function mergeSchemas(config: MergeSchemasConfig): GraphQLSchema;
package/es5/package.json DELETED
@@ -1,37 +0,0 @@
1
- {
2
- "name": "@graphql-tools/schema/es5",
3
- "version": "8.2.1-alpha-d8af46a9.0",
4
- "description": "A set of utils for faster development of GraphQL tools",
5
- "sideEffects": false,
6
- "peerDependencies": {
7
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
8
- },
9
- "dependencies": {
10
- "@graphql-tools/merge": "8.1.2-alpha-d8af46a9.0",
11
- "@graphql-tools/utils": "^8.2.0",
12
- "tslib": "~2.3.0",
13
- "value-or-promise": "1.0.10"
14
- },
15
- "repository": {
16
- "type": "git",
17
- "url": "ardatan/graphql-tools",
18
- "directory": "packages/schema"
19
- },
20
- "license": "MIT",
21
- "main": "index.js",
22
- "module": "index.mjs",
23
- "typings": "index.d.ts",
24
- "typescript": {
25
- "definition": "index.d.ts"
26
- },
27
- "exports": {
28
- ".": {
29
- "require": "./index.js",
30
- "import": "./index.mjs"
31
- },
32
- "./*": {
33
- "require": "./*.js",
34
- "import": "./*.mjs"
35
- }
36
- }
37
- }
package/es5/types.d.ts DELETED
@@ -1,42 +0,0 @@
1
- import { TypeSource, IResolvers, IResolverValidationOptions, GraphQLParseOptions, PruneSchemaOptions } from '@graphql-tools/utils';
2
- import { SchemaExtensions } from '@graphql-tools/merge';
3
- import { BuildSchemaOptions } from 'graphql';
4
- /**
5
- * Configuration object for creating an executable schema
6
- */
7
- export interface IExecutableSchemaDefinition<TContext = any> {
8
- /**
9
- * The type definitions used to create the schema
10
- */
11
- typeDefs: TypeSource;
12
- /**
13
- * Object describing the field resolvers for the provided type definitions
14
- */
15
- resolvers?: IResolvers<any, TContext> | Array<IResolvers<any, TContext>>;
16
- /**
17
- * Additional options for validating the provided resolvers
18
- */
19
- resolverValidationOptions?: IResolverValidationOptions;
20
- /**
21
- * Additional options for parsing the type definitions if they are provided
22
- * as a string
23
- */
24
- parseOptions?: BuildSchemaOptions & GraphQLParseOptions;
25
- /**
26
- * GraphQL object types that implement interfaces will inherit any missing
27
- * resolvers from their interface types defined in the `resolvers` object
28
- */
29
- inheritResolversFromInterfaces?: boolean;
30
- /**
31
- * Additional options for removing unused types from the schema
32
- */
33
- pruningOptions?: PruneSchemaOptions;
34
- /**
35
- * Do not create a schema again and use the one from `buildASTSchema`
36
- */
37
- updateResolversInPlace?: boolean;
38
- /**
39
- * Schema extensions
40
- */
41
- schemaExtensions?: SchemaExtensions | Array<SchemaExtensions>;
42
- }