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
@@ -1,9 +1,8 @@
1
1
  import { Construct } from 'constructs';
2
- import { AssetCdn, AssetCdnProps } from './asset-cdn';
3
- import { AuthenticationProps, IAuthentication } from './auth';
2
+ import { AssetCdn } from './asset-cdn';
3
+ import { ICognitoAuthentication, IJwtAuthentication } from './authentication';
4
4
  import { LambdaOptions, LambdaTracingOptions } from './func';
5
- import { Monitoring } from './monitoring';
6
- import { SingleTableDatastore, SingleTableDatastoreProps } from './table';
5
+ import { SingleTableDatastore } from './table';
7
6
  export interface BaseApiProps {
8
7
  /**
9
8
  * Name of the API
@@ -20,29 +19,23 @@ export interface BaseApiProps {
20
19
  */
21
20
  monitoring?: boolean;
22
21
  /**
23
- * Create a DynamoDB Table to store data using the single table design
24
- *
25
- * @default none
26
- */
27
- singleTableDatastore?: SingleTableDatastoreProps;
28
- /**
29
- * Configure a Cognito user pool and use it for authorization
30
- *
31
22
  * @default none
32
23
  */
33
- authentication?: AuthenticationProps;
24
+ singleTableDatastore?: SingleTableDatastore;
34
25
  /**
35
- * Use an existing Cognito user pool and use it for authorization
26
+ * Use a Cognito user pool for authorization.
27
+ * Alternatively supply a JWT issuer and audience
28
+ * to use any other JWT-based authorization service.
36
29
  *
37
30
  * @default none
38
31
  */
39
- existingAuthentication?: IAuthentication;
32
+ authentication?: IJwtAuthentication | ICognitoAuthentication;
40
33
  /**
41
34
  * Configure a content delivery network for static assets
42
35
  *
43
36
  * @default none
44
37
  */
45
- assetCdn?: AssetCdnProps;
38
+ assetCdn?: AssetCdn;
46
39
  /**
47
40
  * Additional environment variables of all Lambda functions
48
41
  */
@@ -59,9 +52,5 @@ export interface BaseApiProps {
59
52
  lambdaTracing?: LambdaTracingOptions;
60
53
  }
61
54
  export declare abstract class BaseApi extends Construct {
62
- readonly singleTableDatastore?: SingleTableDatastore;
63
- readonly authentication?: IAuthentication;
64
- readonly assetCdn?: AssetCdn;
65
- readonly monitoring?: Monitoring;
66
- constructor(scope: Construct, id: string, props: BaseApiProps);
55
+ constructor(scope: Construct, id: string, _props: BaseApiProps);
67
56
  }
@@ -2,45 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseApi = void 0;
4
4
  const constructs_1 = require("constructs");
5
- const asset_cdn_1 = require("./asset-cdn");
6
- const auth_1 = require("./auth");
7
- const monitoring_1 = require("./monitoring");
8
- const table_1 = require("./table");
9
5
  class BaseApi extends constructs_1.Construct {
10
- constructor(scope, id, props) {
11
- var _a;
6
+ constructor(scope, id, _props) {
12
7
  super(scope, id);
13
- if (props.singleTableDatastore) {
14
- this.singleTableDatastore = new table_1.SingleTableDatastore(this, 'SingleTableDS', props.singleTableDatastore);
15
- }
16
- if (props.existingAuthentication && props.authentication) {
17
- throw new Error('Cannot specify new and existing authentication at the same time');
18
- }
19
- if (props.existingAuthentication) {
20
- this.authentication = props.existingAuthentication;
21
- }
22
- if (props.authentication) {
23
- const newAuth = new auth_1.Authentication(this, 'Authentication', props.authentication);
24
- if (this.singleTableDatastore) {
25
- if (newAuth.customMessageFunction) {
26
- newAuth.customMessageFunction.setTable(this.singleTableDatastore.table, false);
27
- }
28
- if (newAuth.preTokenGenerationFunction) {
29
- newAuth.preTokenGenerationFunction.setTable(this.singleTableDatastore.table, false);
30
- }
31
- }
32
- this.authentication = newAuth;
33
- }
34
- if (props.assetCdn) {
35
- this.assetCdn = new asset_cdn_1.AssetCdn(this, 'AssetCdn', props.assetCdn);
36
- }
37
- if ((_a = props.monitoring) !== null && _a !== void 0 ? _a : true) {
38
- this.monitoring = new monitoring_1.Monitoring(this, 'Monitoring', {
39
- apiName: props.apiName,
40
- stageName: props.stageName,
41
- });
42
- }
43
8
  }
44
9
  }
45
10
  exports.BaseApi = BaseApi;
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9iYXNlLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsMkNBQXNEO0FBQ3RELGlDQUE4RTtBQUU5RSw2Q0FBMEM7QUFDMUMsbUNBQTBFO0FBb0UxRSxNQUFzQixPQUFRLFNBQVEsc0JBQVM7SUFPN0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQjs7UUFDM0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLEtBQUssQ0FBQyxvQkFBb0IsRUFBRTtZQUM5QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSw0QkFBb0IsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3pHO1FBQ0QsSUFBSSxLQUFLLENBQUMsc0JBQXNCLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7U0FDcEY7UUFDRCxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsRUFBRTtZQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztTQUNwRDtRQUNELElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqRixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDN0IsSUFBSSxPQUFPLENBQUMscUJBQXFCLEVBQUU7b0JBQ2pDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDaEY7Z0JBQ0QsSUFBSSxPQUFPLENBQUMsMEJBQTBCLEVBQUU7b0JBQ3RDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDckY7YUFDRjtZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hFO1FBRUQsSUFBSSxNQUFBLEtBQUssQ0FBQyxVQUFVLG1DQUFJLElBQUksRUFBRTtZQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksdUJBQVUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO2dCQUNuRCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUzthQUMzQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FFRjtBQTNDRCwwQkEyQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEFzc2V0Q2RuLCBBc3NldENkblByb3BzIH0gZnJvbSAnLi9hc3NldC1jZG4nO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb24sIEF1dGhlbnRpY2F0aW9uUHJvcHMsIElBdXRoZW50aWNhdGlvbiB9IGZyb20gJy4vYXV0aCc7XG5pbXBvcnQgeyBMYW1iZGFPcHRpb25zLCBMYW1iZGFUcmFjaW5nT3B0aW9ucyB9IGZyb20gJy4vZnVuYyc7XG5pbXBvcnQgeyBNb25pdG9yaW5nIH0gZnJvbSAnLi9tb25pdG9yaW5nJztcbmltcG9ydCB7IFNpbmdsZVRhYmxlRGF0YXN0b3JlLCBTaW5nbGVUYWJsZURhdGFzdG9yZVByb3BzIH0gZnJvbSAnLi90YWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUFwaVByb3BzIHtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgQVBJXG4gICAqL1xuICBhcGlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlcGxveW1lbnQgc3RhZ2UgKGUuZy4gZGV2KVxuICAgKi9cbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBDbG91ZFdhdGNoIERhc2hib2FyZCBmb3IgdGhlIEFQSSBhbmQgdGhlIExhbWJkYSBmdW5jdGlvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgbW9uaXRvcmluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER5bmFtb0RCIFRhYmxlIHRvIHN0b3JlIGRhdGEgdXNpbmcgdGhlIHNpbmdsZSB0YWJsZSBkZXNpZ25cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZVxuICAgKi9cbiAgc2luZ2xlVGFibGVEYXRhc3RvcmU/OiBTaW5nbGVUYWJsZURhdGFzdG9yZVByb3BzO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgYSBDb2duaXRvIHVzZXIgcG9vbCBhbmQgdXNlIGl0IGZvciBhdXRob3JpemF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIGF1dGhlbnRpY2F0aW9uPzogQXV0aGVudGljYXRpb25Qcm9wcztcblxuICAvKipcbiAgICogVXNlIGFuIGV4aXN0aW5nIENvZ25pdG8gdXNlciBwb29sIGFuZCB1c2UgaXQgZm9yIGF1dGhvcml6YXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZVxuICAgKi9cbiAgZXhpc3RpbmdBdXRoZW50aWNhdGlvbj86IElBdXRoZW50aWNhdGlvbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGEgY29udGVudCBkZWxpdmVyeSBuZXR3b3JrIGZvciBzdGF0aWMgYXNzZXRzXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIGFzc2V0Q2RuPzogQXNzZXRDZG5Qcm9wcztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb2YgYWxsIExhbWJkYSBmdW5jdGlvbnNcbiAgICovXG4gIGFkZGl0aW9uYWxFbnY/OiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSB1bmRlcmx5aW5nIExhbWJkYSBmdW5jdGlvbiBjb25zdHJ1Y3RcbiAgICovXG4gIGxhbWJkYU9wdGlvbnM/OiBMYW1iZGFPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUcmFjaW5nIGNvbmZpZyBmb3IgdGhlIGdlbmVyYXRlZCBMYW1iZGEgZnVuY3Rpb25zXG4gICAqL1xuICBsYW1iZGFUcmFjaW5nPzogTGFtYmRhVHJhY2luZ09wdGlvbnM7XG5cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VBcGkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBzaW5nbGVUYWJsZURhdGFzdG9yZT86IFNpbmdsZVRhYmxlRGF0YXN0b3JlO1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aGVudGljYXRpb24/OiBJQXV0aGVudGljYXRpb247XG4gIHB1YmxpYyByZWFkb25seSBhc3NldENkbj86IEFzc2V0Q2RuO1xuICBwdWJsaWMgcmVhZG9ubHkgbW9uaXRvcmluZz86IE1vbml0b3Jpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJhc2VBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAocHJvcHMuc2luZ2xlVGFibGVEYXRhc3RvcmUpIHtcbiAgICAgIHRoaXMuc2luZ2xlVGFibGVEYXRhc3RvcmUgPSBuZXcgU2luZ2xlVGFibGVEYXRhc3RvcmUodGhpcywgJ1NpbmdsZVRhYmxlRFMnLCBwcm9wcy5zaW5nbGVUYWJsZURhdGFzdG9yZSk7XG4gICAgfVxuICAgIGlmIChwcm9wcy5leGlzdGluZ0F1dGhlbnRpY2F0aW9uICYmIHByb3BzLmF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzcGVjaWZ5IG5ldyBhbmQgZXhpc3RpbmcgYXV0aGVudGljYXRpb24gYXQgdGhlIHNhbWUgdGltZScpO1xuICAgIH1cbiAgICBpZiAocHJvcHMuZXhpc3RpbmdBdXRoZW50aWNhdGlvbikge1xuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbiA9IHByb3BzLmV4aXN0aW5nQXV0aGVudGljYXRpb247XG4gICAgfVxuICAgIGlmIChwcm9wcy5hdXRoZW50aWNhdGlvbikge1xuICAgICAgY29uc3QgbmV3QXV0aCA9IG5ldyBBdXRoZW50aWNhdGlvbih0aGlzLCAnQXV0aGVudGljYXRpb24nLCBwcm9wcy5hdXRoZW50aWNhdGlvbik7XG4gICAgICBpZiAodGhpcy5zaW5nbGVUYWJsZURhdGFzdG9yZSkge1xuICAgICAgICBpZiAobmV3QXV0aC5jdXN0b21NZXNzYWdlRnVuY3Rpb24pIHtcbiAgICAgICAgICBuZXdBdXRoLmN1c3RvbU1lc3NhZ2VGdW5jdGlvbi5zZXRUYWJsZSh0aGlzLnNpbmdsZVRhYmxlRGF0YXN0b3JlLnRhYmxlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld0F1dGgucHJlVG9rZW5HZW5lcmF0aW9uRnVuY3Rpb24pIHtcbiAgICAgICAgICBuZXdBdXRoLnByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uLnNldFRhYmxlKHRoaXMuc2luZ2xlVGFibGVEYXRhc3RvcmUudGFibGUsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbiA9IG5ld0F1dGg7XG4gICAgfVxuICAgIGlmIChwcm9wcy5hc3NldENkbikge1xuICAgICAgdGhpcy5hc3NldENkbiA9IG5ldyBBc3NldENkbih0aGlzLCAnQXNzZXRDZG4nLCBwcm9wcy5hc3NldENkbik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1vbml0b3JpbmcgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5tb25pdG9yaW5nID0gbmV3IE1vbml0b3JpbmcodGhpcywgJ01vbml0b3JpbmcnLCB7XG4gICAgICAgIGFwaU5hbWU6IHByb3BzLmFwaU5hbWUsXG4gICAgICAgIHN0YWdlTmFtZTogcHJvcHMuc3RhZ2VOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9iYXNlLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFpRXZDLE1BQXNCLE9BQVEsU0FBUSxzQkFBUztJQUU3QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFbkIsQ0FBQztDQUVGO0FBUEQsMEJBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEFzc2V0Q2RuIH0gZnJvbSAnLi9hc3NldC1jZG4nO1xuaW1wb3J0IHsgSUNvZ25pdG9BdXRoZW50aWNhdGlvbiwgSUp3dEF1dGhlbnRpY2F0aW9uIH0gZnJvbSAnLi9hdXRoZW50aWNhdGlvbic7XG5pbXBvcnQgeyBMYW1iZGFPcHRpb25zLCBMYW1iZGFUcmFjaW5nT3B0aW9ucyB9IGZyb20gJy4vZnVuYyc7XG5pbXBvcnQgeyBTaW5nbGVUYWJsZURhdGFzdG9yZSB9IGZyb20gJy4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VBcGlQcm9wcyB7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEFQSVxuICAgKi9cbiAgYXBpTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IHN0YWdlIChlLmcuIGRldilcbiAgICovXG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgQ2xvdWRXYXRjaCBEYXNoYm9hcmQgZm9yIHRoZSBBUEkgYW5kIHRoZSBMYW1iZGEgZnVuY3Rpb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIG1vbml0b3Jpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICBzaW5nbGVUYWJsZURhdGFzdG9yZT86IFNpbmdsZVRhYmxlRGF0YXN0b3JlO1xuXG4gIC8qKlxuICAgKiBVc2UgYSBDb2duaXRvIHVzZXIgcG9vbCBmb3IgYXV0aG9yaXphdGlvbi5cbiAgICogQWx0ZXJuYXRpdmVseSBzdXBwbHkgYSBKV1QgaXNzdWVyIGFuZCBhdWRpZW5jZVxuICAgKiB0byB1c2UgYW55IG90aGVyIEpXVC1iYXNlZCBhdXRob3JpemF0aW9uIHNlcnZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIGF1dGhlbnRpY2F0aW9uPzogSUp3dEF1dGhlbnRpY2F0aW9uIHwgSUNvZ25pdG9BdXRoZW50aWNhdGlvbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGEgY29udGVudCBkZWxpdmVyeSBuZXR3b3JrIGZvciBzdGF0aWMgYXNzZXRzXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIGFzc2V0Q2RuPzogQXNzZXRDZG47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9mIGFsbCBMYW1iZGEgZnVuY3Rpb25zXG4gICAqL1xuICBhZGRpdGlvbmFsRW52Pzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgdW5kZXJseWluZyBMYW1iZGEgZnVuY3Rpb24gY29uc3RydWN0XG4gICAqL1xuICBsYW1iZGFPcHRpb25zPzogTGFtYmRhT3B0aW9ucztcblxuICAvKipcbiAgICogVHJhY2luZyBjb25maWcgZm9yIHRoZSBnZW5lcmF0ZWQgTGFtYmRhIGZ1bmN0aW9uc1xuICAgKi9cbiAgbGFtYmRhVHJhY2luZz86IExhbWJkYVRyYWNpbmdPcHRpb25zO1xuXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQXBpIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBfcHJvcHM6IEJhc2VBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgfVxuXG59XG4iXX0=
@@ -1,7 +1,8 @@
1
1
  import { aws_dynamodb as dynamodb, aws_s3 as s3, aws_cognito as cognito, aws_lambda as lambda, aws_lambda_nodejs as lambdaNodejs } from 'aws-cdk-lib';
2
2
  import * as cdk from 'aws-cdk-lib';
3
3
  import { Construct } from 'constructs';
4
- export declare type LambdaOptions = Omit<lambdaNodejs.NodejsFunctionProps, 'entry' | 'handler' | 'description'>;
4
+ import { IJwtAuthentication } from './authentication';
5
+ export type LambdaOptions = Omit<lambdaNodejs.NodejsFunctionProps, 'entry' | 'handler' | 'description'>;
5
6
  export interface LambdaTracingOptions {
6
7
  /**
7
8
  * Activate tracing with X-Ray
@@ -9,30 +10,6 @@ export interface LambdaTracingOptions {
9
10
  * @default lambda.Tracing.DISABLED
10
11
  */
11
12
  xRayTracing?: lambda.Tracing;
12
- /**
13
- * Activate tracing with Thundra
14
- *
15
- * @default false
16
- */
17
- thundraTracing?: boolean;
18
- /**
19
- * name of the Secret that contains the Thundra API Key
20
- *
21
- * @default Thundra
22
- */
23
- thundraApiKeySecret?: string;
24
- /**
25
- * name of the Secret that contains the Thundra API Key
26
- *
27
- * @default ApiKey
28
- */
29
- thundraApiKeySecretField?: string;
30
- /**
31
- * ARN of the Lambda layer provided by Thundra
32
- *
33
- * @default latest
34
- */
35
- thundraLayerArn?: string;
36
13
  }
37
14
  export interface LambdaFunctionProps {
38
15
  /**
@@ -68,6 +45,10 @@ export interface LambdaFunctionProps {
68
45
  * The name of the pool is available as process.env.USER_POOL_ID
69
46
  */
70
47
  userPool?: cognito.IUserPool;
48
+ /**
49
+ * JwtAuthentication settings
50
+ */
51
+ jwt?: IJwtAuthentication;
71
52
  /**
72
53
  * Bucket that is used for assets and published using the asset CDN
73
54
  * The name of the bucket is available as process.env.ASSET_BUCKET
@@ -1,37 +1,15 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.LambdaFunction = void 0;
27
4
  const aws_cdk_lib_1 = require("aws-cdk-lib");
28
- const cdk = __importStar(require("aws-cdk-lib"));
5
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
29
6
  class LambdaFunction extends aws_cdk_lib_1.aws_lambda_nodejs.NodejsFunction {
30
7
  constructor(scope, id, props) {
31
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
8
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
32
9
  super(scope, id, {
33
10
  ...props.lambdaOptions,
34
11
  entry: props.entry,
12
+ runtime: aws_lambda_1.Runtime.NODEJS_18_X,
35
13
  bundling: {
36
14
  ...(_a = props.lambdaOptions) === null || _a === void 0 ? void 0 : _a.bundling,
37
15
  externalModules: props.includeSDK ? [] : undefined,
@@ -48,6 +26,15 @@ class LambdaFunction extends aws_cdk_lib_1.aws_lambda_nodejs.NodejsFunction {
48
26
  ...props.table && {
49
27
  TABLE: props.table.tableName,
50
28
  },
29
+ ...props.jwt && {
30
+ JWT_ISSUER_URL: props.jwt.issuerUrl,
31
+ },
32
+ ...((_e = props.jwt) === null || _e === void 0 ? void 0 : _e.jwksUrl) && {
33
+ JWT_JWKS_URL: props.jwt.jwksUrl,
34
+ },
35
+ ...((_f = props.jwt) === null || _f === void 0 ? void 0 : _f.audience) && {
36
+ JWT_AUDIENCE_URL: props.jwt.audience.join('||'),
37
+ },
51
38
  ...props.userPool && {
52
39
  USER_POOL_ID: props.userPool.userPoolId,
53
40
  },
@@ -57,23 +44,15 @@ class LambdaFunction extends aws_cdk_lib_1.aws_lambda_nodejs.NodejsFunction {
57
44
  ...props.assetDomainName && {
58
45
  ASSET_DOMAIN_NAME: props.assetDomainName,
59
46
  },
60
- ...((_e = props.lambdaTracing) === null || _e === void 0 ? void 0 : _e.thundraTracing) && {
61
- thundra_agent_lambda_handler: `index.${(_f = props.handler) !== null && _f !== void 0 ? _f : 'handler'}`,
62
- thundra_apiKey: cdk.SecretValue.secretsManager((_g = props.lambdaTracing.thundraApiKeySecret) !== null && _g !== void 0 ? _g : 'Thundra', { jsonField: (_h = props.lambdaTracing.thundraApiKeySecretField) !== null && _h !== void 0 ? _h : 'ApiKey' }).toString(),
63
- },
64
47
  ...props.additionalEnv,
65
48
  },
66
- handler: (_j = props.handler) !== null && _j !== void 0 ? _j : 'handler',
49
+ handler: (_g = props.handler) !== null && _g !== void 0 ? _g : 'handler',
67
50
  description: props.description,
68
- tracing: (_k = props.lambdaTracing) === null || _k === void 0 ? void 0 : _k.xRayTracing,
51
+ tracing: (_h = props.lambdaTracing) === null || _h === void 0 ? void 0 : _h.xRayTracing,
69
52
  });
70
53
  this.props = props;
71
- if ((_l = props.lambdaTracing) === null || _l === void 0 ? void 0 : _l.thundraTracing) {
72
- this.addLayers(aws_cdk_lib_1.aws_lambda.LayerVersion.fromLayerVersionArn(this, 'ThundraLayer', (_o = (_m = this.props.lambdaTracing) === null || _m === void 0 ? void 0 : _m.thundraLayerArn) !== null && _o !== void 0 ? _o : `arn:aws:lambda:${cdk.Stack.of(this).region}:269863060030:layer:thundra-lambda-node-layer-minified:87`));
73
- this.node.tryFindChild('Resource').handler = 'thundra_handler.wrapper';
74
- }
75
54
  if (props.table) {
76
- if ((_p = props.tableWrites) !== null && _p !== void 0 ? _p : true) {
55
+ if ((_j = props.tableWrites) !== null && _j !== void 0 ? _j : true) {
77
56
  props.table.grantReadWriteData(this);
78
57
  }
79
58
  else {
@@ -167,4 +146,4 @@ class LambdaFunction extends aws_cdk_lib_1.aws_lambda_nodejs.NodejsFunction {
167
146
  }
168
147
  }
169
148
  exports.LambdaFunction = LambdaFunction;
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL2Z1bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FPcUI7QUFDckIsaURBQW1DO0FBdUhuQyxNQUFhLGNBQWUsU0FBUSwrQkFBWSxDQUFDLGNBQWM7SUFFN0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBVSxLQUEwQjs7UUFDMUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUssQ0FBQyxhQUFhO1lBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxNQUFBLEtBQUssQ0FBQyxhQUFhLDBDQUFFLFFBQVE7Z0JBQ2hDLGVBQWUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2xELE1BQU0sRUFBRTtvQkFDTixHQUFHLE1BQUEsTUFBQSxLQUFLLENBQUMsYUFBYSwwQ0FBRSxRQUFRLDBDQUFFLE1BQU07b0JBQ3hDLE9BQU8sRUFBRSxNQUFNO2lCQUNoQjthQUNGO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLEdBQUcsTUFBQSxLQUFLLENBQUMsYUFBYSwwQ0FBRSxXQUFXO2dCQUNuQyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUk7b0JBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUztpQkFDdkI7Z0JBQ0QsR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJO29CQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTO2lCQUM3QjtnQkFDRCxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUk7b0JBQ25CLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVU7aUJBQ3hDO2dCQUNELEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSTtvQkFDdEIsWUFB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MEJBQTBCO2dCQUMxQixvQ0FBb0M7YUFDckM7WUFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7U0FDN0MsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQztZQUMvRCxPQUFPLEVBQUU7Z0JBQ1AsdUNBQXVDO2dCQUN2QyxpQ0FBaUM7Z0JBQ2pDLHNDQUFzQztnQkFDdEMsNkJBQTZCO2dCQUM3Qiw2QkFBNkI7YUFDOUI7WUFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7U0FDN0MsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBcUI7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFtQyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNuRyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FFRjtBQXRKRCx3Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhd3NfZHluYW1vZGIgYXMgZHluYW1vZGIsXG4gIGF3c19zMyBhcyBzMyxcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19jb2duaXRvIGFzIGNvZ25pdG8sXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxuICBhd3NfbGFtYmRhX25vZGVqcyBhcyBsYW1iZGFOb2RlanMsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IHR5cGUgTGFtYmRhT3B0aW9ucyA9IE9taXQ8bGFtYmRhTm9kZWpzLk5vZGVqc0Z1bmN0aW9uUHJvcHMsICdlbnRyeScgfCAnaGFuZGxlcicgfCAnZGVzY3JpcHRpb24nPlxuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYVRyYWNpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFjdGl2YXRlIHRyYWNpbmcgd2l0aCBYLVJheVxuICAgKlxuICAgKiBAZGVmYXVsdCBsYW1iZGEuVHJhY2luZy5ESVNBQkxFRFxuICAgKi9cbiAgeFJheVRyYWNpbmc/OiBsYW1iZGEuVHJhY2luZztcblxuICAvKipcbiAgICogQWN0aXZhdGUgdHJhY2luZyB3aXRoIFRodW5kcmFcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHRodW5kcmFUcmFjaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogbmFtZSBvZiB0aGUgU2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIFRodW5kcmEgQVBJIEtleVxuICAgKlxuICAgKiBAZGVmYXVsdCBUaHVuZHJhXG4gICAqL1xuICB0aHVuZHJhQXBpS2V5U2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBuYW1lIG9mIHRoZSBTZWNyZXQgdGhhdCBjb250YWlucyB0aGUgVGh1bmRyYSBBUEkgS2V5XG4gICAqXG4gICAqIEBkZWZhdWx0IEFwaUtleVxuICAgKi9cbiAgdGh1bmRyYUFwaUtleVNlY3JldEZpZWxkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgdGhlIExhbWJkYSBsYXllciBwcm92aWRlZCBieSBUaHVuZHJhXG4gICAqXG4gICAqIEBkZWZhdWx0IGxhdGVzdFxuICAgKi9cbiAgdGh1bmRyYUxheWVyQXJuPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIERlcGxveW1lbnQgc3RhZ2UgKGUuZy4gZGV2KVxuICAgKi9cbiAgc3RhZ2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBlbnRyeSBmaWxlIG5hbWVcbiAgICovXG4gIGVudHJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIG5hbWUgb2YgdGhlIGV4cG9ydGVkIGhhbmRsZXIgZnVuY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgaGFuZGxlclxuICAgKi9cbiAgaGFuZGxlcj86IHN0cmluZztcblxuICAvKipcbiAgICogZGVzY3JpcHRpb24gb2YgdGhlIExhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIER5bmFtb0RCIHRoYXQgaXMgdXNlZCBhcyBkYXRhc3RvcmVcbiAgICogVGhlIExhbWJkYSBmdW5jdGlvbiB3aWxsIGhhdmUgcmVhZCBhY2Nlc3MgdG8gdGhpcyB0YWJsZSBhdXRvbWF0aWNhbGx5XG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBpcyBhdmFpbGFibGUgYXMgcHJvY2Vzcy5lbnYuVEFCTEVcbiAgICovXG4gIHRhYmxlPzogZHluYW1vZGIuSVRhYmxlO1xuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGUgRHluYW1vREIgdGFibGVcbiAgICovXG4gIHRhYmxlV3JpdGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29nbml0byB1c2VyIHBvb2xcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBvb2wgaXMgYXZhaWxhYmxlIGFzIHByb2Nlc3MuZW52LlVTRVJfUE9PTF9JRFxuICAgKi9cbiAgdXNlclBvb2w/OiBjb2duaXRvLklVc2VyUG9vbDtcblxuICAvKipcbiAgICogQnVja2V0IHRoYXQgaXMgdXNlZCBmb3IgYXNzZXRzIGFuZCBwdWJsaXNoZWQgdXNpbmcgdGhlIGFzc2V0IENETlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnVja2V0IGlzIGF2YWlsYWJsZSBhcyBwcm9jZXNzLmVudi5BU1NFVF9CVUNLRVRcbiAgICovXG4gIGFzc2V0QnVja2V0PzogczMuQnVja2V0O1xuXG4gIC8qKlxuICAgKiBGdWxseSBxdWFsaWZpZWQgZG9tYWluIG5hbWUgb2YgdGhlIGFzc2V0IENETlxuICAgKiBJdCBpcyBhdmFpbGFibGUgYXMgcHJvY2Vzcy5lbnYuQVNTRVRfRE9NQUlOX05BTUVcbiAgICovXG4gIGFzc2V0RG9tYWluTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBBV1MtU0RLIGJlIHBhY2thZ2VkIHdpdGggdGhlIExhbWJkYSBjb2RlIG9yIGV4Y2x1ZGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlIChleGNsdWRlIFNESyBhbmQgdXNlIHJ1bnRpbWUgcHJvdmlkZWQgb25lKVxuICAgKi9cbiAgaW5jbHVkZVNESz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb25cbiAgICovXG4gIGFkZGl0aW9uYWxFbnY/OiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSB1bmRlcmx5aW5nIExhbWJkYSBmdW5jdGlvbiBjb25zdHJ1Y3RcbiAgICovXG4gIGxhbWJkYU9wdGlvbnM/OiBMYW1iZGFPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUcmFjaW5nIGNvbmZpZ1xuICAgKi9cbiAgbGFtYmRhVHJhY2luZz86IExhbWJkYVRyYWNpbmdPcHRpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgTGFtYmRhRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGFOb2RlanMuTm9kZWpzRnVuY3Rpb24ge1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByaXZhdGUgcHJvcHM6IExhbWJkYUZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLmxhbWJkYU9wdGlvbnMsXG4gICAgICBlbnRyeTogcHJvcHMuZW50cnksXG4gICAgICBidW5kbGluZzoge1xuICAgICAgICAuLi5wcm9wcy5sYW1iZGFPcHRpb25zPy5idW5kbGluZyxcbiAgICAgICAgZXh0ZXJuYWxNb2R1bGVzOiBwcm9wcy5pbmNsdWRlU0RLID8gW10gOiB1bmRlZmluZWQsXG4gICAgICAgIGxvYWRlcjoge1xuICAgICAgICAgIC4uLnByb3BzLmxhbWJkYU9wdGlvbnM/LmJ1bmRsaW5nPy5sb2FkZXIsXG4gICAgICAgICAgJy55YW1sJzogJ3RleHQnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC4uLnByb3BzLmxhbWJkYU9wdGlvbnM/LmVudmlyb25tZW50LFxuICAgICAgICAuLi5wcm9wcy5zdGFnZU5hbWUgJiYge1xuICAgICAgICAgIFNUQUdFOiBwcm9wcy5zdGFnZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3BzLnRhYmxlICYmIHtcbiAgICAgICAgICBUQUJMRTogcHJvcHMudGFibGUudGFibGVOYW1lLFxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wcy51c2VyUG9vbCAmJiB7XG4gICAgICAgICAgVVNFUl9QT09MX0lEOiBwcm9wcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wcy5hc3NldEJ1Y2tldCAmJiB7XG4gICAgICAgICAgQVNTRVRfQlVDS0VUOiBwcm9wcy5hc3NldEJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wcy5hc3NldERvbWFpbk5hbWUgJiYge1xuICAgICAgICAgIEFTU0VUX0RPTUFJTl9OQU1FOiBwcm9wcy5hc3NldERvbWFpbk5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3BzLmxhbWJkYVRyYWNpbmc/LnRodW5kcmFUcmFjaW5nICYmIHtcbiAgICAgICAgICB0aHVuZHJhX2FnZW50X2xhbWJkYV9oYW5kbGVyOiBgaW5kZXguJHtwcm9wcy5oYW5kbGVyID8/ICdoYW5kbGVyJ31gLFxuICAgICAgICAgIHRodW5kcmFfYXBpS2V5OiBjZGsuU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIocHJvcHMubGFtYmRhVHJhY2luZy50aHVuZHJhQXBpS2V5U2VjcmV0ID8/ICdUaHVuZHJhJywgeyBqc29uRmllbGQ6IHByb3BzLmxhbWJkYVRyYWNpbmcudGh1bmRyYUFwaUtleVNlY3JldEZpZWxkID8/ICdBcGlLZXknIH0pLnRvU3RyaW5nKCksXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3BzLmFkZGl0aW9uYWxFbnYsXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogcHJvcHMuaGFuZGxlciA/PyAnaGFuZGxlcicsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICB0cmFjaW5nOiBwcm9wcy5sYW1iZGFUcmFjaW5nPy54UmF5VHJhY2luZyxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5sYW1iZGFUcmFjaW5nPy50aHVuZHJhVHJhY2luZykge1xuICAgICAgdGhpcy5hZGRMYXllcnMobGFtYmRhLkxheWVyVmVyc2lvbi5mcm9tTGF5ZXJWZXJzaW9uQXJuKHRoaXMsICdUaHVuZHJhTGF5ZXInLCB0aGlzLnByb3BzLmxhbWJkYVRyYWNpbmc/LnRodW5kcmFMYXllckFybiA/PyBgYXJuOmF3czpsYW1iZGE6JHtjZGsuU3RhY2sub2YodGhpcykucmVnaW9ufToyNjk4NjMwNjAwMzA6bGF5ZXI6dGh1bmRyYS1sYW1iZGEtbm9kZS1sYXllci1taW5pZmllZDo4N2ApKTtcbiAgICAgICh0aGlzLm5vZGUudHJ5RmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGxhbWJkYS5DZm5GdW5jdGlvbikuaGFuZGxlciA9ICd0aHVuZHJhX2hhbmRsZXIud3JhcHBlcic7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRhYmxlKSB7XG4gICAgICBpZiAocHJvcHMudGFibGVXcml0ZXMgPz8gdHJ1ZSkge1xuICAgICAgICBwcm9wcy50YWJsZS5ncmFudFJlYWRXcml0ZURhdGEodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wcy50YWJsZS5ncmFudFJlYWREYXRhKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRUYWJsZSh0YWJsZTogZHluYW1vZGIuSVRhYmxlLCB0YWJsZVdyaXRlcz86IGJvb2xlYW4pOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgdGhpcy5wcm9wcy50YWJsZSA9IHRhYmxlO1xuICAgIHRoaXMucHJvcHMudGFibGVXcml0ZXMgPSB0YWJsZVdyaXRlcztcblxuICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoJ1RBQkxFJywgdGFibGUudGFibGVOYW1lKTtcbiAgICBpZiAodGFibGVXcml0ZXMgPz8gdHJ1ZSkge1xuICAgICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWJsZS5ncmFudFJlYWREYXRhKHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNldFVzZXJQb29sKHVzZXJQb29sOiBjb2duaXRvLklVc2VyUG9vbCk6IExhbWJkYUZ1bmN0aW9uIHtcbiAgICB0aGlzLnByb3BzLnVzZXJQb29sID0gdXNlclBvb2w7XG4gICAgdGhpcy5hZGRFbnZpcm9ubWVudCgnVVNFUl9QT09MX0lEJywgdXNlclBvb2wudXNlclBvb2xJZCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRUYWJsZVdyaXRlKCk6IExhbWJkYUZ1bmN0aW9uIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudGFibGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gdGFibGUgY29uZmlndXJlZCcpO1xuICAgIH1cbiAgICB0aGlzLnByb3BzLnRhYmxlLmdyYW50UmVhZFdyaXRlRGF0YSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBncmFudFNlbmRFbWFpbHMoKTogTGFtYmRhRnVuY3Rpb24ge1xuICAgIHRoaXMuZ3JhbnRQcmluY2lwYWwuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnc2VzOlNlbmRFbWFpbCcsXG4gICAgICAgICdzZXM6U2VuZFRlbXBsYXRlZEVtYWlsJyxcbiAgICAgICAgJ3NlczpTZW5kQnVsa1RlbXBsYXRlZEVtYWlsJyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBncmFudFVwbG9hZEFzc2V0cygpOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLmFzc2V0QnVja2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGFzc2V0IGJ1Y2tldCBjb25maWd1cmVkJyk7XG4gICAgfVxuICAgIHRoaXMucHJvcHMuYXNzZXRCdWNrZXQuZ3JhbnRQdXQodGhpcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnREZWxldGVBc3NldCgpOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLmFzc2V0QnVja2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGFzc2V0IGJ1Y2tldCBjb25maWd1cmVkJyk7XG4gICAgfVxuICAgIHRoaXMucHJvcHMuYXNzZXRCdWNrZXQuZ3JhbnREZWxldGUodGhpcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRVc2VycG9vbFJlYWQoKTogTGFtYmRhRnVuY3Rpb24ge1xuICAgIGlmICghdGhpcy5wcm9wcy51c2VyUG9vbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyB1c2VyIHBvb2wgY29uZmlndXJlZCcpO1xuICAgIH1cbiAgICB0aGlzLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ2NvZ25pdG8taWRwOkxpc3RVc2VycycsXG4gICAgICAgICdjb2duaXRvLWlkcDpBZG1pbkdldFVzZXInLFxuICAgICAgICAnY29nbml0by1pZHA6QWRtaW5MaXN0R3JvdXBzRm9yVXNlcicsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiBbdGhpcy5wcm9wcy51c2VyUG9vbC51c2VyUG9vbEFybl0sXG4gICAgfSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdyYW50VXNlcnBvb2xSZWFkV3JpdGUoKTogTGFtYmRhRnVuY3Rpb24ge1xuICAgIGlmICghdGhpcy5wcm9wcy51c2VyUG9vbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyB1c2VyIHBvb2wgY29uZmlndXJlZCcpO1xuICAgIH1cbiAgICB0aGlzLmdyYW50VXNlcnBvb2xSZWFkKCk7XG4gICAgdGhpcy5ncmFudFByaW5jaXBhbC5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdjb2duaXRvLWlkcDpBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzJyxcbiAgICAgICAgJ2NvZ25pdG8taWRwOkFkbWluQWRkVXNlclRvR3JvdXAnLFxuICAgICAgICAnY29nbml0by1pZHA6QWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwJyxcbiAgICAgICAgJ2NvZ25pdG8taWRwOkFkbWluQ3JlYXRlVXNlcicsXG4gICAgICAgICdjb2duaXRvLWlkcDpBZG1pbkRlbGV0ZVVzZXInLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogW3RoaXMucHJvcHMudXNlclBvb2wudXNlclBvb2xBcm5dLFxuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRUaW1lb3V0KHRpbWVvdXQ6IGNkay5EdXJhdGlvbik6IExhbWJkYUZ1bmN0aW9uIHtcbiAgICAodGhpcy5ub2RlLmRlZmF1bHRDaGlsZCBhcyBsYW1iZGEuQ2ZuRnVuY3Rpb24pLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ1RpbWVvdXQnLCB0aW1lb3V0LnRvU2Vjb25kcygpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG59Il19
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL2Z1bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBT3FCO0FBRXJCLHVEQUFpRDtBQWtHakQsTUFBYSxjQUFlLFNBQVEsK0JBQVksQ0FBQyxjQUFjO0lBRTdELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQVUsS0FBMEI7O1FBQzFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLLENBQUMsYUFBYTtZQUN0QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxNQUFBLEtBQUssQ0FBQyxhQUFhLDBDQUFFLFFBQVE7Z0JBQ2hDLGVBQWUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2xELE1BQU0sRUFBRTtvQkFDTixHQUFHLE1BQUEsTUFBQSxLQUFLLENBQUMsYUFBYSwwQ0FBRSxRQUFRLDBDQUFFLE1BQU07b0JBQ3hDLE9BQU8sRUFBRSxNQUFNO2lCQUNoQjthQUNGO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLEdBQUcsTUFBQSxLQUFLLENBQUMsYUFBYSwwQ0FBRSxXQUFXO2dCQUNuQyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUk7b0JBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUztpQkFDdkI7Z0JBQ0QsR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJO29CQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTO2lCQUM3QjtnQkFDRCxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUk7b0JBQ2QsY0FBYyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUztpQkFDcEM7Z0JBQ0QsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLEdB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QUFJLHFCQUFHLENBQUMsZUFBZSxDQUFDO1lBQy9ELE9BQU8sRUFBRTtnQkFDUCx1Q0FBdUM7Z0JBQ3ZDLGlDQUFpQztnQkFDakMsc0NBQXNDO2dCQUN0Qyw2QkFBNkI7Z0JBQzdCLDZCQUE2QjthQUM5QjtZQUNELFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztTQUM3QyxDQUFDLENBQUMsQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFxQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQW1DLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25HLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUVGO0FBdkpELHdDQXVKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19keW5hbW9kYiBhcyBkeW5hbW9kYixcbiAgYXdzX3MzIGFzIHMzLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2NvZ25pdG8gYXMgY29nbml0byxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG4gIGF3c19sYW1iZGFfbm9kZWpzIGFzIGxhbWJkYU5vZGVqcyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUp3dEF1dGhlbnRpY2F0aW9uIH0gZnJvbSAnLi9hdXRoZW50aWNhdGlvbic7XG5cbmV4cG9ydCB0eXBlIExhbWJkYU9wdGlvbnMgPSBPbWl0PGxhbWJkYU5vZGVqcy5Ob2RlanNGdW5jdGlvblByb3BzLCAnZW50cnknIHwgJ2hhbmRsZXInIHwgJ2Rlc2NyaXB0aW9uJz5cblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFUcmFjaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBY3RpdmF0ZSB0cmFjaW5nIHdpdGggWC1SYXlcbiAgICpcbiAgICogQGRlZmF1bHQgbGFtYmRhLlRyYWNpbmcuRElTQUJMRURcbiAgICovXG4gIHhSYXlUcmFjaW5nPzogbGFtYmRhLlRyYWNpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhRnVuY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IHN0YWdlIChlLmcuIGRldilcbiAgICovXG4gIHN0YWdlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogZW50cnkgZmlsZSBuYW1lXG4gICAqL1xuICBlbnRyeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBuYW1lIG9mIHRoZSBleHBvcnRlZCBoYW5kbGVyIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IGhhbmRsZXJcbiAgICovXG4gIGhhbmRsZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGRlc2NyaXB0aW9uIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEeW5hbW9EQiB0aGF0IGlzIHVzZWQgYXMgZGF0YXN0b3JlXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gd2lsbCBoYXZlIHJlYWQgYWNjZXNzIHRvIHRoaXMgdGFibGUgYXV0b21hdGljYWxseVxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFibGUgaXMgYXZhaWxhYmxlIGFzIHByb2Nlc3MuZW52LlRBQkxFXG4gICAqL1xuICB0YWJsZT86IGR5bmFtb2RiLklUYWJsZTtcblxuICAvKipcbiAgICogQWN0aXZhdGUgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhlIER5bmFtb0RCIHRhYmxlXG4gICAqL1xuICB0YWJsZVdyaXRlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvZ25pdG8gdXNlciBwb29sXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwb29sIGlzIGF2YWlsYWJsZSBhcyBwcm9jZXNzLmVudi5VU0VSX1BPT0xfSURcbiAgICovXG4gIHVzZXJQb29sPzogY29nbml0by5JVXNlclBvb2w7XG5cbiAgLyoqXG4gICAqIEp3dEF1dGhlbnRpY2F0aW9uIHNldHRpbmdzXG4gICAqL1xuICBqd3Q/IDogSUp3dEF1dGhlbnRpY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBCdWNrZXQgdGhhdCBpcyB1c2VkIGZvciBhc3NldHMgYW5kIHB1Ymxpc2hlZCB1c2luZyB0aGUgYXNzZXQgQ0ROXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidWNrZXQgaXMgYXZhaWxhYmxlIGFzIHByb2Nlc3MuZW52LkFTU0VUX0JVQ0tFVFxuICAgKi9cbiAgYXNzZXRCdWNrZXQ/OiBzMy5CdWNrZXQ7XG5cbiAgLyoqXG4gICAqIEZ1bGx5IHF1YWxpZmllZCBkb21haW4gbmFtZSBvZiB0aGUgYXNzZXQgQ0ROXG4gICAqIEl0IGlzIGF2YWlsYWJsZSBhcyBwcm9jZXNzLmVudi5BU1NFVF9ET01BSU5fTkFNRVxuICAgKi9cbiAgYXNzZXREb21haW5OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIEFXUy1TREsgYmUgcGFja2FnZWQgd2l0aCB0aGUgTGFtYmRhIGNvZGUgb3IgZXhjbHVkZWRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgKGV4Y2x1ZGUgU0RLIGFuZCB1c2UgcnVudGltZSBwcm92aWRlZCBvbmUpXG4gICAqL1xuICBpbmNsdWRlU0RLPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb2YgdGhlIExhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgYWRkaXRpb25hbEVudj86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIHVuZGVybHlpbmcgTGFtYmRhIGZ1bmN0aW9uIGNvbnN0cnVjdFxuICAgKi9cbiAgbGFtYmRhT3B0aW9ucz86IExhbWJkYU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRyYWNpbmcgY29uZmlnXG4gICAqL1xuICBsYW1iZGFUcmFjaW5nPzogTGFtYmRhVHJhY2luZ09wdGlvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBMYW1iZGFGdW5jdGlvbiBleHRlbmRzIGxhbWJkYU5vZGVqcy5Ob2RlanNGdW5jdGlvbiB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJpdmF0ZSBwcm9wczogTGFtYmRhRnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMubGFtYmRhT3B0aW9ucyxcbiAgICAgIGVudHJ5OiBwcm9wcy5lbnRyeSxcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICBidW5kbGluZzoge1xuICAgICAgICAuLi5wcm9wcy5sYW1iZGFPcHRpb25zPy5idW5kbGluZyxcbiAgICAgICAgZXh0ZXJuYWxNb2R1bGVzOiBwcm9wcy5pbmNsdWRlU0RLID8gW10gOiB1bmRlZmluZWQsXG4gICAgICAgIGxvYWRlcjoge1xuICAgICAgICAgIC4uLnByb3BzLmxhbWJkYU9wdGlvbnM/LmJ1bmRsaW5nPy5sb2FkZXIsXG4gICAgICAgICAgJy55YW1sJzogJ3RleHQnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC4uLnByb3BzLmxhbWJkYU9wdGlvbnM/LmVudmlyb25tZW50LFxuICAgICAgICAuLi5wcm9wcy5zdGFnZU5hbWUgJiYge1xuICAgICAgICAgIFNUQUdFOiBwcm9wcy5zdGFnZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3BzLnRhYmxlICYmIHtcbiAgICAgICAgICBUQUJMRTogcHJvcHMudGFibGUudGFibGVOYW1lLFxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wcy5qd3QgJiYge1xuICAgICAgICAgIEpXVF9JU1NVRVJfVVJMOiBwcm9wcy5qd3QuaXNzdWVyVXJsLFxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wcy5qd3Q/Lmp3a3NVcmwgJiYge1xuICAgICAgICAgIEpXVF9KV0tTX1VSTDogcHJvcHMuand0Lmp3a3NVcmwsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3BzLmp3dD8uYXVkaWVuY2UgJiYge1xuICAgICAgICAgIEpXVF9BVURJRU5DRV9VUkw6IHByb3BzLmp3dC5hdWRpZW5jZS5qb2luKCd8fCcpLFxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wcy51c2VyUG9vbCAmJiB7XG4gICAgICAgICAgVVNFUl9QT09MX0lEOiBwcm9wcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wcy5hc3NldEJ1Y2tldCAmJiB7XG4gICAgICAgICAgQVNTRVRfQlVDS0VUOiBwcm9wcy5hc3NldEJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wcy5hc3NldERvbWFpbk5hbWUgJiYge1xuICAgICAgICAgIEFTU0VUX0RPTUFJTl9OQU1FOiBwcm9wcy5hc3NldERvbWFpbk5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3BzLmFkZGl0aW9uYWxFbnYsXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogcHJvcHMuaGFuZGxlciA/PyAnaGFuZGxlcicsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICB0cmFjaW5nOiBwcm9wcy5sYW1iZGFUcmFjaW5nPy54UmF5VHJhY2luZyxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy50YWJsZSkge1xuICAgICAgaWYgKHByb3BzLnRhYmxlV3JpdGVzID8/IHRydWUpIHtcbiAgICAgICAgcHJvcHMudGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKHRoaXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcHMudGFibGUuZ3JhbnRSZWFkRGF0YSh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VGFibGUodGFibGU6IGR5bmFtb2RiLklUYWJsZSwgdGFibGVXcml0ZXM/OiBib29sZWFuKTogTGFtYmRhRnVuY3Rpb24ge1xuICAgIHRoaXMucHJvcHMudGFibGUgPSB0YWJsZTtcbiAgICB0aGlzLnByb3BzLnRhYmxlV3JpdGVzID0gdGFibGVXcml0ZXM7XG5cbiAgICB0aGlzLmFkZEVudmlyb25tZW50KCdUQUJMRScsIHRhYmxlLnRhYmxlTmFtZSk7XG4gICAgaWYgKHRhYmxlV3JpdGVzID8/IHRydWUpIHtcbiAgICAgIHRhYmxlLmdyYW50UmVhZFdyaXRlRGF0YSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFibGUuZ3JhbnRSZWFkRGF0YSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRVc2VyUG9vbCh1c2VyUG9vbDogY29nbml0by5JVXNlclBvb2wpOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgdGhpcy5wcm9wcy51c2VyUG9vbCA9IHVzZXJQb29sO1xuICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoJ1VTRVJfUE9PTF9JRCcsIHVzZXJQb29sLnVzZXJQb29sSWQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdyYW50VGFibGVXcml0ZSgpOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnRhYmxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHRhYmxlIGNvbmZpZ3VyZWQnKTtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy50YWJsZS5ncmFudFJlYWRXcml0ZURhdGEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRTZW5kRW1haWxzKCk6IExhbWJkYUZ1bmN0aW9uIHtcbiAgICB0aGlzLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3NlczpTZW5kRW1haWwnLFxuICAgICAgICAnc2VzOlNlbmRUZW1wbGF0ZWRFbWFpbCcsXG4gICAgICAgICdzZXM6U2VuZEJ1bGtUZW1wbGF0ZWRFbWFpbCcsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRVcGxvYWRBc3NldHMoKTogTGFtYmRhRnVuY3Rpb24ge1xuICAgIGlmICghdGhpcy5wcm9wcy5hc3NldEJ1Y2tldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBhc3NldCBidWNrZXQgY29uZmlndXJlZCcpO1xuICAgIH1cbiAgICB0aGlzLnByb3BzLmFzc2V0QnVja2V0LmdyYW50UHV0KHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdyYW50RGVsZXRlQXNzZXQoKTogTGFtYmRhRnVuY3Rpb24ge1xuICAgIGlmICghdGhpcy5wcm9wcy5hc3NldEJ1Y2tldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBhc3NldCBidWNrZXQgY29uZmlndXJlZCcpO1xuICAgIH1cbiAgICB0aGlzLnByb3BzLmFzc2V0QnVja2V0LmdyYW50RGVsZXRlKHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdyYW50VXNlcnBvb2xSZWFkKCk6IExhbWJkYUZ1bmN0aW9uIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudXNlclBvb2wpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gdXNlciBwb29sIGNvbmZpZ3VyZWQnKTtcbiAgICB9XG4gICAgdGhpcy5ncmFudFByaW5jaXBhbC5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdjb2duaXRvLWlkcDpMaXN0VXNlcnMnLFxuICAgICAgICAnY29nbml0by1pZHA6QWRtaW5HZXRVc2VyJyxcbiAgICAgICAgJ2NvZ25pdG8taWRwOkFkbWluTGlzdEdyb3Vwc0ZvclVzZXInLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogW3RoaXMucHJvcHMudXNlclBvb2wudXNlclBvb2xBcm5dLFxuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBncmFudFVzZXJwb29sUmVhZFdyaXRlKCk6IExhbWJkYUZ1bmN0aW9uIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudXNlclBvb2wpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gdXNlciBwb29sIGNvbmZpZ3VyZWQnKTtcbiAgICB9XG4gICAgdGhpcy5ncmFudFVzZXJwb29sUmVhZCgpO1xuICAgIHRoaXMuZ3JhbnRQcmluY2lwYWwuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnY29nbml0by1pZHA6QWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlcycsXG4gICAgICAgICdjb2duaXRvLWlkcDpBZG1pbkFkZFVzZXJUb0dyb3VwJyxcbiAgICAgICAgJ2NvZ25pdG8taWRwOkFkbWluUmVtb3ZlVXNlckZyb21Hcm91cCcsXG4gICAgICAgICdjb2duaXRvLWlkcDpBZG1pbkNyZWF0ZVVzZXInLFxuICAgICAgICAnY29nbml0by1pZHA6QWRtaW5EZWxldGVVc2VyJyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFt0aGlzLnByb3BzLnVzZXJQb29sLnVzZXJQb29sQXJuXSxcbiAgICB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2V0VGltZW91dCh0aW1lb3V0OiBjZGsuRHVyYXRpb24pOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgKHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgYXMgbGFtYmRhLkNmbkZ1bmN0aW9uKS5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdUaW1lb3V0JywgdGltZW91dC50b1NlY29uZHMoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxufSJdfQ==
@@ -1,9 +1,7 @@
1
1
  export * from './asset-cdn';
2
- export * from './auth';
2
+ export * from './authentication';
3
+ export * from './base-api';
3
4
  export * from './func';
4
- export * from './scheduled-func';
5
- export * from './graphql-api';
6
- export * from './http-api';
7
- export * from './monitoring';
5
+ export * from './rest-api';
8
6
  export * from './table';
9
- export * from './webhook';
7
+ export * from './workflow';
@@ -15,12 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./asset-cdn"), exports);
18
- __exportStar(require("./auth"), exports);
18
+ __exportStar(require("./authentication"), exports);
19
+ __exportStar(require("./base-api"), exports);
19
20
  __exportStar(require("./func"), exports);
20
- __exportStar(require("./scheduled-func"), exports);
21
- __exportStar(require("./graphql-api"), exports);
22
- __exportStar(require("./http-api"), exports);
23
- __exportStar(require("./monitoring"), exports);
21
+ __exportStar(require("./rest-api"), exports);
24
22
  __exportStar(require("./table"), exports);
25
- __exportStar(require("./webhook"), exports);
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQTRCO0FBQzVCLHlDQUF1QjtBQUN2Qix5Q0FBdUI7QUFDdkIsbURBQWlDO0FBQ2pDLGdEQUE4QjtBQUM5Qiw2Q0FBMkI7QUFDM0IsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4Qiw0Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Fzc2V0LWNkbic7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jJztcbmV4cG9ydCAqIGZyb20gJy4vc2NoZWR1bGVkLWZ1bmMnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmFwaHFsLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbW9uaXRvcmluZyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vd2ViaG9vayc7Il19
23
+ __exportStar(require("./workflow"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQTRCO0FBQzVCLG1EQUFpQztBQUNqQyw2Q0FBMkI7QUFDM0IseUNBQXVCO0FBQ3ZCLDZDQUEyQjtBQUMzQiwwQ0FBd0I7QUFDeEIsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hc3NldC1jZG4nO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoZW50aWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuYyc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc3QtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi93b3JrZmxvdyc7Il19
@@ -0,0 +1,73 @@
1
+ import { aws_apigateway } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ import { OpenAPI3, OperationObject } from 'openapi-typescript';
4
+ import { BaseApi, BaseApiProps } from './base-api';
5
+ import { LambdaFunction, LambdaOptions } from './func';
6
+ export interface RestApiProps<OPS> extends BaseApiProps {
7
+ /**
8
+ * Domain name of the API (e.g. example.com)
9
+ *
10
+ * @default - No custom domain is configured
11
+ */
12
+ domainName?: string;
13
+ /**
14
+ * Hostname of the API if a domain name is specified
15
+ *
16
+ * @default api
17
+ */
18
+ apiHostname?: string;
19
+ /**
20
+ * Generate routes for all endpoints configured in the openapi.yaml file
21
+ *
22
+ * @default true
23
+ */
24
+ autoGenerateRoutes?: boolean;
25
+ /**
26
+ * custom options for the created HttpApi
27
+ *
28
+ * @default -
29
+ */
30
+ restApiProps?: aws_apigateway.RestApiBaseProps;
31
+ /**
32
+ * additional options for the underlying Lambda function construct per operationId
33
+ *
34
+ * @default -
35
+ */
36
+ lambdaOptionsByOperation?: {
37
+ [operationId in keyof OPS]?: LambdaOptions;
38
+ };
39
+ definitionFileName: string;
40
+ }
41
+ export declare class RestApi<PATHS, OPS> extends BaseApi {
42
+ private props;
43
+ readonly api: aws_apigateway.SpecRestApi;
44
+ readonly apiSpec: OpenAPI3;
45
+ private _functions;
46
+ constructor(scope: Construct, id: string, props: RestApiProps<OPS>);
47
+ protected cleanupSpec(spec: {
48
+ [key: string]: any;
49
+ }): {
50
+ [key: string]: any;
51
+ };
52
+ /**
53
+ * return the generated Lambda function for the specified API operation
54
+ */
55
+ getFunctionForOperation(operationId: keyof OPS): LambdaFunction;
56
+ /**
57
+ * return a list of all generated Lambda functions
58
+ */
59
+ getFunctions(): LambdaFunction[];
60
+ addRestResource<P extends keyof PATHS>(path: P, method: keyof PATHS[P]): LambdaFunction | undefined;
61
+ addCustomRestResource(operation: OperationObject, method: string, description: string, additionalLambdaOptions?: LambdaOptions): LambdaFunction | undefined;
62
+ private tableWriteAccessForMethod;
63
+ /**
64
+ * AWS does not properly apply the 'security' option to every single path-method.
65
+ * According to documentation, global security gets applied, if there is no security
66
+ * set for the particular path-method. If there is any, even empty, it will get precedence.
67
+ * THIS DOES NOT HAPPEN ON AWS. IT JUST ALWAYS USES THE GLOBAL SETTING!
68
+ *
69
+ * 'security applies [...] schemes globally to all API operations, unless overridden on the operation level'
70
+ * @see https://swagger.io/docs/specification/authentication/
71
+ */
72
+ protected patchSecurity(spec: OpenAPI3): void;
73
+ }