UNPKG

3.1 kBTypeScriptView Raw
1import { Handler } from '../handler';
2
3export type AppSyncResolverHandler<TArguments, TResult, TSource = Record<string, any> | null> = Handler<
4 AppSyncResolverEvent<TArguments, TSource>,
5 TResult
6>;
7
8// https:docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html#advanced-use-case-batching
9export type AppSyncBatchResolverHandler<TArguments, TResult, TSource = Record<string, any> | null> = Handler<
10 Array<AppSyncResolverEvent<TArguments, TSource>>,
11 TResult[]
12>;
13
14/**
15 * @deprecated Use {@link AppSyncAuthorizerHandler}
16 */
17export type AppSyncAuthorizerHander<TResolverContext = undefined> = AppSyncAuthorizerHandler<TResolverContext>;
18
19/**
20 * See https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html#aws-lambda-authorization
21 *
22 * @param TResolverContext type of the resolverContext object that you can return from the handler
23 */
24export type AppSyncAuthorizerHandler<TResolverContext = undefined> = Handler<
25 AppSyncAuthorizerEvent,
26 AppSyncAuthorizerResult<TResolverContext>
27>;
28
29export interface AppSyncResolverEventHeaders {
30 [name: string]: string | undefined;
31}
32
33export type AppSyncIdentity =
34 | AppSyncIdentityIAM
35 | AppSyncIdentityCognito
36 | AppSyncIdentityOIDC
37 | AppSyncIdentityLambda
38 | undefined
39 | null;
40
41/**
42 * See https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference.html
43 *
44 * @param TArguments type of the arguments
45 * @param TSource type of the source
46 */
47export interface AppSyncResolverEvent<TArguments, TSource = Record<string, any> | null> {
48 arguments: TArguments;
49 identity?: AppSyncIdentity;
50 source: TSource;
51 request: {
52 headers: AppSyncResolverEventHeaders;
53 };
54 info: {
55 selectionSetList: string[];
56 selectionSetGraphQL: string;
57 parentTypeName: string;
58 fieldName: string;
59 variables: { [key: string]: any };
60 };
61 prev: { result: { [key: string]: any } } | null;
62 stash: { [key: string]: any };
63}
64
65export interface AppSyncAuthorizerEvent {
66 authorizationToken: string;
67 requestContext: {
68 apiId: string;
69 accountId: string;
70 requestId: string;
71 queryString: string;
72 variables: { [key: string]: any };
73 };
74}
75
76export interface AppSyncAuthorizerResult<TResolverContext = undefined> {
77 isAuthorized: boolean;
78 resolverContext?: TResolverContext;
79 deniedFields?: string[];
80 ttlOverride?: number;
81}
82export interface AppSyncIdentityIAM {
83 accountId: string;
84 cognitoIdentityPoolId: string;
85 cognitoIdentityId: string;
86 sourceIp: string[];
87 username: string;
88 userArn: string;
89 cognitoIdentityAuthType: string;
90 cognitoIdentityAuthProvider: string;
91}
92
93export interface AppSyncIdentityCognito {
94 sub: string;
95 issuer: string;
96 username: string;
97 claims: any;
98 sourceIp: string[];
99 defaultAuthStrategy: string;
100 groups: string[] | null;
101}
102
103export interface AppSyncIdentityOIDC {
104 claims: any;
105 issuer: string;
106 sub: string;
107}
108
109export interface AppSyncIdentityLambda {
110 resolverContext: any;
111}