Derives the signature and types for a lambda handler for a particular custom Query or Mutation from a Schema.

interface ClientCustomOperation<RefBag, Op> {
    __entityType: `custom${Op["typeName"]}`;
    args: CustomOpArguments<Op, RefBag>;
    functionHandler: AppSyncResolverHandler<CustomOpArguments<Op, RefBag>, Op["handlers"] extends UltimateFunctionHandlerAsyncType
        ? void
        : LambdaReturnType<Normalize<Op, Op["returnType"] extends RefType<RefShape, any, any>
            ? RefShape["link"] extends keyof RefBag
                ? ResolveRefValueArrayTraits<RefShape, ApplyRequiredness<RefShape["link"] extends keyof RefBag
                    ? RefBag[any[any]]["type"]
                    : never, RefShape["valueRequired"]>>
                : never
            : Op["returnType"] extends BaseModelField<R>
                ? R
                : Op["returnType"] extends CustomType<R>
                    ? null | Intersection<Partial<{
                        [FieldProp in string | number | symbol as null extends {
                                [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                    ? R
                                    : R["fields"][FieldProp] extends RefType<R, any, any>
                                        ? R["valueRequired"] extends true
                                            ? any[any]
                                            : null | any[any]
                                        : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                            ? null | RefType<{
                                                array: false;
                                                arrayRequired: false;
                                                authorization: [];
                                                link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                                type: "ref";
                                                valueRequired: false;
                                            }>
                                            : never
                            }[FieldProp]
                            ? FieldProp
                            : never]: null extends {
                                [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                    ? R
                                    : R["fields"][FieldProp] extends RefType<R, any, any>
                                        ? R["valueRequired"] extends true
                                            ? any[any]
                                            : null | any[any]
                                        : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                            ? null | RefType<{
                                                array: false;
                                                arrayRequired: false;
                                                authorization: [];
                                                link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                                type: "ref";
                                                valueRequired: false;
                                            }>
                                            : never
                            }[FieldProp]
                            ? {
                                [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                    ? R
                                    : R["fields"][FieldProp] extends RefType<R, any, any>
                                        ? R["valueRequired"] extends true
                                            ? any[any]
                                            : null | any[any]
                                        : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                            ? null | RefType<{
                                                array: false;
                                                arrayRequired: false;
                                                authorization: [];
                                                link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                                type: "ref";
                                                valueRequired: false;
                                            }>
                                            : never
                            }[FieldProp]
                            : never
                    }>, ExtractNonNullableFieldsToRequiredFields<{
                        [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                            ? R
                            : R["fields"][FieldProp] extends RefType<R, any, any>
                                ? R["valueRequired"] extends true
                                    ? any[any]
                                    : null | any[any]
                                : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                    ? null | RefType<{
                                        array: false;
                                        arrayRequired: false;
                                        authorization: [];
                                        link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                        type: "ref";
                                        valueRequired: false;
                                    }>
                                    : never
                    }>, Record<never, never>, Record<never, never>>
                    : never>>>;
    operationType: Op["typeName"];
    returnType: LambdaReturnType<Normalize<Op, Op["returnType"] extends RefType<RefShape, any, any>
        ? RefShape["link"] extends keyof RefBag
            ? ResolveRefValueArrayTraits<RefShape, ApplyRequiredness<RefShape["link"] extends keyof RefBag
                ? RefBag[any[any]]["type"]
                : never, RefShape["valueRequired"]>>
            : never
        : Op["returnType"] extends BaseModelField<R>
            ? R
            : Op["returnType"] extends CustomType<R>
                ? null | Intersection<Partial<{
                    [FieldProp in string | number | symbol as null extends {
                            [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                ? R
                                : R["fields"][FieldProp] extends RefType<R, any, any>
                                    ? R["valueRequired"] extends true
                                        ? any[any]
                                        : null | any[any]
                                    : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                        ? null | RefType<{
                                            array: false;
                                            arrayRequired: false;
                                            authorization: [];
                                            link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                            type: "ref";
                                            valueRequired: false;
                                        }>
                                        : never
                        }[FieldProp]
                        ? FieldProp
                        : never]: null extends {
                            [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                ? R
                                : R["fields"][FieldProp] extends RefType<R, any, any>
                                    ? R["valueRequired"] extends true
                                        ? any[any]
                                        : null | any[any]
                                    : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                        ? null | RefType<{
                                            array: false;
                                            arrayRequired: false;
                                            authorization: [];
                                            link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                            type: "ref";
                                            valueRequired: false;
                                        }>
                                        : never
                        }[FieldProp]
                        ? {
                            [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                ? R
                                : R["fields"][FieldProp] extends RefType<R, any, any>
                                    ? R["valueRequired"] extends true
                                        ? any[any]
                                        : null | any[any]
                                    : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                        ? null | RefType<{
                                            array: false;
                                            arrayRequired: false;
                                            authorization: [];
                                            link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                            type: "ref";
                                            valueRequired: false;
                                        }>
                                        : never
                        }[FieldProp]
                        : never
                }>, ExtractNonNullableFieldsToRequiredFields<{
                    [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                        ? R
                        : R["fields"][FieldProp] extends RefType<R, any, any>
                            ? R["valueRequired"] extends true
                                ? any[any]
                                : null | any[any]
                            : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                ? null | RefType<{
                                    array: false;
                                    arrayRequired: false;
                                    authorization: [];
                                    link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                    type: "ref";
                                    valueRequired: false;
                                }>
                                : never
                }>, Record<never, never>, Record<never, never>>
                : never>>;
    type: Normalize<Op, Op["returnType"] extends RefType<RefShape, any, any>
        ? RefShape["link"] extends keyof RefBag
            ? ResolveRefValueArrayTraits<RefShape, ApplyRequiredness<RefShape["link"] extends keyof RefBag
                ? RefBag[any[any]]["type"]
                : never, RefShape["valueRequired"]>>
            : never
        : Op["returnType"] extends BaseModelField<R>
            ? R
            : Op["returnType"] extends CustomType<R>
                ? null | Intersection<Partial<{
                    [FieldProp in string | number | symbol as null extends {
                            [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                ? R
                                : R["fields"][FieldProp] extends RefType<R, any, any>
                                    ? R["valueRequired"] extends true
                                        ? any[any]
                                        : null | any[any]
                                    : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                        ? null | RefType<{
                                            array: false;
                                            arrayRequired: false;
                                            authorization: [];
                                            link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                            type: "ref";
                                            valueRequired: false;
                                        }>
                                        : never
                        }[FieldProp]
                        ? FieldProp
                        : never]: null extends {
                            [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                ? R
                                : R["fields"][FieldProp] extends RefType<R, any, any>
                                    ? R["valueRequired"] extends true
                                        ? any[any]
                                        : null | any[any]
                                    : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                        ? null | RefType<{
                                            array: false;
                                            arrayRequired: false;
                                            authorization: [];
                                            link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                            type: "ref";
                                            valueRequired: false;
                                        }>
                                        : never
                        }[FieldProp]
                        ? {
                            [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                ? R
                                : R["fields"][FieldProp] extends RefType<R, any, any>
                                    ? R["valueRequired"] extends true
                                        ? any[any]
                                        : null | any[any]
                                    : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                        ? null | RefType<{
                                            array: false;
                                            arrayRequired: false;
                                            authorization: [];
                                            link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                            type: "ref";
                                            valueRequired: false;
                                        }>
                                        : never
                        }[FieldProp]
                        : never
                }>, ExtractNonNullableFieldsToRequiredFields<{
                    [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                        ? R
                        : R["fields"][FieldProp] extends RefType<R, any, any>
                            ? R["valueRequired"] extends true
                                ? any[any]
                                : null | any[any]
                            : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                ? null | RefType<{
                                    array: false;
                                    arrayRequired: false;
                                    authorization: [];
                                    link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                    type: "ref";
                                    valueRequired: false;
                                }>
                                : never
                }>, Record<never, never>, Record<never, never>>
                : never>;
}

Type Parameters

Hierarchy (view full)

Properties

__entityType: `custom${Op["typeName"]}`

The context.arguments type for lambda function implementations.

import type { Schema } from './resource';

export const handler: Schema['echo']['functionHandler'] = async (event, context) => {
// Provides this type, if needed:
const args: Schema['echo']['functionHandlerArguments'] = event.arguments;
}
functionHandler: AppSyncResolverHandler<CustomOpArguments<Op, RefBag>, Op["handlers"] extends UltimateFunctionHandlerAsyncType
    ? void
    : LambdaReturnType<Normalize<Op, Op["returnType"] extends RefType<RefShape, any, any>
        ? RefShape["link"] extends keyof RefBag
            ? ResolveRefValueArrayTraits<RefShape, ApplyRequiredness<RefShape["link"] extends keyof RefBag
                ? RefBag[any[any]]["type"]
                : never, RefShape["valueRequired"]>>
            : never
        : Op["returnType"] extends BaseModelField<R>
            ? R
            : Op["returnType"] extends CustomType<R>
                ? null | Intersection<Partial<{
                    [FieldProp in string | number | symbol as null extends {
                            [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                ? R
                                : R["fields"][FieldProp] extends RefType<R, any, any>
                                    ? R["valueRequired"] extends true
                                        ? any[any]
                                        : null | any[any]
                                    : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                        ? null | RefType<{
                                            array: false;
                                            arrayRequired: false;
                                            authorization: [];
                                            link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                            type: "ref";
                                            valueRequired: false;
                                        }>
                                        : never
                        }[FieldProp]
                        ? FieldProp
                        : never]: null extends {
                            [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                ? R
                                : R["fields"][FieldProp] extends RefType<R, any, any>
                                    ? R["valueRequired"] extends true
                                        ? any[any]
                                        : null | any[any]
                                    : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                        ? null | RefType<{
                                            array: false;
                                            arrayRequired: false;
                                            authorization: [];
                                            link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                            type: "ref";
                                            valueRequired: false;
                                        }>
                                        : never
                        }[FieldProp]
                        ? {
                            [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                                ? R
                                : R["fields"][FieldProp] extends RefType<R, any, any>
                                    ? R["valueRequired"] extends true
                                        ? any[any]
                                        : null | any[any]
                                    : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                        ? null | RefType<{
                                            array: false;
                                            arrayRequired: false;
                                            authorization: [];
                                            link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                            type: "ref";
                                            valueRequired: false;
                                        }>
                                        : never
                        }[FieldProp]
                        : never
                }>, ExtractNonNullableFieldsToRequiredFields<{
                    [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                        ? R
                        : R["fields"][FieldProp] extends RefType<R, any, any>
                            ? R["valueRequired"] extends true
                                ? any[any]
                                : null | any[any]
                            : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                ? null | RefType<{
                                    array: false;
                                    arrayRequired: false;
                                    authorization: [];
                                    link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                    type: "ref";
                                    valueRequired: false;
                                }>
                                : never
                }>, Record<never, never>, Record<never, never>>
                : never>>>

Handler type for lambda function implementations. E.g.,

import type { Schema } from './resource';

export const handler: Schema['echo']['functionHandler'] = async (event, context) => {
// event and context will be fully typed inside here.
}
operationType: Op["typeName"]
returnType: LambdaReturnType<Normalize<Op, Op["returnType"] extends RefType<RefShape, any, any>
    ? RefShape["link"] extends keyof RefBag
        ? ResolveRefValueArrayTraits<RefShape, ApplyRequiredness<RefShape["link"] extends keyof RefBag
            ? RefBag[any[any]]["type"]
            : never, RefShape["valueRequired"]>>
        : never
    : Op["returnType"] extends BaseModelField<R>
        ? R
        : Op["returnType"] extends CustomType<R>
            ? null | Intersection<Partial<{
                [FieldProp in string | number | symbol as null extends {
                        [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                            ? R
                            : R["fields"][FieldProp] extends RefType<R, any, any>
                                ? R["valueRequired"] extends true
                                    ? any[any]
                                    : null | any[any]
                                : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                    ? null | RefType<{
                                        array: false;
                                        arrayRequired: false;
                                        authorization: [];
                                        link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                        type: "ref";
                                        valueRequired: false;
                                    }>
                                    : never
                    }[FieldProp]
                    ? FieldProp
                    : never]: null extends {
                        [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                            ? R
                            : R["fields"][FieldProp] extends RefType<R, any, any>
                                ? R["valueRequired"] extends true
                                    ? any[any]
                                    : null | any[any]
                                : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                    ? null | RefType<{
                                        array: false;
                                        arrayRequired: false;
                                        authorization: [];
                                        link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                        type: "ref";
                                        valueRequired: false;
                                    }>
                                    : never
                    }[FieldProp]
                    ? {
                        [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                            ? R
                            : R["fields"][FieldProp] extends RefType<R, any, any>
                                ? R["valueRequired"] extends true
                                    ? any[any]
                                    : null | any[any]
                                : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                    ? null | RefType<{
                                        array: false;
                                        arrayRequired: false;
                                        authorization: [];
                                        link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                        type: "ref";
                                        valueRequired: false;
                                    }>
                                    : never
                    }[FieldProp]
                    : never
            }>, ExtractNonNullableFieldsToRequiredFields<{
                [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                    ? R
                    : R["fields"][FieldProp] extends RefType<R, any, any>
                        ? R["valueRequired"] extends true
                            ? any[any]
                            : null | any[any]
                        : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                            ? null | RefType<{
                                array: false;
                                arrayRequired: false;
                                authorization: [];
                                link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                type: "ref";
                                valueRequired: false;
                            }>
                            : never
            }>, Record<never, never>, Record<never, never>>
            : never>>

The return type expected by a lambda function handler.

import type { Schema } from './resource';

export const handler: Schema['echo']['functionHandler'] = async (event, context) => {
// Result type enforced here:
const result: Schema['echo']['functionHandlerResult'] = buildResult(...);

// `Result` type matches expected function return type here:
return result;
}
type: Normalize<Op, Op["returnType"] extends RefType<RefShape, any, any>
    ? RefShape["link"] extends keyof RefBag
        ? ResolveRefValueArrayTraits<RefShape, ApplyRequiredness<RefShape["link"] extends keyof RefBag
            ? RefBag[any[any]]["type"]
            : never, RefShape["valueRequired"]>>
        : never
    : Op["returnType"] extends BaseModelField<R>
        ? R
        : Op["returnType"] extends CustomType<R>
            ? null | Intersection<Partial<{
                [FieldProp in string | number | symbol as null extends {
                        [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                            ? R
                            : R["fields"][FieldProp] extends RefType<R, any, any>
                                ? R["valueRequired"] extends true
                                    ? any[any]
                                    : null | any[any]
                                : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                    ? null | RefType<{
                                        array: false;
                                        arrayRequired: false;
                                        authorization: [];
                                        link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                        type: "ref";
                                        valueRequired: false;
                                    }>
                                    : never
                    }[FieldProp]
                    ? FieldProp
                    : never]: null extends {
                        [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                            ? R
                            : R["fields"][FieldProp] extends RefType<R, any, any>
                                ? R["valueRequired"] extends true
                                    ? any[any]
                                    : null | any[any]
                                : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                    ? null | RefType<{
                                        array: false;
                                        arrayRequired: false;
                                        authorization: [];
                                        link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                        type: "ref";
                                        valueRequired: false;
                                    }>
                                    : never
                    }[FieldProp]
                    ? {
                        [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                            ? R
                            : R["fields"][FieldProp] extends RefType<R, any, any>
                                ? R["valueRequired"] extends true
                                    ? any[any]
                                    : null | any[any]
                                : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                                    ? null | RefType<{
                                        array: false;
                                        arrayRequired: false;
                                        authorization: [];
                                        link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                        type: "ref";
                                        valueRequired: false;
                                    }>
                                    : never
                    }[FieldProp]
                    : never
            }>, ExtractNonNullableFieldsToRequiredFields<{
                [FieldProp in string | number | symbol]: R["fields"][FieldProp] extends BaseModelField<R>
                    ? R
                    : R["fields"][FieldProp] extends RefType<R, any, any>
                        ? R["valueRequired"] extends true
                            ? any[any]
                            : null | any[any]
                        : R["fields"][FieldProp] extends CustomType<CustomTypeParamShape> | EnumType<readonly string[]>
                            ? null | RefType<{
                                array: false;
                                arrayRequired: false;
                                authorization: [];
                                link: `ThisCustomType${Capitalize<FieldProp & string>}`;
                                type: "ref";
                                valueRequired: false;
                            }>
                            : never
            }>, Record<never, never>, Record<never, never>>
            : never>