aws-appsync-community
aws-appsync-community copied to clipboard
Spread operator does not work with util.appendError
Do you want to request a feature or report a bug? Bug
What is the current behavior? Spread operator does not work to pass arguments to util.appendError. This causes an error when attempting to update the resolver code: "Ln 12, Col 22 code.js(12,22): error TS2556: A spread argument must either have a tuple type or be passed to a rest parameter. "
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Here is the minimal reproduction using a JavaScript unit resolver with a null data source:
export function request(ctx) {
return {};
}
export function response(ctx) {
const error_args = [
`Downstream HTTP request failed with status foo.`,
`http_504`,
{a: 1},
{b: 2},
]
util.appendError(...error_args)
return ctx.prev.result;
}
What is the expected behavior? The util.appendError call should be allowed, and the resolver code should be updated without receiving a TypeScript error.
Which versions and which environment (browser, react-native, nodejs) / OS are affected by this issue? Did this work in previous versions? APPSYNC_JS issue. It has never worked as far as I can tell.
A workaround is to define a wrapper function and use that to call util.AppendError:
function wrapper(a, b, c, d) {
util.appendError(a, b, c, d)
}
export function request(ctx) {
return {};
}
export function response(ctx) {
const error_args = [
`Downstream HTTP request failed with status foo.`,
`http_504`,
{a: 1},
{b: 2},
]
wrapper(...error_args)
return ctx.prev.result;
}
In reference to https://github.com/awslabs/aws-mobile-appsync-sdk-js/issues/753