rescript-urql icon indicating copy to clipboard operation
rescript-urql copied to clipboard

Provide a method to get GraphQLError as Js.Exn.t

Open Kingdutch opened this issue 3 years ago • 2 comments

Since the GraphQLError extends JavaScripts Error class anywhere that we can use a JavaScript error (typed in ReScript as Js.Exn.t) we can also use a GraphQLError.

Error reporting code that accepts a Js.Exn.t can't directly accept a GraphQLError. Adding an asJsExn method to GraphQLError.res could simplify code that deals with errors :) external asJsExn : t => Js.Exn.t = "%identity" should probably do the trick :D (this only holds from GraphQLError -> Error)

Kingdutch avatar Mar 24 '21 16:03 Kingdutch

This makes sense to me @Kingdutch! The only other question I have for your use case is whether or not accessing originalError off of the GraphQLError is good enough for this use case. We do provide a binding to that already, so you should always be able to access originalError off of a GraphQLError — though it is an option type, so its presence isn't guaranteed even if an error is encountered.

All that being said, I could see this being useful. I'd be happy to accept a PR if you want to include what you have above on the binding for GraphQLError.

parkerziegler avatar Apr 05 '21 23:04 parkerziegler

Hi @parkerziegler I realised I never got back to this.

I think the fact that originalError can be undefined would make it not enough (since sometimes we have a GraphQLError but then couldn't log the originalError). Additionally I think for logging purposes (which is mostly why I requested this) the extra information about where in the GraphQL schema the error occurred can be very useful.

Kingdutch avatar Dec 15 '21 08:12 Kingdutch