cdk-serverless 1.1.44 → 2.0.0

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 (134) hide show
  1. package/README.md +3 -116
  2. package/docs/constructs/.nojekyll +1 -0
  3. package/docs/constructs/assets/highlight.css +92 -0
  4. package/docs/constructs/assets/main.js +58 -0
  5. package/docs/constructs/assets/search.js +1 -0
  6. package/docs/constructs/assets/style.css +1338 -0
  7. package/docs/constructs/classes/AssetCdn.html +165 -0
  8. package/docs/constructs/classes/BaseApi.html +152 -0
  9. package/docs/constructs/classes/CognitoAuthentication.html +172 -0
  10. package/docs/constructs/classes/LambdaFunction.html +1101 -0
  11. package/docs/constructs/classes/RestApi.html +306 -0
  12. package/docs/constructs/classes/SingleTableDatastore.html +155 -0
  13. package/docs/constructs/classes/Workflow.html +170 -0
  14. package/docs/constructs/index.html +122 -0
  15. package/docs/constructs/interfaces/AssetCdnProps.html +89 -0
  16. package/docs/constructs/interfaces/BaseApiProps.html +158 -0
  17. package/docs/constructs/interfaces/CognitoAuthenticationProps.html +151 -0
  18. package/docs/constructs/interfaces/ICognitoAuthentication.html +86 -0
  19. package/docs/constructs/interfaces/IJwtAuthentication.html +96 -0
  20. package/docs/constructs/interfaces/LambdaFunctionProps.html +189 -0
  21. package/docs/constructs/interfaces/LambdaTracingOptions.html +85 -0
  22. package/docs/constructs/interfaces/RestApiProps.html +227 -0
  23. package/docs/constructs/interfaces/SingleTableDatastoreProps.html +109 -0
  24. package/docs/constructs/interfaces/SingleTableDesign.html +113 -0
  25. package/docs/constructs/interfaces/WorkflowProps.html +105 -0
  26. package/docs/constructs/modules.html +85 -0
  27. package/docs/constructs/types/LambdaOptions.html +58 -0
  28. package/docs/lambda/.nojekyll +1 -0
  29. package/docs/lambda/assets/highlight.css +36 -0
  30. package/docs/lambda/assets/main.js +58 -0
  31. package/docs/lambda/assets/search.js +1 -0
  32. package/docs/lambda/assets/style.css +1338 -0
  33. package/docs/lambda/classes/auth.ApiGatewayv1CognitoAuthorizer.html +323 -0
  34. package/docs/lambda/classes/auth.ApiGatewayv1JwtAuthorizer.html +322 -0
  35. package/docs/lambda/classes/auth.ApiGatewayv2CognitoAuthorizer.html +324 -0
  36. package/docs/lambda/classes/auth.ApiGatewayv2JwtAuthorizer.html +320 -0
  37. package/docs/lambda/classes/auth.AppSyncCognitoAuthorizer.html +314 -0
  38. package/docs/lambda/classes/auth.CognitoAuthorizer.html +303 -0
  39. package/docs/lambda/classes/auth.JwtAuthorizer.html +298 -0
  40. package/docs/lambda/classes/errors.BadRequestError.html +193 -0
  41. package/docs/lambda/classes/errors.ForbiddenError.html +193 -0
  42. package/docs/lambda/classes/errors.HttpError.html +199 -0
  43. package/docs/lambda/classes/errors.NotFoundError.html +193 -0
  44. package/docs/lambda/classes/errors.UnauthenticatedError.html +193 -0
  45. package/docs/lambda/functions/api.createAppSyncHandler.html +98 -0
  46. package/docs/lambda/functions/api.createHttpHandler.html +95 -0
  47. package/docs/lambda/functions/api.createOpenApiHandler.html +95 -0
  48. package/docs/lambda/functions/api.createOpenApiHandlerWithRequestBody.html +95 -0
  49. package/docs/lambda/functions/api.createOpenApiHandlerWithRequestBodyNoResponse.html +93 -0
  50. package/docs/lambda/index.html +140 -0
  51. package/docs/lambda/interfaces/api.AppSyncHandlerContext.html +123 -0
  52. package/docs/lambda/interfaces/api.HttpHandlerContext.html +122 -0
  53. package/docs/lambda/interfaces/api.HttpResponseContext.html +117 -0
  54. package/docs/lambda/interfaces/api.Operation.html +109 -0
  55. package/docs/lambda/interfaces/api.OperationWithRequestBody.html +123 -0
  56. package/docs/lambda/modules/api.html +100 -0
  57. package/docs/lambda/modules/auth.html +88 -0
  58. package/docs/lambda/modules/errors.html +86 -0
  59. package/docs/lambda/modules.html +81 -0
  60. package/docs/lambda/types/api.APIGatewayv1Handler.html +79 -0
  61. package/docs/lambda/types/api.AppSyncHandler.html +100 -0
  62. package/docs/lambda/types/api.HttpHandler.html +101 -0
  63. package/docs/projen/.nojekyll +1 -0
  64. package/docs/projen/assets/highlight.css +85 -0
  65. package/docs/projen/assets/main.js +58 -0
  66. package/docs/projen/assets/search.js +1 -0
  67. package/docs/projen/assets/style.css +1338 -0
  68. package/docs/projen/classes/Datastore.html +180 -0
  69. package/docs/projen/classes/RestApi.html +184 -0
  70. package/docs/projen/classes/ServerlessProject.html +1246 -0
  71. package/docs/projen/classes/Workflow.html +178 -0
  72. package/docs/projen/index.html +112 -0
  73. package/docs/projen/interfaces/DatastoreOptions.html +75 -0
  74. package/docs/projen/interfaces/RestApiOptions.html +75 -0
  75. package/docs/projen/interfaces/ServerlessProjectOptions.html +1921 -0
  76. package/docs/projen/interfaces/WorkflowOptions.html +75 -0
  77. package/docs/projen/modules.html +65 -0
  78. package/docs/projen/variables/PACKAGE_NAME.html +48 -0
  79. package/lib/constructs/asset-cdn.js +2 -1
  80. package/lib/constructs/{auth.d.ts → authentication.d.ts} +32 -15
  81. package/lib/constructs/authentication.js +136 -0
  82. package/lib/constructs/base-api.d.ts +10 -21
  83. package/lib/constructs/base-api.js +2 -37
  84. package/lib/constructs/func.d.ts +6 -25
  85. package/lib/constructs/func.js +16 -37
  86. package/lib/constructs/index.d.ts +4 -6
  87. package/lib/constructs/index.js +5 -7
  88. package/lib/constructs/rest-api.d.ts +73 -0
  89. package/lib/constructs/rest-api.js +278 -0
  90. package/lib/constructs/table.d.ts +25 -6
  91. package/lib/constructs/table.js +12 -70
  92. package/lib/constructs/workflow.d.ts +18 -0
  93. package/lib/constructs/workflow.js +58 -0
  94. package/lib/lambda/auth.d.ts +144 -0
  95. package/lib/lambda/auth.js +309 -0
  96. package/lib/lambda/errors.d.ts +16 -0
  97. package/lib/lambda/errors.js +35 -0
  98. package/lib/lambda/handler.d.ts +90 -0
  99. package/lib/lambda/handler.js +217 -0
  100. package/lib/lambda/index.d.ts +3 -0
  101. package/lib/lambda/index.js +30 -0
  102. package/lib/projen/core.d.ts +4 -14
  103. package/lib/projen/core.js +25 -29
  104. package/lib/projen/datastore.d.ts +13 -0
  105. package/lib/projen/datastore.js +145 -0
  106. package/lib/projen/index.d.ts +3 -2
  107. package/lib/projen/index.js +5 -3
  108. package/lib/projen/rest-api.d.ts +13 -0
  109. package/lib/projen/rest-api.js +127 -0
  110. package/lib/projen/workflow.d.ts +18 -0
  111. package/lib/projen/workflow.js +99 -0
  112. package/package.json +44 -35
  113. package/CHANGELOG.md +0 -170
  114. package/img/autocomplete.gif +0 -0
  115. package/lib/constructs/auth.js +0 -135
  116. package/lib/constructs/graphql-api.d.ts +0 -44
  117. package/lib/constructs/graphql-api.js +0 -221
  118. package/lib/constructs/http-api.d.ts +0 -58
  119. package/lib/constructs/http-api.js +0 -242
  120. package/lib/constructs/monitoring.d.ts +0 -23
  121. package/lib/constructs/monitoring.js +0 -47
  122. package/lib/constructs/scheduled-func.d.ts +0 -63
  123. package/lib/constructs/scheduled-func.js +0 -54
  124. package/lib/constructs/webhook.d.ts +0 -33
  125. package/lib/constructs/webhook.js +0 -86
  126. package/lib/projen/graphql-api.d.ts +0 -7
  127. package/lib/projen/graphql-api.js +0 -58
  128. package/lib/projen/http-api.d.ts +0 -7
  129. package/lib/projen/http-api.js +0 -43
  130. package/lib/types/index.d.ts +0 -1
  131. package/lib/types/index.js +0 -18
  132. package/lib/types/table.d.ts +0 -34
  133. package/lib/types/table.js +0 -31
  134. package/version.json +0 -3
