@sylvesterllc/aws-constructs 1.0.63 → 1.0.64

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.
@@ -1,4 +1,5 @@
1
- import { IRestApi } from "aws-cdk-lib/aws-apigateway";
1
+ import { IRestApi, RequestAuthorizer, TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
2
2
  export interface ApiLambdaResult {
3
3
  api: IRestApi;
4
+ authorizer: TokenAuthorizer | RequestAuthorizer | undefined | null;
4
5
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpTGFtYmRhUmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvQXBpTGFtYmRhUmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzdEFwaSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaUxhbWJkYVJlc3VsdCB7XG4gICAgYXBpOiAgSVJlc3RBcGk7XG4gICAgXG59Il19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpTGFtYmRhUmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvQXBpTGFtYmRhUmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb2tlbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSVJlc3RBcGksIFJlcXVlc3RBdXRob3JpemVyLCBUb2tlbkF1dGhvcml6ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBcGlMYW1iZGFSZXN1bHQge1xuICAgIGFwaTogIElSZXN0QXBpO1xuICAgIGF1dGhvcml6ZXI6IFRva2VuQXV0aG9yaXplciB8IFJlcXVlc3RBdXRob3JpemVyIHwgdW5kZWZpbmVkIHwgbnVsbDtcbn0iXX0=
@@ -13,9 +13,8 @@ export declare class CreateApiAndAttachLambdas extends BaseResource<ApiLambdaRes
13
13
  protected requireAuthorizer: boolean;
14
14
  protected authorizer?: TsgAuthorizerType;
15
15
  constructor(scope: Construct, config: AppConfig, gatewayApi: IRestApi, layers?: LayerVersion[] | undefined, tables?: ITable[] | undefined);
16
- protected createResource(scope: Construct): any[] | null;
16
+ protected createResource(scope: Construct): ApiLambdaResult[] | null;
17
17
  protected createOutput<T>(scope: Construct, createdAssets: T[]): void;
18
- private onInit;
19
18
  private createAuthorizer;
20
19
  private assignAccessToTables;
21
20
  private AddRoutes;
@@ -19,6 +19,7 @@ class CreateApiAndAttachLambdas extends baseResource_1.BaseResource {
19
19
  this.gatewayApi = gatewayApi;
20
20
  this.layers = layers;
21
21
  this.tables = tables;
22
+ console.log('### CreateApiAndAttachLambdas ### Constructor ###: ', config);
22
23
  this.requireAuthorizer = (this.config.RESOURCES.AUTHORIZER &&
23
24
  this.config.RESOURCES.AUTHORIZER.type) ? true : false;
24
25
  if (this.requireAuthorizer) {
@@ -27,15 +28,9 @@ class CreateApiAndAttachLambdas extends baseResource_1.BaseResource {
27
28
  else if (this.config.RESOURCES.AUTHORIZER && !this.config.RESOURCES.AUTHORIZER.type) {
28
29
  throw new Error(`You must provide an authorizer type if a Authorizer is required`);
29
30
  }
30
- this.onInit();
31
+ this.createdResources = this.createResource(scope);
31
32
  }
32
33
  createResource(scope) {
33
- return null;
34
- }
35
- createOutput(scope, createdAssets) {
36
- return;
37
- }
38
- onInit() {
39
34
  let authorizer = undefined;
40
35
  // Create Authorizer
41
36
  if (this.requireAuthorizer) {
@@ -49,7 +44,18 @@ class CreateApiAndAttachLambdas extends baseResource_1.BaseResource {
49
44
  }
50
45
  // Create Routes on API Gateway for Lambdas from config
51
46
  this.AddRoutes(this.config, this.gatewayApi, lambdas.Lambdas, authorizer || undefined);
52
- return lambdas.Lambdas;
47
+ const result = {
48
+ api: this.gatewayApi,
49
+ authorizer: authorizer
50
+ };
51
+ return [result];
52
+ }
53
+ createOutput(scope, createdAssets) {
54
+ this.createdResources.forEach((x, idx) => {
55
+ new aws_cdk_lib_1.CfnOutput(scope, `Authorizerr-${idx}`, {
56
+ value: x.authorizer?.authorizerArn
57
+ });
58
+ });
53
59
  }
54
60
  createAuthorizer() {
55
61
  let authorizer = undefined;
@@ -91,4 +97,4 @@ class CreateApiAndAttachLambdas extends baseResource_1.BaseResource {
91
97
  }
92
98
  }
93
99
  exports.CreateApiAndAttachLambdas = CreateApiAndAttachLambdas;
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlQXBpQW5kQXR0YWNoTGFtYmRhcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvZ2F0ZXdheS9DcmVhdGVBcGlBbmRBdHRhY2hMYW1iZGFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUFvRDtBQUlwRCw0RUFBeUU7QUFFekUsc0ZBQW1GO0FBQ25GLDZDQUE0QztBQUM1QyxvRkFBaUY7QUFDakYseURBQXNEO0FBS3RELDBEQUFpRDtBQUVqRCxNQUFhLHlCQUEwQixTQUFRLDJCQUE2QjtJQU81RDtJQUNBO0lBQ0E7SUFQRixpQkFBaUIsQ0FBVTtJQUMzQixVQUFVLENBQXFCO0lBRXpDLFlBQVksS0FBZ0IsRUFDeEIsTUFBaUIsRUFDVCxVQUFvQixFQUNwQixNQUF1QixFQUN2QixNQUFpQjtRQUN6QixLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBSGIsZUFBVSxHQUFWLFVBQVUsQ0FBVTtRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBR3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVU7WUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7U0FDNUQ7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJ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QVEsR0FBRywyQkFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWhFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ3hDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBRTdELElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2FBQ3hEO1lBRUQscUJBQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFySEQsOERBcUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEJhc2VSZXNvdXJjZSB9IGZyb20gXCIuLi9iYXNlL2Jhc2VSZXNvdXJjZVwiO1xuaW1wb3J0IHsgSVRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9BcHBDb25maWdcIjtcbmltcG9ydCB7IEFwaUxhbWJkYVJlc3VsdCB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL0FwaUxhbWJkYVJlc3VsdFwiO1xuaW1wb3J0IHsgVHNnQXV0aG9yaXplclR5cGUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzL1RzZ0F1dGhvcml6ZXJUeXBlXCI7XG5pbXBvcnQgeyBJUmVzdEFwaSwgUmVxdWVzdEF1dGhvcml6ZXIsIFRva2VuQXV0aG9yaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHsgVHNnSnd0VG9rZW5BdXRob3JpemVyIH0gZnJvbSBcIi4uL2xhbWJkYS1hdXRob3JpemVyL1RzZ0p3dFRva2VuQXV0aG9yaXplclwiO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgVHNnUmVxdWVzdEF1dGhvcml6ZXIgfSBmcm9tIFwiLi4vbGFtYmRhLWF1dGhvcml6ZXIvVHNnUmVxdWVzdEF1dGhvcml6ZXJcIjtcbmltcG9ydCB7IENyZWF0ZUxhbWJkYSB9IGZyb20gXCIuLi9sYW1iZGEvY3JlYXRlTGFtYmRhXCI7XG5pbXBvcnQgeyBUc2dMYW1iZGFQcm9wcyB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXMvVHNnTGFtYmRhUHJvcHNcIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcbmltcG9ydCB7IFJvdXRlcyB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZVJvdXRlc1wiO1xuXG5leHBvcnQgY2xhc3MgQ3JlYXRlQXBpQW5kQXR0YWNoTGFtYmRhcyBleHRlbmRzIEJhc2VSZXNvdXJjZTxBcGlMYW1iZGFSZXN1bHQ+IHtcbiAgICBcbiAgICBwcm90ZWN0ZWQgcmVxdWlyZUF1dGhvcml6ZXI6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIGF1dGhvcml6ZXI/OiBUc2dBdXRob3JpemVyVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICAgIGNvbmZpZzogQXBwQ29uZmlnLFxuICAgICAgICBwcml2YXRlIGdhdGV3YXlBcGk6IElSZXN0QXBpLFxuICAgICAgICBwcml2YXRlIGxheWVycz86IExheWVyVmVyc2lvbltdLFxuICAgICAgICBwcml2YXRlIHRhYmxlcz86IElUYWJsZVtdKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBjb25maWcpO1xuXG4gICAgICAgIHRoaXMucmVxdWlyZUF1dGhvcml6ZXIgPSAodGhpcy5jb25maWcuUkVTT1VSQ0VTLkFVVEhPUklaRVIgJiYgXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5SRVNPVVJDRVMuQVVUSE9SSVpFUi50eXBlKSA/IHRydWUgOiBmYWxzZTsgICAgICAgXG5cbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZUF1dGhvcml6ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplciA9IHRoaXMuY29uZmlnLlJFU09VUkNFUy5BVVRIT1JJWkVSPy50eXBlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLlJFU09VUkNFUy5BVVRIT1JJWkVSICYmICF0aGlzLmNvbmZpZy5SRVNPVVJDRVMuQVVUSE9SSVpFUi50eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBtdXN0IHByb3ZpZGUgYW4gYXV0aG9yaXplciB0eXBlIGlmIGEgQXV0aG9yaXplciBpcyByZXF1aXJlZGApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkluaXQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2Uoc2NvcGU6IENvbnN0cnVjdCk6IGFueVtdIHwgbnVsbCB7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dDxUPihzY29wZTogQ29uc3RydWN0LCBjcmVhdGVkQXNzZXRzOiBUW10pOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Jbml0KCkge1xuXG4gICAgICAgIGxldCBhdXRob3JpemVyOiBUb2tlbkF1dGhvcml6ZXIgfCBSZXF1ZXN0QXV0aG9yaXplciB8IHVuZGVmaW5lZCB8IG51bGwgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gQ3JlYXRlIEF1dGhvcml6ZXJcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZUF1dGhvcml6ZXIpIHtcbiAgICAgICAgICAgIGF1dGhvcml6ZXIgPSB0aGlzLmNyZWF0ZUF1dGhvcml6ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBMYW1iZGFzXG4gICAgICAgIGNvbnN0IGxhbWJkYXMgPSBuZXcgQ3JlYXRlTGFtYmRhKHRoaXMuc2NvcGUsIHRoaXMuY29uZmlnLCB0aGlzLmxheWVycyk7XG4gICAgICAgIFxuICAgICAgICAvLyBHaXZlIEFjY2VzcyB0byBMYW1iZGRzIHRvIEFsbCBEeW5hbW9EYiBUYWJsZXNcbiAgICAgICAgaWYgKHRoaXMudGFibGVzKSB7XG4gICAgICAgICAgICB0aGlzLmFzc2lnbkFjY2Vzc1RvVGFibGVzKHRoaXMudGFibGVzLCBsYW1iZGFzLkxhbWJkYXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIFJvdXRlcyBvbiBBUEkgR2F0ZXdheSBmb3IgTGFtYmRhcyBmcm9tIGNvbmZpZ1xuICAgICAgICB0aGlzLkFkZFJvdXRlcyh0aGlzLmNvbmZpZywgdGhpcy5nYXRld2F5QXBpLCBsYW1iZGFzLkxhbWJkYXMsIGF1dGhvcml6ZXIgfHwgdW5kZWZpbmVkKTtcblxuICAgICAgICByZXR1cm4gbGFtYmRhcy5MYW1iZGFzO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQXV0aG9yaXplcigpIHtcblxuICAgICAgICBsZXQgYXV0aG9yaXplcjogVG9rZW5BdXRob3JpemVyIHwgUmVxdWVzdEF1dGhvcml6ZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZUF1dGhvcml6ZXIgJiYgdGhpcy5hdXRob3JpemVyID09PSBUc2dBdXRob3JpemVyVHlwZS5UT0tFTl9BVVRIT1JJWkVSKSB7XG5cbiAgICAgICAgICAgIGF1dGhvcml6ZXIgPSBuZXcgVHNnSnd0VG9rZW5BdXRob3JpemVyKHRoaXMuc2NvcGUsXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcpLkp3dEF1dGhvcml6ZXI7XG5cbiAgICAgICAgICAgIGF1dGhvcml6ZXI/Ll9hdHRhY2hUb0FwaSh0aGlzLmdhdGV3YXlBcGkpO1xuICAgICAgICAgICAgYXV0aG9yaXplcj8uYXBwbHlSZW1vdmFsUG9saWN5KFJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG5cbiAgICAgICAgICAgIHJldHVybiBhdXRob3JpemVyO1xuXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXF1aXJlQXV0aG9yaXplciAmJiB0aGlzLmF1dGhvcml6ZXIgPT09IFRzZ0F1dGhvcml6ZXJUeXBlLlJFUVVFU1RfQVVUSE9SSVpFUikge1xuICAgICAgICAgICAgYXV0aG9yaXplciA9IG5ldyBUc2dSZXF1ZXN0QXV0aG9yaXplcih0aGlzLnNjb3BlLFxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnKS5SZXF1ZXN0QXV0aG9yaXplciBhcyBSZXF1ZXN0QXV0aG9yaXplcjtcblxuICAgICAgICAgICAgYXV0aG9yaXplcj8uX2F0dGFjaFRvQXBpKHRoaXMuZ2F0ZXdheUFwaSk7XG4gICAgICAgICAgICBhdXRob3JpemVyPy5hcHBseVJlbW92YWxQb2xpY3koUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKTtcblxuICAgICAgICAgICAgcmV0dXJuIGF1dGhvcml6ZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3NpZ25BY2Nlc3NUb1RhYmxlcyh0YWJsZXM6IElUYWJsZVtdLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG5cbiAgICAgICAgaWYgKHRhYmxlcykge1xuICAgICAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uKSA9PiB7XG5cbiAgICAgICAgICAgICAgICB0YWJsZXMuZm9yRWFjaCgodGFibGU6IElUYWJsZSkgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlLmdyYW50UmVhZFdyaXRlRGF0YShsYW1iZGEpO1xuXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgQWRkUm91dGVzKGNvbmZpZzogQXBwQ29uZmlnLFxuICAgICAgICBnYXRld2F5OiBJUmVzdEFwaSxcbiAgICAgICAgbGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSxcbiAgICAgICAgYXV0aG9yaXplcj86IFRva2VuQXV0aG9yaXplcnxSZXF1ZXN0QXV0aG9yaXplcikge1xuXG4gICAgICAgIGNvbmZpZy5SRVNPVVJDRVMuTEFNQkRBPy5mb3JFYWNoKChwcm9wOiBUc2dMYW1iZGFQcm9wKSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IGxhbWJkYUlkID0gQ3JlYXRlTGFtYmRhLmdldElkRm9yTGFtYmRhKHByb3AsIHRoaXMuY29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKCFsYW1iZGFJZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZmluZCBsYW1iZGFgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxhbWJkYU5vZGUgPSBsYW1iZGFzLmZpbmQoeCA9PiB4Lm5vZGUuaWQgPT09IGxhbWJkYUlkKTtcblxuICAgICAgICAgICAgaWYgKCFsYW1iZGFOb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZmluZCB0aGUgTGFtYmRhIEludGVncmF0aW9uXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBSb3V0ZXMuY3JlYXRlUmVzb3VyY2UocHJvcCwgZ2F0ZXdheSwgbGFtYmRhTm9kZSwgYXV0aG9yaXplcik7XG4gICAgICAgIH0pO1xuICAgIH1cbn0iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlQXBpQW5kQXR0YWNoTGFtYmRhcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvZ2F0ZXdheS9DcmVhdGVBcGlBbmRBdHRhY2hMYW1iZGFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUFvRDtBQUlwRCw0RUFBeUU7QUFFekUsc0ZBQW1GO0FBQ25GLDZDQUF1RDtBQUN2RCxvRkFBaUY7QUFDakYseURBQXNEO0FBS3RELDBEQUFpRDtBQUVqRCxNQUFhLHlCQUEwQixTQUFRLDJCQUE2QjtJQU81RDtJQUNBO0lBQ0E7SUFQRixpQkFBaUIsQ0FBVTtJQUMzQixVQUFVLENBQXFCO0lBRXpDLFlBQVksS0FBZ0IsRUFDeEIsTUFBaUIsRUFDVCxVQUFvQixFQUNwQixNQUF1QixFQUN2QixNQUFpQjtRQUN6QixLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBSGIsZUFBVSxHQUFWLFVBQVUsQ0FBVTtRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBR3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMscURBQXFELEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRTFELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztTQUM1RDthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFB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QUFPLENBQUMsQ0FBQyxNQUFzQixFQUFFLEVBQUU7Z0JBRXZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtvQkFFN0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUVyQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQWlCLEVBQy9CLE9BQWlCLEVBQ2pCLE9BQXlCLEVBQ3pCLFVBQThDO1FBRTlDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQW1CLEVBQUUsRUFBRTtZQUVyRCxNQUFNLFFBQVEsR0FBRywyQkFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWhFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ3hDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBRTdELElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2FBQ3hEO1lBRUQscUJBQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUEzSEQsOERBMkhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEJhc2VSZXNvdXJjZSB9IGZyb20gXCIuLi9iYXNlL2Jhc2VSZXNvdXJjZVwiO1xuaW1wb3J0IHsgSVRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9BcHBDb25maWdcIjtcbmltcG9ydCB7IEFwaUxhbWJkYVJlc3VsdCB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL0FwaUxhbWJkYVJlc3VsdFwiO1xuaW1wb3J0IHsgVHNnQXV0aG9yaXplclR5cGUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzL1RzZ0F1dGhvcml6ZXJUeXBlXCI7XG5pbXBvcnQgeyBJUmVzdEFwaSwgUmVxdWVzdEF1dGhvcml6ZXIsIFRva2VuQXV0aG9yaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHsgVHNnSnd0VG9rZW5BdXRob3JpemVyIH0gZnJvbSBcIi4uL2xhbWJkYS1hdXRob3JpemVyL1RzZ0p3dFRva2VuQXV0aG9yaXplclwiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBUc2dSZXF1ZXN0QXV0aG9yaXplciB9IGZyb20gXCIuLi9sYW1iZGEtYXV0aG9yaXplci9Uc2dSZXF1ZXN0QXV0aG9yaXplclwiO1xuaW1wb3J0IHsgQ3JlYXRlTGFtYmRhIH0gZnJvbSBcIi4uL2xhbWJkYS9jcmVhdGVMYW1iZGFcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYVByb3BzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90eXBlcy9Uc2dMYW1iZGFQcm9wc1wiO1xuaW1wb3J0IHsgTGF5ZXJWZXJzaW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBUc2dMYW1iZGFQcm9wIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90eXBlc1wiO1xuaW1wb3J0IHsgUm91dGVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlUm91dGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVBcGlBbmRBdHRhY2hMYW1iZGFzIGV4dGVuZHMgQmFzZVJlc291cmNlPEFwaUxhbWJkYVJlc3VsdD4ge1xuICAgIFxuICAgIHByb3RlY3RlZCByZXF1aXJlQXV0aG9yaXplcjogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgYXV0aG9yaXplcj86IFRzZ0F1dGhvcml6ZXJUeXBlO1xuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCxcbiAgICAgICAgY29uZmlnOiBBcHBDb25maWcsXG4gICAgICAgIHByaXZhdGUgZ2F0ZXdheUFwaTogSVJlc3RBcGksXG4gICAgICAgIHByaXZhdGUgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10sXG4gICAgICAgIHByaXZhdGUgdGFibGVzPzogSVRhYmxlW10pIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGNvbmZpZyk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJyMjIyBDcmVhdGVBcGlBbmRBdHRhY2hMYW1iZGFzICMjIyBDb25zdHJ1Y3RvciAjIyM6ICcsIGNvbmZpZyk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnJlcXVpcmVBdXRob3JpemVyID0gKHRoaXMuY29uZmlnLlJFU09VUkNFUy5BVVRIT1JJWkVSICYmIFxuICAgICAgICAgICAgdGhpcy5jb25maWcuUkVTT1VSQ0VTLkFVVEhPUklaRVIudHlwZSkgPyB0cnVlIDogZmFsc2U7ICAgICAgIFxuXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVBdXRob3JpemVyKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhvcml6ZXIgPSB0aGlzLmNvbmZpZy5SRVNPVVJDRVMuQVVUSE9SSVpFUj8udHlwZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5SRVNPVVJDRVMuQVVUSE9SSVpFUiAmJiAhdGhpcy5jb25maWcuUkVTT1VSQ0VTLkFVVEhPUklaRVIudHlwZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwcm92aWRlIGFuIGF1dGhvcml6ZXIgdHlwZSBpZiBhIEF1dGhvcml6ZXIgaXMgcmVxdWlyZWRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3JlYXRlZFJlc291cmNlcyA9IHRoaXMuY3JlYXRlUmVzb3VyY2Uoc2NvcGUpITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2Uoc2NvcGU6IENvbnN0cnVjdCk6IEFwaUxhbWJkYVJlc3VsdFtdIHwgbnVsbCB7XG5cbiAgICAgICAgbGV0IGF1dGhvcml6ZXI6IFRva2VuQXV0aG9yaXplciB8IFJlcXVlc3RBdXRob3JpemVyIHwgdW5kZWZpbmVkIHwgbnVsbCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBDcmVhdGUgQXV0aG9yaXplclxuICAgICAgICBpZiAodGhpcy5yZXF1aXJlQXV0aG9yaXplcikge1xuICAgICAgICAgICAgYXV0aG9yaXplciA9IHRoaXMuY3JlYXRlQXV0aG9yaXplcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIExhbWJkYXNcbiAgICAgICAgY29uc3QgbGFtYmRhcyA9IG5ldyBDcmVhdGVMYW1iZGEodGhpcy5zY29wZSwgdGhpcy5jb25maWcsIHRoaXMubGF5ZXJzKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEdpdmUgQWNjZXNzIHRvIExhbWJkZHMgdG8gQWxsIER5bmFtb0RiIFRhYmxlc1xuICAgICAgICBpZiAodGhpcy50YWJsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduQWNjZXNzVG9UYWJsZXModGhpcy50YWJsZXMsIGxhbWJkYXMuTGFtYmRhcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgUm91dGVzIG9uIEFQSSBHYXRld2F5IGZvciBMYW1iZGFzIGZyb20gY29uZmlnXG4gICAgICAgIHRoaXMuQWRkUm91dGVzKHRoaXMuY29uZmlnLCB0aGlzLmdhdGV3YXlBcGksIGxhbWJkYXMuTGFtYmRhcywgYXV0aG9yaXplciB8fCB1bmRlZmluZWQpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogQXBpTGFtYmRhUmVzdWx0ID0ge1xuICAgICAgICAgICAgYXBpOiB0aGlzLmdhdGV3YXlBcGksXG4gICAgICAgICAgICBhdXRob3JpemVyOiBhdXRob3JpemVyXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBbcmVzdWx0XTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlT3V0cHV0PFQ+KHNjb3BlOiBDb25zdHJ1Y3QsIGNyZWF0ZWRBc3NldHM6IFRbXSk6IHZvaWQge1xuICAgICAgICBcbiAgICAgICAgdGhpcy5jcmVhdGVkUmVzb3VyY2VzIS5mb3JFYWNoKCh4LCBpZHgpID0+IHtcbiAgICAgICAgICAgIG5ldyBDZm5PdXRwdXQoc2NvcGUsIGBBdXRob3JpemVyci0ke2lkeH1gLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHguYXV0aG9yaXplcj8uYXV0aG9yaXplckFybiFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9ICAgIFxuXG4gICAgcHJpdmF0ZSBjcmVhdGVBdXRob3JpemVyKCkge1xuXG4gICAgICAgIGxldCBhdXRob3JpemVyOiBUb2tlbkF1dGhvcml6ZXIgfCBSZXF1ZXN0QXV0aG9yaXplciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodGhpcy5yZXF1aXJlQXV0aG9yaXplciAmJiB0aGlzLmF1dGhvcml6ZXIgPT09IFRzZ0F1dGhvcml6ZXJUeXBlLlRPS0VOX0FVVEhPUklaRVIpIHtcblxuICAgICAgICAgICAgYXV0aG9yaXplciA9IG5ldyBUc2dKd3RUb2tlbkF1dGhvcml6ZXIodGhpcy5zY29wZSxcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZykuSnd0QXV0aG9yaXplcjtcblxuICAgICAgICAgICAgYXV0aG9yaXplcj8uX2F0dGFjaFRvQXBpKHRoaXMuZ2F0ZXdheUFwaSk7XG4gICAgICAgICAgICBhdXRob3JpemVyPy5hcHBseVJlbW92YWxQb2xpY3koUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKTtcblxuICAgICAgICAgICAgcmV0dXJuIGF1dGhvcml6ZXI7XG5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlcXVpcmVBdXRob3JpemVyICYmIHRoaXMuYXV0aG9yaXplciA9PT0gVHNnQXV0aG9yaXplclR5cGUuUkVRVUVTVF9BVVRIT1JJWkVSKSB7XG4gICAgICAgICAgICBhdXRob3JpemVyID0gbmV3IFRzZ1JlcXVlc3RBdXRob3JpemVyKHRoaXMuc2NvcGUsXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcpLlJlcXVlc3RBdXRob3JpemVyIGFzIFJlcXVlc3RBdXRob3JpemVyO1xuXG4gICAgICAgICAgICBhdXRob3JpemVyPy5fYXR0YWNoVG9BcGkodGhpcy5nYXRld2F5QXBpKTtcbiAgICAgICAgICAgIGF1dGhvcml6ZXI/LmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuXG4gICAgICAgICAgICByZXR1cm4gYXV0aG9yaXplcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzc2lnbkFjY2Vzc1RvVGFibGVzKHRhYmxlczogSVRhYmxlW10sIGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcblxuICAgICAgICBpZiAodGFibGVzKSB7XG4gICAgICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24pID0+IHtcblxuICAgICAgICAgICAgICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZTogSVRhYmxlKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGxhbWJkYSk7XG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBZGRSb3V0ZXMoY29uZmlnOiBBcHBDb25maWcsXG4gICAgICAgIGdhdGV3YXk6IElSZXN0QXBpLFxuICAgICAgICBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdLFxuICAgICAgICBhdXRob3JpemVyPzogVG9rZW5BdXRob3JpemVyfFJlcXVlc3RBdXRob3JpemVyKSB7XG5cbiAgICAgICAgY29uZmlnLlJFU09VUkNFUy5MQU1CREE/LmZvckVhY2goKHByb3A6IFRzZ0xhbWJkYVByb3ApID0+IHtcblxuICAgICAgICAgICAgY29uc3QgbGFtYmRhSWQgPSBDcmVhdGVMYW1iZGEuZ2V0SWRGb3JMYW1iZGEocHJvcCwgdGhpcy5jb25maWcpO1xuXG4gICAgICAgICAgICBpZiAoIWxhbWJkYUlkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIGxhbWJkYWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFtYmRhTm9kZSA9IGxhbWJkYXMuZmluZCh4ID0+IHgubm9kZS5pZCA9PT0gbGFtYmRhSWQpO1xuXG4gICAgICAgICAgICBpZiAoIWxhbWJkYU5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBmaW5kIHRoZSBMYW1iZGEgSW50ZWdyYXRpb25cIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFJvdXRlcy5jcmVhdGVSZXNvdXJjZShwcm9wLCBnYXRld2F5LCBsYW1iZGFOb2RlLCBhdXRob3JpemVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sylvesterllc/aws-constructs",
3
- "version": "1.0.63",
3
+ "version": "1.0.64",
4
4
  "description": "AWS Constructs",
5
5
  "main": "dist/index.js",
6
6
  "keywords": [
@@ -1,6 +1,7 @@
1
- import { IRestApi } from "aws-cdk-lib/aws-apigateway";
1
+ import { Token } from "aws-cdk-lib";
2
+ import { IRestApi, RequestAuthorizer, TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
2
3
 
3
4
  export interface ApiLambdaResult {
4
5
  api: IRestApi;
5
-
6
+ authorizer: TokenAuthorizer | RequestAuthorizer | undefined | null;
6
7
  }
@@ -6,7 +6,7 @@ import { ApiLambdaResult } from "../../interfaces/ApiLambdaResult";
6
6
  import { TsgAuthorizerType } from "../../config/types/TsgAuthorizerType";
7
7
  import { IRestApi, RequestAuthorizer, TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
8
8
  import { TsgJwtTokenAuthorizer } from "../lambda-authorizer/TsgJwtTokenAuthorizer";
9
- import { RemovalPolicy } from "aws-cdk-lib";
9
+ import { CfnOutput, RemovalPolicy } from "aws-cdk-lib";
10
10
  import { TsgRequestAuthorizer } from "../lambda-authorizer/TsgRequestAuthorizer";
11
11
  import { CreateLambda } from "../lambda/createLambda";
12
12
  import { TsgLambdaProps } from "../../config/types/TsgLambdaProps";
@@ -27,6 +27,8 @@ export class CreateApiAndAttachLambdas extends BaseResource<ApiLambdaResult> {
27
27
  private tables?: ITable[]) {
28
28
  super(scope, config);
29
29
 
30
+ console.log('### CreateApiAndAttachLambdas ### Constructor ###: ', config);
31
+
30
32
  this.requireAuthorizer = (this.config.RESOURCES.AUTHORIZER &&
31
33
  this.config.RESOURCES.AUTHORIZER.type) ? true : false;
32
34
 
@@ -36,19 +38,10 @@ export class CreateApiAndAttachLambdas extends BaseResource<ApiLambdaResult> {
36
38
  throw new Error(`You must provide an authorizer type if a Authorizer is required`);
37
39
  }
38
40
 
39
- this.onInit();
41
+ this.createdResources = this.createResource(scope)!;
40
42
  }
41
43
 
42
- protected createResource(scope: Construct): any[] | null {
43
-
44
- return null;
45
- }
46
-
47
- protected createOutput<T>(scope: Construct, createdAssets: T[]): void {
48
- return;
49
- }
50
-
51
- private onInit() {
44
+ protected createResource(scope: Construct): ApiLambdaResult[] | null {
52
45
 
53
46
  let authorizer: TokenAuthorizer | RequestAuthorizer | undefined | null = undefined;
54
47
 
@@ -68,9 +61,22 @@ export class CreateApiAndAttachLambdas extends BaseResource<ApiLambdaResult> {
68
61
  // Create Routes on API Gateway for Lambdas from config
69
62
  this.AddRoutes(this.config, this.gatewayApi, lambdas.Lambdas, authorizer || undefined);
70
63
 
71
- return lambdas.Lambdas;
64
+ const result: ApiLambdaResult = {
65
+ api: this.gatewayApi,
66
+ authorizer: authorizer
67
+ };
68
+ return [result];
72
69
  }
73
70
 
71
+ protected createOutput<T>(scope: Construct, createdAssets: T[]): void {
72
+
73
+ this.createdResources!.forEach((x, idx) => {
74
+ new CfnOutput(scope, `Authorizerr-${idx}`, {
75
+ value: x.authorizer?.authorizerArn!
76
+ });
77
+ });
78
+ }
79
+
74
80
  private createAuthorizer() {
75
81
 
76
82
  let authorizer: TokenAuthorizer | RequestAuthorizer | undefined = undefined;