diff --git a/src/service/worker/runtime/graphql/schema/schemaDirectives/Public.ts b/src/service/worker/runtime/graphql/schema/schemaDirectives/Public.ts new file mode 100644 index 000000000..abb0a9333 --- /dev/null +++ b/src/service/worker/runtime/graphql/schema/schemaDirectives/Public.ts @@ -0,0 +1,14 @@ +import { defaultFieldResolver, GraphQLField } from "graphql"; +import { SchemaDirectiveVisitor } from "graphql-tools" + +export class Public extends SchemaDirectiveVisitor { + visitFieldDefinition(field: GraphQLField) { + const { resolve = defaultFieldResolver } = field; + + field.resolve = async function (...args) { + return resolve.apply(this, args); + }; + } +} + +export const publicDirectiveTypeDefs = `directive @public on FIELD_DEFINITION` diff --git a/src/service/worker/runtime/graphql/schema/schemaDirectives/index.ts b/src/service/worker/runtime/graphql/schema/schemaDirectives/index.ts index 4b5ce546f..e10b230c3 100644 --- a/src/service/worker/runtime/graphql/schema/schemaDirectives/index.ts +++ b/src/service/worker/runtime/graphql/schema/schemaDirectives/index.ts @@ -2,6 +2,7 @@ import { Auth, authDirectiveTypeDefs } from './Auth' import { CacheControl, cacheControlDirectiveTypeDefs } from './CacheControl' import { Deprecated, deprecatedDirectiveTypeDefs } from './Deprecated' import { Metric, metricDirectiveTypeDefs } from './Metric' +import { Public, publicDirectiveTypeDefs } from './Public' import { SanitizeDirective, sanitizeDirectiveTypeDefs } from './Sanitize' import { SettingsDirective, settingsDirectiveTypeDefs } from './Settings' import { SmartCacheDirective, smartCacheDirectiveTypeDefs } from './SmartCacheDirective' @@ -20,6 +21,7 @@ export const nativeSchemaDirectives = { smartcache: SmartCacheDirective, translatableV2: TranslatableV2, translateTo: TranslateTo, + public: Public } export const nativeSchemaDirectivesTypeDefs = [ @@ -32,4 +34,5 @@ export const nativeSchemaDirectivesTypeDefs = [ smartCacheDirectiveTypeDefs, translatableV2DirectiveTypeDefs, translateToDirectiveTypeDefs, + publicDirectiveTypeDefs ].join('\n\n')