@@ -0,0 +1,127 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.RestApi = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const yaml = __importStar(require("js-yaml"));
29
+ const pj = __importStar(require("projen"));
30
+ const core_1 = require("./core");
31
+ class RestApi extends pj.Component {
32
+ constructor(app, options) {
33
+ super(app);
34
+ this.options = options;
35
+ const generateTask = app.addTask(`generate:api:${options.apiName.toLowerCase()}`, {
36
+ exec: `openapi-typescript ${options.definitionFile} --output src/generated/rest.${options.apiName.toLowerCase()}-model.generated.ts`,
37
+ description: 'Generate Types from the OpenAPI specification',
38
+ });
39
+ app.defaultTask.spawn(generateTask);
40
+ const apiSpec = yaml.load(fs.readFileSync(options.definitionFile).toString());
41
+ for (const path in apiSpec.paths) {
42
+ if (Object.prototype.hasOwnProperty.call(apiSpec.paths, path)) {
43
+ const pathItem = apiSpec.paths[path];
44
+ for (const method in pathItem) {
45
+ if (Object.prototype.hasOwnProperty.call(pathItem, method) &&
46
+ ['get', 'post', 'put', 'delete', 'patch', 'options', 'head'].indexOf(method) >= 0) {
47
+ // Add all operations
48
+ this.addRestResource(apiSpec, path, method);
49
+ }
50
+ }
51
+ }
52
+ }
53
+ if (!fs.existsSync('./src/generated')) {
54
+ fs.mkdirSync('./src/generated');
55
+ }
56
+ this.createConstructFile(`./src/generated/rest.${options.apiName.toLowerCase()}-api.generated.ts`);
57
+ }
58
+ createConstructFile(fileName) {
59
+ fs.writeFileSync(fileName, `/* eslint-disable */
60
+ import { Construct } from 'constructs';
61
+ import { RestApi, RestApiProps } from '${core_1.PACKAGE_NAME}/lib/constructs';
62
+ import { operations, paths } from './rest.${this.options.apiName.toLowerCase()}-model.generated';
63
+
64
+ export interface ${this.options.apiName}RestApiProps extends Omit<RestApiProps<operations>, 'definitionFileName' | 'apiName'> {
65
+ //
66
+ }
67
+
68
+ export class ${this.options.apiName}RestApi extends RestApi<paths, operations> {
69
+
70
+ constructor(scope: Construct, id: string, props: ${this.options.apiName}RestApiProps) {
71
+ super(scope, id, {
72
+ ...props,
73
+ apiName: '${this.options.apiName}',
74
+ definitionFileName: '${this.options.definitionFile}',
75
+ });
76
+ }
77
+
78
+ }`, {
79
+ encoding: 'utf-8',
80
+ });
81
+ }
82
+ addRestResource(apiSpec, path, method) {
83
+ const oaPath = apiSpec.paths[path];
84
+ const operation = oaPath[method];
85
+ const operationId = operation.operationId;
86
+ // const description = `${method as string} ${path as string} - ${operation.summary}`;
87
+ const entryFile = `./src/lambda/rest.${this.options.apiName.toLowerCase()}.${operationId}.ts`;
88
+ if (!fs.existsSync(entryFile)) {
89
+ if (!fs.existsSync('./src/lambda')) {
90
+ fs.mkdirSync('./src/lambda');
91
+ }
92
+ this.createEntryFile(entryFile, method, operationId);
93
+ }
94
+ }
95
+ createEntryFile(entryFile, method, operationId) {
96
+ let factoryCall;
97
+ let logs;
98
+ switch (method.toLowerCase()) {
99
+ case 'post':
100
+ case 'put':
101
+ case 'patch':
102
+ factoryCall = `api.createOpenApiHandlerWithRequestBody<operations['${operationId}']>(async (ctx, data) => {`;
103
+ logs = 'ctx.logger.info(JSON.stringify(data));';
104
+ break;
105
+ case 'options':
106
+ case 'delete':
107
+ case 'get':
108
+ case 'head':
109
+ default:
110
+ factoryCall = `api.createOpenApiHandler<operations['${operationId}']>(async (ctx) => {`;
111
+ logs = '';
112
+ break;
113
+ }
114
+ fs.writeFileSync(entryFile, `import { api, errors } from '${core_1.PACKAGE_NAME}/lib/lambda';
115
+ import { operations } from '../generated/rest.${this.options.apiName.toLowerCase()}-model.generated';
116
+
117
+ export const handler = ${factoryCall}
118
+ ctx.logger.info(JSON.stringify(ctx.event));
119
+ ${logs}
120
+ throw new errors.HttpError(500, 'Not yet implemented');
121
+ });`, {
122
+ encoding: 'utf-8',
123
+ });
124
+ }
125
+ }
126
+ exports.RestApi = RestApi;
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVuL3Jlc3QtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDhDQUFnQztBQUVoQywyQ0FBNkI7QUFDN0IsaUNBQXNDO0FBT3RDLE1BQWEsT0FBUSxTQUFRLEVBQUUsQ0FBQyxTQUFTO0lBRXZDLFlBQVksR0FBa0MsRUFBWSxPQUF1QjtRQUMvRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFENkMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFHL0UsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQ2hGLElBQUksRUFBRSxzQkFBc0IsT0FBTyxDQUFDLGNBQWMsZ0NBQWdDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLHFCQUFxQjtZQUNwSSxXQUFXLEVBQUUsK0NBQStDO1NBQzdELENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxXQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQWEsQ0FBQztRQUMxRixLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDaEMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDN0QsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsS0FBSyxNQUFNLE1BQU0sSUFBSSxRQUFR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UyxFQUFFLGdDQUFnQyxtQkFBWTtnREFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFOzt5QkFFekQsV0FBVzs7SUFFaEMsSUFBSTs7SUFFSixFQUFFO1lBQ0EsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUVGO0FBdkdELDBCQXVHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgeyBPcGVuQVBJMywgT3BlcmF0aW9uT2JqZWN0LCBQYXRoSXRlbU9iamVjdCB9IGZyb20gJ29wZW5hcGktdHlwZXNjcmlwdCc7XG5pbXBvcnQgKiBhcyBwaiBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgUEFDS0FHRV9OQU1FIH0gZnJvbSAnLi9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXN0QXBpT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGFwaU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVmaW5pdGlvbkZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFJlc3RBcGkgZXh0ZW5kcyBwai5Db21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogcGouYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAsIHByb3RlY3RlZCBvcHRpb25zOiBSZXN0QXBpT3B0aW9ucykge1xuICAgIHN1cGVyKGFwcCk7XG5cbiAgICBjb25zdCBnZW5lcmF0ZVRhc2sgPSBhcHAuYWRkVGFzayhgZ2VuZXJhdGU6YXBpOiR7b3B0aW9ucy5hcGlOYW1lLnRvTG93ZXJDYXNlKCl9YCwge1xuICAgICAgZXhlYzogYG9wZW5hcGktdHlwZXNjcmlwdCAke29wdGlvbnMuZGVmaW5pdGlvbkZpbGV9IC0tb3V0cHV0IHNyYy9nZW5lcmF0ZWQvcmVzdC4ke29wdGlvbnMuYXBpTmFtZS50b0xvd2VyQ2FzZSgpfS1tb2RlbC5nZW5lcmF0ZWQudHNgLFxuICAgICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBUeXBlcyBmcm9tIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24nLFxuICAgIH0pO1xuICAgIGFwcC5kZWZhdWx0VGFzayEuc3Bhd24oZ2VuZXJhdGVUYXNrKTtcblxuICAgIGNvbnN0IGFwaVNwZWMgPSB5YW1sLmxvYWQoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuZGVmaW5pdGlvbkZpbGUpLnRvU3RyaW5nKCkpIGFzIE9wZW5BUEkzO1xuICAgIGZvciAoY29uc3QgcGF0aCBpbiBhcGlTcGVjLnBhdGhzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFwaVNwZWMucGF0aHMsIHBhdGgpKSB7XG4gICAgICAgIGNvbnN0IHBhdGhJdGVtID0gYXBpU3BlYy5wYXRoc1twYXRoXTtcbiAgICAgICAgZm9yIChjb25zdCBtZXRob2QgaW4gcGF0aEl0ZW0pIHtcbiAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhdGhJdGVtLCBtZXRob2QpICYmXG4gICAgICAgICAgICBbJ2dldCcsICdwb3N0JywgJ3B1dCcsICdkZWxldGUnLCAncGF0Y2gnLCAnb3B0aW9ucycsICdoZWFkJ10uaW5kZXhPZihtZXRob2QpID49IDApIHtcbiAgICAgICAgICAgIC8vIEFkZCBhbGwgb3BlcmF0aW9uc1xuICAgICAgICAgICAgdGhpcy5hZGRSZXN0UmVzb3VyY2UoYXBpU3BlYywgcGF0aCwgbWV0aG9kKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKCcuL3NyYy9nZW5lcmF0ZWQnKSkge1xuICAgICAgZnMubWtkaXJTeW5jKCcuL3NyYy9nZW5lcmF0ZWQnKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVDb25zdHJ1Y3RGaWxlKGAuL3NyYy9nZW5lcmF0ZWQvcmVzdC4ke29wdGlvbnMuYXBpTmFtZS50b0xvd2VyQ2FzZSgpfS1hcGkuZ2VuZXJhdGVkLnRzYCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlQ29uc3RydWN0RmlsZShmaWxlTmFtZTogc3RyaW5nKSB7XG5cbiAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVOYW1lLCBgLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUmVzdEFwaSwgUmVzdEFwaVByb3BzIH0gZnJvbSAnJHtQQUNLQUdFX05BTUV9L2xpYi9jb25zdHJ1Y3RzJztcbmltcG9ydCB7IG9wZXJhdGlvbnMsIHBhdGhzIH0gZnJvbSAnLi9yZXN0LiR7dGhpcy5vcHRpb25zLmFwaU5hbWUudG9Mb3dlckNhc2UoKX0tbW9kZWwuZ2VuZXJhdGVkJztcblxuZXhwb3J0IGludGVyZmFjZSAke3RoaXMub3B0aW9ucy5hcGlOYW1lfVJlc3RBcGlQcm9wcyBleHRlbmRzIE9taXQ8UmVzdEFwaVByb3BzPG9wZXJhdGlvbnM+LCAnZGVmaW5pdGlvbkZpbGVOYW1lJyB8ICdhcGlOYW1lJz4ge1xuICAvL1xufVxuXG5leHBvcnQgY2xhc3MgJHt0aGlzLm9wdGlvbnMuYXBpTmFtZX1SZXN0QXBpIGV4dGVuZHMgUmVzdEFwaTxwYXRocywgb3BlcmF0aW9ucz4ge1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3RoaXMub3B0aW9ucy5hcGlOYW1lfVJlc3RBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBhcGlOYW1lOiAnJHt0aGlzLm9wdGlvbnMuYXBpTmFtZX0nLFxuICAgICAgZGVmaW5pdGlvbkZpbGVOYW1lOiAnJHt0aGlzLm9wdGlvbnMuZGVmaW5pdGlvbkZpbGV9JyxcbiAgICB9KTtcbiAgfVxuXG59YCwge1xuICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkUmVzdFJlc291cmNlKGFwaVNwZWM6IE9wZW5BUEkzLCBwYXRoOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgb2FQYXRoID0gYXBpU3BlYy5wYXRocyFbcGF0aF07XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gb2FQYXRoW21ldGhvZCBhcyBrZXlvZiBQYXRoSXRlbU9iamVjdF0gYXMgT3BlcmF0aW9uT2JqZWN0O1xuICAgIGNvbnN0IG9wZXJhdGlvbklkID0gb3BlcmF0aW9uLm9wZXJhdGlvbklkITtcbiAgICAvLyBjb25zdCBkZXNjcmlwdGlvbiA9IGAke21ldGhvZCBhcyBzdHJpbmd9ICR7cGF0aCBhcyBzdHJpbmd9IC0gJHtvcGVyYXRpb24uc3VtbWFyeX1gO1xuXG4gICAgY29uc3QgZW50cnlGaWxlID0gYC4vc3JjL2xhbWJkYS9yZXN0LiR7dGhpcy5vcHRpb25zLmFwaU5hbWUudG9Mb3dlckNhc2UoKX0uJHtvcGVyYXRpb25JZH0udHNgO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhlbnRyeUZpbGUpKSB7XG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoJy4vc3JjL2xhbWJkYScpKSB7XG4gICAgICAgIGZzLm1rZGlyU3luYygnLi9zcmMvbGFtYmRhJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNyZWF0ZUVudHJ5RmlsZShlbnRyeUZpbGUsIG1ldGhvZCwgb3BlcmF0aW9uSWQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVFbnRyeUZpbGUoZW50cnlGaWxlOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBvcGVyYXRpb25JZDogc3RyaW5nKSB7XG4gICAgbGV0IGZhY3RvcnlDYWxsO1xuICAgIGxldCBsb2dzO1xuICAgIHN3aXRjaCAobWV0aG9kLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ3Bvc3QnOlxuICAgICAgY2FzZSAncHV0JzpcbiAgICAgIGNhc2UgJ3BhdGNoJzpcbiAgICAgICAgZmFjdG9yeUNhbGwgPSBgYXBpLmNyZWF0ZU9wZW5BcGlIYW5kbGVyV2l0aFJlcXVlc3RCb2R5PG9wZXJhdGlvbnNbJyR7b3BlcmF0aW9uSWR9J10+KGFzeW5jIChjdHgsIGRhdGEpID0+IHtgO1xuICAgICAgICBsb2dzID0gJ2N0eC5sb2dnZXIuaW5mbyhKU09OLnN0cmluZ2lmeShkYXRhKSk7JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICBjYXNlICdnZXQnOlxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBmYWN0b3J5Q2FsbCA9IGBhcGkuY3JlYXRlT3BlbkFwaUhhbmRsZXI8b3BlcmF0aW9uc1snJHtvcGVyYXRpb25JZH0nXT4oYXN5bmMgKGN0eCkgPT4ge2A7XG4gICAgICAgIGxvZ3MgPSAnJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBpbXBvcnQgeyBhcGksIGVycm9ycyB9IGZyb20gJyR7UEFDS0FHRV9OQU1FfS9saWIvbGFtYmRhJztcbmltcG9ydCB7IG9wZXJhdGlvbnMgfSBmcm9tICcuLi9nZW5lcmF0ZWQvcmVzdC4ke3RoaXMub3B0aW9ucy5hcGlOYW1lLnRvTG93ZXJDYXNlKCl9LW1vZGVsLmdlbmVyYXRlZCc7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gJHtmYWN0b3J5Q2FsbH1cbiAgY3R4LmxvZ2dlci5pbmZvKEpTT04uc3RyaW5naWZ5KGN0eC5ldmVudCkpO1xuICAke2xvZ3N9XG4gIHRocm93IG5ldyBlcnJvcnMuSHR0cEVycm9yKDUwMCwgJ05vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcbn0pO2AsIHtcbiAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgIH0pO1xuICB9XG5cbn0iXX0=
@@ -0,0 +1,18 @@
1
+ import * as pj from 'projen';
2
+ export interface WorkflowOptions {
3
+ readonly workflowName: string;
4
+ readonly definitionFile: string;
5
+ }
6
+ interface VariableDefinition {
7
+ readonly fullName: string;
8
+ readonly name: string;
9
+ readonly type: string;
10
+ }
11
+ export declare class Workflow extends pj.Component {
12
+ protected options: WorkflowOptions;
13
+ constructor(app: pj.awscdk.AwsCdkTypeScriptApp, options: WorkflowOptions);
14
+ protected createConstructFile(fileName: string, matchedVariables: VariableDefinition[]): void;
15
+ protected renderStateConfigDefinition(def: VariableDefinition): string;
16
+ protected renderDefinitionSubstitution(def: VariableDefinition): string;
17
+ }
18
+ export {};
@@ -0,0 +1,99 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Workflow = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const pj = __importStar(require("projen"));
29
+ const core_1 = require("./core");
30
+ class Workflow extends pj.Component {
31
+ constructor(app, options) {
32
+ var _a;
33
+ super(app);
34
+ this.options = options;
35
+ const workflowDefinition = fs.readFileSync(options.definitionFile).toString();
36
+ const matches = (_a = workflowDefinition.match(/\$\{[a-zA-Z0-9#]*\}/g)) === null || _a === void 0 ? void 0 : _a.map(match => match.substring(2, match.length - 1));
37
+ const variables = (matches !== null && matches !== void 0 ? matches : []).map(varName => {
38
+ if (varName.indexOf('#') < 0) {
39
+ return { name: varName, fullName: varName, type: 'string' };
40
+ }
41
+ const [name, type] = varName.split('#');
42
+ return { name, type, fullName: varName };
43
+ });
44
+ this.createConstructFile(`./src/generated/workflow.${options.workflowName.toLowerCase()}.generated.ts`, variables);
45
+ }
46
+ createConstructFile(fileName, matchedVariables) {
47
+ fs.writeFileSync(fileName, `/* eslint-disable */
48
+ import * as constructs from 'constructs';
49
+ import { ITable } from 'aws-cdk-lib/aws-dynamodb';
50
+ import { IFunction } from 'aws-cdk-lib/aws-lambda';
51
+ import * as sls from '${core_1.PACKAGE_NAME}/lib/constructs';
52
+
53
+ export interface ${this.options.workflowName}WorkflowProps extends Omit<sls.WorkflowProps, 'definitionFileName' | 'definitionSubstitutions'> {
54
+ readonly stateConfig: {
55
+ ${matchedVariables.map(v => this.renderStateConfigDefinition(v)).join('\n')}
56
+ };
57
+ }
58
+
59
+ export class ${this.options.workflowName}Workflow extends sls.Workflow {
60
+
61
+ constructor(scope: constructs.Construct, id: string, props: ${this.options.workflowName}WorkflowProps) {
62
+ super(scope, id, {
63
+ ...props,
64
+ definitionFileName: '${this.options.definitionFile}',
65
+ definitionSubstitutions: {
66
+ ${matchedVariables.map(v => this.renderDefinitionSubstitution(v)).join('\n')}
67
+ }
68
+ });
69
+ }
70
+
71
+ }`, {
72
+ encoding: 'utf-8',
73
+ });
74
+ }
75
+ renderStateConfigDefinition(def) {
76
+ switch (def.type) {
77
+ case 'DynamoDBTable':
78
+ return `readonly ${def.name}: ITable;`;
79
+ case 'LambdaFunction':
80
+ return `readonly ${def.name}: IFunction;`;
81
+ case 'string':
82
+ default:
83
+ return `readonly ${def.name}: string;`;
84
+ }
85
+ }
86
+ renderDefinitionSubstitution(def) {
87
+ switch (def.type) {
88
+ case 'DynamoDBTable':
89
+ return `'${def.fullName}': props.stateConfig.${def.name}.tableName,`;
90
+ case 'LambdaFunction':
91
+ return `'${def.fullName}': props.stateConfig.${def.name}.functionArn,`;
92
+ case 'string':
93
+ default:
94
+ return `'${def.fullName}': props.stateConfig.${def.name},`;
95
+ }
96
+ }
97
+ }
98
+ exports.Workflow = Workflow;
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVuL3dvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixpQ0FBc0M7QUFhdEMsTUFBYSxRQUFTLFNBQVEsRUFBRSxDQUFDLFNBQVM7SUFFeEMsWUFBWSxHQUFrQyxFQUFZLE9BQXdCOztRQUNoRixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFENkMsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFHaEYsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5RSxNQUFNLE9BQU8sR0FBRyxNQUFBLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQywwQ0FBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckgsTUFBTSxTQUFTLEdBQXlCLENBQUMsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BFLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2FBQzdEO1lBQ0QsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw0QkFBNEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JILENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxRQUFnQixFQUFFLGdCQUFzQztRQUNwRixFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRTs7Ozt3QkFJUCxtQkFBWTs7bUJBRWpCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWTs7TUFFdEMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs7OztlQUloRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7O2dFQUV3QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7Ozs2QkFHNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjOztVQUU5QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzs7OztFQUtsRixFQUFFO1lBQ0UsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLDJCQUEyQixDQUFDLEdBQXVCO1FBQzNELFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRTtZQUNoQixLQUFLLGVBQWU7Z0JBQ2xCLE9BQU8sWUFBWSxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUM7WUFDekMsS0FBSyxnQkFBZ0I7Z0JBQ25CLE9BQU8sWUFBWSxHQUFHLENBQUMsSUFBSSxjQUFjLENBQUM7WUFDNUMsS0FBSyxRQUFRLENBQUM7WUFDZDtnQkFDRSxPQUFPLFlBQVksR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVTLDRCQUE0QixDQUFDLEdBQXVCO1FBQzVELFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRTtZQUNoQixLQUFLLGVBQWU7Z0JBQ2xCLE9BQU8sSUFBSSxHQUFHLENBQUMsUUFBUSx3QkFBd0IsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDO1lBQ3ZFLEtBQUssZ0JBQWdCO2dCQUNuQixPQUFPLElBQUksR0FBRyxDQUFDLFFBQVEsd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLGVBQWUsQ0FBQztZQUN6RSxLQUFLLFFBQVEsQ0FBQztZQUNkO2dCQUNFLE9BQU8sSUFBSSxHQUFHLENBQUMsUUFBUSx3QkFBd0IsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1NBQzlEO0lBQ0gsQ0FBQztDQUVGO0FBeEVELDRCQXdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBqIGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBQQUNLQUdFX05BTUUgfSBmcm9tICcuL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHdvcmtmbG93TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZWZpbml0aW9uRmlsZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVmFyaWFibGVEZWZpbml0aW9uIHtcbiAgcmVhZG9ubHkgZnVsbE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBXb3JrZmxvdyBleHRlbmRzIHBqLkNvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoYXBwOiBwai5hd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCwgcHJvdGVjdGVkIG9wdGlvbnM6IFdvcmtmbG93T3B0aW9ucykge1xuICAgIHN1cGVyKGFwcCk7XG5cbiAgICBjb25zdCB3b3JrZmxvd0RlZmluaXRpb24gPSBmcy5yZWFkRmlsZVN5bmMob3B0aW9ucy5kZWZpbml0aW9uRmlsZSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBtYXRjaGVzID0gd29ya2Zsb3dEZWZpbml0aW9uLm1hdGNoKC9cXCRcXHtbYS16QS1aMC05I10qXFx9L2cpPy5tYXAobWF0Y2ggPT4gbWF0Y2guc3Vic3RyaW5nKDIsIG1hdGNoLmxlbmd0aCAtIDEpKTtcbiAgICBjb25zdCB2YXJpYWJsZXM6IFZhcmlhYmxlRGVmaW5pdGlvbltdID0gKG1hdGNoZXMgPz8gW10pLm1hcCh2YXJOYW1lID0+IHtcbiAgICAgIGlmICh2YXJOYW1lLmluZGV4T2YoJyMnKSA8IDApIHtcbiAgICAgICAgcmV0dXJuIHsgbmFtZTogdmFyTmFtZSwgZnVsbE5hbWU6IHZhck5hbWUsIHR5cGU6ICdzdHJpbmcnIH07XG4gICAgICB9XG4gICAgICBjb25zdCBbbmFtZSwgdHlwZV0gPSB2YXJOYW1lLnNwbGl0KCcjJyk7XG4gICAgICByZXR1cm4geyBuYW1lLCB0eXBlLCBmdWxsTmFtZTogdmFyTmFtZSB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5jcmVhdGVDb25zdHJ1Y3RGaWxlKGAuL3NyYy9nZW5lcmF0ZWQvd29ya2Zsb3cuJHtvcHRpb25zLndvcmtmbG93TmFtZS50b0xvd2VyQ2FzZSgpfS5nZW5lcmF0ZWQudHNgLCB2YXJpYWJsZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbnN0cnVjdEZpbGUoZmlsZU5hbWU6IHN0cmluZywgbWF0Y2hlZFZhcmlhYmxlczogVmFyaWFibGVEZWZpbml0aW9uW10pIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVOYW1lLCBgLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJVGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0IHsgSUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBzbHMgZnJvbSAnJHtQQUNLQUdFX05BTUV9L2xpYi9jb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSAke3RoaXMub3B0aW9ucy53b3JrZmxvd05hbWV9V29ya2Zsb3dQcm9wcyBleHRlbmRzIE9taXQ8c2xzLldvcmtmbG93UHJvcHMsICdkZWZpbml0aW9uRmlsZU5hbWUnIHwgJ2RlZmluaXRpb25TdWJzdGl0dXRpb25zJz4ge1xuICByZWFkb25seSBzdGF0ZUNvbmZpZzoge1xuICAgICR7bWF0Y2hlZFZhcmlhYmxlcy5tYXAodiA9PiB0aGlzLnJlbmRlclN0YXRlQ29uZmlnRGVmaW5pdGlvbih2KSkuam9pbignXFxuJyl9XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyAke3RoaXMub3B0aW9ucy53b3JrZmxvd05hbWV9V29ya2Zsb3cgZXh0ZW5kcyBzbHMuV29ya2Zsb3cge1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6ICR7dGhpcy5vcHRpb25zLndvcmtmbG93TmFtZX1Xb3JrZmxvd1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRlZmluaXRpb25GaWxlTmFtZTogJyR7dGhpcy5vcHRpb25zLmRlZmluaXRpb25GaWxlfScsXG4gICAgICBkZWZpbml0aW9uU3Vic3RpdHV0aW9uczoge1xuICAgICAgICAke21hdGNoZWRWYXJpYWJsZXMubWFwKHYgPT4gdGhpcy5yZW5kZXJEZWZpbml0aW9uU3Vic3RpdHV0aW9uKHYpKS5qb2luKCdcXG4nKX1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG59YCwge1xuICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVyU3RhdGVDb25maWdEZWZpbml0aW9uKGRlZjogVmFyaWFibGVEZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGRlZi50eXBlKSB7XG4gICAgICBjYXNlICdEeW5hbW9EQlRhYmxlJzpcbiAgICAgICAgcmV0dXJuIGByZWFkb25seSAke2RlZi5uYW1lfTogSVRhYmxlO2A7XG4gICAgICBjYXNlICdMYW1iZGFGdW5jdGlvbic6XG4gICAgICAgIHJldHVybiBgcmVhZG9ubHkgJHtkZWYubmFtZX06IElGdW5jdGlvbjtgO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBgcmVhZG9ubHkgJHtkZWYubmFtZX06IHN0cmluZztgO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZW5kZXJEZWZpbml0aW9uU3Vic3RpdHV0aW9uKGRlZjogVmFyaWFibGVEZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGRlZi50eXBlKSB7XG4gICAgICBjYXNlICdEeW5hbW9EQlRhYmxlJzpcbiAgICAgICAgcmV0dXJuIGAnJHtkZWYuZnVsbE5hbWV9JzogcHJvcHMuc3RhdGVDb25maWcuJHtkZWYubmFtZX0udGFibGVOYW1lLGA7XG4gICAgICBjYXNlICdMYW1iZGFGdW5jdGlvbic6XG4gICAgICAgIHJldHVybiBgJyR7ZGVmLmZ1bGxOYW1lfSc6IHByb3BzLnN0YXRlQ29uZmlnLiR7ZGVmLm5hbWV9LmZ1bmN0aW9uQXJuLGA7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGAnJHtkZWYuZnVsbE5hbWV9JzogcHJvcHMuc3RhdGVDb25maWcuJHtkZWYubmFtZX0sYDtcbiAgICB9XG4gIH1cblxufSJdfQ==
package/package.json CHANGED
@@ -10,6 +10,7 @@
10
10
  "clobber": "npx projen clobber",
11
11
  "compile": "npx projen compile",
12
12
  "default": "npx projen default",
13
+ "docgen": "npx projen docgen",
13
14
  "eject": "npx projen eject",
14
15
  "eslint": "npx projen eslint",
15
16
  "package": "npx projen package",
@@ -18,7 +19,6 @@
18
19
  "pre-compile": "npx projen pre-compile",
19
20
  "release": "npx projen release",
20
21
  "test": "npx projen test",
21
- "test:update": "npx projen test:update",
22
22
  "test:watch": "npx projen test:watch",
23
23
  "unbump": "npx projen unbump",
24
24
  "upgrade": "npx projen upgrade",
@@ -32,60 +32,69 @@
32
32
  "organization": true
33
33
  },
34
34
  "devDependencies": {
35
- "@aws-cdk/aws-apigatewayv2-alpha": "2.2.0-alpha.0",
36
- "@aws-cdk/aws-apigatewayv2-integrations-alpha": "2.2.0-alpha.0",
37
- "@aws-cdk/aws-appsync-alpha": "2.2.0-alpha.0",
38
- "@taimos/projen": "^0.0.174",
39
- "@types/aws-lambda": "^8.10.97",
40
- "@types/jest": "^26.0.24",
35
+ "@hapi/boom": "^10.0.1",
36
+ "@taimos/projen": "^0.0.187",
37
+ "@types/aws-lambda": "^8.10.114",
38
+ "@types/jest": "^29.5.0",
41
39
  "@types/js-yaml": "^4.0.5",
42
- "@types/node": "^14",
40
+ "@types/jsonwebtoken": "^9.0.1",
41
+ "@types/jwk-to-pem": "^2.0.1",
42
+ "@types/lambda-log": "^2.2.1",
43
+ "@types/node": "^16",
44
+ "@types/uuid": "^9.0.1",
43
45
  "@typescript-eslint/eslint-plugin": "^5",
44
46
  "@typescript-eslint/parser": "^5",
45
- "aws-cdk-lib": "2.2.0",
46
- "constructs": "10.0.0",
47
+ "aws-cdk-lib": "2.60.0",
48
+ "constructs": "10.0.5",
49
+ "dynamodb-onetable": "~2.5.1",
47
50
  "eslint": "^8",
48
- "eslint-import-resolver-node": "^0.3.6",
49
- "eslint-import-resolver-typescript": "^2.7.1",
50
- "eslint-plugin-import": "^2.26.0",
51
- "jest": "^27",
52
- "jest-junit": "^13",
53
- "json-schema": "^0.4.0",
54
- "npm-check-updates": "^12",
55
- "projen": "^0.56.28",
51
+ "eslint-import-resolver-node": "^0.3.7",
52
+ "eslint-import-resolver-typescript": "^3.5.5",
53
+ "eslint-plugin-import": "^2.27.5",
54
+ "jest": "^29.5.0",
55
+ "jest-junit": "^15",
56
+ "npm-check-updates": "^16",
57
+ "openapi-typescript": "6.2.1",
58
+ "projen": "^0.71.16",
56
59
  "standard-version": "^9",
57
- "ts-jest": "^27",
58
- "ts-node": "^10.8.0",
60
+ "ts-jest": "^29.1.0",
61
+ "ts-node": "^10.9.1",
62
+ "typedoc": "^0.24.4",
59
63
  "typescript": "^4.4.0"
60
64
  },
61
65
  "peerDependencies": {
62
- "@aws-cdk/aws-apigatewayv2-alpha": "^2.2.0-alpha.0",
63
- "@aws-cdk/aws-apigatewayv2-integrations-alpha": "^2.2.0-alpha.0",
64
- "@aws-cdk/aws-appsync-alpha": "^2.2.0-alpha.0",
65
- "aws-cdk-lib": "^2.2.0",
66
- "constructs": "^10.0.0"
66
+ "aws-cdk-lib": "^2.60.0",
67
+ "constructs": "^10.0.5",
68
+ "dynamodb-onetable": "^2.6.2",
69
+ "openapi-typescript": "^6.2.1"
67
70
  },
68
71
  "dependencies": {
69
- "@taimos/lambda-toolbox": "^0.0.175",
70
- "aws-sdk": "^2.1141.0",
71
- "date-fns": "^2.28.0",
72
- "esbuild": "^0.14.39",
72
+ "axios": "^1.3.5",
73
+ "date-fns": "^2.29.3",
73
74
  "js-yaml": "^4.1.0",
74
- "openapi-typescript": "^3.4.1",
75
- "projen": "^0.56.28"
75
+ "jsonwebtoken": "^9.0.0",
76
+ "jwk-to-pem": "^2.0.5",
77
+ "lambda-log": "^3.1.0",
78
+ "projen": "^0.71.16",
79
+ "uuid": "^9.0.0"
76
80
  },
77
81
  "keywords": [
78
82
  "aws",
83
+ "cdk",
79
84
  "dynamodb",
80
- "lambda"
85
+ "lambda",
86
+ "serverless"
81
87
  ],
88
+ "engines": {
89
+ "node": ">= v16.14.1"
90
+ },
82
91
  "main": "lib/index.js",
83
92
  "license": "Apache-2.0",
84
- "version": "1.1.44",
93
+ "version": "2.0.0",
85
94
  "jest": {
86
95
  "testMatch": [
87
96
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",
88
- "<rootDir>/(test|src)/**/?(*.)+(spec|test).ts?(x)"
97
+ "<rootDir>/(test|src)/**/*(*.)@(spec|test).ts?(x)"
89
98
  ],
90
99
  "clearMocks": true,
91
100
  "collectCoverage": true,
@@ -124,4 +133,4 @@
124
133
  },
125
134
  "types": "lib/index.d.ts",
126
135
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
127
- }
136
+ }
package/CHANGELOG.md DELETED
@@ -1,170 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
-
5
- ### [0.0.58](https://github.com/taimos/cdk-serverless/compare/v0.0.57...v0.0.58) (2021-04-23)
6
-
7
- ### [0.0.57](https://github.com/taimos/cdk-serverless/compare/v0.0.56...v0.0.57) (2021-04-22)
8
-
9
- ### [0.0.56](https://github.com/taimos/cdk-serverless/compare/v0.0.55...v0.0.56) (2021-04-20)
10
-
11
- ### [0.0.55](https://github.com/taimos/cdk-serverless/compare/v0.0.54...v0.0.55) (2021-04-18)
12
-
13
- ### [0.0.54](https://github.com/taimos/cdk-serverless/compare/v0.0.53...v0.0.54) (2021-04-16)
14
-
15
- ### [0.0.53](https://github.com/taimos/cdk-serverless/compare/v0.0.52...v0.0.53) (2021-04-16)
16
-
17
- ### [0.0.52](https://github.com/taimos/cdk-serverless/compare/v0.0.51...v0.0.52) (2021-04-16)
18
-
19
- ### [0.0.51](https://github.com/taimos/cdk-serverless/compare/v0.0.50...v0.0.51) (2021-04-15)
20
-
21
- ### [0.0.50](https://github.com/taimos/cdk-serverless/compare/v0.0.49...v0.0.50) (2021-04-15)
22
-
23
- ### [0.0.49](https://github.com/taimos/cdk-serverless/compare/v0.0.48...v0.0.49) (2021-04-15)
24
-
25
- ### [0.0.48](https://github.com/taimos/cdk-serverless/compare/v0.0.47...v0.0.48) (2021-04-15)
26
-
27
- ### [0.0.47](https://github.com/taimos/cdk-serverless/compare/v0.0.46...v0.0.47) (2021-04-15)
28
-
29
- ### [0.0.46](https://github.com/taimos/cdk-serverless/compare/v0.0.45...v0.0.46) (2021-04-14)
30
-
31
- ### [0.0.45](https://github.com/taimos/cdk-serverless/compare/v0.0.44...v0.0.45) (2021-04-14)
32
-
33
- ### [0.0.44](https://github.com/taimos/cdk-serverless/compare/v0.0.43...v0.0.44) (2021-04-13)
34
-
35
- ### [0.0.43](https://github.com/taimos/cdk-serverless/compare/v0.0.42...v0.0.43) (2021-04-13)
36
-
37
- ### [0.0.42](https://github.com/taimos/cdk-serverless/compare/v0.0.41...v0.0.42) (2021-04-13)
38
-
39
- ### [0.0.41](https://github.com/taimos/cdk-serverless/compare/v0.0.40...v0.0.41) (2021-04-13)
40
-
41
- ### [0.0.40](https://github.com/taimos/cdk-serverless/compare/v0.0.39...v0.0.40) (2021-04-12)
42
-
43
- ### [0.0.39](https://github.com/taimos/cdk-serverless/compare/v0.0.38...v0.0.39) (2021-04-12)
44
-
45
- ### [0.0.38](https://github.com/taimos/cdk-serverless/compare/v0.0.37...v0.0.38) (2021-04-12)
46
-
47
- ### [0.0.37](https://github.com/taimos/cdk-serverless/compare/v0.0.36...v0.0.37) (2021-04-09)
48
-
49
- ### [0.0.36](https://github.com/taimos/cdk-serverless/compare/v0.0.35...v0.0.36) (2021-04-08)
50
-
51
- ### [0.0.35](https://github.com/taimos/cdk-serverless/compare/v0.0.34...v0.0.35) (2021-04-08)
52
-
53
- ### [0.0.34](https://github.com/taimos/cdk-serverless/compare/v0.0.33...v0.0.34) (2021-04-08)
54
-
55
- ### [0.0.33](https://github.com/taimos/cdk-serverless/compare/v0.0.32...v0.0.33) (2021-04-08)
56
-
57
- ### [0.0.32](https://github.com/taimos/cdk-serverless/compare/v0.0.31...v0.0.32) (2021-04-08)
58
-
59
- ### [0.0.31](https://github.com/taimos/cdk-serverless/compare/v0.0.30...v0.0.31) (2021-04-07)
60
-
61
- ### [0.0.30](https://github.com/taimos/cdk-serverless/compare/v0.0.29...v0.0.30) (2021-04-07)
62
-
63
- ### [0.0.29](https://github.com/taimos/cdk-serverless/compare/v0.0.28...v0.0.29) (2021-04-06)
64
-
65
- ### [0.0.28](https://github.com/taimos/cdk-serverless/compare/v0.0.27...v0.0.28) (2021-04-06)
66
-
67
- ### [0.0.27](https://github.com/taimos/cdk-serverless/compare/v0.0.26...v0.0.27) (2021-04-06)
68
-
69
- ### [0.0.26](https://github.com/taimos/cdk-serverless/compare/v0.0.25...v0.0.26) (2021-04-05)
70
-
71
- ### [0.0.25](https://github.com/taimos/cdk-serverless/compare/v0.0.24...v0.0.25) (2021-04-05)
72
-
73
- ### [0.0.24](https://github.com/taimos/cdk-serverless/compare/v0.0.23...v0.0.24) (2021-04-02)
74
-
75
- ### [0.0.23](https://github.com/taimos/cdk-serverless/compare/v0.0.22...v0.0.23) (2021-04-01)
76
-
77
- ### [0.0.22](https://github.com/taimos/cdk-serverless/compare/v0.0.21...v0.0.22) (2021-03-31)
78
-
79
- ### [0.0.21](https://github.com/taimos/cdk-serverless/compare/v0.0.20...v0.0.21) (2021-03-30)
80
-
81
- ### [0.0.20](https://github.com/taimos/cdk-serverless/compare/v0.0.19...v0.0.20) (2021-03-30)
82
-
83
- ### [0.0.19](https://github.com/taimos/cdk-serverless/compare/v0.0.18...v0.0.19) (2021-03-30)
84
-
85
- ### [0.0.18](https://github.com/taimos/cdk-serverless/compare/v0.0.17...v0.0.18) (2021-03-29)
86
-
87
- ### [0.0.17](https://github.com/taimos/cdk-serverless/compare/v0.0.16...v0.0.17) (2021-03-29)
88
-
89
- ### [0.0.16](https://github.com/taimos/cdk-serverless/compare/v0.0.15...v0.0.16) (2021-03-28)
90
-
91
- ### [0.0.15](https://github.com/taimos/cdk-serverless/compare/v0.0.14...v0.0.15) (2021-03-26)
92
-
93
- ### [0.0.14](https://github.com/taimos/cdk-serverless/compare/v0.0.13...v0.0.14) (2021-03-26)
94
-
95
- ### [0.0.13](https://github.com/taimos/cdk-serverless/compare/v0.0.12...v0.0.13) (2021-03-26)
96
-
97
- ### [0.0.12](https://github.com/taimos/cdk-serverless/compare/v0.0.10...v0.0.12) (2021-03-25)
98
-
99
-
100
- ### Features
101
-
102
- * deployment scripts ([586fcc9](https://github.com/taimos/cdk-serverless/commit/586fcc9e4768144bdaf093fe3bc89504a11cb76f))
103
-
104
- ### [0.0.11](https://github.com/taimos/cdk-serverless/compare/v0.0.10...v0.0.11) (2021-03-25)
105
-
106
- ### [0.0.10](https://github.com/taimos/cdk-serverless/compare/v0.0.9...v0.0.10) (2021-03-24)
107
-
108
-
109
- ### Features
110
-
111
- * core projen ([45d9153](https://github.com/taimos/cdk-serverless/commit/45d91534080d230aa147f066b53dce72788cdb1f))
112
-
113
- ### [0.0.9](https://github.com/taimos/cdk-serverless/compare/v0.0.8...v0.0.9) (2021-03-24)
114
-
115
-
116
- ### Bug Fixes
117
-
118
- * ds name ([ff67141](https://github.com/taimos/cdk-serverless/commit/ff67141681d6c64b640c7be37fdedc38502b352a))
119
-
120
- ### [0.0.8](https://github.com/taimos/cdk-serverless/compare/v0.0.7...v0.0.8) (2021-03-24)
121
-
122
-
123
- ### Bug Fixes
124
-
125
- * add toolbox dep ([e513641](https://github.com/taimos/cdk-serverless/commit/e513641196f762dc204a6a8df9f868d208bebdc7))
126
-
127
- ### [0.0.7](https://github.com/taimos/cdk-serverless/compare/v0.0.6...v0.0.7) (2021-03-24)
128
-
129
-
130
- ### Features
131
-
132
- * improve GraphQl ([ff4ee42](https://github.com/taimos/cdk-serverless/commit/ff4ee42a974c85258a429ba10d38721c2b2a5903))
133
-
134
- ### [0.0.6](https://github.com/taimos/cdk-serverless/compare/v0.0.4...v0.0.6) (2021-03-24)
135
-
136
- ### [0.0.5](https://github.com/taimos/cdk-serverless/compare/v0.0.4...v0.0.5) (2021-03-23)
137
-
138
- ### [0.0.4](https://github.com/taimos/cdk-serverless/compare/v0.0.3...v0.0.4) (2021-03-19)
139
-
140
- ### [0.0.3](https://github.com/taimos/cdk-serverless/compare/v0.0.2...v0.0.3) (2021-03-19)
141
-
142
-
143
- ### Features
144
-
145
- * projen ([2d76421](https://github.com/taimos/cdk-serverless/commit/2d764213bbc7951aca40fb43d4a87ae997c2506d))
146
-
147
- ### 0.0.2 (2021-03-14)
148
-
149
-
150
- ### Features
151
-
152
- * GraphQL API ([78aa92f](https://github.com/taimos/cdk-serverless/commit/78aa92f657a5fa89a620e452441f118211f592a6))
153
- * scaffold lambda entry ([927dd8b](https://github.com/taimos/cdk-serverless/commit/927dd8b19ba3bdbe6568ef8f7392aa5fa180f76e))
154
-
155
-
156
- ### Bug Fixes
157
-
158
- * integ stack removed ([5a8bac5](https://github.com/taimos/cdk-serverless/commit/5a8bac54c60c7c262a7ee1deda38de9a695cae30))
159
-
160
- ### 0.0.1 (2021-03-12)
161
-
162
-
163
- ### Features
164
-
165
- * GraphQL API ([78aa92f](https://github.com/taimos/cdk-serverless/commit/78aa92f657a5fa89a620e452441f118211f592a6))
166
-
167
-
168
- ### Bug Fixes
169
-
170
- * integ stack removed ([5a8bac5](https://github.com/taimos/cdk-serverless/commit/5a8bac54c60c7c262a7ee1deda38de9a695cae30))
Binary file