Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate 'getFieldDefFn' arg of 'TypeInfo' and move it last #2921

Merged
merged 1 commit into from Feb 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 3 additions & 4 deletions src/utilities/TypeInfo.d.ts
Expand Up @@ -22,13 +22,12 @@ import {
export class TypeInfo {
constructor(
schema: GraphQLSchema,
// NOTE: this experimental optional second parameter is only needed in order
// to support non-spec-compliant code bases. You should never need to use it.
// It may disappear in the future.
getFieldDefFn?: getFieldDef,
// Initial type may be provided in rare cases to facilitate traversals
// beginning somewhere other than documents.
initialType?: GraphQLType,

// @deprecated will be removed in 17.0.0
getFieldDefFn?: getFieldDef,
);

getType(): Maybe<GraphQLOutputType>;
Expand Down
9 changes: 4 additions & 5 deletions src/utilities/TypeInfo.js
Expand Up @@ -55,13 +55,12 @@ export class TypeInfo {

constructor(
schema: GraphQLSchema,
// NOTE: this experimental optional second parameter is only needed in order
// to support non-spec-compliant code bases. You should never need to use it.
// It may disappear in the future.
getFieldDefFn?: typeof getFieldDef,
// Initial type may be provided in rare cases to facilitate traversals
// beginning somewhere other than documents.
initialType?: GraphQLType,
initialType?: ?GraphQLType,

// @deprecated will be removed in 17.0.0
getFieldDefFn?: typeof getFieldDef,
) {
this._schema = schema;
this._typeStack = [];
Expand Down
4 changes: 2 additions & 2 deletions src/utilities/__tests__/TypeInfo-test.js
Expand Up @@ -312,7 +312,7 @@ describe('visitWithTypeInfo', () => {
const complexInputType = testSchema.getType('ComplexInput');
invariant(complexInputType != null);

const typeInfo = new TypeInfo(testSchema, undefined, complexInputType);
const typeInfo = new TypeInfo(testSchema, complexInputType);

const visited = [];
visit(
Expand Down Expand Up @@ -357,7 +357,7 @@ describe('visitWithTypeInfo', () => {
const humanType = testSchema.getType('Human');
invariant(humanType != null);

const typeInfo = new TypeInfo(testSchema, undefined, humanType);
const typeInfo = new TypeInfo(testSchema, humanType);

const ast = parse('{ name, pets { name } }');
const operationNode = ast.definitions[0];
Expand Down
11 changes: 5 additions & 6 deletions src/validation/__tests__/validation-test.js
Expand Up @@ -53,10 +53,9 @@ describe('Validate: Supports full validation', () => {
]);
});

// NOTE: experimental
it('validates using a custom TypeInfo', () => {
it('Deprecated: validates using a custom TypeInfo', () => {
// This TypeInfo will never return a valid field.
const typeInfo = new TypeInfo(testSchema, () => null);
const typeInfo = new TypeInfo(testSchema, null, () => null);

const doc = parse(`
query {
Expand All @@ -71,7 +70,7 @@ describe('Validate: Supports full validation', () => {
}
`);

const errors = validate(testSchema, doc, undefined, typeInfo);
const errors = validate(testSchema, doc, undefined, undefined, typeInfo);
const errorMessages = errors.map((err) => err.message);

expect(errorMessages).to.deep.equal([
Expand Down Expand Up @@ -130,7 +129,7 @@ describe('Validate: Limit maximum number of validation errors', () => {
const doc = parse(query, { noLocation: true });

function validateDocument(options: {| maxErrors?: number |}) {
return validate(testSchema, doc, undefined, undefined, options);
return validate(testSchema, doc, undefined, options);
}

function invalidFieldError(fieldName: string) {
Expand Down Expand Up @@ -170,7 +169,7 @@ describe('Validate: Limit maximum number of validation errors', () => {
};
}
expect(() =>
validate(testSchema, doc, [customRule], undefined, { maxErrors: 1 }),
validate(testSchema, doc, [customRule], { maxErrors: 1 }),
).to.throw(/^Error from custom rule!$/);
});
});
4 changes: 3 additions & 1 deletion src/validation/validate.d.ts
Expand Up @@ -30,8 +30,10 @@ export function validate(
schema: GraphQLSchema,
documentAST: DocumentNode,
rules?: ReadonlyArray<ValidationRule>,
typeInfo?: TypeInfo,
options?: { maxErrors?: number },

// @deprecate will be removed in 17.0.0
typeInfo?: TypeInfo,
): ReadonlyArray<GraphQLError>;

/**
Expand Down
4 changes: 3 additions & 1 deletion src/validation/validate.js
Expand Up @@ -34,8 +34,10 @@ export function validate(
schema: GraphQLSchema,
documentAST: DocumentNode,
rules: $ReadOnlyArray<ValidationRule> = specifiedRules,
typeInfo: TypeInfo = new TypeInfo(schema),
options: {| maxErrors?: number |} = { maxErrors: undefined },

// @deprecate will be removed in 17.0.0
typeInfo: TypeInfo = new TypeInfo(schema),
): $ReadOnlyArray<GraphQLError> {
devAssert(documentAST, 'Must provide document.');
// If the schema used for validation is invalid, throw an error.
Expand Down