import { InterfaceFieldBuilder, MutationFieldBuilder, ObjectFieldBuilder, QueryFieldBuilder, type SchemaTypes, SubscriptionFieldBuilder, } from '@pothos/core'; const objectFieldBuilder = ObjectFieldBuilder.prototype as PothosSchemaTypes.ObjectFieldBuilder< SchemaTypes, {} >; objectFieldBuilder.withAuth = function withAuth(scopes) { return addScopes(scopes, new ObjectFieldBuilder(this.builder) as never); }; const interfaceFieldBuilder = InterfaceFieldBuilder.prototype as PothosSchemaTypes.InterfaceFieldBuilder; interfaceFieldBuilder.withAuth = function withAuth(scopes) { return addScopes(scopes, new InterfaceFieldBuilder(this.builder) as never); }; const queryFieldBuilder = QueryFieldBuilder.prototype as PothosSchemaTypes.QueryFieldBuilder< SchemaTypes, {} >; queryFieldBuilder.withAuth = function withAuth(scopes) { return addScopes(scopes, new QueryFieldBuilder(this.builder) as never); }; const mutationFieldBuilder = MutationFieldBuilder.prototype as PothosSchemaTypes.MutationFieldBuilder; mutationFieldBuilder.withAuth = function withAuth(scopes) { return addScopes(scopes, new MutationFieldBuilder(this.builder) as never); }; const subscriptionFieldBuilder = SubscriptionFieldBuilder.prototype as PothosSchemaTypes.SubscriptionFieldBuilder; subscriptionFieldBuilder.withAuth = function withAuth(scopes) { return addScopes(scopes, new SubscriptionFieldBuilder(this.builder) as never); }; function addScopes( scopes: unknown, builder: { createField: (options: Record) => unknown }, ) { const originalCreateField = builder.createField; builder.createField = function createField(options) { return originalCreateField.call(this, { authScopes: scopes, ...options, }); }; return builder as never; }