diff --git a/src/RelayResponse.js b/src/RelayResponse.js index 0ca977d..63ee5b3 100644 --- a/src/RelayResponse.js +++ b/src/RelayResponse.js @@ -1,12 +1,12 @@ /* @flow */ -import type { PayloadData, FetchResponse } from './definition'; +import type { FetchResponse, GraphQLResponseErrors, PayloadData } from './definition'; export default class RelayResponse { _res: any; // response from low-level method, eg. fetch data: ?PayloadData; - errors: ?Array; + errors: ?GraphQLResponseErrors; ok: any; status: number; diff --git a/src/index.d.ts b/src/index.d.ts index 9edbfe7..3ea4210 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -7,7 +7,7 @@ declare class RelayResponse { _res: any; data?: PayloadData; - errors?: any[]; + errors?: GraphQLResponseErrors; ok: any; status: number; @@ -146,7 +146,7 @@ export type BatchMiddlewareOpts = { allowMutations?: boolean; method?: 'POST' | 'GET'; headers?: Headers | Promise | ((req: RelayRequestBatch) => Headers | Promise); - // Avaliable request modes in fetch options. For details see https://fetch.spec.whatwg.org/#requests + // Available request modes in fetch options. For details see https://fetch.spec.whatwg.org/#requests credentials?: FetchOpts['credentials']; mode?: FetchOpts['mode']; cache?: FetchOpts['cache']; @@ -296,3 +296,12 @@ export class RelayNetworkLayer { execute: ExecuteFunction; } + +export type GraphQLResponseErrors = Array<{ + message: string; + locations?: [{ column: number; line: number }]; + stack?: string[]; +}>; + +export function createRequestError(request: RelayRequestAny, response?: RelayResponse); +export function formatGraphQLErrors(request: RelayRequest, errors: GraphQLResponseErrors); diff --git a/src/index.js b/src/index.js index 69553ee..c9dc9dd 100644 --- a/src/index.js +++ b/src/index.js @@ -16,7 +16,7 @@ import graphqlBatchHTTPWrapper from './express-middleware/graphqlBatchHTTPWrappe import RelayNetworkLayerRequest from './RelayRequest'; import RelayNetworkLayerRequestBatch from './RelayRequestBatch'; import RelayNetworkLayerResponse from './RelayResponse'; -import { RRNLRequestError } from './createRequestError'; +import { createRequestError, formatGraphQLErrors, RRNLRequestError } from './createRequestError'; import RRNLError from './RRNLError'; export { @@ -36,6 +36,8 @@ export { progressMiddleware, uploadMiddleware, graphqlBatchHTTPWrapper, + createRequestError, + formatGraphQLErrors, RRNLError, RRNLRequestError, RRNLRetryMiddlewareError,