@sylvesterllc/aws-constructs 1.0.21 → 1.0.23
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.
|
@@ -5,11 +5,13 @@ const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
|
|
|
5
5
|
class Routes {
|
|
6
6
|
static createResource(prop, api, lambdaNode, authorizer) {
|
|
7
7
|
const routeMap = new Map();
|
|
8
|
+
let activeRoutePath = "";
|
|
9
|
+
let activeResource = undefined;
|
|
8
10
|
// Only attach lambda to an Api Gateway if a route exist
|
|
9
11
|
if (prop.apiGateway?.route) {
|
|
10
12
|
// Note: this now uses the bundle version as the first segment in the path.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
activeRoutePath = (prop.apiGateway.useRouteOverride) ? "/" : `v${(prop.apiGateway.version) ? prop.apiGateway.version : 1}`;
|
|
14
|
+
activeResource = Routes.routeMap.get(activeRoutePath) || api.root.addResource(activeRoutePath);
|
|
13
15
|
Routes.routeMap.set(activeRoutePath, activeResource);
|
|
14
16
|
// Now we go through our route segments creating the rest of the path.
|
|
15
17
|
const pathSegments = prop.apiGateway?.route.split("/").filter(x => (x));
|
|
@@ -27,4 +29,4 @@ class Routes {
|
|
|
27
29
|
Routes.Resources = [];
|
|
28
30
|
Routes.routeMap = new Map();
|
|
29
31
|
exports.Routes = Routes;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9oZWxwZXJzL2NyZWF0ZVJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBb0c7QUFLcEcsTUFBYSxNQUFNO0lBS1IsTUFBTSxDQUFDLGNBQWMsQ0FDeEIsSUFBbUIsRUFDbkIsR0FBYSxFQUNiLFVBQTBCLEVBQzFCLFVBQTRCO1FBRTVCLE1BQU0sUUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWxELElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLGNBQWMsR0FBeUIsU0FBUyxDQUFDO1FBRXJELHlEQUF5RDtRQUN6RCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFO1lBRXBCLDZFQUE2RTtZQUM3RSxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxSCxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRXpELHVFQUF1RTtZQUN2RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxQyxlQUFlLEdBQUcsR0FBRyxlQUFlLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzFELElBQUksaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksY0FBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0csTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3hELGNBQWMsR0FBRyxpQkFBaUIsQ0FBQzthQUN0QztZQUVELHdEQUF3RDtZQUN4RCxjQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLEtBQUssRUFDckQsSUFBSSxrQ0FBaUIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzVEO0lBQ0wsQ0FBQzs7QUFwQ2EsZ0JBQVMsR0FBZSxFQUFFLENBQUM7QUFDMUIsZUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFIM0Isd0JBQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzdEFwaSwgTGFtYmRhSW50ZWdyYXRpb24sIFJlc291cmNlLCBUb2tlbkF1dGhvcml6ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBUc2dMYW1iZGFQcm9wIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90eXBlc1wiO1xuXG5cbmV4cG9ydCBjbGFzcyBSb3V0ZXMge1xuXG4gICAgcHVibGljIHN0YXRpYyBSZXNvdXJjZXM6IFJlc291cmNlW10gPSBbXTtcbiAgICBwcml2YXRlIHN0YXRpYyByb3V0ZU1hcCA9IG5ldyBNYXAoKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUmVzb3VyY2UoXG4gICAgICAgIHByb3A6IFRzZ0xhbWJkYVByb3AsXG4gICAgICAgIGFwaTogSVJlc3RBcGksXG4gICAgICAgIGxhbWJkYU5vZGU6IE5vZGVqc0Z1bmN0aW9uLFxuICAgICAgICBhdXRob3JpemVyPzogVG9rZW5BdXRob3JpemVyKSB7XG5cbiAgICAgICAgY29uc3Qgcm91dGVNYXA6IE1hcDxzdHJpbmcsIFJlc291cmNlPiA9IG5ldyBNYXAoKTtcblxuICAgICAgICBsZXQgYWN0aXZlUm91dGVQYXRoID0gXCJcIjtcbiAgICAgICAgbGV0IGFjdGl2ZVJlc291cmNlOiBSZXNvdXJjZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyAgT25seSBhdHRhY2ggbGFtYmRhIHRvIGFuIEFwaSBHYXRld2F5IGlmIGEgcm91dGUgZXhpc3RcbiAgICAgICAgaWYgKHByb3AuYXBpR2F0ZXdheT8ucm91dGUpIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vICBOb3RlOiAgdGhpcyBub3cgdXNlcyB0aGUgYnVuZGxlIHZlcnNpb24gYXMgdGhlIGZpcnN0IHNlZ21lbnQgaW4gdGhlIHBhdGguXG4gICAgICAgICAgICAgICAgYWN0aXZlUm91dGVQYXRoID0gKHByb3AuYXBpR2F0ZXdheS51c2VSb3V0ZU92ZXJyaWRlKT8gXCIvXCIgOiBgdiR7KHByb3AuYXBpR2F0ZXdheS52ZXJzaW9uKSA/IHByb3AuYXBpR2F0ZXdheS52ZXJzaW9uIDogMX1gO1xuICAgICAgICAgICAgICAgIGFjdGl2ZVJlc291cmNlID0gUm91dGVzLnJvdXRlTWFwLmdldChhY3RpdmVSb3V0ZVBhdGgpIHx8IGFwaS5yb290LmFkZFJlc291cmNlKGFjdGl2ZVJvdXRlUGF0aCk7XG4gICAgICAgICAgICAgICAgUm91dGVzLnJvdXRlTWFwLnNldChhY3RpdmVSb3V0ZVBhdGgsIGFjdGl2ZVJlc291cmNlKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gIE5vdyB3ZSBnbyB0aHJvdWdoIG91ciByb3V0ZSBzZWdtZW50cyBjcmVhdGluZyB0aGUgcmVzdCBvZiB0aGUgcGF0aC5cbiAgICAgICAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHByb3AuYXBpR2F0ZXdheT8ucm91dGUuc3BsaXQoXCIvXCIpLmZpbHRlcih4ID0+ICh4KSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhTZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVJvdXRlUGF0aCA9IGAke2FjdGl2ZVJvdXRlUGF0aH0vJHtwYXRoU2VnbWVudHNbaV19YDtcbiAgICAgICAgICAgICAgICBsZXQgc2Vjb25kYXJ5UmVzb3VyY2UgPSBSb3V0ZXMucm91dGVNYXAuZ2V0KGFjdGl2ZVJvdXRlUGF0aCkgfHwgYWN0aXZlUmVzb3VyY2UhLmFkZFJlc291cmNlKHBhdGhTZWdtZW50c1tpXSk7XG4gICAgICAgICAgICAgICAgUm91dGVzLnJvdXRlTWFwLnNldChhY3RpdmVSb3V0ZVBhdGgsIHNlY29uZGFyeVJlc291cmNlKTtcbiAgICAgICAgICAgICAgICBhY3RpdmVSZXNvdXJjZSA9IHNlY29uZGFyeVJlc291cmNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyAgRmluYWxseSwgd2UgYXR0YWNoIG91ciBmdW5jdGlvbiB0byB0aGUgbGFzdCByZXNvdXJjZVxuICAgICAgICAgICAgYWN0aXZlUmVzb3VyY2UhLmFkZE1ldGhvZChwcm9wLmFwaUdhdGV3YXkubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICAgICAgICAgIG5ldyBMYW1iZGFJbnRlZ3JhdGlvbihsYW1iZGFOb2RlLCB7IHByb3h5OiB0cnVlLCB9KSxcbiAgICAgICAgICAgICAgICBwcm9wLmFwaUdhdGV3YXkuc2VjdXJlID8geyBhdXRob3JpemVyIH0gOiB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG59Il19
|
package/package.json
CHANGED
|
@@ -5,39 +5,42 @@ import { TsgLambdaProp } from "../../config/types";
|
|
|
5
5
|
|
|
6
6
|
export class Routes {
|
|
7
7
|
|
|
8
|
-
public static Resources: Resource[] = [];
|
|
9
|
-
private static routeMap = new Map();
|
|
8
|
+
public static Resources: Resource[] = [];
|
|
9
|
+
private static routeMap = new Map();
|
|
10
10
|
|
|
11
|
-
public static createResource(
|
|
12
|
-
prop: TsgLambdaProp,
|
|
13
|
-
api: IRestApi,
|
|
14
|
-
lambdaNode: NodejsFunction,
|
|
11
|
+
public static createResource(
|
|
12
|
+
prop: TsgLambdaProp,
|
|
13
|
+
api: IRestApi,
|
|
14
|
+
lambdaNode: NodejsFunction,
|
|
15
15
|
authorizer?: TokenAuthorizer) {
|
|
16
16
|
|
|
17
17
|
const routeMap: Map<string, Resource> = new Map();
|
|
18
18
|
|
|
19
|
+
let activeRoutePath = "";
|
|
20
|
+
let activeResource: Resource | undefined = undefined;
|
|
21
|
+
|
|
19
22
|
// Only attach lambda to an Api Gateway if a route exist
|
|
20
23
|
if (prop.apiGateway?.route) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
|
|
25
|
+
// Note: this now uses the bundle version as the first segment in the path.
|
|
26
|
+
activeRoutePath = (prop.apiGateway.useRouteOverride)? "/" : `v${(prop.apiGateway.version) ? prop.apiGateway.version : 1}`;
|
|
27
|
+
activeResource = Routes.routeMap.get(activeRoutePath) || api.root.addResource(activeRoutePath);
|
|
28
|
+
Routes.routeMap.set(activeRoutePath, activeResource);
|
|
29
|
+
|
|
30
|
+
// Now we go through our route segments creating the rest of the path.
|
|
31
|
+
const pathSegments = prop.apiGateway?.route.split("/").filter(x => (x));
|
|
32
|
+
for (let i = 0; i < pathSegments.length; i++) {
|
|
33
|
+
activeRoutePath = `${activeRoutePath}/${pathSegments[i]}`;
|
|
34
|
+
let secondaryResource = Routes.routeMap.get(activeRoutePath) || activeResource!.addResource(pathSegments[i]);
|
|
35
|
+
Routes.routeMap.set(activeRoutePath, secondaryResource);
|
|
36
|
+
activeResource = secondaryResource;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Finally, we attach our function to the last resource
|
|
40
|
+
activeResource!.addMethod(prop.apiGateway.method || 'GET',
|
|
41
|
+
new LambdaIntegration(lambdaNode, { proxy: true, }),
|
|
42
|
+
prop.apiGateway.secure ? { authorizer } : undefined);
|
|
34
43
|
}
|
|
35
|
-
|
|
36
|
-
// Finally, we attach our function to the last resource
|
|
37
|
-
activeResource.addMethod(prop.apiGateway.method || 'GET',
|
|
38
|
-
new LambdaIntegration(lambdaNode, { proxy: true, }),
|
|
39
|
-
prop.apiGateway.secure ? { authorizer } : undefined);
|
|
40
44
|
}
|
|
41
|
-
}
|
|
42
45
|
|
|
43
46
|
}
|