@ttoss/appsync-api 0.6.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/{chunk-MENSBKNQ.js → chunk-F5DPPZQE.js} +54 -12
- package/dist/esm/cli.js +1 -1
- package/dist/esm/index.js +5 -9
- package/dist/index.d.ts +17 -6
- package/dist/index.js +63 -24
- package/package.json +4 -4
- package/src/createApiTemplate.ts +78 -13
- package/src/createAppSyncResolverHandler.ts +1 -1
- package/src/index.ts +1 -1
|
@@ -539,7 +539,7 @@ var getPackageLambdaLayerStackName = (packageName) => {
|
|
|
539
539
|
// package.json
|
|
540
540
|
var package_default = {
|
|
541
541
|
name: "@ttoss/appsync-api",
|
|
542
|
-
version: "0.
|
|
542
|
+
version: "0.7.1",
|
|
543
543
|
description: "A library for building GraphQL APIs for AWS AppSync.",
|
|
544
544
|
license: "UNLICENSED",
|
|
545
545
|
author: "ttoss",
|
|
@@ -583,8 +583,8 @@ var package_default = {
|
|
|
583
583
|
},
|
|
584
584
|
devDependencies: {
|
|
585
585
|
"@ttoss/config": "^1.27.0",
|
|
586
|
-
"@types/aws-lambda": "^8.10.
|
|
587
|
-
carlin: "^1.22.
|
|
586
|
+
"@types/aws-lambda": "^8.10.110",
|
|
587
|
+
carlin: "^1.22.1",
|
|
588
588
|
graphql: "^16.6.0",
|
|
589
589
|
"graphql-compose": "^9.0.10"
|
|
590
590
|
},
|
|
@@ -616,10 +616,12 @@ var AppSyncLambdaFunctionLogicalId = "AppSyncLambdaFunction";
|
|
|
616
616
|
var AppSyncLambdaFunctionAppSyncDataSourceLogicalId = "AppSyncLambdaFunctionAppSyncDataSource";
|
|
617
617
|
var AppSyncGraphQLApiKeyLogicalId = "AppSyncGraphQLApiKey";
|
|
618
618
|
var createApiTemplate = ({
|
|
619
|
-
|
|
619
|
+
additionalAuthenticationProviders,
|
|
620
|
+
authenticationType = "AMAZON_COGNITO_USER_POOLS",
|
|
620
621
|
schemaComposer,
|
|
621
622
|
dataSource,
|
|
622
|
-
lambdaFunction
|
|
623
|
+
lambdaFunction,
|
|
624
|
+
userPoolConfig
|
|
623
625
|
}) => {
|
|
624
626
|
const sdl = schemaComposer.toSDL();
|
|
625
627
|
graphql.validateSchema(schemaComposer.buildSchema());
|
|
@@ -671,7 +673,7 @@ var createApiTemplate = ({
|
|
|
671
673
|
[AppSyncGraphQLApiLogicalId]: {
|
|
672
674
|
Type: "AWS::AppSync::GraphQLApi",
|
|
673
675
|
Properties: {
|
|
674
|
-
AuthenticationType:
|
|
676
|
+
AuthenticationType: authenticationType,
|
|
675
677
|
Name: {
|
|
676
678
|
"Fn::Join": [
|
|
677
679
|
":",
|
|
@@ -719,10 +721,28 @@ var createApiTemplate = ({
|
|
|
719
721
|
}
|
|
720
722
|
},
|
|
721
723
|
Outputs: {
|
|
722
|
-
|
|
724
|
+
AppSyncApiGraphQLUrl: {
|
|
725
|
+
Export: {
|
|
726
|
+
Name: {
|
|
727
|
+
"Fn::Join": [
|
|
728
|
+
":",
|
|
729
|
+
[{ Ref: "AWS::StackName" }, "AppSyncApiGraphQLUrl"]
|
|
730
|
+
]
|
|
731
|
+
}
|
|
732
|
+
},
|
|
723
733
|
Value: {
|
|
724
734
|
"Fn::GetAtt": [AppSyncGraphQLApiLogicalId, "GraphQLUrl"]
|
|
725
735
|
}
|
|
736
|
+
},
|
|
737
|
+
AppSyncApiArn: {
|
|
738
|
+
Export: {
|
|
739
|
+
Name: {
|
|
740
|
+
"Fn::Join": [":", [{ Ref: "AWS::StackName" }, "AppSyncApiArn"]]
|
|
741
|
+
}
|
|
742
|
+
},
|
|
743
|
+
Value: {
|
|
744
|
+
"Fn::GetAtt": [AppSyncGraphQLApiLogicalId, "Arn"]
|
|
745
|
+
}
|
|
726
746
|
}
|
|
727
747
|
}
|
|
728
748
|
};
|
|
@@ -743,12 +763,16 @@ var createApiTemplate = ({
|
|
|
743
763
|
}
|
|
744
764
|
};
|
|
745
765
|
});
|
|
766
|
+
const apiKey = additionalAuthenticationProviders?.includes("API_KEY") || authenticationType === "API_KEY";
|
|
767
|
+
const cognitoUserPoolAuth = additionalAuthenticationProviders?.includes("AMAZON_COGNITO_USER_POOLS") || authenticationType === "AMAZON_COGNITO_USER_POOLS";
|
|
768
|
+
if (additionalAuthenticationProviders) {
|
|
769
|
+
template.Resources[AppSyncGraphQLApiLogicalId].Properties.AdditionalAuthenticationProviders = additionalAuthenticationProviders?.map((provider) => {
|
|
770
|
+
return {
|
|
771
|
+
AuthenticationType: provider
|
|
772
|
+
};
|
|
773
|
+
});
|
|
774
|
+
}
|
|
746
775
|
if (apiKey) {
|
|
747
|
-
template.Resources[AppSyncGraphQLApiLogicalId].Properties.AdditionalAuthenticationProvider = [
|
|
748
|
-
{
|
|
749
|
-
AuthenticationType: "API_KEY"
|
|
750
|
-
}
|
|
751
|
-
];
|
|
752
776
|
template.Resources[AppSyncGraphQLApiKeyLogicalId] = {
|
|
753
777
|
Type: "AWS::AppSync::ApiKey",
|
|
754
778
|
Properties: {
|
|
@@ -764,6 +788,24 @@ var createApiTemplate = ({
|
|
|
764
788
|
}
|
|
765
789
|
};
|
|
766
790
|
}
|
|
791
|
+
if (cognitoUserPoolAuth) {
|
|
792
|
+
if (!userPoolConfig) {
|
|
793
|
+
throw new Error(
|
|
794
|
+
"userPoolConfig is required when using AMAZON_COGNITO_USER_POOLS authentication."
|
|
795
|
+
);
|
|
796
|
+
}
|
|
797
|
+
template.Resources[AppSyncGraphQLApiLogicalId].Properties.UserPoolConfig = {
|
|
798
|
+
AppIdClientRegex: userPoolConfig.appIdClientRegex,
|
|
799
|
+
AwsRegion: userPoolConfig.awsRegion,
|
|
800
|
+
DefaultAction: userPoolConfig.defaultAction,
|
|
801
|
+
UserPoolId: userPoolConfig.userPoolId
|
|
802
|
+
};
|
|
803
|
+
}
|
|
804
|
+
if (lambdaFunction.environment?.variables) {
|
|
805
|
+
template.Resources[AppSyncLambdaFunctionLogicalId].Properties.Environment = {
|
|
806
|
+
Variables: lambdaFunction.environment.variables
|
|
807
|
+
};
|
|
808
|
+
}
|
|
767
809
|
return template;
|
|
768
810
|
};
|
|
769
811
|
|
package/dist/esm/cli.js
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
/** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
|
|
2
2
|
import {
|
|
3
3
|
createApiTemplate
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-F5DPPZQE.js";
|
|
5
5
|
import "./chunk-NQOARNEJ.js";
|
|
6
6
|
|
|
7
|
-
// src/index.ts
|
|
8
|
-
import { schemaComposer } from "graphql-compose";
|
|
9
|
-
|
|
10
7
|
// src/createAppSyncResolverHandler.ts
|
|
11
8
|
var createAppSyncResolverHandler = ({
|
|
12
|
-
schemaComposer
|
|
9
|
+
schemaComposer
|
|
13
10
|
}) => {
|
|
14
11
|
return async (event, context) => {
|
|
15
12
|
const { info, arguments: args, source } = event;
|
|
16
13
|
const { parentTypeName, fieldName } = info;
|
|
17
|
-
const resolver =
|
|
18
|
-
return resolver(source, args, context, info);
|
|
14
|
+
const resolver = schemaComposer.getResolveMethods()[parentTypeName][fieldName];
|
|
15
|
+
return resolver(source, args, { ...context, ...event.identity }, info);
|
|
19
16
|
};
|
|
20
17
|
};
|
|
21
18
|
export {
|
|
22
19
|
createApiTemplate,
|
|
23
|
-
createAppSyncResolverHandler
|
|
24
|
-
schemaComposer
|
|
20
|
+
createAppSyncResolverHandler
|
|
25
21
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
import { SchemaComposer } from 'graphql-compose';
|
|
2
|
-
export { ResolverResolveParams, schemaComposer } from 'graphql-compose';
|
|
3
2
|
import { CloudFormationTemplate } from '@ttoss/cloudformation';
|
|
4
3
|
import { AppSyncResolverHandler as AppSyncResolverHandler$1 } from 'aws-lambda';
|
|
4
|
+
export { AppSyncIdentityCognito } from 'aws-lambda';
|
|
5
5
|
|
|
6
|
-
type
|
|
6
|
+
type StringOrImport = string | {
|
|
7
7
|
'Fn::ImportValue': string;
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
type AuthenticationType = 'AMAZON_COGNITO_USER_POOLS' | 'API_KEY';
|
|
10
|
+
declare const createApiTemplate: ({ additionalAuthenticationProviders, authenticationType, schemaComposer, dataSource, lambdaFunction, userPoolConfig, }: {
|
|
11
|
+
additionalAuthenticationProviders?: AuthenticationType[] | undefined;
|
|
12
|
+
authenticationType?: AuthenticationType | undefined;
|
|
11
13
|
schemaComposer: SchemaComposer<any>;
|
|
12
14
|
dataSource: {
|
|
13
|
-
roleArn:
|
|
15
|
+
roleArn: StringOrImport;
|
|
14
16
|
};
|
|
15
17
|
lambdaFunction: {
|
|
16
|
-
|
|
18
|
+
environment?: {
|
|
19
|
+
variables: Record<string, string>;
|
|
20
|
+
};
|
|
21
|
+
roleArn: StringOrImport;
|
|
17
22
|
};
|
|
23
|
+
userPoolConfig?: {
|
|
24
|
+
appIdClientRegex: StringOrImport;
|
|
25
|
+
awsRegion: StringOrImport;
|
|
26
|
+
defaultAction: 'ALLOW' | 'DENY';
|
|
27
|
+
userPoolId: StringOrImport;
|
|
28
|
+
} | undefined;
|
|
18
29
|
}) => CloudFormationTemplate;
|
|
19
30
|
|
|
20
31
|
type AppSyncResolverHandler<TArguments, TResult, TSource = Record<string, any> | null> = AppSyncResolverHandler$1<TArguments, TResult, TSource>;
|
package/dist/index.js
CHANGED
|
@@ -471,11 +471,9 @@ var require_tslib = __commonJS({
|
|
|
471
471
|
var src_exports = {};
|
|
472
472
|
__export(src_exports, {
|
|
473
473
|
createApiTemplate: () => createApiTemplate,
|
|
474
|
-
createAppSyncResolverHandler: () => createAppSyncResolverHandler
|
|
475
|
-
schemaComposer: () => import_graphql_compose2.schemaComposer
|
|
474
|
+
createAppSyncResolverHandler: () => createAppSyncResolverHandler
|
|
476
475
|
});
|
|
477
476
|
module.exports = __toCommonJS(src_exports);
|
|
478
|
-
var import_graphql_compose2 = require("graphql-compose");
|
|
479
477
|
|
|
480
478
|
// src/createApiTemplate.ts
|
|
481
479
|
var import_graphql_compose = require("graphql-compose");
|
|
@@ -572,7 +570,7 @@ var getPackageLambdaLayerStackName = (packageName) => {
|
|
|
572
570
|
// package.json
|
|
573
571
|
var package_default = {
|
|
574
572
|
name: "@ttoss/appsync-api",
|
|
575
|
-
version: "0.
|
|
573
|
+
version: "0.7.1",
|
|
576
574
|
description: "A library for building GraphQL APIs for AWS AppSync.",
|
|
577
575
|
license: "UNLICENSED",
|
|
578
576
|
author: "ttoss",
|
|
@@ -616,8 +614,8 @@ var package_default = {
|
|
|
616
614
|
},
|
|
617
615
|
devDependencies: {
|
|
618
616
|
"@ttoss/config": "^1.27.0",
|
|
619
|
-
"@types/aws-lambda": "^8.10.
|
|
620
|
-
carlin: "^1.22.
|
|
617
|
+
"@types/aws-lambda": "^8.10.110",
|
|
618
|
+
carlin: "^1.22.1",
|
|
621
619
|
graphql: "^16.6.0",
|
|
622
620
|
"graphql-compose": "^9.0.10"
|
|
623
621
|
},
|
|
@@ -649,14 +647,16 @@ var AppSyncLambdaFunctionLogicalId = "AppSyncLambdaFunction";
|
|
|
649
647
|
var AppSyncLambdaFunctionAppSyncDataSourceLogicalId = "AppSyncLambdaFunctionAppSyncDataSource";
|
|
650
648
|
var AppSyncGraphQLApiKeyLogicalId = "AppSyncGraphQLApiKey";
|
|
651
649
|
var createApiTemplate = ({
|
|
652
|
-
|
|
653
|
-
|
|
650
|
+
additionalAuthenticationProviders,
|
|
651
|
+
authenticationType = "AMAZON_COGNITO_USER_POOLS",
|
|
652
|
+
schemaComposer,
|
|
654
653
|
dataSource,
|
|
655
|
-
lambdaFunction
|
|
654
|
+
lambdaFunction,
|
|
655
|
+
userPoolConfig
|
|
656
656
|
}) => {
|
|
657
|
-
const sdl =
|
|
658
|
-
import_graphql_compose.graphql.validateSchema(
|
|
659
|
-
const resolveMethods =
|
|
657
|
+
const sdl = schemaComposer.toSDL();
|
|
658
|
+
import_graphql_compose.graphql.validateSchema(schemaComposer.buildSchema());
|
|
659
|
+
const resolveMethods = schemaComposer.getResolveMethods();
|
|
660
660
|
const resolveMethodsEntries = Object.entries(resolveMethods).flatMap(
|
|
661
661
|
([typeName, fieldResolvers]) => {
|
|
662
662
|
return Object.entries(fieldResolvers).map(([fieldName]) => {
|
|
@@ -704,7 +704,7 @@ var createApiTemplate = ({
|
|
|
704
704
|
[AppSyncGraphQLApiLogicalId]: {
|
|
705
705
|
Type: "AWS::AppSync::GraphQLApi",
|
|
706
706
|
Properties: {
|
|
707
|
-
AuthenticationType:
|
|
707
|
+
AuthenticationType: authenticationType,
|
|
708
708
|
Name: {
|
|
709
709
|
"Fn::Join": [
|
|
710
710
|
":",
|
|
@@ -752,10 +752,28 @@ var createApiTemplate = ({
|
|
|
752
752
|
}
|
|
753
753
|
},
|
|
754
754
|
Outputs: {
|
|
755
|
-
|
|
755
|
+
AppSyncApiGraphQLUrl: {
|
|
756
|
+
Export: {
|
|
757
|
+
Name: {
|
|
758
|
+
"Fn::Join": [
|
|
759
|
+
":",
|
|
760
|
+
[{ Ref: "AWS::StackName" }, "AppSyncApiGraphQLUrl"]
|
|
761
|
+
]
|
|
762
|
+
}
|
|
763
|
+
},
|
|
756
764
|
Value: {
|
|
757
765
|
"Fn::GetAtt": [AppSyncGraphQLApiLogicalId, "GraphQLUrl"]
|
|
758
766
|
}
|
|
767
|
+
},
|
|
768
|
+
AppSyncApiArn: {
|
|
769
|
+
Export: {
|
|
770
|
+
Name: {
|
|
771
|
+
"Fn::Join": [":", [{ Ref: "AWS::StackName" }, "AppSyncApiArn"]]
|
|
772
|
+
}
|
|
773
|
+
},
|
|
774
|
+
Value: {
|
|
775
|
+
"Fn::GetAtt": [AppSyncGraphQLApiLogicalId, "Arn"]
|
|
776
|
+
}
|
|
759
777
|
}
|
|
760
778
|
}
|
|
761
779
|
};
|
|
@@ -776,12 +794,16 @@ var createApiTemplate = ({
|
|
|
776
794
|
}
|
|
777
795
|
};
|
|
778
796
|
});
|
|
797
|
+
const apiKey = additionalAuthenticationProviders?.includes("API_KEY") || authenticationType === "API_KEY";
|
|
798
|
+
const cognitoUserPoolAuth = additionalAuthenticationProviders?.includes("AMAZON_COGNITO_USER_POOLS") || authenticationType === "AMAZON_COGNITO_USER_POOLS";
|
|
799
|
+
if (additionalAuthenticationProviders) {
|
|
800
|
+
template.Resources[AppSyncGraphQLApiLogicalId].Properties.AdditionalAuthenticationProviders = additionalAuthenticationProviders?.map((provider) => {
|
|
801
|
+
return {
|
|
802
|
+
AuthenticationType: provider
|
|
803
|
+
};
|
|
804
|
+
});
|
|
805
|
+
}
|
|
779
806
|
if (apiKey) {
|
|
780
|
-
template.Resources[AppSyncGraphQLApiLogicalId].Properties.AdditionalAuthenticationProvider = [
|
|
781
|
-
{
|
|
782
|
-
AuthenticationType: "API_KEY"
|
|
783
|
-
}
|
|
784
|
-
];
|
|
785
807
|
template.Resources[AppSyncGraphQLApiKeyLogicalId] = {
|
|
786
808
|
Type: "AWS::AppSync::ApiKey",
|
|
787
809
|
Properties: {
|
|
@@ -797,23 +819,40 @@ var createApiTemplate = ({
|
|
|
797
819
|
}
|
|
798
820
|
};
|
|
799
821
|
}
|
|
822
|
+
if (cognitoUserPoolAuth) {
|
|
823
|
+
if (!userPoolConfig) {
|
|
824
|
+
throw new Error(
|
|
825
|
+
"userPoolConfig is required when using AMAZON_COGNITO_USER_POOLS authentication."
|
|
826
|
+
);
|
|
827
|
+
}
|
|
828
|
+
template.Resources[AppSyncGraphQLApiLogicalId].Properties.UserPoolConfig = {
|
|
829
|
+
AppIdClientRegex: userPoolConfig.appIdClientRegex,
|
|
830
|
+
AwsRegion: userPoolConfig.awsRegion,
|
|
831
|
+
DefaultAction: userPoolConfig.defaultAction,
|
|
832
|
+
UserPoolId: userPoolConfig.userPoolId
|
|
833
|
+
};
|
|
834
|
+
}
|
|
835
|
+
if (lambdaFunction.environment?.variables) {
|
|
836
|
+
template.Resources[AppSyncLambdaFunctionLogicalId].Properties.Environment = {
|
|
837
|
+
Variables: lambdaFunction.environment.variables
|
|
838
|
+
};
|
|
839
|
+
}
|
|
800
840
|
return template;
|
|
801
841
|
};
|
|
802
842
|
|
|
803
843
|
// src/createAppSyncResolverHandler.ts
|
|
804
844
|
var createAppSyncResolverHandler = ({
|
|
805
|
-
schemaComposer
|
|
845
|
+
schemaComposer
|
|
806
846
|
}) => {
|
|
807
847
|
return async (event, context) => {
|
|
808
848
|
const { info, arguments: args, source } = event;
|
|
809
849
|
const { parentTypeName, fieldName } = info;
|
|
810
|
-
const resolver =
|
|
811
|
-
return resolver(source, args, context, info);
|
|
850
|
+
const resolver = schemaComposer.getResolveMethods()[parentTypeName][fieldName];
|
|
851
|
+
return resolver(source, args, { ...context, ...event.identity }, info);
|
|
812
852
|
};
|
|
813
853
|
};
|
|
814
854
|
// Annotate the CommonJS export names for ESM import in node:
|
|
815
855
|
0 && (module.exports = {
|
|
816
856
|
createApiTemplate,
|
|
817
|
-
createAppSyncResolverHandler
|
|
818
|
-
schemaComposer
|
|
857
|
+
createAppSyncResolverHandler
|
|
819
858
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttoss/appsync-api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "A library for building GraphQL APIs for AWS AppSync.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "ttoss",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@ttoss/config": "^1.27.0",
|
|
47
|
-
"@types/aws-lambda": "^8.10.
|
|
48
|
-
"carlin": "^1.22.
|
|
47
|
+
"@types/aws-lambda": "^8.10.110",
|
|
48
|
+
"carlin": "^1.22.1",
|
|
49
49
|
"graphql": "^16.6.0",
|
|
50
50
|
"graphql-compose": "^9.0.10"
|
|
51
51
|
},
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
]
|
|
69
69
|
}
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "54403777733bc033dd317217f8cd679ee8244bba"
|
|
72
72
|
}
|
package/src/createApiTemplate.ts
CHANGED
|
@@ -14,25 +14,39 @@ const AppSyncLambdaFunctionAppSyncDataSourceLogicalId =
|
|
|
14
14
|
|
|
15
15
|
export const AppSyncGraphQLApiKeyLogicalId = 'AppSyncGraphQLApiKey';
|
|
16
16
|
|
|
17
|
-
type
|
|
17
|
+
type StringOrImport =
|
|
18
18
|
| string
|
|
19
19
|
| {
|
|
20
20
|
'Fn::ImportValue': string;
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
+
type AuthenticationType = 'AMAZON_COGNITO_USER_POOLS' | 'API_KEY';
|
|
24
|
+
|
|
23
25
|
export const createApiTemplate = ({
|
|
24
|
-
|
|
26
|
+
additionalAuthenticationProviders,
|
|
27
|
+
authenticationType = 'AMAZON_COGNITO_USER_POOLS',
|
|
25
28
|
schemaComposer,
|
|
26
29
|
dataSource,
|
|
27
30
|
lambdaFunction,
|
|
31
|
+
userPoolConfig,
|
|
28
32
|
}: {
|
|
29
|
-
|
|
33
|
+
additionalAuthenticationProviders?: AuthenticationType[];
|
|
34
|
+
authenticationType?: AuthenticationType;
|
|
30
35
|
schemaComposer: SchemaComposer<any>;
|
|
31
36
|
dataSource: {
|
|
32
|
-
roleArn:
|
|
37
|
+
roleArn: StringOrImport;
|
|
33
38
|
};
|
|
34
39
|
lambdaFunction: {
|
|
35
|
-
|
|
40
|
+
environment?: {
|
|
41
|
+
variables: Record<string, string>;
|
|
42
|
+
};
|
|
43
|
+
roleArn: StringOrImport;
|
|
44
|
+
};
|
|
45
|
+
userPoolConfig?: {
|
|
46
|
+
appIdClientRegex: StringOrImport;
|
|
47
|
+
awsRegion: StringOrImport;
|
|
48
|
+
defaultAction: 'ALLOW' | 'DENY';
|
|
49
|
+
userPoolId: StringOrImport;
|
|
36
50
|
};
|
|
37
51
|
}): CloudFormationTemplate => {
|
|
38
52
|
/**
|
|
@@ -100,7 +114,7 @@ export const createApiTemplate = ({
|
|
|
100
114
|
[AppSyncGraphQLApiLogicalId]: {
|
|
101
115
|
Type: 'AWS::AppSync::GraphQLApi',
|
|
102
116
|
Properties: {
|
|
103
|
-
AuthenticationType:
|
|
117
|
+
AuthenticationType: authenticationType,
|
|
104
118
|
Name: {
|
|
105
119
|
'Fn::Join': [
|
|
106
120
|
':',
|
|
@@ -152,11 +166,29 @@ export const createApiTemplate = ({
|
|
|
152
166
|
},
|
|
153
167
|
},
|
|
154
168
|
Outputs: {
|
|
155
|
-
|
|
169
|
+
AppSyncApiGraphQLUrl: {
|
|
170
|
+
Export: {
|
|
171
|
+
Name: {
|
|
172
|
+
'Fn::Join': [
|
|
173
|
+
':',
|
|
174
|
+
[{ Ref: 'AWS::StackName' }, 'AppSyncApiGraphQLUrl'],
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
},
|
|
156
178
|
Value: {
|
|
157
179
|
'Fn::GetAtt': [AppSyncGraphQLApiLogicalId, 'GraphQLUrl'],
|
|
158
180
|
},
|
|
159
181
|
},
|
|
182
|
+
AppSyncApiArn: {
|
|
183
|
+
Export: {
|
|
184
|
+
Name: {
|
|
185
|
+
'Fn::Join': [':', [{ Ref: 'AWS::StackName' }, 'AppSyncApiArn']],
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
Value: {
|
|
189
|
+
'Fn::GetAtt': [AppSyncGraphQLApiLogicalId, 'Arn'],
|
|
190
|
+
},
|
|
191
|
+
},
|
|
160
192
|
},
|
|
161
193
|
};
|
|
162
194
|
|
|
@@ -178,15 +210,26 @@ export const createApiTemplate = ({
|
|
|
178
210
|
};
|
|
179
211
|
});
|
|
180
212
|
|
|
181
|
-
|
|
213
|
+
const apiKey =
|
|
214
|
+
additionalAuthenticationProviders?.includes('API_KEY') ||
|
|
215
|
+
authenticationType === 'API_KEY';
|
|
216
|
+
|
|
217
|
+
const cognitoUserPoolAuth =
|
|
218
|
+
additionalAuthenticationProviders?.includes('AMAZON_COGNITO_USER_POOLS') ||
|
|
219
|
+
authenticationType === 'AMAZON_COGNITO_USER_POOLS';
|
|
220
|
+
|
|
221
|
+
if (additionalAuthenticationProviders) {
|
|
182
222
|
template.Resources[
|
|
183
223
|
AppSyncGraphQLApiLogicalId
|
|
184
|
-
].Properties.
|
|
185
|
-
{
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
224
|
+
].Properties.AdditionalAuthenticationProviders =
|
|
225
|
+
additionalAuthenticationProviders?.map((provider) => {
|
|
226
|
+
return {
|
|
227
|
+
AuthenticationType: provider,
|
|
228
|
+
};
|
|
229
|
+
});
|
|
230
|
+
}
|
|
189
231
|
|
|
232
|
+
if (apiKey) {
|
|
190
233
|
template.Resources[AppSyncGraphQLApiKeyLogicalId] = {
|
|
191
234
|
Type: 'AWS::AppSync::ApiKey',
|
|
192
235
|
Properties: {
|
|
@@ -205,5 +248,27 @@ export const createApiTemplate = ({
|
|
|
205
248
|
};
|
|
206
249
|
}
|
|
207
250
|
|
|
251
|
+
if (cognitoUserPoolAuth) {
|
|
252
|
+
if (!userPoolConfig) {
|
|
253
|
+
throw new Error(
|
|
254
|
+
'userPoolConfig is required when using AMAZON_COGNITO_USER_POOLS authentication.'
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
template.Resources[AppSyncGraphQLApiLogicalId].Properties.UserPoolConfig = {
|
|
259
|
+
AppIdClientRegex: userPoolConfig.appIdClientRegex,
|
|
260
|
+
AwsRegion: userPoolConfig.awsRegion,
|
|
261
|
+
DefaultAction: userPoolConfig.defaultAction,
|
|
262
|
+
UserPoolId: userPoolConfig.userPoolId,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
if (lambdaFunction.environment?.variables) {
|
|
267
|
+
template.Resources[AppSyncLambdaFunctionLogicalId].Properties.Environment =
|
|
268
|
+
{
|
|
269
|
+
Variables: lambdaFunction.environment.variables,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
|
|
208
273
|
return template;
|
|
209
274
|
};
|
|
@@ -18,6 +18,6 @@ export const createAppSyncResolverHandler = ({
|
|
|
18
18
|
const resolver = (
|
|
19
19
|
schemaComposer.getResolveMethods()[parentTypeName] as any
|
|
20
20
|
)[fieldName];
|
|
21
|
-
return resolver(source, args, context, info);
|
|
21
|
+
return resolver(source, args, { ...context, ...event.identity }, info);
|
|
22
22
|
};
|
|
23
23
|
};
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { type ResolverResolveParams, schemaComposer } from 'graphql-compose';
|
|
2
1
|
export { createApiTemplate } from './createApiTemplate';
|
|
3
2
|
export {
|
|
4
3
|
type AppSyncResolverHandler,
|
|
5
4
|
createAppSyncResolverHandler,
|
|
6
5
|
} from './createAppSyncResolverHandler';
|
|
6
|
+
export type { AppSyncIdentityCognito } from 'aws-lambda';
|