From cad0085e799a135a066ade7ede54963e146d76e8 Mon Sep 17 00:00:00 2001 From: Justin Spears <133807408+justin-equi@users.noreply.github.com> Date: Sat, 2 Dec 2023 20:29:48 +0000 Subject: [PATCH] use hasOwnProperty function rather than the object --- packages/graphql-modules/src/di/forward-ref.ts | 3 ++- packages/graphql-modules/src/module/resolvers.ts | 12 ++++++------ packages/graphql-modules/src/shared/middleware.ts | 6 +++--- packages/graphql-modules/src/shared/utils.ts | 4 ++++ packages/graphql-modules/src/testing/test-module.ts | 3 ++- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/packages/graphql-modules/src/di/forward-ref.ts b/packages/graphql-modules/src/di/forward-ref.ts index 954002973b..2e2f0ac589 100644 --- a/packages/graphql-modules/src/di/forward-ref.ts +++ b/packages/graphql-modules/src/di/forward-ref.ts @@ -1,5 +1,6 @@ import { stringify } from './utils'; import { Type } from './providers'; +import { hasOwnProperty } from '../shared/utils'; export type ForwardRefFn = () => T; @@ -19,7 +20,7 @@ export function forwardRef(forwardRefFn: ForwardRefFn) { export function resolveForwardRef(type: any): any { if ( typeof type === 'function' && - type.hasOwnProperty(forwardRefSymbol) && + hasOwnProperty(type, forwardRefSymbol) && type[forwardRefSymbol] === forwardRef ) { return (type as ForwardRefFn)(); diff --git a/packages/graphql-modules/src/module/resolvers.ts b/packages/graphql-modules/src/module/resolvers.ts index f74bebcc99..b4eb10ab3e 100644 --- a/packages/graphql-modules/src/module/resolvers.ts +++ b/packages/graphql-modules/src/module/resolvers.ts @@ -16,7 +16,7 @@ import { ResolverDuplicatedError, ResolverInvalidError, } from './../shared/errors'; -import { isNil, isDefined, isPrimitive } from '../shared/utils'; +import { isNil, isDefined, isPrimitive, hasOwnProperty } from '../shared/utils'; import { createMiddleware, mergeMiddlewareMaps, @@ -54,7 +54,7 @@ export function createResolvers( // Wrap resolvers for (const typeName in resolvers) { - if (resolvers.hasOwnProperty(typeName)) { + if (hasOwnProperty(resolvers, typeName)) { const obj = resolvers[typeName]; if (isScalarResolver(obj)) { @@ -63,7 +63,7 @@ export function createResolvers( continue; } else if (obj && typeof obj === 'object') { for (const fieldName in obj) { - if (obj.hasOwnProperty(fieldName)) { + if (hasOwnProperty(obj, fieldName)) { ensure.type(typeName, fieldName); const path = [typeName, fieldName]; @@ -215,7 +215,7 @@ function mergeResolvers(config: ModuleConfig): Single { for (const currentResolvers of resolvers) { for (const typeName in currentResolvers) { - if (currentResolvers.hasOwnProperty(typeName)) { + if (hasOwnProperty(currentResolvers, typeName)) { const value = currentResolvers[typeName]; if (isNil(value)) { @@ -255,7 +255,7 @@ function addObject({ } for (const fieldName in fields) { - if (fields.hasOwnProperty(fieldName)) { + if (hasOwnProperty(fields, fieldName)) { const resolver = fields[fieldName]; if (isResolveFn(resolver)) { @@ -344,7 +344,7 @@ function addEnum({ } for (const key in resolver) { - if (resolver.hasOwnProperty(key)) { + if (hasOwnProperty(resolver, key)) { const value = resolver[key]; if (container[typeName][key]) { diff --git a/packages/graphql-modules/src/shared/middleware.ts b/packages/graphql-modules/src/shared/middleware.ts index 2c29a78212..2fc4d782bc 100644 --- a/packages/graphql-modules/src/shared/middleware.ts +++ b/packages/graphql-modules/src/shared/middleware.ts @@ -1,7 +1,7 @@ import { GraphQLResolveInfo } from 'graphql'; import { mergeDeepWith } from 'ramda'; import { ModuleMetadata } from './../module/metadata'; -import { isDefined } from './utils'; +import { hasOwnProperty, isDefined } from './utils'; import { ExtraMiddlewareError, useLocation } from './errors'; export type Next = () => Promise; @@ -125,7 +125,7 @@ export function validateMiddlewareMap( const exists = checkExistence(metadata); for (const typeName in middlewareMap.types) { - if (middlewareMap.types.hasOwnProperty(typeName)) { + if (hasOwnProperty(middlewareMap.types,typeName)) { const typeMiddlewareMap = middlewareMap[typeName]; if (!exists.type(typeName)) { @@ -136,7 +136,7 @@ export function validateMiddlewareMap( } for (const fieldName in typeMiddlewareMap[typeName]) { - if (typeMiddlewareMap[typeName].hasOwnProperty(fieldName)) { + if (hasOwnProperty(typeMiddlewareMap[typeName],fieldName)) { if (!exists.field(typeName, fieldName)) { throw new ExtraMiddlewareError( `Cannot apply a middleware to non existing "${typeName}.${fieldName}" type.field`, diff --git a/packages/graphql-modules/src/shared/utils.ts b/packages/graphql-modules/src/shared/utils.ts index 3c63175788..f3853b9cd5 100644 --- a/packages/graphql-modules/src/shared/utils.ts +++ b/packages/graphql-modules/src/shared/utils.ts @@ -1,5 +1,9 @@ import { GraphQLSchema } from 'graphql'; +export function hasOwnProperty(v:unknown, key:PropertyKey){ + return Object.prototype.hasOwnProperty.call(v, key); +} + export function flatten(arr: T[]): T extends (infer A)[] ? A[] : T[] { return Array.prototype.concat(...arr) as any; } diff --git a/packages/graphql-modules/src/testing/test-module.ts b/packages/graphql-modules/src/testing/test-module.ts index b80d97e511..28c343198c 100644 --- a/packages/graphql-modules/src/testing/test-module.ts +++ b/packages/graphql-modules/src/testing/test-module.ts @@ -25,6 +25,7 @@ import { createApplication } from '../application/application'; import { ApplicationConfig } from '../application/types'; import { MockedModule, Module, ModuleConfig } from '../module/types'; import { createModule } from '../module/module'; +import { hasOwnProperty } from '../shared/utils'; type TestModuleConfig = { replaceExtensions?: boolean; @@ -429,7 +430,7 @@ function hasPropValue, K extends string>( obj: T, prop: K ): obj is T { - return Object.prototype.hasOwnProperty.call(obj, prop) && obj[prop]; + return hasOwnProperty(obj, prop) && obj[prop]; } function isRootType(typeName: string) {