Skip to content

Commit

Permalink
fixup! feat: update apollo and graphql libs
Browse files Browse the repository at this point in the history
  • Loading branch information
felipebergamin committed Aug 30, 2023
1 parent 9036e41 commit 5c7a7fb
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 97 deletions.
9 changes: 1 addition & 8 deletions lib/EasyDirectiveVisitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -317,37 +317,30 @@ abstract class EasyDirectiveVisitor<
public visitArgumentDefinition(
argument: GraphQLArgument,
{ field }: { field: GraphQLField<unknown, unknown, any> },
directiveArgs: TArgs,
): void {
throw new Error('Method not implemented.');
}

public visitInputObject(
object: GraphQLInputObjectType,
directiveArgs: TArgs,
): void {
public visitInputObject(object: GraphQLInputObjectType): void {
throw new Error('Method not implemented.');
}

public visitInputFieldDefinition(
field: GraphQLInputField,
{ objectType }: { objectType: GraphQLInputObjectType },
directiveArgs: TArgs,
): void {
throw new Error('Method not implemented.');
}

public visitFieldDefinition(
field: GraphQLFieldConfig<unknown, TContext, TArgs>,
{ objectType }: { objectType: GraphQLObjectType<any, any> },
directiveArgs: TArgs,
): void {
throw new Error('Method not implemented.');
}

public visitObject(
object: GraphQLInterfaceType | GraphQLObjectType<any, any>,
directiveArgs: TArgs,
): void {
throw new Error('Method not implemented.');
}
Expand Down
29 changes: 8 additions & 21 deletions lib/ValidateDirectiveVisitor.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,16 +124,13 @@ type ValidatedInputErrorOutput {
describe('Throw policy', (): void => {
class TestDirective extends ValidateDirectiveVisitorNonTyped {
// eslint-disable-next-line class-methods-use-this
public getValidationForArgs(
_: unknown,
args: TestDirectiveArgs,
): ValidateFunction {
public getValidationForArgs(): ValidateFunction {
const validate = (): void => {
throw new ValidationError('Validation error');
};
Object.defineProperty(validate, 'validateProperties', {
value: {
args,
args: this.args as TestDirectiveArgs,
directive: 'testThrowPolicyValidate',
},
writable: false,
Expand Down Expand Up @@ -271,11 +268,8 @@ type ValidatedInputErrorOutput {
};

// eslint-disable-next-line class-methods-use-this
public getValidationForArgs(
_: unknown,
args: TestDirectiveArgs,
): ValidateFunction | undefined {
return args.validate ? mockValidate : undefined;
public getValidationForArgs(): ValidateFunction | undefined {
return this.args.validate ? mockValidate : undefined;
}
}

Expand Down Expand Up @@ -1831,11 +1825,8 @@ ${validationDirectionEnumTypeDefs(capitalizedName)}
false;

// eslint-disable-next-line class-methods-use-this
public getValidationForArgs(
_: unknown,
args: TestDirectiveArgs,
): ValidateFunction | undefined {
return args.validate ? mockValidate : undefined;
public getValidationForArgs(): ValidateFunction | undefined {
return this.args.validate ? mockValidate : undefined;
}
}

Expand Down Expand Up @@ -1970,12 +1961,8 @@ ${validationDirectionEnumTypeDefs(capitalizedName)}
},
};

// eslint-disable-next-line class-methods-use-this
public getValidationForArgs(
_: unknown,
args: TestDirectiveArgs,
): ValidateFunction | undefined {
return args.validate ? mockValidate : undefined;
public getValidationForArgs(): ValidateFunction | undefined {
return this.args.validate ? mockValidate : undefined;
}
}

Expand Down
54 changes: 15 additions & 39 deletions lib/ValidateDirectiveVisitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -913,8 +913,6 @@ abstract class ValidateDirectiveVisitor<
*/
public abstract getValidationForArgs(
location: DirectiveLocation,
args: TArgs,
path?: string[],
): ValidateFunction<TContext> | undefined;

// Arguments directly annotated with the directive, such as
Expand All @@ -926,16 +924,14 @@ abstract class ValidateDirectiveVisitor<
public visitArgumentDefinition(
argument: GraphQLArgument,
{ field }: { field: GraphQLField<unknown, TContext> },
directiveArgs: TArgs,
): void {
const validate = this.getValidationForArgs(
DirectiveLocation.ARGUMENT_DEFINITION,
directiveArgs,
);
if (!validate) {
return;
}
const { policy } = directiveArgs;
const { policy } = this.args;
wrapFieldResolverValidateArgument(
field,
argument,
Expand Down Expand Up @@ -963,17 +959,11 @@ abstract class ValidateDirectiveVisitor<
//
// This is done with `addValidationResolversToSchema()`.

public visitInputObject(
object: GraphQLInputObjectType,
directiveArgs: TArgs,
): void {
const validate = this.getValidationForArgs(
DirectiveLocation.INPUT_OBJECT,
directiveArgs,
);
public visitInputObject(object: GraphQLInputObjectType): void {
const validate = this.getValidationForArgs(DirectiveLocation.INPUT_OBJECT);
// istanbul ignore if (shouldn't reach, visitInputObject() is called only if there is a directive)
if (!validate) return;
const { policy } = directiveArgs;
const { policy } = this.args;

Object.values(object.getFields()).forEach(field => {
addContainerEntryValidation(object, field, validate, policy);
Expand All @@ -987,14 +977,12 @@ abstract class ValidateDirectiveVisitor<
}: {
objectType: GraphQLInputObjectType;
},
directiveArgs: TArgs,
): void {
const validate = this.getValidationForArgs(
DirectiveLocation.INPUT_FIELD_DEFINITION,
directiveArgs,
);
if (!validate) return;
const { policy } = directiveArgs;
const { policy } = this.args;
addContainerEntryValidation(objectType, field, validate, policy);
}

Expand All @@ -1011,11 +999,9 @@ abstract class ValidateDirectiveVisitor<
}: {
objectType: GraphQLObjectType;
},
directiveArgs: TArgs,
): void {
const validate = this.getValidationForArgs(
DirectiveLocation.FIELD_DEFINITION,
directiveArgs,
);
if (!validate) return;
if (this.applyValidationToOutputTypesAfterOriginalResolver) {
Expand All @@ -1033,14 +1019,8 @@ abstract class ValidateDirectiveVisitor<
}
}

public visitObject(
object: GraphQLObjectType | GraphQLInterfaceType,
directiveArgs: TArgs,
): void {
const validate = this.getValidationForArgs(
DirectiveLocation.OBJECT,
directiveArgs,
);
public visitObject(object: GraphQLObjectType | GraphQLInterfaceType): void {
const validate = this.getValidationForArgs(DirectiveLocation.OBJECT);
if (!validate) return;
Object.values(object.getFields()).forEach(field => {
if (this.applyValidationToOutputTypesAfterOriginalResolver) {
Expand Down Expand Up @@ -1068,17 +1048,15 @@ abstract class ValidateDirectiveVisitor<
fields.forEach(field => {
const [directive] = getDirective(schema, field, directiveName) ?? [];
if (directive) {
this.visitFieldDefinition(
field,
{ objectType: query },
directive as TArgs,
);
this.args = directive as TArgs;
this.visitFieldDefinition(field, { objectType: query });
}

field.args.forEach(arg => {
const [directiveOnArg] = getDirective(schema, arg, directiveName) ?? [];
if (directiveOnArg) {
this.visitArgumentDefinition(arg, { field }, directiveOnArg as TArgs);
this.args = directiveOnArg as TArgs;
this.visitArgumentDefinition(arg, { field });
}

const finalType = getFinalType(arg.type);
Expand Down Expand Up @@ -1111,19 +1089,17 @@ abstract class ValidateDirectiveVisitor<
const [directive] = getDirective(schema, inputObject, directiveName) ?? [];

if (directive) {
this.visitInputObject(inputObject, directive as TArgs);
this.args = directive as TArgs;
this.visitInputObject(inputObject);
}

Object.values(inputObject.getFields()).forEach(inputField => {
const [directiveOnInputField] =
getDirective(schema, inputField, directiveName) ?? [];

if (directiveOnInputField) {
this.visitInputFieldDefinition(
inputField,
{ objectType: inputObject },
directiveOnInputField as TArgs,
);
this.args = directiveOnInputField as TArgs;
this.visitInputFieldDefinition(inputField, { objectType: inputObject });
}

const inputFieldType = getFinalType(inputField.type);
Expand Down
16 changes: 8 additions & 8 deletions lib/createSchemaMapperForVisitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ export const createSchemaMapperForVisitor =
[MapperKind.OBJECT_TYPE](type, schema) {
const [directive] = getDirective(schema, type, directiveName) ?? [];
if (!directive) return type;
visitor.visitObject(type, directive);
// eslint-disable-next-line no-param-reassign
visitor.args = directive;
visitor.visitObject(type);
return type;
},
[MapperKind.OBJECT_FIELD](fieldConfig, _fieldName, typeName, schema) {
Expand All @@ -29,15 +31,13 @@ export const createSchemaMapperForVisitor =
const [directive] =
getDirective(schema, fieldConfig, directiveName) ?? [];
if (!directive) return fieldConfig;
// eslint-disable-next-line no-param-reassign
visitor.args = directive;
const objectType = schema.getType(typeName);
if (isObjectType(objectType)) {
visitor.visitFieldDefinition(
fieldConfig,
{
objectType,
},
directive,
);
visitor.visitFieldDefinition(fieldConfig, {
objectType,
});
}
return fieldConfig;
},
Expand Down
17 changes: 4 additions & 13 deletions lib/createValidateDirectiveVisitor.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import type { DirectiveLocation } from 'graphql';

import type {
ValidateFunction,
ValidationDirectiveArgs,
Expand All @@ -24,11 +22,7 @@ export type CreateValidate<TArgs extends object> = (
export class ConcreteValidateDirectiveVisitor extends ValidateDirectiveVisitorNonTyped {
// istanbul ignore next (this shouldn't be used)
// eslint-disable-next-line class-methods-use-this
public getValidationForArgs(
_location: DirectiveLocation,
_args: unknown,
_path?: string[],
): ValidateFunction | undefined {
public getValidationForArgs(): ValidateFunction | undefined {
throw new Error(
'ValidateDirectiveVisitor.getValidationForArgs() must be implemented',
);
Expand Down Expand Up @@ -65,18 +59,15 @@ const createValidateDirectiveVisitor = <TArgs extends ValidationDirectiveArgs>({
public static readonly defaultName = defaultName;

// eslint-disable-next-line class-methods-use-this
public getValidationForArgs(
_: unknown,
args: TArgs,
): ValidateFunction | undefined {
const validate = createValidate(args);
public getValidationForArgs(): ValidateFunction | undefined {
const validate = createValidate(this.args);
if (
typeof validate === 'function' &&
!('validateProperties' in validate)
) {
Object.defineProperty(validate, 'validateProperties', {
value: {
args: args as ValidationDirectiveArgs,
args: this.args,
directive: defaultName,
},
writable: false,
Expand Down
10 changes: 4 additions & 6 deletions lib/foreignNodeId.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,10 @@ export default class ForeignNodeIdDirective<
_ extends ForeignNodeIdContext<IdType>,
> extends ValidateDirectiveVisitorNonTyped {
// eslint-disable-next-line class-methods-use-this
public getValidationForArgs(
___: unknown,
args: Args,
_path: string[],
): ValidateFunction<ForeignNodeIdContext<IdType>> | undefined {
const { typename } = args;
public getValidationForArgs():
| ValidateFunction<ForeignNodeIdContext<IdType>>
| undefined {
const { typename } = this.args;
const wrongUsageErrorMessage = `foreignNodeId directive only works on strings`;
const wrongTypeNameErrorMessage = `Converted ID typename does not match. Expected: ${typename}`;
const couldNotDecodeErrorMessage = `Could not decode ID to ${typename}`;
Expand Down
4 changes: 2 additions & 2 deletions lib/hasPermissions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,9 +219,9 @@ export class HasPermissionsDirectiveVisitor<

public getValidationForArgs(
location: DirectiveLocation,
args: TArgs,
// args: TArgs,
): ValidateFunction<TContext> | undefined {
const { permissions, policy } = args;
const { permissions, policy } = this.args;
const cacheKey = JSON.stringify(Array.from(permissions).sort());
const isUsedOnInputOrArgument =
location === DirectiveLocation.INPUT_FIELD_DEFINITION ||
Expand Down

0 comments on commit 5c7a7fb

Please sign in to comment.