graphql-tools 3.0.3 → 3.1.1

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.
Files changed (79) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/Interfaces.d.ts +10 -3
  3. package/dist/generate/SchemaError.d.ts +4 -0
  4. package/dist/generate/SchemaError.js +26 -0
  5. package/dist/generate/SchemaError.js.map +1 -0
  6. package/dist/generate/addResolveFunctionsToSchema.d.ts +4 -0
  7. package/dist/generate/addResolveFunctionsToSchema.js +99 -0
  8. package/dist/generate/addResolveFunctionsToSchema.js.map +1 -0
  9. package/dist/generate/addSchemaLevelResolveFunction.d.ts +3 -0
  10. package/dist/generate/addSchemaLevelResolveFunction.js +62 -0
  11. package/dist/generate/addSchemaLevelResolveFunction.js.map +1 -0
  12. package/dist/generate/assertResolveFunctionsPresent.d.ts +4 -0
  13. package/dist/generate/assertResolveFunctionsPresent.js +42 -0
  14. package/dist/generate/assertResolveFunctionsPresent.js.map +1 -0
  15. package/dist/generate/attachConnectorsToContext.d.ts +2 -0
  16. package/dist/generate/attachConnectorsToContext.js +56 -0
  17. package/dist/generate/attachConnectorsToContext.js.map +1 -0
  18. package/dist/generate/attachDirectiveResolvers.d.ts +4 -0
  19. package/dist/generate/attachDirectiveResolvers.js +86 -0
  20. package/dist/generate/attachDirectiveResolvers.js.map +1 -0
  21. package/dist/generate/buildSchemaFromTypeDefinitions.d.ts +4 -0
  22. package/dist/generate/buildSchemaFromTypeDefinitions.js +36 -0
  23. package/dist/generate/buildSchemaFromTypeDefinitions.js.map +1 -0
  24. package/dist/generate/chainResolvers.d.ts +5 -0
  25. package/dist/generate/chainResolvers.js +15 -0
  26. package/dist/generate/chainResolvers.js.map +1 -0
  27. package/dist/generate/checkForResolveTypeResolver.d.ts +3 -0
  28. package/dist/generate/checkForResolveTypeResolver.js +28 -0
  29. package/dist/generate/checkForResolveTypeResolver.js.map +1 -0
  30. package/dist/generate/concatenateTypeDefs.d.ts +3 -0
  31. package/dist/generate/concatenateTypeDefs.js +35 -0
  32. package/dist/generate/concatenateTypeDefs.js.map +1 -0
  33. package/dist/generate/decorateWithLogger.d.ts +4 -0
  34. package/dist/generate/decorateWithLogger.js +49 -0
  35. package/dist/generate/decorateWithLogger.js.map +1 -0
  36. package/dist/generate/extendResolversFromInterfaces.d.ts +4 -0
  37. package/dist/generate/extendResolversFromInterfaces.js +33 -0
  38. package/dist/generate/extendResolversFromInterfaces.js.map +1 -0
  39. package/dist/generate/extractExtensionDefinitions.d.ts +4 -0
  40. package/dist/generate/extractExtensionDefinitions.js +15 -0
  41. package/dist/generate/extractExtensionDefinitions.js.map +1 -0
  42. package/dist/generate/forEachField.d.ts +4 -0
  43. package/dist/generate/forEachField.js +20 -0
  44. package/dist/generate/forEachField.js.map +1 -0
  45. package/dist/generate/index.d.ts +14 -0
  46. package/dist/generate/index.js +31 -0
  47. package/dist/generate/index.js.map +1 -0
  48. package/dist/makeExecutableSchema.js +18 -25
  49. package/dist/makeExecutableSchema.js.map +1 -1
  50. package/dist/mock.js +81 -87
  51. package/dist/mock.js.map +1 -1
  52. package/dist/schemaGenerator.d.ts +24 -0
  53. package/dist/schemaGenerator.js +610 -0
  54. package/dist/schemaGenerator.js.map +1 -0
  55. package/dist/schemaVisitor.d.ts +10 -10
  56. package/dist/schemaVisitor.js.map +1 -1
  57. package/dist/stitching/delegateToSchema.js +35 -7
  58. package/dist/stitching/delegateToSchema.js.map +1 -1
  59. package/dist/stitching/linkToFetcher.js.map +1 -1
  60. package/dist/stitching/mapAsyncIterator.d.ts +5 -0
  61. package/dist/stitching/mapAsyncIterator.js +60 -0
  62. package/dist/stitching/mapAsyncIterator.js.map +1 -0
  63. package/dist/stitching/mergeSchemas.d.ts +2 -1
  64. package/dist/stitching/mergeSchemas.js +6 -7
  65. package/dist/stitching/mergeSchemas.js.map +1 -1
  66. package/dist/stitching/schemaRecreation.js +5 -1
  67. package/dist/stitching/schemaRecreation.js.map +1 -1
  68. package/dist/stitching/typeFromAST.js +9 -105
  69. package/dist/stitching/typeFromAST.js.map +1 -1
  70. package/dist/transforms/ExpandAbstractTypes.js +1 -1
  71. package/dist/transforms/ExpandAbstractTypes.js.map +1 -1
  72. package/dist/transforms/FilterToSchema.js +20 -2
  73. package/dist/transforms/FilterToSchema.js.map +1 -1
  74. package/dist/transforms/ReplaceFieldWithFragment.js +76 -3
  75. package/dist/transforms/ReplaceFieldWithFragment.js.map +1 -1
  76. package/dist/transforms/WrapQuery.d.ts +1 -1
  77. package/dist/transforms/WrapQuery.js +11 -6
  78. package/dist/transforms/WrapQuery.js.map +1 -1
  79. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Change log
