aws-lambda-api-tools 0.1.15 → 0.1.17

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.
Files changed (58) hide show
  1. package/bin/bootstrap-iam.js +1 -1
  2. package/dist/bin/bootstrap-iam.d.ts +2 -0
  3. package/dist/bin/bootstrap-iam.d.ts.map +1 -0
  4. package/dist/bin/bootstrap-iam.js +81 -0
  5. package/dist/bin/bootstrap-iam.js.map +1 -0
  6. package/dist/bin/cli.d.ts +2 -0
  7. package/dist/bin/cli.d.ts.map +1 -0
  8. package/dist/bin/cli.js +32 -0
  9. package/dist/bin/cli.js.map +1 -0
  10. package/dist/index.d.ts +7 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +14 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/lib/authorization-helper.d.ts +3 -0
  15. package/dist/lib/authorization-helper.d.ts.map +1 -0
  16. package/dist/lib/authorization-helper.js +14 -0
  17. package/dist/lib/authorization-helper.js.map +1 -0
  18. package/dist/lib/cf-yaml-helper.d.ts +26 -0
  19. package/dist/lib/cf-yaml-helper.d.ts.map +1 -0
  20. package/dist/lib/cf-yaml-helper.js +148 -0
  21. package/dist/lib/cf-yaml-helper.js.map +1 -0
  22. package/dist/lib/custom-error.d.ts +8 -0
  23. package/dist/lib/custom-error.d.ts.map +1 -0
  24. package/dist/lib/custom-error.js +19 -0
  25. package/dist/lib/custom-error.js.map +1 -0
  26. package/dist/lib/lambda-route-proxy-entry-handler.d.ts +15 -0
  27. package/dist/lib/lambda-route-proxy-entry-handler.d.ts.map +1 -0
  28. package/dist/lib/lambda-route-proxy-entry-handler.js +141 -0
  29. package/dist/lib/lambda-route-proxy-entry-handler.js.map +1 -0
  30. package/dist/lib/lambda-route-proxy-path-not-found.d.ts +3 -0
  31. package/dist/lib/lambda-route-proxy-path-not-found.d.ts.map +1 -0
  32. package/dist/lib/lambda-route-proxy-path-not-found.js +24 -0
  33. package/dist/lib/lambda-route-proxy-path-not-found.js.map +1 -0
  34. package/dist/lib/middlewares/route-module-jwt-validation-middleware.d.ts +4 -0
  35. package/dist/lib/middlewares/route-module-jwt-validation-middleware.d.ts.map +1 -0
  36. package/dist/lib/middlewares/route-module-jwt-validation-middleware.js +32 -0
  37. package/dist/lib/middlewares/route-module-jwt-validation-middleware.js.map +1 -0
  38. package/dist/lib/middlewares/route-module-schema-validation-middleware.d.ts +4 -0
  39. package/dist/lib/middlewares/route-module-schema-validation-middleware.d.ts.map +1 -0
  40. package/dist/lib/middlewares/route-module-schema-validation-middleware.js +72 -0
  41. package/dist/lib/middlewares/route-module-schema-validation-middleware.js.map +1 -0
  42. package/dist/lib/swagger-route-specification-generator.d.ts +18 -0
  43. package/dist/lib/swagger-route-specification-generator.d.ts.map +1 -0
  44. package/dist/lib/swagger-route-specification-generator.js +115 -0
  45. package/dist/lib/swagger-route-specification-generator.js.map +1 -0
  46. package/dist/lib/swagger-specification-types.d.ts +143 -0
  47. package/dist/lib/swagger-specification-types.d.ts.map +1 -0
  48. package/dist/lib/swagger-specification-types.js +3 -0
  49. package/dist/lib/swagger-specification-types.js.map +1 -0
  50. package/dist/lib/types-and-interfaces.d.ts +78 -0
  51. package/dist/lib/types-and-interfaces.d.ts.map +1 -0
  52. package/dist/lib/types-and-interfaces.js +3 -0
  53. package/dist/lib/types-and-interfaces.js.map +1 -0
  54. package/dist/lib/utils.d.ts +2 -0
  55. package/dist/lib/utils.d.ts.map +1 -0
  56. package/dist/lib/utils.js +17 -0
  57. package/dist/lib/utils.js.map +1 -0
  58. package/package.json +1 -1
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lambdaRouteProxyPathNotFound = void 0;
4
+ const handler = async (input) => {
5
+ const v1Method = input.rawEvent.requestContext.httpMethod;
6
+ const v2Method = input.rawEvent.requestContext.http.method;
7
+ if (v1Method === 'OPTIONS' || v2Method === 'OPTIONS') {
8
+ return {
9
+ statusCode: 200,
10
+ headers: {
11
+ 'Access-Control-Allow-Origin': '*',
12
+ 'Access-Control-Allow-Methods': '*',
13
+ 'Access-Control-Allow-Headers': '*',
14
+ 'Access-Control-Max-Age': 300,
15
+ }
16
+ };
17
+ }
18
+ return { statusCode: 404, body: JSON.stringify('Not found') };
19
+ };
20
+ exports.lambdaRouteProxyPathNotFound = {
21
+ routeChain: [handler],
22
+ routeSchema: {},
23
+ };
24
+ //# sourceMappingURL=lambda-route-proxy-path-not-found.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda-route-proxy-path-not-found.js","sourceRoot":"","sources":["../../src/lib/lambda-route-proxy-path-not-found.ts"],"names":[],"mappings":";;;AAMA,MAAM,OAAO,GAAG,KAAK,EAAE,KAAqB,EAAgB,EAAE;IAC5D,MAAM,QAAQ,GAAI,KAAK,CAAC,QAAiC,CAAC,cAAc,CAAC,UAAU,CAAC;IACpF,MAAM,QAAQ,GAAI,KAAK,CAAC,QAAmC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IACvF,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE;QACpD,OAAO;YACL,UAAU,EAAE,GAAG;YACf,OAAO,EAAE;gBACP,6BAA6B,EAAE,GAAG;gBAClC,8BAA8B,EAAE,GAAG;gBACnC,8BAA8B,EAAE,GAAG;gBACnC,wBAAwB,EAAE,GAAG;aAC9B;SACF,CAAC;KACH;IACD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;AAChE,CAAC,CAAC;AAEW,QAAA,4BAA4B,GAAgB;IACvD,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,WAAW,EAAE,EAAE;CAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { RouteArguments } from '../types-and-interfaces';
2
+ export declare const jwtValidationMiddleware: (incomingData: RouteArguments) => RouteArguments;
3
+ export default jwtValidationMiddleware;
4
+ //# sourceMappingURL=route-module-jwt-validation-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-module-jwt-validation-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middlewares/route-module-jwt-validation-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIzD,eAAO,MAAM,uBAAuB,iBAAkB,cAAc,KAAG,cAuBtE,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jwtValidationMiddleware = void 0;
4
+ const custom_error_1 = require("../custom-error");
5
+ const utils_1 = require("../utils");
6
+ const jwtValidationMiddleware = (incomingData) => {
7
+ const { routeData = {} } = incomingData;
8
+ const authHeader = incomingData.rawEvent.headers['authorization'];
9
+ if (!authHeader) {
10
+ throw new custom_error_1.CustomError('No authorization header provided.', 401);
11
+ }
12
+ const tokenString = authHeader.replace('Bearer ', '');
13
+ const jwt = (0, utils_1.parseJwt)(tokenString);
14
+ console.log(`Decoded token: ${JSON.stringify(jwt)}`);
15
+ if (!jwt) {
16
+ throw new custom_error_1.CustomError('Token not valid.', 401);
17
+ }
18
+ if (!jwt.email_verified) {
19
+ throw new custom_error_1.CustomError('Email for this account has not been verified.', 401);
20
+ }
21
+ if ((jwt.exp * 1000) < Date.now()) {
22
+ throw new custom_error_1.CustomError('Session token is expired.', 403);
23
+ }
24
+ if (!jwt || !(jwt.email && jwt.email_verified)) {
25
+ throw new custom_error_1.CustomError('Token not valid.', 401);
26
+ }
27
+ routeData.jwt = jwt;
28
+ return { ...incomingData, routeData };
29
+ };
30
+ exports.jwtValidationMiddleware = jwtValidationMiddleware;
31
+ exports.default = exports.jwtValidationMiddleware;
32
+ //# sourceMappingURL=route-module-jwt-validation-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-module-jwt-validation-middleware.js","sourceRoot":"","sources":["../../../src/lib/middlewares/route-module-jwt-validation-middleware.ts"],"names":[],"mappings":";;;AACA,kDAA8C;AAC9C,oCAAoC;AAE7B,MAAM,uBAAuB,GAAG,CAAC,YAA4B,EAAkB,EAAE;IACtF,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,YAAY,CAAC;IACxC,MAAM,UAAU,GAAG,YAAY,CAAC,QAAS,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACnE,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,0BAAW,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;KACjE;IACD,MAAM,WAAW,GAAG,UAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAA,gBAAQ,EAAC,WAAW,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,0BAAW,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;KAChD;IACD,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;QACvB,MAAM,IAAI,0BAAW,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC;KAC7E;IACD,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;QACjC,MAAM,IAAI,0BAAW,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;KACzD;IACD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE;QAC9C,MAAM,IAAI,0BAAW,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;KAChD;IACD,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;IACpB,OAAO,EAAE,GAAG,YAAY,EAAE,SAAS,EAAE,CAAC;AACxC,CAAC,CAAC;AAvBW,QAAA,uBAAuB,2BAuBlC;AAEF,kBAAe,+BAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { RouteArguments, RouteSchema } from '../types-and-interfaces';
2
+ export declare const schemaValidationMiddleware: (routeSchema: RouteSchema) => (incomingData: RouteArguments) => RouteArguments;
3
+ export default schemaValidationMiddleware;
4
+ //# sourceMappingURL=route-module-schema-validation-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-module-schema-validation-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middlewares/route-module-schema-validation-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtE,eAAO,MAAM,0BAA0B,gBAAiB,WAAW,oBAAoB,cAAc,KAAG,cAwDvG,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.schemaValidationMiddleware = void 0;
7
+ const joi_1 = __importDefault(require("joi"));
8
+ const custom_error_1 = require("../custom-error");
9
+ const schemaValidationMiddleware = (routeSchema) => (incomingData) => {
10
+ console.log(JSON.stringify(incomingData));
11
+ let { params, body, query, ...rest } = incomingData;
12
+ params = params || {};
13
+ body = body || {};
14
+ query = query || {};
15
+ const { params: sParams, requestBody: sBody, query: sQuery } = routeSchema;
16
+ const validatedOutput = {};
17
+ const errorMap = {
18
+ params: [],
19
+ body: [],
20
+ query: [],
21
+ };
22
+ if (sParams) {
23
+ console.log(`params schema: ${JSON.stringify(sParams)}`);
24
+ console.log(`params data: ${JSON.stringify(params)}`);
25
+ try {
26
+ validatedOutput.params = joi_1.default.attempt(params, joi_1.default.compile(sParams), { abortEarly: false });
27
+ }
28
+ catch (err) {
29
+ console.error(`sParams Error: ${JSON.stringify(err)}`);
30
+ errorMap.params.push(...err.details.map((d) => d.message));
31
+ }
32
+ }
33
+ if (sBody) {
34
+ console.log(`body schema: ${JSON.stringify(sBody)}`);
35
+ console.log(`body data: ${JSON.stringify(body)}`);
36
+ try {
37
+ validatedOutput.body = joi_1.default.attempt(body, joi_1.default.compile(sBody), { allowUnknown: true, abortEarly: false });
38
+ }
39
+ catch (err) {
40
+ console.error(`sBody Error: ${JSON.stringify(err)}`);
41
+ errorMap.body.push(...err.details.map((d) => d.message));
42
+ }
43
+ }
44
+ if (sQuery) {
45
+ console.log(`query schema: ${JSON.stringify(sQuery)}`);
46
+ console.log(`query data: ${JSON.stringify(query)}`);
47
+ try {
48
+ validatedOutput.query = joi_1.default.attempt(query, joi_1.default.compile(sQuery), { abortEarly: false });
49
+ }
50
+ catch (err) {
51
+ console.error(`sQuery Error: ${JSON.stringify(err)}`);
52
+ errorMap.query.push(...err.details.map((d) => d.message));
53
+ }
54
+ }
55
+ if (errorMap.body.length || errorMap.params.length || errorMap.query.length) {
56
+ const validationErrorMessage = `The request contains validation errors.
57
+ ${errorMap.params.length ? 'Path Parameters:\n' + errorMap.params.join('\n') : ''}
58
+ ${errorMap.query.length ? 'Querystring Parameters:\n' + errorMap.query.join('\n') : ''}
59
+ ${errorMap.body.length ? 'Request Body:\n' + errorMap.body.join('\n') : ''}
60
+ `;
61
+ throw new custom_error_1.CustomError(validationErrorMessage, 400);
62
+ }
63
+ else {
64
+ return {
65
+ ...validatedOutput,
66
+ ...rest,
67
+ };
68
+ }
69
+ };
70
+ exports.schemaValidationMiddleware = schemaValidationMiddleware;
71
+ exports.default = exports.schemaValidationMiddleware;
72
+ //# sourceMappingURL=route-module-schema-validation-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-module-schema-validation-middleware.js","sourceRoot":"","sources":["../../../src/lib/middlewares/route-module-schema-validation-middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { ComponentsSchema } from 'joi-to-swagger';
2
+ import { ConfigRouteEntry, RouteSchema } from './types-and-interfaces';
3
+ import * as swaggerTypes from './swagger-specification-types';
4
+ type RouteSpecType = {
5
+ path: {
6
+ description: string;
7
+ operationId?: string;
8
+ parameters?: Array<swaggerTypes.ParameterObject>;
9
+ requestBody?: swaggerTypes.RequestBody;
10
+ responses?: Record<string, swaggerTypes.ResponseObject>;
11
+ };
12
+ components: {
13
+ schemas: Record<string, ComponentsSchema>;
14
+ };
15
+ };
16
+ export declare const generateRouteSwaggerSpec: (schema: RouteSchema, routeEntry: ConfigRouteEntry) => RouteSpecType;
17
+ export {};
18
+ //# sourceMappingURL=swagger-route-specification-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger-route-specification-generator.d.ts","sourceRoot":"","sources":["../../src/lib/swagger-route-specification-generator.ts"],"names":[],"mappings":"AACA,OAAqB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAE9D,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE;QACJ,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACjD,WAAW,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;KACzD,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;KAC3C,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,wBAAwB,WAAY,WAAW,cAAc,gBAAgB,KAAG,aAsF5F,CAAC"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.generateRouteSwaggerSpec = void 0;
30
+ const joi = __importStar(require("joi"));
31
+ const joi_to_swagger_1 = __importDefault(require("joi-to-swagger"));
32
+ const generateRouteSwaggerSpec = (schema, routeEntry) => {
33
+ const { requestBody: requestBodyJoiSchema, query: queryJoiSchema, params: pathParamsJoiSchema, responseBody: responseBodyJoiSchema } = { requestBody: {}, query: {}, params: {}, responseBody: {}, ...schema };
34
+ const { description, swaggerMethodName } = routeEntry;
35
+ // console.log('schema:')
36
+ // console.log(schema);
37
+ let parameters = [];
38
+ let requestBody = undefined;
39
+ let responseBody = { description: 'Default response' };
40
+ // let requestBodyRefKey: string | undefined;
41
+ // let responseBodyRefKey: string | undefined;
42
+ let componentSchemas = {};
43
+ if (pathParamsJoiSchema && Object.keys(pathParamsJoiSchema).length > 0) {
44
+ const pathParamsKeys = Object.keys(pathParamsJoiSchema);
45
+ const pathParamsSwaggerParameters = pathParamsKeys.map((key) => ({
46
+ name: key,
47
+ in: 'path',
48
+ required: true,
49
+ schema: (0, joi_to_swagger_1.default)(pathParamsJoiSchema[key]).swagger,
50
+ }));
51
+ parameters = Array().concat(parameters, pathParamsSwaggerParameters);
52
+ }
53
+ if (queryJoiSchema && Object.keys(queryJoiSchema).length > 0) {
54
+ const queryKeys = Object.keys(queryJoiSchema);
55
+ const queryParamsSwaggerParameters = queryKeys.map((key) => {
56
+ const { presence } = queryJoiSchema[key]._flags;
57
+ return {
58
+ name: key,
59
+ in: 'query',
60
+ required: presence === 'required',
61
+ schema: (0, joi_to_swagger_1.default)(queryJoiSchema[key]).swagger,
62
+ };
63
+ });
64
+ parameters = Array().concat(parameters, queryParamsSwaggerParameters);
65
+ }
66
+ if (requestBodyJoiSchema && Object.keys(requestBodyJoiSchema).length > 0) {
67
+ const { swagger, components: requestComponent } = (0, joi_to_swagger_1.default)(joi.isSchema(requestBodyJoiSchema) ? requestBodyJoiSchema : joi.object(requestBodyJoiSchema));
68
+ requestBody = {
69
+ description: 'Default response body',
70
+ content: {
71
+ 'application/json': {
72
+ schema: swagger,
73
+ },
74
+ },
75
+ };
76
+ // console.log(swagger);
77
+ if (swagger.$ref || (swagger.items && swagger.items.$ref)) {
78
+ // requestBodyRefKey = swagger.$ref.split('/').reverse()[0];
79
+ componentSchemas = { ...componentSchemas, ...requestComponent.schemas };
80
+ }
81
+ }
82
+ if (responseBodyJoiSchema && Object.keys(responseBodyJoiSchema).length > 0) {
83
+ const { swagger, components: responseComponent } = (0, joi_to_swagger_1.default)(joi.isSchema(responseBodyJoiSchema) ? responseBodyJoiSchema : joi.object(responseBodyJoiSchema));
84
+ // console.log(JSON.stringify(j2s, null, 2));
85
+ // console.log(swagger);
86
+ responseBody = {
87
+ description: 'Default response body',
88
+ content: {
89
+ 'application/json': {
90
+ schema: swagger,
91
+ },
92
+ },
93
+ };
94
+ if (swagger.$ref || (swagger.items && swagger.items.$ref)) {
95
+ // responseBodyRefKey = swagger.$ref.split('/').reverse()[0];
96
+ componentSchemas = { ...componentSchemas, ...responseComponent.schemas };
97
+ }
98
+ }
99
+ return {
100
+ path: {
101
+ description,
102
+ operationId: swaggerMethodName || undefined,
103
+ parameters,
104
+ requestBody,
105
+ responses: {
106
+ '200': responseBody,
107
+ },
108
+ },
109
+ components: {
110
+ schemas: componentSchemas,
111
+ },
112
+ };
113
+ };
114
+ exports.generateRouteSwaggerSpec = generateRouteSwaggerSpec;
115
+ //# sourceMappingURL=swagger-route-specification-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger-route-specification-generator.js","sourceRoot":"","sources":["../../src/lib/swagger-route-specification-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /// <reference types="node" />
2
+ import type { URL } from 'url';
3
+ export interface OpenAPI2 {
4
+ swagger: string;
5
+ paths?: Record<string, PathItemObject>;
6
+ definitions?: Record<string, SchemaObject>;
7
+ parameters?: ParameterObject[];
8
+ responses?: Record<string, ResponseObject>;
9
+ }
10
+ export interface OpenAPI3 {
11
+ openapi: string;
12
+ paths?: Record<string, PathItemObject>;
13
+ components?: {
14
+ schemas?: Record<string, ReferenceObject | SchemaObject>;
15
+ responses?: Record<string, ReferenceObject | ResponseObject>;
16
+ parameters?: Record<string, ReferenceObject | ParameterObject>;
17
+ requestBodies?: Record<string, ReferenceObject | RequestBody>;
18
+ headers?: Record<string, ReferenceObject | HeaderObject>;
19
+ links?: Record<string, ReferenceObject | LinkObject>;
20
+ };
21
+ }
22
+ export interface HeaderObject {
23
+ type?: string;
24
+ description?: string;
25
+ required?: boolean;
26
+ schema: ReferenceObject | SchemaObject;
27
+ }
28
+ export interface PathItemObject {
29
+ $ref?: string;
30
+ summary?: string;
31
+ description?: string;
32
+ get?: OperationObject;
33
+ put?: OperationObject;
34
+ post?: OperationObject;
35
+ delete?: OperationObject;
36
+ options?: OperationObject;
37
+ head?: OperationObject;
38
+ patch?: OperationObject;
39
+ trace?: OperationObject;
40
+ parameters?: (ReferenceObject | ParameterObject)[];
41
+ }
42
+ export interface LinkObject {
43
+ operationRef?: string;
44
+ operationId?: string;
45
+ parameters?: (ReferenceObject | ParameterObject)[];
46
+ requestBody?: RequestBody;
47
+ description?: string;
48
+ }
49
+ export interface OperationObject {
50
+ description?: string;
51
+ tags?: string[];
52
+ summary?: string;
53
+ operationId?: string;
54
+ parameters?: (ReferenceObject | ParameterObject)[];
55
+ requestBody?: ReferenceObject | RequestBody;
56
+ responses?: Record<string, ReferenceObject | ResponseObject>;
57
+ }
58
+ export interface ParameterObject {
59
+ name?: string;
60
+ in?: "query" | "header" | "path" | /* V3 */ "cookie" | /* V2 */ "formData" | /* V2 */ "body";
61
+ description?: string;
62
+ required?: boolean;
63
+ deprecated?: boolean;
64
+ schema?: ReferenceObject | SchemaObject;
65
+ type?: "string" | "number" | "integer" | "boolean" | "array" | "file";
66
+ items?: ReferenceObject | SchemaObject;
67
+ enum?: string[];
68
+ }
69
+ export type ReferenceObject = {
70
+ $ref: string;
71
+ };
72
+ export interface ResponseObject {
73
+ description?: string;
74
+ headers?: Record<string, ReferenceObject | HeaderObject>;
75
+ schema?: ReferenceObject | SchemaObject;
76
+ links?: Record<string, ReferenceObject | LinkObject>;
77
+ content?: {
78
+ [contentType: string]: {
79
+ schema: ReferenceObject | SchemaObject;
80
+ };
81
+ };
82
+ }
83
+ export interface RequestBody {
84
+ description?: string;
85
+ content?: {
86
+ [contentType: string]: {
87
+ schema: ReferenceObject | SchemaObject;
88
+ };
89
+ };
90
+ }
91
+ export interface SchemaObject {
92
+ title?: string;
93
+ description?: string;
94
+ required?: string[];
95
+ enum?: string[];
96
+ type?: string;
97
+ items?: ReferenceObject | SchemaObject;
98
+ allOf?: SchemaObject;
99
+ properties?: Record<string, ReferenceObject | SchemaObject>;
100
+ default?: any;
101
+ additionalProperties?: boolean | ReferenceObject | SchemaObject;
102
+ nullable?: boolean;
103
+ oneOf?: (ReferenceObject | SchemaObject)[];
104
+ anyOf?: (ReferenceObject | SchemaObject)[];
105
+ format?: string;
106
+ }
107
+ export type SchemaFormatter = (schemaObj: SchemaObject) => string | undefined;
108
+ export interface SwaggerToTSOptions {
109
+ /** Allow arbitrary properties on schemas (default: false) */
110
+ additionalProperties?: boolean;
111
+ /** (optional) Specify auth if using openapi-typescript to fetch URL */
112
+ auth?: string;
113
+ /** (optional) Specify current working directory (cwd) to resolve remote schemas on disk (not needed for remote URL schemas) */
114
+ cwd?: URL;
115
+ /** Specify a formatter */
116
+ formatter?: SchemaFormatter;
117
+ /** Generates immutable types (readonly properties and readonly array) */
118
+ immutableTypes?: boolean;
119
+ /** (optional) Treat schema objects with default values as non-nullable */
120
+ defaultNonNullable?: boolean;
121
+ /** (optional) Path to Prettier config */
122
+ prettierConfig?: string;
123
+ /** (optional) Parsing input document as raw schema rather than OpenAPI document */
124
+ rawSchema?: boolean;
125
+ /** (optional) Should logging be suppressed? (necessary for STDOUT) */
126
+ silent?: boolean;
127
+ /** (optional) OpenAPI version. Must be present if parsing raw schema */
128
+ version?: number;
129
+ }
130
+ /** Context passed to all submodules */
131
+ export interface GlobalContext {
132
+ additionalProperties: boolean;
133
+ auth?: string;
134
+ formatter?: SchemaFormatter;
135
+ immutableTypes: boolean;
136
+ defaultNonNullable: boolean;
137
+ /** (optional) Should logging be suppressed? (necessary for STDOUT) */
138
+ silent?: boolean;
139
+ namespace?: string;
140
+ rawSchema: boolean;
141
+ version: number;
142
+ }
143
+ //# sourceMappingURL=swagger-specification-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger-specification-types.d.ts","sourceRoot":"","sources":["../../src/lib/swagger-specification-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=swagger-specification-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger-specification-types.js","sourceRoot":"","sources":["../../src/lib/swagger-specification-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ import { APIGatewayProxyEvent, APIGatewayProxyEventV2 } from 'aws-lambda';
2
+ import { Schema } from 'joi';
3
+ import * as swaggerTypes from './swagger-specification-types';
4
+ export type ConfigRouteEntry = {
5
+ functionName?: string;
6
+ description: string;
7
+ swaggerMethodName?: string;
8
+ path: string;
9
+ method: 'ANY' | 'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'PATCH' | 'POST' | 'PUT';
10
+ generateOpenApiDocs: boolean;
11
+ handlerPath: string;
12
+ authorizeRoute?: boolean;
13
+ };
14
+ export type RouteConfig = {
15
+ authorizeAllRoutes?: boolean;
16
+ routes: Array<ConfigRouteEntry>;
17
+ };
18
+ export type RouteArguments = {
19
+ params?: any;
20
+ body?: any;
21
+ query?: any;
22
+ form?: any;
23
+ rawEvent?: APIGatewayProxyEventV2 | APIGatewayProxyEvent;
24
+ routeData?: any;
25
+ };
26
+ export interface RouteSchema {
27
+ params?: {
28
+ [key: string]: Schema<any>;
29
+ };
30
+ query?: {
31
+ [key: string]: Schema<any>;
32
+ };
33
+ form?: {
34
+ [key: string]: Schema<any>;
35
+ };
36
+ requestBody?: Schema<any> | {
37
+ [key: string]: Schema<any>;
38
+ };
39
+ responseBody?: Schema<any> | {
40
+ [key: string]: Schema<any>;
41
+ };
42
+ }
43
+ export interface BaseResponseObject extends swaggerTypes.ResponseObject {
44
+ }
45
+ export interface ResponseError extends swaggerTypes.ResponseObject {
46
+ error: {
47
+ statusCode: string;
48
+ message: string;
49
+ };
50
+ }
51
+ export interface ResponseData extends swaggerTypes.ResponseObject {
52
+ data: any;
53
+ }
54
+ export type ResponseObject<T> = ResponseData | ResponseError;
55
+ export type BaseRouteResponse<T> = {
56
+ [key in '201' | '202' | '203' | '204' | '205' | '206' | '400' | '401' | '402' | '403' | '404' | '405' | '406' | '407' | '408' | '409' | '410' | '411' | '412' | '413' | '414' | '415' | '416' | '417' | '418' | '419']: ResponseObject<T>;
57
+ };
58
+ export interface RouteResponse<T> extends BaseRouteResponse<T> {
59
+ '200': ResponseObject<T>;
60
+ }
61
+ export type MiddlewareSchemaInputFunction = (input: RouteSchema) => RouteArguments;
62
+ export type MiddlewareArgumentsInputFunction = (input: RouteArguments) => any;
63
+ export type MiddlewareChain = Array<MiddlewareArgumentsInputFunction>;
64
+ export type RouteModule = {
65
+ routeChain: MiddlewareChain;
66
+ routeSchema: RouteSchema;
67
+ };
68
+ export interface Permission {
69
+ id: string;
70
+ systemPermission: string;
71
+ enabled: boolean;
72
+ humanReadableName: string;
73
+ entity: {
74
+ level: string;
75
+ humanReadableName: string;
76
+ };
77
+ }
78
+ //# sourceMappingURL=types-and-interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-and-interfaces.d.ts","sourceRoot":"","sources":["../../src/lib/types-and-interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types-and-interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-and-interfaces.js","sourceRoot":"","sources":["../../src/lib/types-and-interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const parseJwt: (token: string) => any;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,UAAW,MAAM,QAQrC,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseJwt = void 0;
7
+ const atob_1 = __importDefault(require("atob"));
8
+ const parseJwt = (token) => {
9
+ var base64Url = token.includes('.') ? token.split('.')[1] : token;
10
+ var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
11
+ var jsonPayload = decodeURIComponent((0, atob_1.default)(base64).split('').map(function (c) {
12
+ return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
13
+ }).join(''));
14
+ return JSON.parse(jsonPayload);
15
+ };
16
+ exports.parseJwt = parseJwt;
17
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuC;AAEhC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,IAAI,MAAM,GAAG,SAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9D,IAAI,WAAW,GAAG,kBAAkB,CAAC,IAAA,cAAI,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAS,CAAS;QAC9E,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAEb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC,CAAC;AARW,QAAA,QAAQ,YAQnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aws-lambda-api-tools",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "bin": {