UNPKG

2.82 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// See https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html#aws-lambda-authorization
15export type AppSyncAuthorizerHander<TResolverContext = undefined> = Handler<
16 AppSyncAuthorizerEvent,
17 AppSyncAuthorizerResult<TResolverContext>
18>;
19
20export interface AppSyncResolverEventHeaders {
21 [name: string]: string | undefined;
22}
23
24export type AppSyncIdentity =
25 | AppSyncIdentityIAM
26 | AppSyncIdentityCognito
27 | AppSyncIdentityOIDC
28 | AppSyncIdentityLambda
29 | undefined
30 | null;
31
32/**
33 * See https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference.html
34 *
35 * @param TArguments type of the arguments
36 * @param TSource type of the source
37 */
38export interface AppSyncResolverEvent<TArguments, TSource = Record<string, any> | null> {
39 arguments: TArguments;
40 identity?: AppSyncIdentity;
41 source: TSource;
42 request: {
43 headers: AppSyncResolverEventHeaders;
44 };
45 info: {
46 selectionSetList: string[];
47 selectionSetGraphQL: string;
48 parentTypeName: string;
49 fieldName: string;
50 variables: { [key: string]: any };
51 };
52 prev: { result: { [key: string]: any } } | null;
53 stash: { [key: string]: any };
54}
55
56export interface AppSyncAuthorizerEvent {
57 authorizationToken: string;
58 requestContext: {
59 apiId: string;
60 accountId: string;
61 requestId: string;
62 queryString: string;
63 variables: { [key: string]: any };
64 };
65}
66
67export interface AppSyncAuthorizerResult<TResolverContext = undefined> {
68 isAuthorized: boolean;
69 resolverContext?: TResolverContext;
70 deniedFields?: string[];
71 ttlOverride?: number;
72}
73export interface AppSyncIdentityIAM {
74 accountId: string;
75 cognitoIdentityPoolId: string;
76 cognitoIdentityId: string;
77 sourceIp: string[];
78 username: string;
79 userArn: string;
80 cognitoIdentityAuthType: string;
81 cognitoIdentityAuthProvider: string;
82}
83
84export interface AppSyncIdentityCognito {
85 sub: string;
86 issuer: string;
87 username: string;
88 claims: any;
89 sourceIp: string[];
90 defaultAuthStrategy: string;
91 groups: string[] | null;
92}
93
94export interface AppSyncIdentityOIDC {
95 claims: any;
96 issuer: string;
97 sub: string;
98}
99
100export interface AppSyncIdentityLambda {
101 resolverContext: any;
102}