2
2
 
3
+ ### vNEXT
4
+
5
+ * ...
6
+
7
+ ### v3.1.1
8
+
9
+ * Revert the added `casual` dependency for mocking, since it was causing issues for people using `graphql-tools` in the browser.
10
+
11
+ ### v3.1.0
12
+
13
+ * Loosens the apollo-link dependency [PR #765](https://github.com/apollographql/graphql-tools/pull/765)
14
+ * Use `getDescription` from `graphql-js` package [PR #672](https://github.com/apollographql/graphql-tools/pull/672)
15
+ * Update `IResolvers` to use source & context generics and to support all resolver use cases. [#896](https://github.com/apollographql/graphql-tools/pull/896)
16
+ * `WrapQuery`'s `wrapper` param can now return a SelectionSet. [PR #902](https://github.com/apollographql/graphql-tools/pull/902) [Issue #901](https://github.com/apollographql/graphql-tools/issues/901)
17
+ * Add null to return type of directive visitors in the TypeScript definition.
18
+ * Make sure mergeSchemas keeps Enum descriptions and deprecation status. [PR 898](https://github.com/apollographql/graphql-tools/pull/898/)
19
+ * Add `inheritResolversFromInterfaces` option to `mergeSchemas` [PR #812](https://github.com/apollographql/graphql-tools/pull/812)
20
+ * Added filtering of empty selection sets in FilterToSchema [#827](https://github.com/apollographql/graphql-tools/pull/827)
21
+ * Add support for overlapping fragments in ReplaceFieldWithFragment. [#894](https://github.com/apollographql/graphql-tools/issues/894)
22
+ * `delegateToSchema` now behaves like `info.mergeInfo.delegateToSchema` for fragment handling [Issue #876](https://github.com/apollographql/graphql-tools/issues/876) [PR #885](https://github.com/apollographql/graphql-tools/pull/885)
23
+ * Make schema transforms work with subscriptions, make it so that subscription errors don't disappear when using mergeSchemas [#793](https://github.com/apollographql/graphql-tools/issues/793) [#780](https://github.com/apollographql/graphql-tools/issues/780)
24
+
25
+ ### v3.0.5
26
+
27
+ * Update apollo-link to 1.2.2 [#785](https://github.com/apollographql/graphql-tools/pull/785)
28
+
29
+ ### v3.0.4
30
+
31
+ * Make sure `dist/generate` isn't excluded when published.
32
+
3
33
  ### v3.0.3
4
34
 
5
35
  * Pass on operation name when stitching schemas.
@@ -26,6 +26,9 @@ export declare type Transform = {
26
26
  transformRequest?: (originalRequest: Request) => Request;
27
27
  transformResult?: (result: Result) => Result;
28
28
  };
29
+ export interface IGraphQLToolsResolveInfo extends GraphQLResolveInfo {
30
+ mergeInfo?: MergeInfo;
31
+ }
29
32
  export interface IDelegateToSchemaOptions<TContext = {
30
33
  [key: string]: any;
31
34
  }> {
@@ -36,7 +39,7 @@ export interface IDelegateToSchemaOptions<TContext = {
36
39
  [key: string]: any;
37
40
  };
38
41
  context: TContext;
39
- info: GraphQLResolveInfo;
42
+ info: IGraphQLToolsResolveInfo;
40
43
  transforms?: Array<Transform>;
41
44
  skipValidation?: boolean;
42
45
  }
@@ -47,6 +50,10 @@ export declare type MergeInfo = {
47
50
  [key: string]: any;
48
51
  }, info: GraphQLResolveInfo, transforms?: Array<Transform>) => any;
49
52
  delegateToSchema<TContext>(options: IDelegateToSchemaOptions<TContext>): any;
53
+ fragments: Array<{
54
+ field: string;
55
+ fragment: string;
56
+ }>;
50
57
  };
51
58
  export declare type IFieldResolver<TSource, TContext> = (source: TSource, args: {
52
59
  [argument: string]: any;
@@ -56,13 +63,13 @@ export declare type IFieldResolver<TSource, TContext> = (source: TSource, args:
56
63
  export declare type ITypedef = (() => ITypedef[]) | string | DocumentNode;
57
64
  export declare type ITypeDefinitions = ITypedef | ITypedef[];
58
65
  export declare type IResolverObject<TSource = any, TContext = any> = {
59
- [key: string]: IFieldResolver<TSource, TContext> | IResolverOptions;
66
+ [key: string]: IFieldResolver<TSource, TContext> | IResolverOptions<TSource, TContext> | IResolverObject<TSource, TContext>;
60
67
  };
61
68
  export declare type IEnumResolver = {
62
69
  [key: string]: string | number;
63
70
  };
64
71
  export interface IResolvers<TSource = any, TContext = any> {
65
- [key: string]: (() => any) | IResolverObject<TSource, TContext> | GraphQLScalarType | IEnumResolver;
72
+ [key: string]: (() => any) | IResolverObject<TSource, TContext> | IResolverOptions<TSource, TContext> | GraphQLScalarType | IEnumResolver;
66
73
  }
67
74
  export declare type IResolversParameter = Array<IResolvers | ((mergeInfo: MergeInfo) => IResolvers)> | IResolvers | ((mergeInfo: MergeInfo) => IResolvers);
68
75
  export interface ILogger {
@@ -0,0 +1,4 @@
1
+ export default class SchemaError extends Error {
2
+ message: string;
3
+ constructor(message: string);
4
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ return function (d, b) {
7
+ extendStatics(d, b);
8
+ function __() { this.constructor = d; }
9
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
10
+ };
11
+ })();
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ // @schemaDefinition: A GraphQL type schema in shorthand
14
+ // @resolvers: Definitions for resolvers to be merged with schema
15
+ var SchemaError = /** @class */ (function (_super) {
16
+ __extends(SchemaError, _super);
17
+ function SchemaError(message) {
18
+ var _this = _super.call(this, message) || this;
19
+ _this.message = message;
20
+ Error.captureStackTrace(_this, _this.constructor);
21
+ return _this;
22
+ }
23
+ return SchemaError;
24
+ }(Error));
25
+ exports.default = SchemaError;
26
+ //# sourceMappingURL=SchemaError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaError.js","sourceRoot":"","sources":["../../src/generate/SchemaError.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAAwD;AACxD,iEAAiE;AACjE;IAAyC,+BAAK;IAG5C,qBAAY,OAAe;QAA3B,YACE,kBAAM,OAAO,CAAC,SAGf;QAFC,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAK,CAAC,iBAAiB,CAAC,KAAI,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;;IAClD,CAAC;IACH,kBAAC;AAAD,CAAC,AARD,CAAyC,KAAK,GAQ7C"}
@@ -0,0 +1,4 @@
1
+ import { GraphQLSchema } from 'graphql';
2
+ import { IResolvers, IResolverValidationOptions, IAddResolveFunctionsToSchemaOptions } from '../Interfaces';
3
+ declare function addResolveFunctionsToSchema(options: IAddResolveFunctionsToSchemaOptions | GraphQLSchema, legacyInputResolvers?: IResolvers, legacyInputValidationOptions?: IResolverValidationOptions): void;
4
+ export default addResolveFunctionsToSchema;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var _1 = require(".");
4
+ var graphql_1 = require("graphql");
5
+ var _2 = require(".");
6
+ function addResolveFunctionsToSchema(options, legacyInputResolvers, legacyInputValidationOptions) {
7
+ if (options instanceof graphql_1.GraphQLSchema) {
8
+ console.warn('The addResolveFunctionsToSchema function takes named options now; see IAddResolveFunctionsToSchemaOptions');
9
+ options = {
10
+ schema: options,
11
+ resolvers: legacyInputResolvers,
12
+ resolverValidationOptions: legacyInputValidationOptions,
13
+ };
14
+ }
15
+ var schema = options.schema, inputResolvers = options.resolvers, _a = options.resolverValidationOptions, resolverValidationOptions = _a === void 0 ? {} : _a, _b = options.inheritResolversFromInterfaces, inheritResolversFromInterfaces = _b === void 0 ? false : _b;
16
+ var _c = resolverValidationOptions.allowResolversNotInSchema, allowResolversNotInSchema = _c === void 0 ? false : _c, requireResolversForResolveType = resolverValidationOptions.requireResolversForResolveType;
17
+ var resolvers = inheritResolversFromInterfaces
18
+ ? _2.extendResolversFromInterfaces(schema, inputResolvers)
19
+ : inputResolvers;
20
+ Object.keys(resolvers).forEach(function (typeName) {
21
+ var resolverValue = resolvers[typeName];
22
+ var resolverType = typeof resolverValue;
23
+ if (resolverType !== 'object' && resolverType !== 'function') {
24
+ throw new _1.SchemaError("\"" + typeName + "\" defined in resolvers, but has invalid value \"" + resolverValue + "\". A resolver's value " +
25
+ "must be of type object or function.");
26
+ }
27
+ var type = schema.getType(typeName);
28
+ if (!type && typeName !== '__schema') {
29
+ if (allowResolversNotInSchema) {
30
+ return;
31
+ }
32
+ throw new _1.SchemaError("\"" + typeName + "\" defined in resolvers, but not in schema");
33
+ }
34
+ Object.keys(resolverValue).forEach(function (fieldName) {
35
+ if (fieldName.startsWith('__')) {
36
+ // this is for isTypeOf and resolveType and all the other stuff.
37
+ type[fieldName.substring(2)] = resolverValue[fieldName];
38
+ return;
39
+ }
40
+ if (type instanceof graphql_1.GraphQLScalarType) {
41
+ type[fieldName] = resolverValue[fieldName];
42
+ return;
43
+ }
44
+ if (type instanceof graphql_1.GraphQLEnumType) {
45
+ if (!type.getValue(fieldName)) {
46
+ if (allowResolversNotInSchema) {
47
+ return;
48
+ }
49
+ throw new _1.SchemaError(typeName + "." + fieldName + " was defined in resolvers, but enum is not in schema");
50
+ }
51
+ type.getValue(fieldName)['value'] = resolverValue[fieldName];
52
+ return;
53
+ }
54
+ // object type
55
+ var fields = getFieldsForType(type);
56
+ if (!fields) {
57
+ if (allowResolversNotInSchema) {
58
+ return;
59
+ }
60
+ throw new _1.SchemaError(typeName + " was defined in resolvers, but it's not an object");
61
+ }
62
+ if (!fields[fieldName]) {
63
+ if (allowResolversNotInSchema) {
64
+ return;
65
+ }
66
+ throw new _1.SchemaError(typeName + "." + fieldName + " defined in resolvers, but not in schema");
67
+ }
68
+ var field = fields[fieldName];
69
+ var fieldResolve = resolverValue[fieldName];
70
+ if (typeof fieldResolve === 'function') {
71
+ // for convenience. Allows shorter syntax in resolver definition file
72
+ setFieldProperties(field, { resolve: fieldResolve });
73
+ }
74
+ else {
75
+ if (typeof fieldResolve !== 'object') {
76
+ throw new _1.SchemaError("Resolver " + typeName + "." + fieldName + " must be object or function");
77
+ }
78
+ setFieldProperties(field, fieldResolve);
79
+ }
80
+ });
81
+ });
82
+ _2.checkForResolveTypeResolver(schema, requireResolversForResolveType);
83
+ }
84
+ function getFieldsForType(type) {
85
+ if (type instanceof graphql_1.GraphQLObjectType ||
86
+ type instanceof graphql_1.GraphQLInterfaceType) {
87
+ return type.getFields();
88
+ }
89
+ else {
90
+ return undefined;
91
+ }
92
+ }
93
+ function setFieldProperties(field, propertiesObj) {
94
+ Object.keys(propertiesObj).forEach(function (propertyName) {
95
+ field[propertyName] = propertiesObj[propertyName];
96
+ });
97
+ }
98
+ exports.default = addResolveFunctionsToSchema;
99
+ //# sourceMappingURL=addResolveFunctionsToSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addResolveFunctionsToSchema.js","sourceRoot":"","sources":["../../src/generate/addResolveFunctionsToSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { GraphQLSchema, GraphQLFieldResolver } from 'graphql';
2
+ declare function addSchemaLevelResolveFunction(schema: GraphQLSchema, fn: GraphQLFieldResolver<any, any>): void;
3
+ export default addSchemaLevelResolveFunction;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var graphql_1 = require("graphql");
4
+ // wraps all resolve functions of query, mutation or subscription fields
5
+ // with the provided function to simulate a root schema level resolve funciton
6
+ function addSchemaLevelResolveFunction(schema, fn) {
7
+ // TODO test that schema is a schema, fn is a function
8
+ var rootTypes = [
9
+ schema.getQueryType(),
10
+ schema.getMutationType(),
11
+ schema.getSubscriptionType(),
12
+ ].filter(function (x) { return !!x; });
13
+ rootTypes.forEach(function (type) {
14
+ // XXX this should run at most once per request to simulate a true root resolver
15
+ // for graphql-js this is an approximation that works with queries but not mutations
16
+ var rootResolveFn = runAtMostOncePerRequest(fn);
17
+ var fields = type.getFields();
18
+ Object.keys(fields).forEach(function (fieldName) {
19
+ // XXX if the type is a subscription, a same query AST will be ran multiple times so we
20
+ // deactivate here the runOnce if it's a subscription. This may not be optimal though...
21
+ if (type === schema.getSubscriptionType()) {
22
+ fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, fn);
23
+ }
24
+ else {
25
+ fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, rootResolveFn);
26
+ }
27
+ });
28
+ });
29
+ }
30
+ // XXX badly named function. this doesn't really wrap, it just chains resolvers...
31
+ function wrapResolver(innerResolver, outerResolver) {
32
+ return function (obj, args, ctx, info) {
33
+ return Promise.resolve(outerResolver(obj, args, ctx, info)).then(function (root) {
34
+ if (innerResolver) {
35
+ return innerResolver(root, args, ctx, info);
36
+ }
37
+ return graphql_1.defaultFieldResolver(root, args, ctx, info);
38
+ });
39
+ };
40
+ }
41
+ // XXX this function only works for resolvers
42
+ // XXX very hacky way to remember if the function
43
+ // already ran for this request. This will only work
44
+ // if people don't actually cache the operation.
45
+ // if they do cache the operation, they will have to
46
+ // manually remove the __runAtMostOnce before every request.
47
+ function runAtMostOncePerRequest(fn) {
48
+ var value;
49
+ var randomNumber = Math.random();
50
+ return function (root, args, ctx, info) {
51
+ if (!info.operation['__runAtMostOnce']) {
52
+ info.operation['__runAtMostOnce'] = {};
53
+ }
54
+ if (!info.operation['__runAtMostOnce'][randomNumber]) {
55
+ info.operation['__runAtMostOnce'][randomNumber] = true;
56
+ value = fn(root, args, ctx, info);
57
+ }
58
+ return value;
59
+ };
60
+ }
61
+ exports.default = addSchemaLevelResolveFunction;
62
+ //# sourceMappingURL=addSchemaLevelResolveFunction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addSchemaLevelResolveFunction.js","sourceRoot":"","sources":["../../src/generate/addSchemaLevelResolveFunction.ts"],"names":[],"mappings":";;AAAA,mCAIiB;AAEjB,wEAAwE;AACxE,8EAA8E;AAC9E,uCACE,MAAqB,EACrB,EAAkC;IAElC,sDAAsD;IACtD,IAAM,SAAS,GAAG;QAChB,MAAM,CAAC,YAAY,EAAE;QACrB,MAAM,CAAC,eAAe,EAAE;QACxB,MAAM,CAAC,mBAAmB,EAAE;KAC7B,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAAC;IACnB,SAAS,CAAC,OAAO,CAAC,UAAA,IAAI;QACpB,gFAAgF;QAChF,oFAAoF;QACpF,IAAM,aAAa,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAClD,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS;YACnC,uFAAuF;YACvF,wFAAwF;YACxF,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;gBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1E,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,YAAY,CACtC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EACzB,aAAa,CACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,sBACE,aAAyD,EACzD,aAA6C;IAE7C,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;QAC1B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI;YACnE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBAClB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,CAAC,8BAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,6CAA6C;AAC7C,iDAAiD;AACjD,oDAAoD;AACpD,gDAAgD;AAChD,oDAAoD;AACpD,4DAA4D;AAC5D,iCACE,EAAkC;IAElC,IAAI,KAAU,CAAC;IACf,IAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IACnC,MAAM,CAAC,UAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;QAC3B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;YACvD,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED,kBAAe,6BAA6B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { GraphQLSchema } from 'graphql';
2
+ import { IResolverValidationOptions } from '../Interfaces';
3
+ declare function assertResolveFunctionsPresent(schema: GraphQLSchema, resolverValidationOptions?: IResolverValidationOptions): void;
4
+ export default assertResolveFunctionsPresent;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var graphql_1 = require("graphql");
4
+ var _1 = require(".");
5
+ function assertResolveFunctionsPresent(schema, resolverValidationOptions) {
6
+ if (resolverValidationOptions === void 0) { resolverValidationOptions = {}; }
7
+ var _a = resolverValidationOptions.requireResolversForArgs, requireResolversForArgs = _a === void 0 ? false : _a, _b = resolverValidationOptions.requireResolversForNonScalar, requireResolversForNonScalar = _b === void 0 ? false : _b, _c = resolverValidationOptions.requireResolversForAllFields, requireResolversForAllFields = _c === void 0 ? false : _c;
8
+ if (requireResolversForAllFields &&
9
+ (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
+ _1.forEachField(schema, function (field, typeName, fieldName) {
15
+ // requires a resolve function for *every* field.
16
+ if (requireResolversForAllFields) {
17
+ expectResolveFunction(field, typeName, fieldName);
18
+ }
19
+ // requires a resolve function on every field that has arguments
20
+ if (requireResolversForArgs && field.args.length > 0) {
21
+ expectResolveFunction(field, typeName, fieldName);
22
+ }
23
+ // requires a resolve function on every field that returns a non-scalar type
24
+ if (requireResolversForNonScalar &&
25
+ !(graphql_1.getNamedType(field.type) instanceof graphql_1.GraphQLScalarType)) {
26
+ expectResolveFunction(field, typeName, fieldName);
27
+ }
28
+ });
29
+ }
30
+ function expectResolveFunction(field, typeName, fieldName) {
31
+ if (!field.resolve) {
32
+ console.warn(
33
+ // tslint:disable-next-line: max-line-length
34
+ "Resolve function missing for \"" + typeName + "." + fieldName + "\". To disable this warning check https://github.com/apollostack/graphql-tools/issues/131");
35
+ return;
36
+ }
37
+ if (typeof field.resolve !== 'function') {
38
+ throw new _1.SchemaError("Resolver \"" + typeName + "." + fieldName + "\" must be a function");
39
+ }
40
+ }
41
+ exports.default = assertResolveFunctionsPresent;
42
+ //# sourceMappingURL=assertResolveFunctionsPresent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertResolveFunctionsPresent.js","sourceRoot":"","sources":["../../src/generate/assertResolveFunctionsPresent.ts"],"names":[],"mappings":";;AAAA,mCAKiB;AAGjB,sBAA8C;AAE9C,uCACE,MAAqB,EACrB,yBAA0D;IAA1D,0CAAA,EAAA,8BAA0D;IAGxD,IAAA,sDAA+B,EAA/B,oDAA+B,EAC/B,2DAAoC,EAApC,yDAAoC,EACpC,2DAAoC,EAApC,yDAAoC,CACR;IAE9B,EAAE,CAAC,CACD,4BAA4B;QAC5B,CAAC,uBAAuB,IAAI,4BAA4B,CAC1D,CAAC,CAAC,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,mFAAmF;YACjF,oFAAoF;YACpF,8DAA8D,CACjE,CAAC;IACJ,CAAC;IAED,eAAY,CAAC,MAAM,EAAE,UAAC,KAAK,EAAE,QAAQ,EAAE,SAAS;QAC9C,iDAAiD;QACjD,EAAE,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACjC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QAED,gEAAgE;QAChE,EAAE,CAAC,CAAC,uBAAuB,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QAED,4EAA4E;QAC5E,EAAE,CAAC,CACD,4BAA4B;YAC5B,CAAC,CAAC,sBAAY,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,2BAAiB,CACzD,CAAC,CAAC,CAAC;YACD,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+BACE,KAA6B,EAC7B,QAAgB,EAChB,SAAiB;IAEjB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI;QACV,4CAA4C;QAC5C,oCAAiC,QAAQ,SAAI,SAAS,8FAA0F,CACjJ,CAAC;QACF,MAAM,CAAC;IACT,CAAC;IACD,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC;QACxC,MAAM,IAAI,cAAW,CACnB,gBAAa,QAAQ,SAAI,SAAS,0BAAsB,CACzD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,kBAAe,6BAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const attachConnectorsToContext: Function;
2
+ export default attachConnectorsToContext;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var graphql_1 = require("graphql");
4
+ var deprecated_decorator_1 = require("deprecated-decorator");
5
+ var _1 = require(".");
6
+ // takes a GraphQL-JS schema and an object of connectors, then attaches
7
+ // the connectors to the context by wrapping each query or mutation resolve
8
+ // function with a function that attaches connectors if they don't exist.
9
+ // attaches connectors only once to make sure they are singletons
10
+ var attachConnectorsToContext = deprecated_decorator_1.deprecated({
11
+ version: '0.7.0',
12
+ url: 'https://github.com/apollostack/graphql-tools/issues/140',
13
+ }, function (schema, connectors) {
14
+ if (!schema || !(schema instanceof graphql_1.GraphQLSchema)) {
15
+ throw new Error('schema must be an instance of GraphQLSchema. ' +
16
+ 'This error could be caused by installing more than one version of GraphQL-JS');
17
+ }
18
+ if (typeof connectors !== 'object') {
19
+ var connectorType = typeof connectors;
20
+ throw new Error("Expected connectors to be of type object, got " + connectorType);
21
+ }
22
+ if (Object.keys(connectors).length === 0) {
23
+ throw new Error('Expected connectors to not be an empty object');
24
+ }
25
+ if (Array.isArray(connectors)) {
26
+ throw new Error('Expected connectors to be of type object, got Array');
27
+ }
28
+ if (schema['_apolloConnectorsAttached']) {
29
+ throw new Error('Connectors already attached to context, cannot attach more than once');
30
+ }
31
+ schema['_apolloConnectorsAttached'] = true;
32
+ var attachconnectorFn = function (root, args, ctx) {
33
+ if (typeof ctx !== 'object') {
34
+ // if in any way possible, we should throw an error when the attachconnectors
35
+ // function is called, not when a query is executed.
36
+ var contextType = typeof ctx;
37
+ throw new Error("Cannot attach connector because context is not an object: " + contextType);
38
+ }
39
+ if (typeof ctx.connectors === 'undefined') {
40
+ ctx.connectors = {};
41
+ }
42
+ Object.keys(connectors).forEach(function (connectorName) {
43
+ var connector = connectors[connectorName];
44
+ if (!!connector.prototype) {
45
+ ctx.connectors[connectorName] = new connector(ctx);
46
+ }
47
+ else {
48
+ throw new Error("Connector must be a function or an class");
49
+ }
50
+ });
51
+ return root;
52
+ };
53
+ _1.addSchemaLevelResolveFunction(schema, attachconnectorFn);
54
+ });
55
+ exports.default = attachConnectorsToContext;
56
+ //# sourceMappingURL=attachConnectorsToContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachConnectorsToContext.js","sourceRoot":"","sources":["../../src/generate/attachConnectorsToContext.ts"],"names":[],"mappings":";;AAAA,mCAA8D;AAE9D,6DAAkD;AAIlD,sBAAkD;AAElD,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,iEAAiE;AACjE,IAAM,yBAAyB,GAAG,iCAAU,CAC1C;IACE,OAAO,EAAE,OAAO;IAChB,GAAG,EAAE,yDAAyD;CAC/D,EACD,UAAS,MAAqB,EAAE,UAAuB;IACrD,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,YAAY,uBAAa,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,+CAA+C;YAC7C,8EAA8E,CACjF,CAAC;IACJ,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC;QACnC,IAAM,aAAa,GAAG,OAAO,UAAU,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,mDAAiD,aAAe,CACjE,CAAC;IACJ,CAAC;IACD,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,EAAE,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC;IAC3C,IAAM,iBAAiB,GAAmC,UACxD,IAAS,EACT,IAA4B,EAC5B,GAAQ;QAER,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC;YAC5B,6EAA6E;YAC7E,oDAAoD;YACpD,IAAM,WAAW,GAAG,OAAO,GAAG,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,+DAA6D,WAAa,CAC3E,CAAC;QACJ,CAAC;QACD,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC;YAC1C,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAA,aAAa;YAC3C,IAAI,SAAS,GAAe,UAAU,CAAC,aAAa,CAAC,CAAC;YACtD,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1B,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,IAAoB,SAAU,CAAC,GAAG,CAAC,CAAC;YACtE,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC,CAAC;IACF,gCAA6B,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC,CACF,CAAC;AAEF,kBAAe,yBAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { GraphQLSchema } from 'graphql';
2
+ import { IDirectiveResolvers } from '../Interfaces';
3
+ declare function attachDirectiveResolvers(schema: GraphQLSchema, directiveResolvers: IDirectiveResolvers<any, any>): void;
4
+ export default attachDirectiveResolvers;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ return function (d, b) {
7
+ extendStatics(d, b);
8
+ function __() { this.constructor = d; }
9
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
10
+ };
11
+ })();
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ var __generator = (this && this.__generator) || function (thisArg, body) {
21
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
22
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
23
+ function verb(n) { return function (v) { return step([n, v]); }; }
24
+ function step(op) {
25
+ if (f) throw new TypeError("Generator is already executing.");
26
+ while (_) try {
27
+ if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
28
+ if (y = 0, t) op = [0, t.value];
29
+ switch (op[0]) {
30
+ case 0: case 1: t = op; break;
31
+ case 4: _.label++; return { value: op[1], done: false };
32
+ case 5: _.label++; y = op[1]; op = [0]; continue;
33
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
34
+ default:
35
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
36
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
37
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
38
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
39
+ if (t[2]) _.ops.pop();
40
+ _.trys.pop(); continue;
41
+ }
42
+ op = body.call(thisArg, _);
43
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
44
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
45
+ }
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ var graphql_1 = require("graphql");
49
+ var schemaVisitor_1 = require("../schemaVisitor");
50
+ function attachDirectiveResolvers(schema, directiveResolvers) {
51
+ if (typeof directiveResolvers !== 'object') {
52
+ throw new Error("Expected directiveResolvers to be of type object, got " + typeof directiveResolvers);
53
+ }
54
+ if (Array.isArray(directiveResolvers)) {
55
+ throw new Error('Expected directiveResolvers to be of type object, got Array');
56
+ }
57
+ var schemaDirectives = Object.create(null);
58
+ Object.keys(directiveResolvers).forEach(function (directiveName) {
59
+ schemaDirectives[directiveName] = /** @class */ (function (_super) {
60
+ __extends(class_1, _super);
61
+ function class_1() {
62
+ return _super !== null && _super.apply(this, arguments) || this;
63
+ }
64
+ class_1.prototype.visitFieldDefinition = function (field) {
65
+ var _this = this;
66
+ var resolver = directiveResolvers[directiveName];
67
+ var originalResolver = field.resolve || graphql_1.defaultFieldResolver;
68
+ var directiveArgs = this.args;
69
+ field.resolve = function () {
70
+ var args = [];
71
+ for (var _i = 0; _i < arguments.length; _i++) {
72
+ args[_i] = arguments[_i];
73
+ }
74
+ var source = args[0] /* original args */, context = args[2], info = args[3];
75
+ return resolver(function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
76
+ return [2 /*return*/, originalResolver.apply(field, args)];
77
+ }); }); }, source, directiveArgs, context, info);
78
+ };
79
+ };
80
+ return class_1;
81
+ }(schemaVisitor_1.SchemaDirectiveVisitor));
82
+ });
83
+ schemaVisitor_1.SchemaDirectiveVisitor.visitSchemaDirectives(schema, schemaDirectives);
84
+ }
85
+ exports.default = attachDirectiveResolvers;
86
+ //# sourceMappingURL=attachDirectiveResolvers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachDirectiveResolvers.js","sourceRoot":"","sources":["../../src/generate/attachDirectiveResolvers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAA4E;AAE5E,kDAA0D;AAE1D,kCACE,MAAqB,EACrB,kBAAiD;IAEjD,EAAE,CAAC,CAAC,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,2DAAyD,OAAO,kBAAoB,CACrF,CAAC;IACJ,CAAC;IAED,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IAED,IAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE7C,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,UAAA,aAAa;QACnD,gBAAgB,CAAC,aAAa,CAAC;YAAiB,2BAAsB;YAApC;;YAgBlC,CAAC;YAfQ,sCAAoB,GAA3B,UAA4B,KAA6B;gBAAzD,iBAcC;gBAbC,IAAM,QAAQ,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACnD,IAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,IAAI,8BAAoB,CAAC;gBAC/D,IAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;gBAChC,KAAK,CAAC,OAAO,GAAG;oBAAC,cAAc;yBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;wBAAd,yBAAc;;oBACtB,IAAA,gBAAM,CAAC,mBAAmB,EAAI,iBAAO,EAAE,cAAI,CAAS;oBAC3D,MAAM,CAAC,QAAQ,CACb;wBAAY,sBAAA,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAA;6BAAA,EAC/C,MAAM,EACN,aAAa,EACb,OAAO,EACP,IAAI,CACL,CAAC;gBACJ,CAAC,CAAC;YACJ,CAAC;YACH,cAAC;QAAD,CAAC,AAhBiC,CAAc,sCAAsB,EAgBrE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,sCAAsB,CAAC,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACzE,CAAC;AAED,kBAAe,wBAAwB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { GraphQLSchema } from 'graphql';
2
+ import { ITypeDefinitions, GraphQLParseOptions } from '../Interfaces';
3
+ declare function buildSchemaFromTypeDefinitions(typeDefinitions: ITypeDefinitions, parseOptions?: GraphQLParseOptions): GraphQLSchema;
4
+ export default buildSchemaFromTypeDefinitions;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var graphql_1 = require("graphql");
4
+ var _1 = require(".");
5
+ function buildSchemaFromTypeDefinitions(typeDefinitions, parseOptions) {
6
+ // TODO: accept only array here, otherwise interfaces get confusing.
7
+ var myDefinitions = typeDefinitions;
8
+ var astDocument;
9
+ if (isDocumentNode(typeDefinitions)) {
10
+ astDocument = typeDefinitions;
11
+ }
12
+ else if (typeof myDefinitions !== 'string') {
13
+ if (!Array.isArray(myDefinitions)) {
14
+ var type = typeof myDefinitions;
15
+ throw new _1.SchemaError("typeDefs must be a string, array or schema AST, got " + type);
16
+ }
17
+ myDefinitions = _1.concatenateTypeDefs(myDefinitions);
18
+ }
19
+ if (typeof myDefinitions === 'string') {
20
+ astDocument = graphql_1.parse(myDefinitions, parseOptions);
21
+ }
22
+ var backcompatOptions = { commentDescriptions: true };
23
+ // TODO fix types https://github.com/apollographql/graphql-tools/issues/542
24
+ var schema = graphql_1.buildASTSchema(astDocument, backcompatOptions);
25
+ var extensionsAst = _1.extractExtensionDefinitions(astDocument);
26
+ if (extensionsAst.definitions.length > 0) {
27
+ // TODO fix types https://github.com/apollographql/graphql-tools/issues/542
28
+ schema = graphql_1.extendSchema(schema, extensionsAst, backcompatOptions);
29
+ }
30
+ return schema;
31
+ }
32
+ function isDocumentNode(typeDefinitions) {
33
+ return typeDefinitions.kind !== undefined;
34
+ }
35
+ exports.default = buildSchemaFromTypeDefinitions;
36
+ //# sourceMappingURL=buildSchemaFromTypeDefinitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildSchemaFromTypeDefinitions.js","sourceRoot":"","sources":["../../src/generate/buildSchemaFromTypeDefinitions.ts"],"names":[],"mappings":";;AAAA,mCAMiB;AAGjB,sBAIW;AAEX,wCACE,eAAiC,EACjC,YAAkC;IAElC,oEAAoE;IACpE,IAAI,aAAa,GAAG,eAAe,CAAC;IACpC,IAAI,WAAyB,CAAC;IAE9B,EAAE,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACpC,WAAW,GAAG,eAAe,CAAC;IAChC,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC;QAC7C,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAClC,IAAM,IAAI,GAAG,OAAO,aAAa,CAAC;YAClC,MAAM,IAAI,cAAW,CACnB,yDAAuD,IAAM,CAC9D,CAAC;QACJ,CAAC;QACD,aAAa,GAAG,sBAAmB,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC;QACtC,WAAW,GAAG,eAAK,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,IAAM,iBAAiB,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;IAExD,2EAA2E;IAC3E,IAAI,MAAM,GAAmB,wBAAsB,CACjD,WAAW,EACX,iBAAiB,CAClB,CAAC;IAEF,IAAM,aAAa,GAAG,8BAA2B,CAAC,WAAW,CAAC,CAAC;IAC/D,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACzC,2EAA2E;QAC3E,MAAM,GAAI,sBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,MAAM,CAAC;AAChB,CAAC;AAED,wBACE,eAAiC;IAEjC,MAAM,CAAgB,eAAgB,CAAC,IAAI,KAAK,SAAS,CAAC;AAC5D,CAAC;AAED,kBAAe,8BAA8B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { GraphQLResolveInfo, GraphQLFieldResolver } from 'graphql';
2
+ declare function chainResolvers(resolvers: GraphQLFieldResolver<any, any>[]): (root: any, args: {
3
+ [argName: string]: any;
4
+ }, ctx: any, info: GraphQLResolveInfo) => any;
5
+ export default chainResolvers;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var graphql_1 = require("graphql");
4
+ function chainResolvers(resolvers) {
5
+ return function (root, args, ctx, info) {
6
+ return resolvers.reduce(function (prev, curResolver) {
7
+ if (curResolver) {
8
+ return curResolver(prev, args, ctx, info);
9
+ }
10
+ return graphql_1.defaultFieldResolver(prev, args, ctx, info);
11
+ }, root);
12
+ };
13
+ }
14
+ exports.default = chainResolvers;
15
+ //# sourceMappingURL=chainResolvers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chainResolvers.js","sourceRoot":"","sources":["../../src/generate/chainResolvers.ts"],"names":[],"mappings":";;AAAA,mCAIiB;AAEjB,wBAAwB,SAA2C;IACjE,MAAM,CAAC,UACL,IAAS,EACT,IAAgC,EAChC,GAAQ,EACR,IAAwB;QAExB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAC,IAAI,EAAE,WAAW;YACxC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBAChB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,CAAC,8BAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC;AACJ,CAAC;AAED,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { GraphQLSchema } from 'graphql';
2
+ declare function checkForResolveTypeResolver(schema: GraphQLSchema, requireResolversForResolveType?: boolean): void;
3
+ export default checkForResolveTypeResolver;