import { GraphQLClient } from 'graphql-request' import { Config } from "../config"; export class UnauthorizedError extends Error { constructor(...args: any[]) { super(...args) Object.setPrototypeOf(this, UnauthorizedError.prototype); } } export class DaddyClient { gql: GraphQLClient constructor(endpoint: string) { this.gql = new GraphQLClient(endpoint, { headers: { mode: 'cors', } }); } fetchUser(email: string) { return this.gql.rawRequest(` query fetchUser { user(where: {email: {eq: $email}}) { id created_at updated_at email, full_name } } `, { email }) .then(this.assertAuthorization) } assertAuthorization({ status, data }: any) { if (status === 401) return Promise.reject(new UnauthorizedError()); return data; } }