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.
- package/CHANGELOG.md +30 -0
- package/dist/Interfaces.d.ts +10 -3
- package/dist/generate/SchemaError.d.ts +4 -0
- package/dist/generate/SchemaError.js +26 -0
- package/dist/generate/SchemaError.js.map +1 -0
- package/dist/generate/addResolveFunctionsToSchema.d.ts +4 -0
- package/dist/generate/addResolveFunctionsToSchema.js +99 -0
- package/dist/generate/addResolveFunctionsToSchema.js.map +1 -0
- package/dist/generate/addSchemaLevelResolveFunction.d.ts +3 -0
- package/dist/generate/addSchemaLevelResolveFunction.js +62 -0
- package/dist/generate/addSchemaLevelResolveFunction.js.map +1 -0
- package/dist/generate/assertResolveFunctionsPresent.d.ts +4 -0
- package/dist/generate/assertResolveFunctionsPresent.js +42 -0
- package/dist/generate/assertResolveFunctionsPresent.js.map +1 -0
- package/dist/generate/attachConnectorsToContext.d.ts +2 -0
- package/dist/generate/attachConnectorsToContext.js +56 -0
- package/dist/generate/attachConnectorsToContext.js.map +1 -0
- package/dist/generate/attachDirectiveResolvers.d.ts +4 -0
- package/dist/generate/attachDirectiveResolvers.js +86 -0
- package/dist/generate/attachDirectiveResolvers.js.map +1 -0
- package/dist/generate/buildSchemaFromTypeDefinitions.d.ts +4 -0
- package/dist/generate/buildSchemaFromTypeDefinitions.js +36 -0
- package/dist/generate/buildSchemaFromTypeDefinitions.js.map +1 -0
- package/dist/generate/chainResolvers.d.ts +5 -0
- package/dist/generate/chainResolvers.js +15 -0
- package/dist/generate/chainResolvers.js.map +1 -0
- package/dist/generate/checkForResolveTypeResolver.d.ts +3 -0
- package/dist/generate/checkForResolveTypeResolver.js +28 -0
- package/dist/generate/checkForResolveTypeResolver.js.map +1 -0
- package/dist/generate/concatenateTypeDefs.d.ts +3 -0
- package/dist/generate/concatenateTypeDefs.js +35 -0
- package/dist/generate/concatenateTypeDefs.js.map +1 -0
- package/dist/generate/decorateWithLogger.d.ts +4 -0
- package/dist/generate/decorateWithLogger.js +49 -0
- package/dist/generate/decorateWithLogger.js.map +1 -0
- package/dist/generate/extendResolversFromInterfaces.d.ts +4 -0
- package/dist/generate/extendResolversFromInterfaces.js +33 -0
- package/dist/generate/extendResolversFromInterfaces.js.map +1 -0
- package/dist/generate/extractExtensionDefinitions.d.ts +4 -0
- package/dist/generate/extractExtensionDefinitions.js +15 -0
- package/dist/generate/extractExtensionDefinitions.js.map +1 -0
- package/dist/generate/forEachField.d.ts +4 -0
- package/dist/generate/forEachField.js +20 -0
- package/dist/generate/forEachField.js.map +1 -0
- package/dist/generate/index.d.ts +14 -0
- package/dist/generate/index.js +31 -0
- package/dist/generate/index.js.map +1 -0
- package/dist/makeExecutableSchema.js +18 -25
- package/dist/makeExecutableSchema.js.map +1 -1
- package/dist/mock.js +81 -87
- package/dist/mock.js.map +1 -1
- package/dist/schemaGenerator.d.ts +24 -0
- package/dist/schemaGenerator.js +610 -0
- package/dist/schemaGenerator.js.map +1 -0
- package/dist/schemaVisitor.d.ts +10 -10
- package/dist/schemaVisitor.js.map +1 -1
- package/dist/stitching/delegateToSchema.js +35 -7
- package/dist/stitching/delegateToSchema.js.map +1 -1
- package/dist/stitching/linkToFetcher.js.map +1 -1
- package/dist/stitching/mapAsyncIterator.d.ts +5 -0
- package/dist/stitching/mapAsyncIterator.js +60 -0
- package/dist/stitching/mapAsyncIterator.js.map +1 -0
- package/dist/stitching/mergeSchemas.d.ts +2 -1
- package/dist/stitching/mergeSchemas.js +6 -7
- package/dist/stitching/mergeSchemas.js.map +1 -1
- package/dist/stitching/schemaRecreation.js +5 -1
- package/dist/stitching/schemaRecreation.js.map +1 -1
- package/dist/stitching/typeFromAST.js +9 -105
- package/dist/stitching/typeFromAST.js.map +1 -1
- package/dist/transforms/ExpandAbstractTypes.js +1 -1
- package/dist/transforms/ExpandAbstractTypes.js.map +1 -1
- package/dist/transforms/FilterToSchema.js +20 -2
- package/dist/transforms/FilterToSchema.js.map +1 -1
- package/dist/transforms/ReplaceFieldWithFragment.js +76 -3
- package/dist/transforms/ReplaceFieldWithFragment.js.map +1 -1
- package/dist/transforms/WrapQuery.d.ts +1 -1
- package/dist/transforms/WrapQuery.js +11 -6
- package/dist/transforms/WrapQuery.js.map +1 -1
- 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.
|
package/dist/Interfaces.d.ts
CHANGED
|
@@ -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:
|
|
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,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,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,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,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"}
|