aws-appsync-community icon indicating copy to clipboard operation
aws-appsync-community copied to clipboard

Spread operator does not work with util.appendError

Open tvmendoza opened this issue 9 months ago • 1 comments

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;
}

tvmendoza avatar Sep 18 '23 19:09 tvmendoza

In reference to https://github.com/awslabs/aws-mobile-appsync-sdk-js/issues/753

tvmendoza avatar Sep 18 '23 19:09 tvmendoza