cdk-serverless 1.1.43 → 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
@@ -1,135 +0,0 @@
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.Authentication = void 0;
27
- const fs = __importStar(require("fs"));
28
- const aws_cdk_lib_1 = require("aws-cdk-lib");
29
- const constructs_1 = require("constructs");
30
- const func_1 = require("./func");
31
- class Authentication extends constructs_1.Construct {
32
- constructor(scope, id, props) {
33
- var _a, _b, _c;
34
- super(scope, id);
35
- this.userpool = new aws_cdk_lib_1.aws_cognito.UserPool(this, 'UserPool', {
36
- autoVerify: { email: true },
37
- passwordPolicy: {
38
- minLength: 12,
39
- requireDigits: false,
40
- requireLowercase: false,
41
- requireSymbols: false,
42
- requireUppercase: false,
43
- },
44
- standardAttributes: {
45
- fullname: {
46
- mutable: true,
47
- required: true,
48
- },
49
- email: {
50
- mutable: false,
51
- required: true,
52
- },
53
- },
54
- selfSignUpEnabled: false,
55
- signInAliases: {
56
- email: true,
57
- },
58
- signInCaseSensitive: false,
59
- ...props.userPoolProps,
60
- });
61
- if ((_a = props.triggers) === null || _a === void 0 ? void 0 : _a.customMessages) {
62
- const entryFile = './src/lambda/cognito.custom-message.ts';
63
- if (!fs.existsSync(entryFile)) {
64
- fs.writeFileSync(entryFile, `export async function handler(event: AWSLambda.CustomMessageTriggerEvent): Promise<AWSLambda.CustomMessageTriggerEvent> {
65
- console.log(event);
66
-
67
- if (event.triggerSource === 'CustomMessage_AdminCreateUser') {
68
- // event.response.emailSubject = '';
69
- // event.response.emailMessage = '';
70
- } else if (event.triggerSource === 'CustomMessage_ForgotPassword') {
71
- // event.response.emailSubject = '';
72
- // event.response.emailMessage = '';
73
- } // ...
74
-
75
- return event;
76
- }`, {
77
- encoding: 'utf-8',
78
- });
79
- }
80
- this.customMessageFunction = new func_1.LambdaFunction(this, 'CustomMessageFunction', {
81
- entry: entryFile,
82
- lambdaOptions: {
83
- bundling: {
84
- loader: {
85
- '.html': 'text',
86
- },
87
- },
88
- timeout: aws_cdk_lib_1.Duration.seconds(5),
89
- },
90
- });
91
- this.userpool.addTrigger(aws_cdk_lib_1.aws_cognito.UserPoolOperation.CUSTOM_MESSAGE, this.customMessageFunction);
92
- }
93
- if ((_b = props.triggers) === null || _b === void 0 ? void 0 : _b.preTokenGeneration) {
94
- const entryFile = './src/lambda/cognito.pre-token-generation.ts';
95
- if (!fs.existsSync(entryFile)) {
96
- fs.writeFileSync(entryFile, `export async function handler(event: AWSLambda.PreTokenGenerationTriggerEvent): Promise<AWSLambda.PreTokenGenerationTriggerEvent> {
97
- console.log(JSON.stringify(event));
98
-
99
- // modify event.response here ...
100
-
101
- return event;
102
- }`, {
103
- encoding: 'utf-8',
104
- });
105
- }
106
- this.preTokenGenerationFunction = new func_1.LambdaFunction(this, 'PreTokenGenerationFunction', {
107
- lambdaOptions: {
108
- timeout: aws_cdk_lib_1.Duration.seconds(5),
109
- },
110
- entry: entryFile,
111
- });
112
- this.userpool.addTrigger(aws_cdk_lib_1.aws_cognito.UserPoolOperation.PRE_TOKEN_GENERATION, this.preTokenGenerationFunction);
113
- }
114
- if (props.sesEmailSender) {
115
- this.userpool.node.defaultChild.emailConfiguration = {
116
- emailSendingAccount: 'DEVELOPER',
117
- from: `${props.sesEmailSender.name} <${props.sesEmailSender.email}>`,
118
- sourceArn: `arn:aws:ses:${(_c = props.sesEmailSender.region) !== null && _c !== void 0 ? _c : aws_cdk_lib_1.Stack.of(this).region}:${aws_cdk_lib_1.Stack.of(this).account}:identity/${props.sesEmailSender.email}`,
119
- };
120
- }
121
- for (const groupName in props.groups) {
122
- if (Object.prototype.hasOwnProperty.call(props.groups, groupName)) {
123
- const groupDescription = props.groups[groupName];
124
- new aws_cdk_lib_1.aws_cognito.CfnUserPoolGroup(this, `Group${groupName}`, {
125
- userPoolId: this.userpool.userPoolId,
126
- groupName,
127
- description: groupDescription,
128
- });
129
- }
130
- }
131
- new aws_cdk_lib_1.CfnOutput(this, 'UserPoolId', { value: this.userpool.userPoolId });
132
- }
133
- }
134
- exports.Authentication = Authentication;
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL2F1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsNkNBR3FCO0FBQ3JCLDJDQUF1QztBQUN2QyxpQ0FBd0M7QUFnRXhDLE1BQWEsY0FBZSxTQUFRLHNCQUFTO0lBTTNDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7O1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDckQsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMzQixjQUFjLEVBQUU7Z0JBQ2QsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLGNBQWMsRUFBRSxLQUFLO2dCQUNyQixnQkFBZ0IsRUFBRSxLQUFLO2FBQ3hCO1lBQ0Qsa0JBQWtCLEVBQUU7Z0JBQ2xCLFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsSUFBSTtvQkFDYixRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7YUFDRjtZQUNELGlCQUFpQixFQUFFLEtBQUs7WUFDeEIsYUFBYSxFQUFFO2dCQUNiLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxtQkFBbUIsRUFBRSxLQUFLO1lBQzFCLEdBQUcsS0FBSyxDQUFDLGFBQWE7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxNQUFBLEtBQUssQ0FBQyxRQUFRLDBDQUFFLGNBQWMsRUFBRTtZQUNsQyxNQUFNLFNBQVMsR0FBRyx3Q0FBd0MsQ0FB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RUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGO0FBcEhELHdDQW9IQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7XG4gIGF3c19jb2duaXRvIGFzIGNvZ25pdG8sIENmbk91dHB1dCwgRHVyYXRpb24sIFN0YWNrLFxuXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICcuL2Z1bmMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoZW50aWNhdGlvbiB7XG4gIHJlYWRvbmx5IHVzZXJwb29sOiBjb2duaXRvLklVc2VyUG9vbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoZW50aWNhdGlvblByb3BzIHtcblxuICAvKipcbiAgICogQ29uZmlndXJlIENvZ25pdG8gTGFtYmRhIHRyaWdnZXJzXG4gICAqL1xuICB0cmlnZ2Vycz86IHtcbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBhIGxhbWJkYSBmdW5jdGlvbiB0byB0aGUgY3VzdG9tIG1lc3NhZ2UgdHJpZ2dlclxuICAgICAqXG4gICAgICogQ29kZSBoYXMgdG8gcmVzaWRlIGluICcuL3NyYy9sYW1iZGEvY29nbml0by5jdXN0b20tbWVzc2FnZS50cycgd2l0aCBhIG1ldGhvZCAnaGFuZGxlcidcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgY3VzdG9tTWVzc2FnZXM/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBsYW1iZGEgZnVuY3Rpb24gdG8gdGhlIHByZSB0b2tlbiBnZW5lcmF0aW9uIHRyaWdnZXJcbiAgICAgKlxuICAgICAqIENvZGUgaGFzIHRvIHJlc2lkZSBpbiAnLi9zcmMvbGFtYmRhL2NvZ25pdG8ucHJlLXRva2VuLWdlbmVyYXRpb24udHMnIHdpdGggYSBtZXRob2QgJ2hhbmRsZXInXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHByZVRva2VuR2VuZXJhdGlvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFByb3BlcnRpZXMgb2YgdGhlIENvZ25pdG8gdXNlciBwb29sXG4gICAqL1xuICB1c2VyUG9vbFByb3BzPzogY29nbml0by5Vc2VyUG9vbFByb3BzO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgU0VTIG1haWwgc2VuZGluZ1xuICAgKi9cbiAgc2VzRW1haWxTZW5kZXI/OiB7XG4gICAgLyoqXG4gICAgICogQVdTIHJlZ2lvbiB0byB1c2UgZm9yIFNFU1xuICAgICAqL1xuICAgIHJlZ2lvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFNlbmRlciBuYW1lXG4gICAgICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFNlbmRlciBlbWFpbC4gTmVlZHMgdG8gYmUgdmVyaWZpZWQgaW4gU0VTXG4gICAgICovXG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogR3JvdXBzIHRvIGNyZWF0ZSBpbiBDb2duaXRvIHVzZXIgcG9vbFxuICAgKiBLZXk6IGdyb3VwIG5hbWVcbiAgICogVmFsdWU6IGdyb3VwIGRlc2NyaXB0aW9uXG4gICAqL1xuICBncm91cHM/OiB7XG4gICAgW25hbWU6IHN0cmluZ106IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUF1dGhlbnRpY2F0aW9uIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgdXNlcnBvb2w6IGNvZ25pdG8uVXNlclBvb2w7XG4gIHB1YmxpYyByZWFkb25seSBjdXN0b21NZXNzYWdlRnVuY3Rpb24/OiBMYW1iZGFGdW5jdGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IHByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uPzogTGFtYmRhRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF1dGhlbnRpY2F0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy51c2VycG9vbCA9IG5ldyBjb2duaXRvLlVzZXJQb29sKHRoaXMsICdVc2VyUG9vbCcsIHtcbiAgICAgIGF1dG9WZXJpZnk6IHsgZW1haWw6IHRydWUgfSxcbiAgICAgIHBhc3N3b3JkUG9saWN5OiB7XG4gICAgICAgIG1pbkxlbmd0aDogMTIsXG4gICAgICAgIHJlcXVpcmVEaWdpdHM6IGZhbHNlLFxuICAgICAgICByZXF1aXJlTG93ZXJjYXNlOiBmYWxzZSxcbiAgICAgICAgcmVxdWlyZVN5bWJvbHM6IGZhbHNlLFxuICAgICAgICByZXF1aXJlVXBwZXJjYXNlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZEF0dHJpYnV0ZXM6IHtcbiAgICAgICAgZnVsbG5hbWU6IHtcbiAgICAgICAgICBtdXRhYmxlOiB0cnVlLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbWFpbDoge1xuICAgICAgICAgIG11dGFibGU6IGZhbHNlLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNlbGZTaWduVXBFbmFibGVkOiBmYWxzZSxcbiAgICAgIHNpZ25JbkFsaWFzZXM6IHtcbiAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICB9LFxuICAgICAgc2lnbkluQ2FzZVNlbnNpdGl2ZTogZmFsc2UsXG4gICAgICAuLi5wcm9wcy51c2VyUG9vbFByb3BzLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnRyaWdnZXJzPy5jdXN0b21NZXNzYWdlcykge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gJy4vc3JjL2xhbWJkYS9jb2duaXRvLmN1c3RvbS1tZXNzYWdlLnRzJztcblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5RmlsZSkpIHtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLkN1c3RvbU1lc3NhZ2VUcmlnZ2VyRXZlbnQpOiBQcm9taXNlPEFXU0xhbWJkYS5DdXN0b21NZXNzYWdlVHJpZ2dlckV2ZW50PiB7XG4gIGNvbnNvbGUubG9nKGV2ZW50KTtcblxuICBpZiAoZXZlbnQudHJpZ2dlclNvdXJjZSA9PT0gJ0N1c3RvbU1lc3NhZ2VfQWRtaW5DcmVhdGVVc2VyJykge1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsU3ViamVjdCA9ICcnO1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsTWVzc2FnZSA9ICcnO1xuICB9IGVsc2UgaWYgKGV2ZW50LnRyaWdnZXJTb3VyY2UgPT09ICdDdXN0b21NZXNzYWdlX0ZvcmdvdFBhc3N3b3JkJykge1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsU3ViamVjdCA9ICcnO1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsTWVzc2FnZSA9ICcnO1xuICB9IC8vIC4uLlxuXG4gIHJldHVybiBldmVudDtcbn1gLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1c3RvbU1lc3NhZ2VGdW5jdGlvbiA9IG5ldyBMYW1iZGFGdW5jdGlvbih0aGlzLCAnQ3VzdG9tTWVzc2FnZUZ1bmN0aW9uJywge1xuICAgICAgICBlbnRyeTogZW50cnlGaWxlLFxuICAgICAgICBsYW1iZGFPcHRpb25zOiB7XG4gICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgIGxvYWRlcjoge1xuICAgICAgICAgICAgICAnLmh0bWwnOiAndGV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy51c2VycG9vbC5hZGRUcmlnZ2VyKGNvZ25pdG8uVXNlclBvb2xPcGVyYXRpb24uQ1VTVE9NX01FU1NBR0UsIHRoaXMuY3VzdG9tTWVzc2FnZUZ1bmN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudHJpZ2dlcnM/LnByZVRva2VuR2VuZXJhdGlvbikge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS10b2tlbi1nZW5lcmF0aW9uLnRzJztcblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5RmlsZSkpIHtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLlByZVRva2VuR2VuZXJhdGlvblRyaWdnZXJFdmVudCk6IFByb21pc2U8QVdTTGFtYmRhLlByZVRva2VuR2VuZXJhdGlvblRyaWdnZXJFdmVudD4ge1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShldmVudCkpO1xuXG4gIC8vIG1vZGlmeSBldmVudC5yZXNwb25zZSBoZXJlIC4uLlxuXG4gIHJldHVybiBldmVudDtcbn1gLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdQcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbicsIHtcbiAgICAgICAgbGFtYmRhT3B0aW9uczoge1xuICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIH0sXG4gICAgICAgIGVudHJ5OiBlbnRyeUZpbGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudXNlcnBvb2wuYWRkVHJpZ2dlcihjb2duaXRvLlVzZXJQb29sT3BlcmF0aW9uLlBSRV9UT0tFTl9HRU5FUkFUSU9OLCB0aGlzLnByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuc2VzRW1haWxTZW5kZXIpIHtcbiAgICAgICh0aGlzLnVzZXJwb29sLm5vZGUuZGVmYXVsdENoaWxkIGFzIGNvZ25pdG8uQ2ZuVXNlclBvb2wpLmVtYWlsQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgZW1haWxTZW5kaW5nQWNjb3VudDogJ0RFVkVMT1BFUicsXG4gICAgICAgIGZyb206IGAke3Byb3BzLnNlc0VtYWlsU2VuZGVyLm5hbWV9IDwke3Byb3BzLnNlc0VtYWlsU2VuZGVyLmVtYWlsfT5gLFxuICAgICAgICBzb3VyY2VBcm46IGBhcm46YXdzOnNlczoke3Byb3BzLnNlc0VtYWlsU2VuZGVyLnJlZ2lvbiA/PyBTdGFjay5vZih0aGlzKS5yZWdpb259OiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06aWRlbnRpdHkvJHtwcm9wcy5zZXNFbWFpbFNlbmRlci5lbWFpbH1gLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGdyb3VwTmFtZSBpbiBwcm9wcy5ncm91cHMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvcHMuZ3JvdXBzLCBncm91cE5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRGVzY3JpcHRpb24gPSBwcm9wcy5ncm91cHNbZ3JvdXBOYW1lXTtcbiAgICAgICAgbmV3IGNvZ25pdG8uQ2ZuVXNlclBvb2xHcm91cCh0aGlzLCBgR3JvdXAke2dyb3VwTmFtZX1gLCB7XG4gICAgICAgICAgdXNlclBvb2xJZDogdGhpcy51c2VycG9vbC51c2VyUG9vbElkLFxuICAgICAgICAgIGdyb3VwTmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ3JvdXBEZXNjcmlwdGlvbixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCAnVXNlclBvb2xJZCcsIHsgdmFsdWU6IHRoaXMudXNlcnBvb2wudXNlclBvb2xJZCB9KTtcbiAgfVxufSJdfQ==
@@ -1,44 +0,0 @@
1
- import * as appsync from '@aws-cdk/aws-appsync-alpha';
2
- import { Construct } from 'constructs';
3
- import { BaseApi, BaseApiProps } from './base-api';
4
- import { LambdaFunction } from './func';
5
- export interface GraphQlApiProps extends BaseApiProps {
6
- }
7
- export interface VtlResolverOptions {
8
- /**
9
- * The datasource the VTL resolver targets
10
- */
11
- dataSource: appsync.BaseDataSource;
12
- /**
13
- * string replacements to process on the VTL
14
- *
15
- * @default no variable expansions
16
- */
17
- variables?: {
18
- [name: string]: string;
19
- };
20
- }
21
- export declare class GraphQlApi extends BaseApi {
22
- private props;
23
- readonly api: appsync.GraphqlApi;
24
- readonly tableDataSource?: appsync.DynamoDbDataSource;
25
- private _functions;
26
- constructor(scope: Construct, id: string, props: GraphQlApiProps);
27
- /**
28
- * getFunctionForOperation
29
- */
30
- getFunctionForOperation<TYPE extends {
31
- __typename?: any;
32
- }>(typeName: TYPE['__typename'], fieldName: keyof Omit<TYPE, '__typename'>): LambdaFunction;
33
- addLambdaResolver<TYPE extends {
34
- __typename?: any;
35
- }>(typeName: TYPE['__typename'], fieldName: keyof Omit<TYPE, '__typename'>): LambdaFunction;
36
- addDynamoDbVtlResolver<TYPE extends {
37
- __typename?: any;
38
- }>(typeName: TYPE['__typename'], fieldName: keyof Omit<TYPE, '__typename'>, options?: Omit<VtlResolverOptions, 'dataSource'>): void;
39
- addVtlResolver<TYPE extends {
40
- __typename?: any;
41
- }>(typeName: TYPE['__typename'], fieldName: keyof Omit<TYPE, '__typename'>, options: VtlResolverOptions): void;
42
- private substVariables;
43
- private createEntryFile;
44
- }
@@ -1,221 +0,0 @@
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.GraphQlApi = void 0;
27
- const fs = __importStar(require("fs"));
28
- const appsync = __importStar(require("@aws-cdk/aws-appsync-alpha"));
29
- const aws_cdk_lib_1 = require("aws-cdk-lib");
30
- const cdk = __importStar(require("aws-cdk-lib"));
31
- const base_api_1 = require("./base-api");
32
- const func_1 = require("./func");
33
- class GraphQlApi extends base_api_1.BaseApi {
34
- constructor(scope, id, props) {
35
- var _a, _b;
36
- super(scope, id, props);
37
- this.props = props;
38
- this._functions = {};
39
- this.api = new appsync.GraphqlApi(this, 'Resource', {
40
- name: `${props.apiName} [${props.stageName}]`,
41
- logConfig: {
42
- fieldLogLevel: appsync.FieldLogLevel.ALL,
43
- },
44
- schema: appsync.Schema.fromAsset('schema.graphql'),
45
- ...this.authentication && {
46
- authorizationConfig: {
47
- additionalAuthorizationModes: [{
48
- authorizationType: appsync.AuthorizationType.USER_POOL,
49
- userPoolConfig: {
50
- userPool: this.authentication.userpool,
51
- defaultAction: appsync.UserPoolDefaultAction.DENY,
52
- },
53
- }],
54
- },
55
- },
56
- });
57
- if (((_a = props.monitoring) !== null && _a !== void 0 ? _a : true) && this.monitoring) {
58
- this.monitoring.apiErrorsWidget.addLeftMetric(new aws_cdk_lib_1.aws_cloudwatch.Metric({
59
- namespace: 'AWS/AppSync',
60
- metricName: '5XXError',
61
- dimensionsMap: {
62
- GraphQLAPIId: this.api.apiId,
63
- },
64
- statistic: 'sum',
65
- }));
66
- this.monitoring.apiErrorsWidget.addLeftMetric(new aws_cdk_lib_1.aws_cloudwatch.Metric({
67
- namespace: 'AWS/AppSync',
68
- metricName: '4XXError',
69
- dimensionsMap: {
70
- GraphQLAPIId: this.api.apiId,
71
- },
72
- statistic: 'sum',
73
- }));
74
- this.monitoring.apiLatencyWidget.addLeftMetric(new aws_cdk_lib_1.aws_cloudwatch.Metric({
75
- namespace: 'AWS/AppSync',
76
- metricName: 'Latency',
77
- dimensionsMap: {
78
- GraphQLAPIId: this.api.apiId,
79
- },
80
- statistic: 'Average',
81
- }));
82
- this.monitoring.apiLatencyWidget.addLeftMetric(new aws_cdk_lib_1.aws_cloudwatch.Metric({
83
- namespace: 'AWS/AppSync',
84
- metricName: 'Latency',
85
- dimensionsMap: {
86
- GraphQLAPIId: this.api.apiId,
87
- },
88
- statistic: 'p90',
89
- }));
90
- this.monitoring.apiLatencyTailWidget.addLeftMetric(new aws_cdk_lib_1.aws_cloudwatch.Metric({
91
- namespace: 'AWS/AppSync',
92
- metricName: 'Latency',
93
- dimensionsMap: {
94
- GraphQLAPIId: this.api.apiId,
95
- },
96
- statistic: 'p95',
97
- }));
98
- this.monitoring.apiLatencyTailWidget.addLeftMetric(new aws_cdk_lib_1.aws_cloudwatch.Metric({
99
- namespace: 'AWS/AppSync',
100
- metricName: 'Latency',
101
- dimensionsMap: {
102
- GraphQLAPIId: this.api.apiId,
103
- },
104
- statistic: 'p99',
105
- }));
106
- }
107
- if (this.singleTableDatastore) {
108
- this.tableDataSource = new appsync.DynamoDbDataSource(this, 'SingleTableSource', {
109
- api: this.api,
110
- table: (_b = this.singleTableDatastore) === null || _b === void 0 ? void 0 : _b.table,
111
- });
112
- }
113
- }
114
- /**
115
- * getFunctionForOperation
116
- */
117
- getFunctionForOperation(typeName, fieldName) {
118
- return this._functions[`${typeName}.${fieldName}`];
119
- }
120
- addLambdaResolver(typeName, fieldName) {
121
- var _a;
122
- const operationId = `${typeName}.${fieldName}`;
123
- const description = `Type ${typeName} Field ${fieldName} Resolver`;
124
- const entryFile = `./src/lambda/${operationId}.ts`;
125
- if (!fs.existsSync(entryFile)) {
126
- this.createEntryFile(entryFile, typeName, fieldName);
127
- }
128
- const fn = new func_1.LambdaFunction(this, `Fn${operationId}`, {
129
- stageName: this.props.stageName,
130
- additionalEnv: this.props.additionalEnv,
131
- entry: entryFile,
132
- description: `[${this.props.stageName}] ${description}`,
133
- ...this.authentication && {
134
- userPool: (_a = this.authentication) === null || _a === void 0 ? void 0 : _a.userpool,
135
- },
136
- ...this.singleTableDatastore && {
137
- table: this.singleTableDatastore.table,
138
- tableWrites: typeName === 'Mutation',
139
- },
140
- ...this.assetCdn && {
141
- assetDomainName: this.assetCdn.assetDomainName,
142
- assetBucket: this.assetCdn.assetBucket,
143
- },
144
- lambdaOptions: this.props.lambdaOptions,
145
- lambdaTracing: this.props.lambdaTracing,
146
- });
147
- this._functions[operationId] = fn;
148
- cdk.Tags.of(fn).add('GraphQL', description);
149
- if (this.monitoring) {
150
- this.monitoring.lambdaDurationsWidget.addLeftMetric(fn.metricDuration());
151
- this.monitoring.lambdaInvokesWidget.addLeftMetric(fn.metricInvocations());
152
- this.monitoring.lambdaErrorsWidget.addLeftMetric(fn.metricErrors());
153
- this.monitoring.lambdaErrorsWidget.addLeftMetric(fn.metricThrottles());
154
- }
155
- const dataSource = new appsync.LambdaDataSource(this, `LambdaDS${operationId}`, {
156
- api: this.api,
157
- name: `Lambda_${typeName}_${fieldName}`,
158
- lambdaFunction: fn,
159
- });
160
- new appsync.Resolver(this, `Resolver${operationId}`, {
161
- api: this.api,
162
- typeName,
163
- fieldName: fieldName,
164
- dataSource,
165
- });
166
- return fn;
167
- }
168
- addDynamoDbVtlResolver(typeName, fieldName, options) {
169
- if (!this.tableDataSource) {
170
- throw new Error('DynamoDB is not initialized');
171
- }
172
- this.addVtlResolver(typeName, fieldName, {
173
- dataSource: this.tableDataSource,
174
- ...options,
175
- });
176
- }
177
- addVtlResolver(typeName, fieldName, options) {
178
- const operationId = `${typeName}.${fieldName}`;
179
- const mappingReqFile = `./src/vtl/${operationId}.req.vtl`;
180
- if (!fs.existsSync(mappingReqFile)) {
181
- fs.writeFileSync(mappingReqFile, '## Request mapping', { encoding: 'utf-8' });
182
- }
183
- const mappingResFile = `./src/vtl/${operationId}.res.vtl`;
184
- if (!fs.existsSync(mappingResFile)) {
185
- fs.writeFileSync(mappingResFile, '$util.toJson($ctx.result)', { encoding: 'utf-8' });
186
- }
187
- new appsync.Resolver(this, `Resolver${operationId}`, {
188
- api: this.api,
189
- typeName,
190
- fieldName: fieldName,
191
- dataSource: options.dataSource,
192
- requestMappingTemplate: appsync.MappingTemplate.fromString(this.substVariables(fs.readFileSync(mappingReqFile).toString('utf-8'), options.variables)),
193
- responseMappingTemplate: appsync.MappingTemplate.fromString(this.substVariables(fs.readFileSync(mappingResFile).toString('utf-8'), options.variables)),
194
- });
195
- }
196
- substVariables(data, vars = {}) {
197
- let res = data;
198
- for (const name in vars) {
199
- if (Object.prototype.hasOwnProperty.call(vars, name)) {
200
- const value = vars[name];
201
- res = res.replace(new RegExp(`\\$\{${name}\}`, 'g'), value);
202
- }
203
- }
204
- return res;
205
- }
206
- createEntryFile(entryFile, typeName, fieldName) {
207
- fs.writeFileSync(entryFile, `import { http } from '@taimos/lambda-toolbox';
208
-
209
- // TODO: Replace QUERYTYPE with the input type of the field ${typeName}.${fieldName}
210
- // TODO: Replace RETURNTYPE with the return type of the field ${typeName}.${fieldName}
211
-
212
- export const handler = http.createAppSyncHandler<QUERYTYPE, RETURNTYPE>(async (ctx) => {
213
- ctx.logger.info(ctx.event);
214
- throw new Error('Not yet implemented');
215
- });`, {
216
- encoding: 'utf-8',
217
- });
218
- }
219
- }
220
- exports.GraphQlApi = GraphQlApi;
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9ncmFwaHFsLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QixvRUFBc0Q7QUFDdEQsNkNBQTJEO0FBQzNELGlEQUFtQztBQUVuQyx5Q0FBbUQ7QUFDbkQsaUNBQXdDO0FBb0J4QyxNQUFhLFVBQVcsU0FBUSxrQkFBTztJQU9yQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFVLEtBQXNCOztRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUR3QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUZoRSxlQUFVLEdBQThDLEVBQUUsQ0FBQztRQUtqRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2xELElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLFNBQVMsR0FBRztZQUM3QyxTQUFTLEVBQUU7Z0JBQ1QsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRzthQUN6QztZQUNELE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNsRCxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUk7Z0JBQ3hCLG1CQUFtQixFQUFFO29CQUNuQiw0QkFBNEIsRUFBRSxDQUFDOzRCQUM3QixpQkFBaUIsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsU0FBUzs0QkFDdEQsY0FBYyxFQUFFO2dDQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVE7Z0NBQ3RDLGFBQWEsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSTs2QkFDbEQ7eUJBQ0YsQ0FBQztpQkFDSDth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cHN5bmMgZnJvbSAnQGF3cy1jZGsvYXdzLWFwcHN5bmMtYWxwaGEnO1xuaW1wb3J0IHsgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJhc2VBcGksIEJhc2VBcGlQcm9wcyB9IGZyb20gJy4vYmFzZS1hcGknO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICcuL2Z1bmMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoUWxBcGlQcm9wcyBleHRlbmRzIEJhc2VBcGlQcm9wcyB7XG4gIC8vXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVnRsUmVzb2x2ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBkYXRhc291cmNlIHRoZSBWVEwgcmVzb2x2ZXIgdGFyZ2V0c1xuICAgKi9cbiAgZGF0YVNvdXJjZTogYXBwc3luYy5CYXNlRGF0YVNvdXJjZTtcblxuICAvKipcbiAgICogc3RyaW5nIHJlcGxhY2VtZW50cyB0byBwcm9jZXNzIG9uIHRoZSBWVExcbiAgICpcbiAgICogQGRlZmF1bHQgbm8gdmFyaWFibGUgZXhwYW5zaW9uc1xuICAgKi9cbiAgdmFyaWFibGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBjbGFzcyBHcmFwaFFsQXBpIGV4dGVuZHMgQmFzZUFwaSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFwaTogYXBwc3luYy5HcmFwaHFsQXBpO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFibGVEYXRhU291cmNlPzogYXBwc3luYy5EeW5hbW9EYkRhdGFTb3VyY2U7XG5cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zOiB7IFtvcGVyYXRpb25JZDogc3RyaW5nXTogTGFtYmRhRnVuY3Rpb24gfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByaXZhdGUgcHJvcHM6IEdyYXBoUWxBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdGhpcy5hcGkgPSBuZXcgYXBwc3luYy5HcmFwaHFsQXBpKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IGAke3Byb3BzLmFwaU5hbWV9IFske3Byb3BzLnN0YWdlTmFtZX1dYCxcbiAgICAgIGxvZ0NvbmZpZzoge1xuICAgICAgICBmaWVsZExvZ0xldmVsOiBhcHBzeW5jLkZpZWxkTG9nTGV2ZWwuQUxMLFxuICAgICAgfSxcbiAgICAgIHNjaGVtYTogYXBwc3luYy5TY2hlbWEuZnJvbUFzc2V0KCdzY2hlbWEuZ3JhcGhxbCcpLFxuICAgICAgLi4udGhpcy5hdXRoZW50aWNhdGlvbiAmJiB7XG4gICAgICAgIGF1dGhvcml6YXRpb25Db25maWc6IHtcbiAgICAgICAgICBhZGRpdGlvbmFsQXV0aG9yaXphdGlvbk1vZGVzOiBbe1xuICAgICAgICAgICAgYXV0aG9yaXphdGlvblR5cGU6IGFwcHN5bmMuQXV0aG9yaXphdGlvblR5cGUuVVNFUl9QT09MLFxuICAgICAgICAgICAgdXNlclBvb2xDb25maWc6IHtcbiAgICAgICAgICAgICAgdXNlclBvb2w6IHRoaXMuYXV0aGVudGljYXRpb24udXNlcnBvb2wsXG4gICAgICAgICAgICAgIGRlZmF1bHRBY3Rpb246IGFwcHN5bmMuVXNlclBvb2xEZWZhdWx0QWN0aW9uLkRFTlksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1dLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmICgocHJvcHMubW9uaXRvcmluZyA/PyB0cnVlKSAmJiB0aGlzLm1vbml0b3JpbmcpIHtcbiAgICAgIHRoaXMubW9uaXRvcmluZy5hcGlFcnJvcnNXaWRnZXQuYWRkTGVmdE1ldHJpYyhuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwU3luYycsXG4gICAgICAgIG1ldHJpY05hbWU6ICc1WFhFcnJvcicsXG4gICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICBHcmFwaFFMQVBJSWQ6IHRoaXMuYXBpLmFwaUlkLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0aXN0aWM6ICdzdW0nLFxuICAgICAgfSkpO1xuICAgICAgdGhpcy5tb25pdG9yaW5nLmFwaUVycm9yc1dpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAgICAgbWV0cmljTmFtZTogJzRYWEVycm9yJyxcbiAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgIEdyYXBoUUxBUElJZDogdGhpcy5hcGkuYXBpSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXRpc3RpYzogJ3N1bScsXG4gICAgICB9KSk7XG4gICAgICB0aGlzLm1vbml0b3JpbmcuYXBpTGF0ZW5jeVdpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAgICAgbWV0cmljTmFtZTogJ0xhdGVuY3knLFxuICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgR3JhcGhRTEFQSUlkOiB0aGlzLmFwaS5hcGlJZCxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGlzdGljOiAnQXZlcmFnZScsXG4gICAgICB9KSk7XG4gICAgICB0aGlzLm1vbml0b3JpbmcuYXBpTGF0ZW5jeVdpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAgICAgbWV0cmljTmFtZTogJ0xhdGVuY3knLFxuICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgR3JhcGhRTEFQSUlkOiB0aGlzLmFwaS5hcGlJZCxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGlzdGljOiAncDkwJyxcbiAgICAgIH0pKTtcbiAgICAgIHRoaXMubW9uaXRvcmluZy5hcGlMYXRlbmN5VGFpbFdpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAgICAgbWV0cmljTmFtZTogJ0xhdGVuY3knLFxuICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgR3JhcGhRTEFQSUlkOiB0aGlzLmFwaS5hcGlJZCxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGlzdGljOiAncDk1JyxcbiAgICAgIH0pKTtcbiAgICAgIHRoaXMubW9uaXRvcmluZy5hcGlMYXRlbmN5VGFpbFdpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAgICAgbWV0cmljTmFtZTogJ0xhdGVuY3knLFxuICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgR3JhcGhRTEFQSUlkOiB0aGlzLmFwaS5hcGlJZCxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGlzdGljOiAncDk5JyxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaW5nbGVUYWJsZURhdGFzdG9yZSkge1xuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2UgPSBuZXcgYXBwc3luYy5EeW5hbW9EYkRhdGFTb3VyY2UodGhpcywgJ1NpbmdsZVRhYmxlU291cmNlJywge1xuICAgICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgICB0YWJsZTogdGhpcy5zaW5nbGVUYWJsZURhdGFzdG9yZT8udGFibGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogZ2V0RnVuY3Rpb25Gb3JPcGVyYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXRGdW5jdGlvbkZvck9wZXJhdGlvbjxUWVBFIGV4dGVuZHMgeyBfX3R5cGVuYW1lPzogYW55IH0+KHR5cGVOYW1lOiBUWVBFWydfX3R5cGVuYW1lJ10sIGZpZWxkTmFtZToga2V5b2YgT21pdDxUWVBFLCAnX190eXBlbmFtZSc+KTogTGFtYmRhRnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnNbYCR7dHlwZU5hbWV9LiR7ZmllbGROYW1lfWBdO1xuICB9XG5cbiAgcHVibGljIGFkZExhbWJkYVJlc29sdmVyPFRZUEUgZXh0ZW5kcyB7IF9fdHlwZW5hbWU/OiBhbnkgfT4odHlwZU5hbWU6IFRZUEVbJ19fdHlwZW5hbWUnXSwgZmllbGROYW1lOiBrZXlvZiBPbWl0PFRZUEUsICdfX3R5cGVuYW1lJz4pOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgY29uc3Qgb3BlcmF0aW9uSWQgPSBgJHt0eXBlTmFtZX0uJHtmaWVsZE5hbWV9YDtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGBUeXBlICR7dHlwZU5hbWV9IEZpZWxkICR7ZmllbGROYW1lfSBSZXNvbHZlcmA7XG5cbiAgICBjb25zdCBlbnRyeUZpbGUgPSBgLi9zcmMvbGFtYmRhLyR7b3BlcmF0aW9uSWR9LnRzYDtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlGaWxlKSkge1xuICAgICAgdGhpcy5jcmVhdGVFbnRyeUZpbGUoZW50cnlGaWxlLCB0eXBlTmFtZSwgZmllbGROYW1lIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgY29uc3QgZm4gPSBuZXcgTGFtYmRhRnVuY3Rpb24odGhpcywgYEZuJHtvcGVyYXRpb25JZH1gLCB7XG4gICAgICBzdGFnZU5hbWU6IHRoaXMucHJvcHMuc3RhZ2VOYW1lLFxuICAgICAgYWRkaXRpb25hbEVudjogdGhpcy5wcm9wcy5hZGRpdGlvbmFsRW52LFxuICAgICAgZW50cnk6IGVudHJ5RmlsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgWyR7dGhpcy5wcm9wcy5zdGFnZU5hbWV9XSAke2Rlc2NyaXB0aW9ufWAsXG4gICAgICAuLi50aGlzLmF1dGhlbnRpY2F0aW9uICYmIHtcbiAgICAgICAgdXNlclBvb2w6IHRoaXMuYXV0aGVudGljYXRpb24/LnVzZXJwb29sLFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMuc2luZ2xlVGFibGVEYXRhc3RvcmUgJiYge1xuICAgICAgICB0YWJsZTogdGhpcy5zaW5nbGVUYWJsZURhdGFzdG9yZS50YWJsZSxcbiAgICAgICAgdGFibGVXcml0ZXM6IHR5cGVOYW1lID09PSAnTXV0YXRpb24nLFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMuYXNzZXRDZG4gJiYge1xuICAgICAgICBhc3NldERvbWFpbk5hbWU6IHRoaXMuYXNzZXRDZG4uYXNzZXREb21haW5OYW1lLFxuICAgICAgICBhc3NldEJ1Y2tldDogdGhpcy5hc3NldENkbi5hc3NldEJ1Y2tldCxcbiAgICAgIH0sXG4gICAgICBsYW1iZGFPcHRpb25zOiB0aGlzLnByb3BzLmxhbWJkYU9wdGlvbnMsXG4gICAgICBsYW1iZGFUcmFjaW5nOiB0aGlzLnByb3BzLmxhbWJkYVRyYWNpbmcsXG4gICAgfSk7XG4gICAgdGhpcy5fZnVuY3Rpb25zW29wZXJhdGlvbklkXSA9IGZuO1xuICAgIGNkay5UYWdzLm9mKGZuKS5hZGQoJ0dyYXBoUUwnLCBkZXNjcmlwdGlvbik7XG5cbiAgICBpZiAodGhpcy5tb25pdG9yaW5nKSB7XG4gICAgICB0aGlzLm1vbml0b3JpbmcubGFtYmRhRHVyYXRpb25zV2lkZ2V0LmFkZExlZnRNZXRyaWMoZm4ubWV0cmljRHVyYXRpb24oKSk7XG4gICAgICB0aGlzLm1vbml0b3JpbmcubGFtYmRhSW52b2tlc1dpZGdldC5hZGRMZWZ0TWV0cmljKGZuLm1ldHJpY0ludm9jYXRpb25zKCkpO1xuICAgICAgdGhpcy5tb25pdG9yaW5nLmxhbWJkYUVycm9yc1dpZGdldC5hZGRMZWZ0TWV0cmljKGZuLm1ldHJpY0Vycm9ycygpKTtcbiAgICAgIHRoaXMubW9uaXRvcmluZy5sYW1iZGFFcnJvcnNXaWRnZXQuYWRkTGVmdE1ldHJpYyhmbi5tZXRyaWNUaHJvdHRsZXMoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YVNvdXJjZSA9IG5ldyBhcHBzeW5jLkxhbWJkYURhdGFTb3VyY2UodGhpcywgYExhbWJkYURTJHtvcGVyYXRpb25JZH1gLCB7XG4gICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgbmFtZTogYExhbWJkYV8ke3R5cGVOYW1lfV8ke2ZpZWxkTmFtZX1gLFxuICAgICAgbGFtYmRhRnVuY3Rpb246IGZuLFxuICAgIH0pO1xuXG4gICAgbmV3IGFwcHN5bmMuUmVzb2x2ZXIodGhpcywgYFJlc29sdmVyJHtvcGVyYXRpb25JZH1gLCB7XG4gICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgdHlwZU5hbWUsXG4gICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICBkYXRhU291cmNlLFxuICAgIH0pO1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHB1YmxpYyBhZGREeW5hbW9EYlZ0bFJlc29sdmVyPFRZUEUgZXh0ZW5kcyB7IF9fdHlwZW5hbWU/OiBhbnkgfT4odHlwZU5hbWU6IFRZUEVbJ19fdHlwZW5hbWUnXSwgZmllbGROYW1lOiBrZXlvZiBPbWl0PFRZUEUsICdfX3R5cGVuYW1lJz4sIG9wdGlvbnM/OiBPbWl0PFZ0bFJlc29sdmVyT3B0aW9ucywgJ2RhdGFTb3VyY2UnPik6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWJsZURhdGFTb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRHluYW1vREIgaXMgbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuICAgIHRoaXMuYWRkVnRsUmVzb2x2ZXIodHlwZU5hbWUsIGZpZWxkTmFtZSwge1xuICAgICAgZGF0YVNvdXJjZTogdGhpcy50YWJsZURhdGFTb3VyY2UsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFZ0bFJlc29sdmVyPFRZUEUgZXh0ZW5kcyB7IF9fdHlwZW5hbWU/OiBhbnkgfT4odHlwZU5hbWU6IFRZUEVbJ19fdHlwZW5hbWUnXSwgZmllbGROYW1lOiBrZXlvZiBPbWl0PFRZUEUsICdfX3R5cGVuYW1lJz4sIG9wdGlvbnM6IFZ0bFJlc29sdmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wZXJhdGlvbklkID0gYCR7dHlwZU5hbWV9LiR7ZmllbGROYW1lfWA7XG5cbiAgICBjb25zdCBtYXBwaW5nUmVxRmlsZSA9IGAuL3NyYy92dGwvJHtvcGVyYXRpb25JZH0ucmVxLnZ0bGA7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKG1hcHBpbmdSZXFGaWxlKSkge1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhtYXBwaW5nUmVxRmlsZSwgJyMjIFJlcXVlc3QgbWFwcGluZycsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1hcHBpbmdSZXNGaWxlID0gYC4vc3JjL3Z0bC8ke29wZXJhdGlvbklkfS5yZXMudnRsYDtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMobWFwcGluZ1Jlc0ZpbGUpKSB7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG1hcHBpbmdSZXNGaWxlLCAnJHV0aWwudG9Kc29uKCRjdHgucmVzdWx0KScsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgfVxuXG4gICAgbmV3IGFwcHN5bmMuUmVzb2x2ZXIodGhpcywgYFJlc29sdmVyJHtvcGVyYXRpb25JZH1gLCB7XG4gICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgdHlwZU5hbWUsXG4gICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICBkYXRhU291cmNlOiBvcHRpb25zLmRhdGFTb3VyY2UsXG4gICAgICByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlOiBhcHBzeW5jLk1hcHBpbmdUZW1wbGF0ZS5mcm9tU3RyaW5nKHRoaXMuc3Vic3RWYXJpYWJsZXMoZnMucmVhZEZpbGVTeW5jKG1hcHBpbmdSZXFGaWxlKS50b1N0cmluZygndXRmLTgnKSwgb3B0aW9ucy52YXJpYWJsZXMpKSxcbiAgICAgIHJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlOiBhcHBzeW5jLk1hcHBpbmdUZW1wbGF0ZS5mcm9tU3RyaW5nKHRoaXMuc3Vic3RWYXJpYWJsZXMoZnMucmVhZEZpbGVTeW5jKG1hcHBpbmdSZXNGaWxlKS50b1N0cmluZygndXRmLTgnKSwgb3B0aW9ucy52YXJpYWJsZXMpKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic3RWYXJpYWJsZXMoZGF0YTogc3RyaW5nLCB2YXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9KTogc3RyaW5nIHtcbiAgICBsZXQgcmVzID0gZGF0YTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gdmFycykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YXJzLCBuYW1lKSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhcnNbbmFtZV07XG4gICAgICAgIHJlcyA9IHJlcy5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFwkXFx7JHtuYW1lfVxcfWAsICdnJyksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRW50cnlGaWxlKGVudHJ5RmlsZTogc3RyaW5nLCB0eXBlTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGZzLndyaXRlRmlsZVN5bmMoZW50cnlGaWxlLCBgaW1wb3J0IHsgaHR0cCB9IGZyb20gJ0B0YWltb3MvbGFtYmRhLXRvb2xib3gnO1xuXG4vLyBUT0RPOiBSZXBsYWNlIFFVRVJZVFlQRSB3aXRoIHRoZSBpbnB1dCB0eXBlIG9mIHRoZSBmaWVsZCAke3R5cGVOYW1lfS4ke2ZpZWxkTmFtZX1cbi8vIFRPRE86IFJlcGxhY2UgUkVUVVJOVFlQRSB3aXRoIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZmllbGQgJHt0eXBlTmFtZX0uJHtmaWVsZE5hbWV9XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gaHR0cC5jcmVhdGVBcHBTeW5jSGFuZGxlcjxRVUVSWVRZUEUsIFJFVFVSTlRZUEU+KGFzeW5jIChjdHgpID0+IHtcbiAgY3R4LmxvZ2dlci5pbmZvKGN0eC5ldmVudCk7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHlldCBpbXBsZW1lbnRlZCcpO1xufSk7YCwge1xuICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgfSk7XG4gIH1cbn0iXX0=
@@ -1,58 +0,0 @@
1
- import * as apiGW from '@aws-cdk/aws-apigatewayv2-alpha';
2
- import { aws_lambda as lambda } from 'aws-cdk-lib';
3
- import { Construct } from 'constructs';
4
- import { OpenAPI3 } from 'openapi-typescript';
5
- import { BaseApi, BaseApiProps } from './base-api';
6
- import { LambdaFunction, LambdaOptions } from './func';
7
- export interface HttpApiProps<OPS> extends BaseApiProps {
8
- /**
9
- * Domain name of the API (e.g. example.com)
10
- *
11
- * @default - No custom domain is configured
12
- */
13
- domainName?: string;
14
- /**
15
- * Hostname of the API if a domain name is specified
16
- *
17
- * @default api
18
- */
19
- apiHostname?: string;
20
- /**
21
- * Generate routes for all endpoints configured in the openapi.yaml file
22
- *
23
- * @default true
24
- */
25
- autoGenerateRoutes?: boolean;
26
- /**
27
- * custom options for the created HttpApi
28
- *
29
- * @default -
30
- */
31
- httpApiProps?: apiGW.HttpApiProps;
32
- /**
33
- * additional options for the underlying Lambda function construct per operationId
34
- *
35
- * @default -
36
- */
37
- lambdaOptionsByOperation?: {
38
- [operationId in keyof OPS]?: LambdaOptions;
39
- };
40
- }
41
- export declare class HttpApi<PATHS, OPS> extends BaseApi {
42
- private props;
43
- readonly api: apiGW.HttpApi;
44
- readonly apiSpec: OpenAPI3;
45
- private _functions;
46
- constructor(scope: Construct, id: string, props: HttpApiProps<OPS>);
47
- /**
48
- * getFunctionForOperation
49
- */
50
- getFunctionForOperation(operationId: keyof OPS): LambdaFunction;
51
- addRoute<P extends keyof PATHS>(path: P, method: keyof PATHS[P], handler: lambda.IFunction): void;
52
- addCustomRoute(path: string, method: string, handler: lambda.IFunction): void;
53
- addRestResource<P extends keyof PATHS>(path: P, method: keyof PATHS[P]): LambdaFunction;
54
- addCustomRestResource(path: string, method: string, operationId: string, description: string, additionalLambdaOptions?: LambdaOptions): LambdaFunction;
55
- private createEntryFile;
56
- private tableWriteAccessForMethod;
57
- private methodTransform;
58
- }