graphql-tools-fork
Advanced tools
Comparing version 6.2.0 to 6.3.0-alpha.0
@@ -5,2 +5,11 @@ # Changelog | ||
## [6.3.0-alpha.0](https://github.com/yaacovCR/graphql-tools-fork/compare/v6.2.0...v6.3.0-alpha.0) (2019-08-07) | ||
### Features | ||
* **transforms:** map object fields to new structures ([6423037](https://github.com/yaacovCR/graphql-tools-fork/commit/6423037)) | ||
## [6.2.0](https://github.com/yaacovCR/graphql-tools-fork/compare/v6.1.6...v6.2.0) (2019-07-31) | ||
@@ -7,0 +16,0 @@ |
@@ -6,3 +6,3 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||
var _2 = require("."); | ||
var AddEnumAndScalarResolvers_1 = require("../transforms/AddEnumAndScalarResolvers"); | ||
var index_1 = require("../transforms/index"); | ||
function addResolveFunctionsToSchema(options, legacyInputResolvers, legacyInputValidationOptions) { | ||
@@ -17,3 +17,3 @@ if (options instanceof graphql_1.GraphQLSchema) { | ||
} | ||
var schema = options.schema, inputResolvers = options.resolvers, _a = options.resolverValidationOptions, resolverValidationOptions = _a === void 0 ? {} : _a, _b = options.inheritResolversFromInterfaces, inheritResolversFromInterfaces = _b === void 0 ? false : _b; | ||
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; | ||
var _c = resolverValidationOptions.allowResolversNotInSchema, allowResolversNotInSchema = _c === void 0 ? false : _c, requireResolversForResolveType = resolverValidationOptions.requireResolversForResolveType; | ||
@@ -102,8 +102,9 @@ var resolvers = inheritResolversFromInterfaces | ||
_2.checkForResolveTypeResolver(schema, requireResolversForResolveType); | ||
// If there are any enum resolver functions (that are used to return | ||
// internal enum values), create a new schema that includes enums with the | ||
// new internal facing values. | ||
// also parse all defaultValues in all input fields to use internal values for enums/scalars | ||
var updatedSchema = transforms_1.applySchemaTransforms(schema, [ | ||
new AddEnumAndScalarResolvers_1.default(enumValueMap, scalarTypeMap), | ||
// If there are any enum resolver functions (that are used to return | ||
// internal enum values), create a new schema that includes enums with the | ||
// new internal facing values. | ||
// also parse all defaultValues in all input fields to use internal values for enums/scalars | ||
new index_1.AddEnumAndScalarResolvers(enumValueMap, scalarTypeMap), | ||
new index_1.AddDefaultResolver(defaultFieldResolver), | ||
]); | ||
@@ -110,0 +111,0 @@ return updatedSchema; |
@@ -15,2 +15,3 @@ import { GraphQLSchema, GraphQLField, ExecutionResult, GraphQLType, GraphQLNamedType, GraphQLFieldResolver, GraphQLResolveInfo, GraphQLIsTypeOfFn, GraphQLTypeResolver, GraphQLScalarType, DocumentNode } from 'graphql'; | ||
resolvers: IResolvers; | ||
defaultFieldResolver?: IFieldResolver<any, any>; | ||
resolverValidationOptions?: IResolverValidationOptions; | ||
@@ -17,0 +18,0 @@ inheritResolversFromInterfaces?: boolean; |
import { GraphQLFieldResolver } from 'graphql'; | ||
import { IFieldResolver } from '../Interfaces'; | ||
declare const defaultMergedResolver: GraphQLFieldResolver<any, any>; | ||
export default defaultMergedResolver; | ||
export declare function setMergeFieldName(originalResolver: IFieldResolver<any, any>, fieldName: string): IFieldResolver<any, any>; |
@@ -0,2 +1,14 @@ | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var graphql_1 = require("graphql"); | ||
var errors_1 = require("./errors"); | ||
@@ -18,6 +30,3 @@ var checkResultAndHandleErrors_1 = require("./checkResultAndHandleErrors"); | ||
if (!Array.isArray(errors)) { | ||
if (typeof parent[info.fieldName] === 'function') { | ||
return parent[info.fieldName](parent, args, context, info); | ||
} | ||
return parent[info.fieldName]; | ||
return graphql_1.defaultFieldResolver(parent, args, context, info); | ||
} | ||
@@ -27,2 +36,8 @@ return checkResultAndHandleErrors_1.handleResult(info, parent[responseKey], errors); | ||
exports.default = defaultMergedResolver; | ||
function setMergeFieldName(originalResolver, fieldName) { | ||
return function (parent, args, context, info) { | ||
return originalResolver(parent, args, context, __assign({}, info, { fieldName: fieldName })); | ||
}; | ||
} | ||
exports.setMergeFieldName = setMergeFieldName; | ||
//# sourceMappingURL=defaultMergedResolver.js.map |
@@ -6,3 +6,3 @@ import makeRemoteExecutableSchema, { createResolver as defaultCreateRemoteResolver } from './makeRemoteExecutableSchema'; | ||
import delegateToRemoteSchema from './delegateToRemoteSchema'; | ||
import defaultMergedResolver from './defaultMergedResolver'; | ||
export { makeRemoteExecutableSchema, introspectSchema, mergeSchemas, delegateToSchema, delegateToRemoteSchema, defaultMergedResolver, defaultCreateRemoteResolver }; | ||
import defaultMergedResolver, { setMergeFieldName } from './defaultMergedResolver'; | ||
export { makeRemoteExecutableSchema, introspectSchema, mergeSchemas, delegateToSchema, delegateToRemoteSchema, defaultMergedResolver, setMergeFieldName, defaultCreateRemoteResolver }; |
@@ -15,2 +15,3 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.defaultMergedResolver = defaultMergedResolver_1.default; | ||
exports.setMergeFieldName = defaultMergedResolver_1.setMergeFieldName; | ||
//# sourceMappingURL=index.js.map |
@@ -5,5 +5,7 @@ import { Transform } from './transforms'; | ||
export { default as transformSchema } from './transformSchema'; | ||
export { default as AddEnumAndScalarResolvers } from './AddEnumAndScalarResolvers'; | ||
export { default as AddDefaultResolver } from './AddDefaultResolver'; | ||
export { default as AddArgumentsAsVariables } from './AddArgumentsAsVariables'; | ||
export { default as CheckResultAndHandleErrors, } from './CheckResultAndHandleErrors'; | ||
export { default as ReplaceFieldWithFragment, } from './ReplaceFieldWithFragment'; | ||
export { default as CheckResultAndHandleErrors } from './CheckResultAndHandleErrors'; | ||
export { default as ReplaceFieldWithFragment } from './ReplaceFieldWithFragment'; | ||
export { default as AddTypenameToAbstract } from './AddTypenameToAbstract'; | ||
@@ -23,1 +25,3 @@ export { default as FilterToSchema } from './FilterToSchema'; | ||
export { default as TransformQuery } from './TransformQuery'; | ||
export { default as ExtendSchema } from './ExtendSchema'; | ||
export { default as TransformObjectField } from './TransformObjectField'; |
@@ -6,2 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.transformSchema = transformSchema_1.default; | ||
var AddEnumAndScalarResolvers_1 = require("./AddEnumAndScalarResolvers"); | ||
exports.AddEnumAndScalarResolvers = AddEnumAndScalarResolvers_1.default; | ||
var AddDefaultResolver_1 = require("./AddDefaultResolver"); | ||
exports.AddDefaultResolver = AddDefaultResolver_1.default; | ||
var AddArgumentsAsVariables_1 = require("./AddArgumentsAsVariables"); | ||
@@ -41,2 +45,6 @@ exports.AddArgumentsAsVariables = AddArgumentsAsVariables_1.default; | ||
exports.TransformQuery = TransformQuery_1.default; | ||
var ExtendSchema_1 = require("./ExtendSchema"); | ||
exports.ExtendSchema = ExtendSchema_1.default; | ||
var TransformObjectField_1 = require("./TransformObjectField"); | ||
exports.TransformObjectField = TransformObjectField_1.default; | ||
//# sourceMappingURL=index.js.map |
@@ -1,2 +0,2 @@ | ||
import { GraphQLSchema, GraphQLField, GraphQLFieldConfig, FieldNode } from 'graphql'; | ||
import { GraphQLSchema, GraphQLField, GraphQLFieldConfig, FieldNode, SelectionNode } from 'graphql'; | ||
import { Request } from '../Interfaces'; | ||
@@ -8,3 +8,3 @@ import { Transform } from './transforms'; | ||
} | null | undefined; | ||
export declare type FieldNodeTransformer = (typeName: string, fieldName: string, fieldNode: FieldNode) => FieldNode; | ||
export declare type FieldNodeTransformer = (typeName: string, fieldName: string, fieldNode: FieldNode) => SelectionNode | Array<SelectionNode>; | ||
export default class TransformObjectFields implements Transform { | ||
@@ -19,3 +19,3 @@ private objectFieldTransformer; | ||
private transformFields; | ||
private reverseMapping; | ||
private transformDocument; | ||
} |
@@ -37,3 +37,3 @@ var __assign = (this && this.__assign) || function () { | ||
TransformObjectFields.prototype.transformRequest = function (originalRequest) { | ||
var document = this.reverseMapping(originalRequest.document, this.mapping, this.fieldNodeTransformer); | ||
var document = this.transformDocument(originalRequest.document, this.mapping, this.fieldNodeTransformer); | ||
return __assign({}, originalRequest, { document: document }); | ||
@@ -87,22 +87,36 @@ }; | ||
}; | ||
TransformObjectFields.prototype.reverseMapping = function (document, mapping, fieldNodeTransformer) { | ||
TransformObjectFields.prototype.transformDocument = function (document, mapping, fieldNodeTransformer) { | ||
var _a; | ||
var typeInfo = new graphql_1.TypeInfo(this.schema); | ||
var newDocument = graphql_1.visit(document, graphql_1.visitWithTypeInfo(typeInfo, (_a = {}, | ||
_a[graphql_1.Kind.FIELD] = function (node) { | ||
_a[graphql_1.Kind.SELECTION_SET] = function (node) { | ||
var parentType = typeInfo.getParentType(); | ||
if (parentType) { | ||
var parentTypeName = parentType.name; | ||
var newName = node.name.value; | ||
var transformedNode = fieldNodeTransformer | ||
? fieldNodeTransformer(parentTypeName, newName, node) | ||
: node; | ||
var transformedName = transformedNode.name.value; | ||
if (mapping[parentTypeName]) { | ||
var originalName = mapping[parentTypeName][newName]; | ||
if (originalName) { | ||
transformedName = originalName; | ||
var parentTypeName_1 = parentType.name; | ||
var newSelections_1 = []; | ||
node.selections.forEach(function (selection) { | ||
if (selection.kind === graphql_1.Kind.FIELD) { | ||
var newName = selection.name.value; | ||
var transformedSelection = fieldNodeTransformer | ||
? fieldNodeTransformer(parentTypeName_1, newName, selection) | ||
: selection; | ||
if (Array.isArray(transformedSelection)) { | ||
newSelections_1 = newSelections_1.concat(transformedSelection); | ||
} | ||
else if (transformedSelection.kind === graphql_1.Kind.FIELD) { | ||
var originalName = void 0; | ||
if (mapping[parentTypeName_1]) { | ||
originalName = mapping[parentTypeName_1][newName]; | ||
} | ||
newSelections_1.push(__assign({}, transformedSelection, { name: __assign({}, transformedSelection.name, { value: originalName || transformedSelection.name.value }) })); | ||
} | ||
else { | ||
newSelections_1.push(selection); | ||
} | ||
} | ||
} | ||
return __assign({}, transformedNode, { name: __assign({}, node.name, { value: transformedName }) }); | ||
else { | ||
newSelections_1.push(selection); | ||
} | ||
}); | ||
return __assign({}, node, { selections: newSelections_1 }); | ||
} | ||
@@ -109,0 +123,0 @@ }, |
{ | ||
"name": "graphql-tools-fork", | ||
"version": "6.2.0", | ||
"version": "6.3.0-alpha.0", | ||
"description": "Forked graphql-tools, still more useful tools to create and manipulate GraphQL schemas.", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
505513
215
6311
0
1