response->message() ?? 'Unauthorized'; } /** * @return array */ public function attributes(): array { return [ 'name' => $this->name(), 'description' => $this->description(), 'baseType' => $this->baseType(), 'deprecationReason' => $this instanceof DeprecatedField ? $this->deprecationReason() : null, ]; } abstract public function name(): string; abstract public function description(): string; /** * The arguments of the class resolve as customs class helper. * * @return Argument[] */ public function arguments(): array { $arguments = []; $baseType = $this->baseType(); if ($baseType->hasFilterableColumns()) { $arguments[] = FilterCriteria::getFilters($baseType)->map(fn (Filter $filter): array => $filter->getArguments())->flatten(); } if ($baseType->getEnumSortClass() !== null) { $arguments[] = new SortArgument($baseType); } return Arr::flatten($arguments); } /** * Convert the rebing type to a GraphQL type. */ public function toType(): Type { return GraphQL::type($this->baseType()->name()); } /** * The base return rebing type of the query. */ abstract public function baseType(): BaseType; public function type(): Type { if (! $this->nullable) { if ($this->isList) { return Type::nonNull(Type::listOf(Type::nonNull($this->toType()))); } return Type::nonNull($this->toType()); } if ($this->isList) { return Type::listOf(Type::nonNull($this->toType())); } return $this->toType(); } }