@digitraffic/common 2022.11.22-1 → 2022.11.23-2

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 (158) hide show
  1. package/dist/aws/infra/api/integration.d.ts +21 -0
  2. package/dist/aws/infra/api/integration.js +8 -4
  3. package/dist/aws/infra/api/integration.js.map +1 -0
  4. package/dist/aws/infra/api/response.d.ts +28 -0
  5. package/dist/aws/infra/api/response.js +49 -18
  6. package/dist/aws/infra/api/response.js.map +1 -0
  7. package/dist/aws/infra/api/responses.d.ts +47 -0
  8. package/dist/aws/infra/api/responses.js +8 -0
  9. package/dist/aws/infra/api/responses.js.map +1 -0
  10. package/dist/aws/infra/api/static-integration.d.ts +15 -0
  11. package/dist/aws/infra/api/static-integration.js +12 -6
  12. package/dist/aws/infra/api/static-integration.js.map +1 -0
  13. package/dist/aws/infra/canaries/canary-alarm.d.ts +6 -0
  14. package/dist/aws/infra/canaries/canary-alarm.js.map +1 -0
  15. package/dist/aws/infra/canaries/canary-keys.d.ts +3 -0
  16. package/dist/aws/infra/canaries/canary-keys.js.map +1 -0
  17. package/dist/aws/infra/canaries/canary-parameters.d.ts +18 -0
  18. package/dist/aws/infra/canaries/canary-parameters.js.map +1 -0
  19. package/dist/aws/infra/canaries/canary-role.d.ts +6 -0
  20. package/dist/aws/infra/canaries/canary-role.js.map +1 -0
  21. package/dist/aws/infra/canaries/canary.d.ts +8 -0
  22. package/dist/aws/infra/canaries/canary.js.map +1 -0
  23. package/dist/aws/infra/canaries/database-canary.d.ts +18 -0
  24. package/dist/aws/infra/canaries/database-canary.js.map +1 -0
  25. package/dist/aws/infra/canaries/database-checker.d.ts +33 -0
  26. package/dist/aws/infra/canaries/database-checker.js.map +1 -0
  27. package/dist/aws/infra/canaries/url-canary.d.ts +16 -0
  28. package/dist/aws/infra/canaries/url-canary.js.map +1 -0
  29. package/dist/aws/infra/canaries/url-checker.d.ts +46 -0
  30. package/dist/aws/infra/canaries/url-checker.js.map +1 -0
  31. package/dist/aws/infra/documentation.d.ts +56 -0
  32. package/dist/aws/infra/documentation.js.map +1 -0
  33. package/dist/aws/infra/import-util.d.ts +21 -0
  34. package/dist/aws/infra/import-util.js.map +1 -0
  35. package/dist/aws/infra/scheduler.d.ts +12 -0
  36. package/dist/aws/infra/scheduler.js.map +1 -0
  37. package/dist/aws/infra/security-rule.d.ts +12 -0
  38. package/dist/aws/infra/security-rule.js.map +1 -0
  39. package/dist/aws/infra/sqs-integration.d.ts +7 -0
  40. package/dist/aws/infra/sqs-integration.js.map +1 -0
  41. package/dist/aws/infra/sqs-queue.d.ts +16 -0
  42. package/dist/aws/infra/sqs-queue.js.map +1 -0
  43. package/dist/aws/infra/stack/lambda-configs.d.ts +64 -0
  44. package/dist/aws/infra/stack/lambda-configs.js.map +1 -0
  45. package/dist/aws/infra/stack/monitoredfunction.d.ts +84 -0
  46. package/dist/aws/infra/stack/monitoredfunction.js +31 -31
  47. package/dist/aws/infra/stack/monitoredfunction.js.map +1 -0
  48. package/dist/aws/infra/stack/rest_apis.d.ts +41 -0
  49. package/dist/aws/infra/stack/rest_apis.js.map +1 -0
  50. package/dist/aws/infra/stack/stack-checking-aspect.d.ts +21 -0
  51. package/dist/aws/infra/stack/stack-checking-aspect.js.map +1 -0
  52. package/dist/aws/infra/stack/stack.d.ts +45 -0
  53. package/dist/aws/infra/stack/stack.js.map +1 -0
  54. package/dist/aws/infra/stack/subscription.d.ts +17 -0
  55. package/dist/aws/infra/stack/subscription.js.map +1 -0
  56. package/dist/aws/infra/stacks/db-dns-stack.d.ts +11 -0
  57. package/dist/aws/infra/stacks/db-dns-stack.js.map +1 -0
  58. package/dist/aws/infra/stacks/db-proxy-stack.d.ts +19 -0
  59. package/dist/aws/infra/stacks/db-proxy-stack.js.map +1 -0
  60. package/dist/aws/infra/stacks/db-stack.d.ts +31 -0
  61. package/dist/aws/infra/stacks/db-stack.js.map +1 -0
  62. package/dist/aws/infra/stacks/intra-stack-configuration.d.ts +5 -0
  63. package/dist/aws/infra/stacks/intra-stack-configuration.js.map +1 -0
  64. package/dist/aws/infra/stacks/network-stack.d.ts +12 -0
  65. package/dist/aws/infra/stacks/network-stack.js.map +1 -0
  66. package/dist/aws/infra/usage-plans.d.ts +16 -0
  67. package/dist/aws/infra/usage-plans.js.map +1 -0
  68. package/dist/aws/runtime/apikey.d.ts +2 -0
  69. package/dist/aws/runtime/apikey.js.map +1 -0
  70. package/dist/aws/runtime/digitraffic-integration-response.d.ts +8 -0
  71. package/dist/aws/runtime/digitraffic-integration-response.js.map +1 -0
  72. package/dist/aws/runtime/environment.d.ts +1 -0
  73. package/dist/aws/runtime/environment.js.map +1 -0
  74. package/dist/aws/runtime/messaging.d.ts +10 -0
  75. package/dist/aws/runtime/messaging.js.map +1 -0
  76. package/dist/aws/runtime/s3.d.ts +2 -0
  77. package/dist/aws/runtime/s3.js.map +1 -0
  78. package/dist/aws/runtime/secrets/dbsecret.d.ts +54 -0
  79. package/dist/aws/runtime/secrets/dbsecret.js +4 -4
  80. package/dist/aws/runtime/secrets/dbsecret.js.map +1 -0
  81. package/dist/aws/runtime/secrets/proxy-holder.d.ts +9 -0
  82. package/dist/aws/runtime/secrets/proxy-holder.js.map +1 -0
  83. package/dist/aws/runtime/secrets/rds-holder.d.ts +9 -0
  84. package/dist/aws/runtime/secrets/rds-holder.js.map +1 -0
  85. package/dist/aws/runtime/secrets/secret-holder.d.ts +26 -0
  86. package/dist/aws/runtime/secrets/secret-holder.js.map +1 -0
  87. package/dist/aws/runtime/secrets/secret.d.ts +8 -0
  88. package/dist/aws/runtime/secrets/secret.js.map +1 -0
  89. package/dist/aws/types/errors.d.ts +8 -0
  90. package/dist/aws/types/errors.js.map +1 -0
  91. package/dist/aws/types/lambda-response.d.ts +13 -0
  92. package/dist/aws/types/lambda-response.js.map +1 -0
  93. package/dist/aws/types/mediatypes.d.ts +11 -0
  94. package/dist/aws/types/mediatypes.js.map +1 -0
  95. package/dist/aws/types/model-with-reference.d.ts +7 -0
  96. package/dist/aws/types/model-with-reference.js.map +1 -0
  97. package/dist/aws/types/proxytypes.d.ts +26 -0
  98. package/dist/aws/types/proxytypes.js.map +1 -0
  99. package/dist/aws/types/tags.d.ts +2 -0
  100. package/dist/aws/types/tags.js.map +1 -0
  101. package/dist/database/cached.d.ts +7 -0
  102. package/dist/database/cached.js.map +1 -0
  103. package/dist/database/database.d.ts +19 -0
  104. package/dist/database/database.js.map +1 -0
  105. package/dist/database/last-updated.d.ts +16 -0
  106. package/dist/database/last-updated.js.map +1 -0
  107. package/dist/database/models.d.ts +6 -0
  108. package/dist/database/models.js.map +1 -0
  109. package/dist/marine/id_utils.d.ts +3 -0
  110. package/dist/marine/id_utils.js.map +1 -0
  111. package/dist/marine/rtz.d.ts +48 -0
  112. package/dist/marine/rtz.js.map +1 -0
  113. package/dist/test/asserter.d.ts +11 -0
  114. package/dist/test/asserter.js.map +1 -0
  115. package/dist/test/db-testutils.d.ts +3 -0
  116. package/dist/test/db-testutils.js.map +1 -0
  117. package/dist/test/httpserver.d.ts +19 -0
  118. package/dist/test/httpserver.js.map +1 -0
  119. package/dist/test/secret.d.ts +3 -0
  120. package/dist/test/secret.js.map +1 -0
  121. package/dist/test/secrets-manager.d.ts +9 -0
  122. package/dist/test/secrets-manager.js.map +1 -0
  123. package/dist/test/testutils.d.ts +12 -0
  124. package/dist/test/testutils.js.map +1 -0
  125. package/dist/types/either.d.ts +9 -0
  126. package/dist/types/either.js.map +1 -0
  127. package/dist/types/input-error.d.ts +2 -0
  128. package/dist/types/input-error.js.map +1 -0
  129. package/dist/types/language.d.ts +5 -0
  130. package/dist/types/language.js.map +1 -0
  131. package/dist/types/traffictype.d.ts +8 -0
  132. package/dist/types/traffictype.js.map +1 -0
  133. package/dist/types/validator.d.ts +4 -0
  134. package/dist/types/validator.js.map +1 -0
  135. package/dist/utils/api-model.d.ts +87 -0
  136. package/dist/utils/api-model.js.map +1 -0
  137. package/dist/utils/base64.d.ts +12 -0
  138. package/dist/utils/base64.js.map +1 -0
  139. package/dist/utils/date-utils.d.ts +17 -0
  140. package/dist/utils/date-utils.js.map +1 -0
  141. package/dist/utils/geojson-types.d.ts +14 -0
  142. package/dist/utils/geojson-types.js.map +1 -0
  143. package/dist/utils/geometry.d.ts +36 -0
  144. package/dist/utils/geometry.js.map +1 -0
  145. package/dist/utils/retry.d.ts +13 -0
  146. package/dist/utils/retry.js.map +1 -0
  147. package/dist/utils/slack.d.ts +5 -0
  148. package/dist/utils/slack.js.map +1 -0
  149. package/dist/utils/utils.d.ts +46 -0
  150. package/dist/utils/utils.js.map +1 -0
  151. package/package.json +19 -29
  152. package/src/aws/infra/api/integration.ts +30 -14
  153. package/src/aws/infra/api/response.ts +107 -26
  154. package/src/aws/infra/api/responses.ts +8 -0
  155. package/src/aws/infra/api/static-integration.ts +48 -14
  156. package/src/aws/runtime/secrets/dbsecret.ts +23 -54
  157. package/src/aws/runtime/secrets/secret-holder.ts +6 -3
  158. package/src/database/database.ts +1 -1
@@ -0,0 +1,21 @@
1
+ import { IntegrationResponse, LambdaIntegration } from "aws-cdk-lib/aws-apigateway";
2
+ import { IFunction } from "aws-cdk-lib/aws-lambda";
3
+ import { MediaType } from "../../types/mediatypes";
4
+ declare type ParameterType = "path" | "querystring";
5
+ interface ApiParameter {
6
+ type: ParameterType;
7
+ name: string;
8
+ }
9
+ export declare class DigitrafficIntegration {
10
+ readonly lambda: IFunction;
11
+ readonly mediaType: MediaType;
12
+ readonly parameters: ApiParameter[];
13
+ constructor(lambda: IFunction, mediaType?: MediaType);
14
+ addPathParameter(...names: string[]): DigitrafficIntegration;
15
+ addQueryParameter(...names: string[]): DigitrafficIntegration;
16
+ build(): LambdaIntegration;
17
+ createRequestParameters(): Record<string, string>;
18
+ createRequestTemplates(): Record<string, string>;
19
+ createResponses(): IntegrationResponse[];
20
+ }
21
+ export {};
@@ -11,11 +11,11 @@ class DigitrafficIntegration {
11
11
  this.mediaType = mediaType;
12
12
  }
13
13
  addPathParameter(...names) {
14
- names.forEach(name => this.parameters.push({ type: 'path', name }));
14
+ names.forEach((name) => this.parameters.push({ type: "path", name }));
15
15
  return this;
16
16
  }
17
17
  addQueryParameter(...names) {
18
- names.forEach(name => this.parameters.push({ type: 'querystring', name }));
18
+ names.forEach((name) => this.parameters.push({ type: "querystring", name }));
19
19
  return this;
20
20
  }
21
21
  build() {
@@ -23,8 +23,12 @@ class DigitrafficIntegration {
23
23
  return new aws_apigateway_1.LambdaIntegration(this.lambda, {
24
24
  proxy: false,
25
25
  integrationResponses,
26
- requestParameters: this.parameters.length == 0 ? undefined : this.createRequestParameters(),
27
- requestTemplates: this.parameters.length == 0 ? undefined : this.createRequestTemplates(),
26
+ requestParameters: this.parameters.length == 0
27
+ ? undefined
28
+ : this.createRequestParameters(),
29
+ requestTemplates: this.parameters.length == 0
30
+ ? undefined
31
+ : this.createRequestTemplates(),
28
32
  passthroughBehavior: aws_apigateway_1.PassthroughBehavior.WHEN_NO_MATCH,
29
33
  });
30
34
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/integration.ts"],"names":[],"mappings":";;;AAAA,+DAIoC;AAEpC,uDAAmD;AACnD,qGAAgG;AAShG,MAAa,sBAAsB;IAM/B,YAAY,MAAiB,EAAE,SAAS,GAAG,sBAAS,CAAC,UAAU;QAFtD,eAAU,GAAmB,EAAE,CAAC;QAGrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,gBAAgB,CAAC,GAAG,KAAe;QAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iBAAiB,CAAC,GAAG,KAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CACtD,CAAC;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEpD,OAAO,IAAI,kCAAiB,CAAC,IAAI,CAAC,MAAM,EAAE;YACtC,KAAK,EAAE,KAAK;YACZ,oBAAoB;YACpB,iBAAiB,EACb,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACxC,gBAAgB,EACZ,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACvC,mBAAmB,EAAE,oCAAmB,CAAC,aAAa;SACzD,CAAC,CAAC;IACP,CAAC;IAED,uBAAuB;QACnB,MAAM,iBAAiB,GAA2B,EAAE,CAAC;QAErD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAuB,EAAE,EAAE;YAChD,iBAAiB,CACb,uBAAuB,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,CAC5D,GAAG,kBAAkB,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED,sBAAsB;QAClB,MAAM,WAAW,GAA2B,EAAE,CAAC;QAE/C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAuB,EAAE,EAAE;YAChD,WAAW,CACP,SAAS,CAAC,IAAI,CACjB,GAAG,yCAAyC,SAAS,CAAC,IAAI,KAAK,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,CAAC,sBAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SAC5D,CAAC;IACN,CAAC;IAED,eAAe;QACX,OAAO,CAAC,iEAA8B,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC;CACJ;AAxED,wDAwEC"}
@@ -0,0 +1,28 @@
1
+ import { MediaType } from "../../types/mediatypes";
2
+ import { JsonSchema, MethodResponse } from "aws-cdk-lib/aws-apigateway";
3
+ import { IModel } from "aws-cdk-lib/aws-apigateway/lib/model";
4
+ /**
5
+ * This is velocity-script, that assumes the response to be LambdaResponse(status and body).
6
+ * It will always return the body and status, but if status in something else than 200 OK the content-type
7
+ * will be overridden to text/plain. (it's assumed, that lambda will return error text).
8
+ *
9
+ * If fileName is set, then Content-Disposition-header will be set to use it
10
+ */
11
+ export declare const RESPONSE_DEFAULT_LAMBDA = "#set($inputRoot = $input.path('$'))\n$inputRoot.body\n#if ($inputRoot.status != 200)\n#set ($context.responseOverride.status = $inputRoot.status)\n#set ($context.responseOverride.header.Content-Type = 'text/plain')\n#end\n#set ($context.responseOverride.header.Access-Control-Allow-Origin = '*')\n#if (\"$!inputRoot.fileName\" != \"\")\n#set ($disposition = 'attachment; filename=\"FN\"')\n#set ($context.responseOverride.header.Content-Disposition = $disposition.replaceAll('FN', $inputRoot.fileName))\n#end\n";
12
+ export declare const MessageModel: {
13
+ contentType: MediaType;
14
+ modelName: string;
15
+ schema: JsonSchema;
16
+ };
17
+ export declare const NotFoundResponse: string;
18
+ export declare const BadRequestResponseTemplate: Record<string, string>;
19
+ export declare const NotFoundResponseTemplate: Record<string, string>;
20
+ export declare const XmlResponseTemplate: Record<string, string>;
21
+ export declare const InternalServerErrorResponseTemplate: Record<string, string>;
22
+ export declare function createResponses<T>(key: MediaType, value: T): Record<string, T>;
23
+ export declare class DigitrafficMethodResponse {
24
+ static response(statusCode: string, model: IModel, mediaType: MediaType, disableCors?: boolean): MethodResponse;
25
+ static response200(model: IModel, mediaType?: MediaType): MethodResponse;
26
+ static response500(model?: IModel, mediaType?: MediaType): MethodResponse;
27
+ static response400(model?: IModel, mediaType?: MediaType): MethodResponse;
28
+ }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createResponses = exports.InternalServerErrorResponseTemplate = exports.SvgResponseTemplate = exports.XmlResponseTemplate = exports.NotFoundResponseTemplate = exports.BadRequestResponseTemplate = exports.NotFoundResponse = exports.MessageModel = exports.RESPONSE_DEFAULT_LAMBDA = void 0;
4
- const apigateway = require("aws-cdk-lib/aws-apigateway");
3
+ exports.DigitrafficMethodResponse = exports.createResponses = exports.InternalServerErrorResponseTemplate = exports.XmlResponseTemplate = exports.NotFoundResponseTemplate = exports.BadRequestResponseTemplate = exports.NotFoundResponse = exports.MessageModel = exports.RESPONSE_DEFAULT_LAMBDA = void 0;
5
4
  const mediatypes_1 = require("../../types/mediatypes");
5
+ const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
6
6
  /**
7
7
  * This is velocity-script, that assumes the response to be LambdaResponse(status and body).
8
8
  * It will always return the body and status, but if status in something else than 200 OK the content-type
@@ -23,39 +23,70 @@ $inputRoot.body
23
23
  #end
24
24
  `;
25
25
  const BODY_FROM_INPUT_PATH = "$input.path('$').body";
26
- // DEPRECATED
26
+ /// @deprecated
27
27
  const messageSchema = {
28
- schema: apigateway.JsonSchemaVersion.DRAFT4,
29
- type: apigateway.JsonSchemaType.OBJECT,
30
- description: 'Response with message',
28
+ schema: aws_apigateway_1.JsonSchemaVersion.DRAFT4,
29
+ type: aws_apigateway_1.JsonSchemaType.OBJECT,
30
+ description: "Response with message",
31
31
  properties: {
32
32
  message: {
33
- type: apigateway.JsonSchemaType.STRING,
34
- description: 'Response message',
33
+ type: aws_apigateway_1.JsonSchemaType.STRING,
34
+ description: "Response message",
35
35
  },
36
36
  },
37
37
  };
38
- // DEPRECATED
38
+ /// @deprecated
39
39
  exports.MessageModel = {
40
40
  contentType: mediatypes_1.MediaType.APPLICATION_JSON,
41
- modelName: 'MessageResponseModel',
41
+ modelName: "MessageResponseModel",
42
42
  schema: messageSchema,
43
43
  };
44
- const NotFoundMessage = 'Not found';
44
+ const NotFoundMessage = "Not found";
45
45
  exports.NotFoundResponse = JSON.stringify({ message: NotFoundMessage });
46
- const InternalServerErrorMessage = 'Error';
47
- const InternalServerErrorResponse = JSON.stringify({ message: InternalServerErrorMessage });
48
- const BadRequestMessage = 'Bad request';
46
+ const InternalServerErrorMessage = "Error";
47
+ const InternalServerErrorResponse = JSON.stringify({
48
+ message: InternalServerErrorMessage,
49
+ });
50
+ const BadRequestMessage = "Bad request";
49
51
  const BadRequestResponse = JSON.stringify({ message: BadRequestMessage });
52
+ /// @deprecated
50
53
  exports.BadRequestResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_JSON, BadRequestResponse);
54
+ /// @deprecated
51
55
  exports.NotFoundResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_JSON, exports.NotFoundResponse);
56
+ /// @deprecated
52
57
  exports.XmlResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_XML, BODY_FROM_INPUT_PATH);
53
- exports.SvgResponseTemplate = createResponses(mediatypes_1.MediaType.IMAGE_SVG, BODY_FROM_INPUT_PATH);
58
+ /// @deprecated
54
59
  exports.InternalServerErrorResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_JSON, InternalServerErrorResponse);
60
+ /// @deprecated
55
61
  function createResponses(key, value) {
56
- const map = {};
57
- map[key] = value;
58
- return map;
62
+ return {
63
+ [key]: value,
64
+ };
59
65
  }
60
66
  exports.createResponses = createResponses;
67
+ class DigitrafficMethodResponse {
68
+ static response(statusCode, model, mediaType, disableCors = false) {
69
+ return {
70
+ statusCode,
71
+ responseModels: {
72
+ [mediaType]: model,
73
+ },
74
+ responseParameters: disableCors
75
+ ? {}
76
+ : {
77
+ "method.response.header.Access-Control-Allow-Origin": true,
78
+ },
79
+ };
80
+ }
81
+ static response200(model, mediaType = mediatypes_1.MediaType.APPLICATION_JSON) {
82
+ return DigitrafficMethodResponse.response("200", model, mediaType, false);
83
+ }
84
+ static response500(model = aws_apigateway_1.Model.EMPTY_MODEL, mediaType = mediatypes_1.MediaType.APPLICATION_JSON) {
85
+ return DigitrafficMethodResponse.response("500", model, mediaType, false);
86
+ }
87
+ static response400(model = aws_apigateway_1.Model.EMPTY_MODEL, mediaType = mediatypes_1.MediaType.APPLICATION_JSON) {
88
+ return DigitrafficMethodResponse.response("400", model, mediaType, false);
89
+ }
90
+ }
91
+ exports.DigitrafficMethodResponse = DigitrafficMethodResponse;
61
92
  //# sourceMappingURL=response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { LambdaIntegration, MethodResponse, IntegrationResponse, PassthroughBehavior } from "aws-cdk-lib/aws-apigateway";
2
+ import { Function as AWSFunction } from "aws-cdk-lib/aws-lambda";
3
+ import { IModel } from "aws-cdk-lib/aws-apigateway/lib/model";
4
+ import { MediaType } from "../../types/mediatypes";
5
+ export declare const RESPONSE_200_OK: IntegrationResponse;
6
+ export declare const RESPONSE_400_BAD_REQUEST: IntegrationResponse;
7
+ export declare const RESPONSE_500_SERVER_ERROR: IntegrationResponse;
8
+ export declare const RESPONSE_CORS_INTEGRATION: {
9
+ responseParameters: {
10
+ "method.response.header.Access-Control-Allow-Origin": string;
11
+ };
12
+ };
13
+ export declare const RESPONSE_404_NOT_FOUND: {
14
+ statusCode: string;
15
+ selectionPattern: string;
16
+ responseTemplates: Record<string, string>;
17
+ };
18
+ /**
19
+ * @deprecated Use DigitrafficMethodResponse
20
+ */
21
+ export declare function methodResponse(status: string, contentType: MediaType, model: IModel, parameters?: Record<string, boolean>): MethodResponse;
22
+ /**
23
+ * @deprecated Use DigitrafficMethodResponse
24
+ */
25
+ export declare function corsMethod(response: MethodResponse): MethodResponse;
26
+ interface IntegrationOptions {
27
+ requestParameters?: {
28
+ [dest: string]: string;
29
+ };
30
+ requestTemplates?: {
31
+ [contentType: string]: string;
32
+ };
33
+ responses?: IntegrationResponse[];
34
+ disableCors?: boolean;
35
+ xml?: boolean;
36
+ passthroughBehavior?: PassthroughBehavior;
37
+ }
38
+ /**
39
+ * Creates a default Lambda integration for a REST API resource _root_
40
+ * @param lambdaFunction The Lambda function
41
+ * @param options Options
42
+ *
43
+ * @deprecated Use DigitrafficIntegration
44
+ */
45
+ export declare function defaultIntegration(lambdaFunction: AWSFunction, options?: IntegrationOptions): LambdaIntegration;
46
+ export declare function getResponse(response: IntegrationResponse, options?: IntegrationOptions): IntegrationResponse;
47
+ export {};
@@ -30,6 +30,9 @@ exports.RESPONSE_404_NOT_FOUND = {
30
30
  selectionPattern: errors_1.NOT_FOUND_MESSAGE,
31
31
  responseTemplates: response_1.NotFoundResponseTemplate,
32
32
  };
33
+ /**
34
+ * @deprecated Use DigitrafficMethodResponse
35
+ */
33
36
  function methodResponse(status, contentType, model, parameters) {
34
37
  return {
35
38
  statusCode: status,
@@ -38,6 +41,9 @@ function methodResponse(status, contentType, model, parameters) {
38
41
  };
39
42
  }
40
43
  exports.methodResponse = methodResponse;
44
+ /**
45
+ * @deprecated Use DigitrafficMethodResponse
46
+ */
41
47
  function corsMethod(response) {
42
48
  return {
43
49
  ...response,
@@ -53,6 +59,8 @@ exports.corsMethod = corsMethod;
53
59
  * Creates a default Lambda integration for a REST API resource _root_
54
60
  * @param lambdaFunction The Lambda function
55
61
  * @param options Options
62
+ *
63
+ * @deprecated Use DigitrafficIntegration
56
64
  */
57
65
  function defaultIntegration(lambdaFunction, options) {
58
66
  return new aws_apigateway_1.LambdaIntegration(lambdaFunction, {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/responses.ts"],"names":[],"mappings":";;;AAAA,yCAMoB;AACpB,+DAKoC;AAGpC,+CAI4B;AAGf,QAAA,eAAe,GAAwB;IAChD,UAAU,EAAE,KAAK;CACpB,CAAC;AAEW,QAAA,wBAAwB,GAAwB;IACzD,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,4BAAmB;IACrC,iBAAiB,EAAE,qCAA0B;CAChD,CAAC;AAEW,QAAA,yBAAyB,GAAwB;IAC1D,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,sBAAa;IAC/B,iBAAiB,EAAE,8CAAmC;CACzD,CAAC;AAEF,MAAM,YAAY,GAAG;IACjB,iBAAiB,EAAE,8BAAmB;CACzC,CAAC;AAEW,QAAA,yBAAyB,GAAG;IACrC,kBAAkB,EAAE;QAChB,oDAAoD,EAAE,KAAK;KAC9D;CACJ,CAAC;AAEW,QAAA,sBAAsB,GAAG;IAClC,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,0BAAiB;IACnC,iBAAiB,EAAE,mCAAwB;CAC9C,CAAC;AAEF;;GAEG;AACH,SAAgB,cAAc,CAC1B,MAAc,EACd,WAAsB,EACtB,KAAa,EACb,UAAoC;IAEpC,OAAO;QACH,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,IAAA,0BAAe,EAAC,WAAW,EAAE,KAAK,CAAC;QACnD,kBAAkB,EAAE,UAAU,IAAI,EAAE;KACvC,CAAC;AACN,CAAC;AAXD,wCAWC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,QAAwB;IAC/C,OAAO;QACH,GAAG,QAAQ;QACX,GAAG;YACC,kBAAkB,EAAE;gBAChB,oDAAoD,EAAE,IAAI;aAC7D;SACJ;KACJ,CAAC;AACN,CAAC;AATD,gCASC;AAWD;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAC9B,cAA2B,EAC3B,OAA4B;IAE5B,OAAO,IAAI,kCAAiB,CAAC,cAAc,EAAE;QACzC,KAAK,EAAE,KAAK;QACZ,oBAAoB,EAAE,OAAO,EAAE,SAAS,IAAI;YACxC,WAAW,CAAC,uBAAe,EAAE,OAAO,CAAC;YACrC,WAAW,CAAC,gCAAwB,EAAE,OAAO,CAAC;YAC9C,WAAW,CAAC,8BAAsB,EAAE,OAAO,CAAC;YAC5C,WAAW,CAAC,iCAAyB,EAAE,OAAO,CAAC;SAClD;QACD,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE;QACnD,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,EAAE;QACjD,mBAAmB,EACf,OAAO,EAAE,mBAAmB,IAAI,oCAAmB,CAAC,aAAa;KACxE,CAAC,CAAC;AACP,CAAC;AAjBD,gDAiBC;AAED,SAAgB,WAAW,CACvB,QAA6B,EAC7B,OAA4B;IAE5B,IAAI,OAAO,EAAE,GAAG,EAAE;QACd,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC;KAC/C;IACD,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;QACvB,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,iCAAyB,EAAE,CAAC;KAC5D;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAZD,kCAYC"}
@@ -0,0 +1,15 @@
1
+ import { MockIntegration, Resource } from "aws-cdk-lib/aws-apigateway";
2
+ import { MediaType } from "../../types/mediatypes";
3
+ /**
4
+ * Static integration, that returns the given response with given mediaType from given resource.
5
+ *
6
+ * @param resource
7
+ * @param mediaType
8
+ * @param response
9
+ */
10
+ export declare class DigitrafficStaticIntegration extends MockIntegration {
11
+ constructor(resource: Resource, mediaType: MediaType, response: string, enableCors?: boolean, apiKeyRequired?: boolean);
12
+ static json<K>(resource: Resource, response: K, enableCors?: boolean, apiKeyRequired?: boolean): DigitrafficStaticIntegration;
13
+ private static createIntegrationResponse;
14
+ private static createMethodResponse;
15
+ }
@@ -8,7 +8,7 @@ const INTEGRATION_RESPONSE_200 = `{
8
8
  "statusCode": 200
9
9
  }`;
10
10
  const METHOD_RESPONSE_200 = {
11
- statusCode: '200',
11
+ statusCode: "200",
12
12
  };
13
13
  /**
14
14
  * Static integration, that returns the given response with given mediaType from given resource.
@@ -27,10 +27,12 @@ class DigitrafficStaticIntegration extends aws_apigateway_1.MockIntegration {
27
27
  },
28
28
  integrationResponses: [integrationResponse],
29
29
  });
30
- ['GET', 'HEAD'].forEach((httpMethod) => {
30
+ ["GET", "HEAD"].forEach((httpMethod) => {
31
31
  resource.addMethod(httpMethod, this, {
32
32
  apiKeyRequired,
33
- methodResponses: [DigitrafficStaticIntegration.createMethodResponse(enableCors)],
33
+ methodResponses: [
34
+ DigitrafficStaticIntegration.createMethodResponse(enableCors),
35
+ ],
34
36
  });
35
37
  });
36
38
  }
@@ -39,15 +41,19 @@ class DigitrafficStaticIntegration extends aws_apigateway_1.MockIntegration {
39
41
  }
40
42
  static createIntegrationResponse(response, mediaType, enableCors) {
41
43
  const integrationResponse = {
42
- statusCode: '200',
44
+ statusCode: "200",
43
45
  responseTemplates: {
44
46
  [mediaType]: response,
45
47
  },
46
48
  };
47
- return enableCors ? { ...integrationResponse, ...responses_1.RESPONSE_CORS_INTEGRATION } : integrationResponse;
49
+ return enableCors
50
+ ? { ...integrationResponse, ...responses_1.RESPONSE_CORS_INTEGRATION }
51
+ : integrationResponse;
48
52
  }
49
53
  static createMethodResponse(enableCors) {
50
- return enableCors ? (0, responses_1.corsMethod)(METHOD_RESPONSE_200) : METHOD_RESPONSE_200;
54
+ return enableCors
55
+ ? (0, responses_1.corsMethod)(METHOD_RESPONSE_200)
56
+ : METHOD_RESPONSE_200;
51
57
  }
52
58
  }
53
59
  exports.DigitrafficStaticIntegration = DigitrafficStaticIntegration;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-integration.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/static-integration.ts"],"names":[],"mappings":";;;AAAA,+DAIoC;AACpC,uDAAmD;AACnD,2CAAoE;AAEpE,MAAM,wBAAwB,GAAG;;EAE/B,CAAC;AAEH,MAAM,mBAAmB,GAAG;IACxB,UAAU,EAAE,KAAK;CACpB,CAAC;AAEF;;;;;;GAMG;AACH,MAAa,4BAA6B,SAAQ,gCAAe;IAC7D,YACI,QAAkB,EAClB,SAAoB,EACpB,QAAgB,EAChB,UAAU,GAAG,IAAI,EACjB,cAAc,GAAG,IAAI;QAErB,MAAM,mBAAmB,GACrB,4BAA4B,CAAC,yBAAyB,CAClD,QAAQ,EACR,SAAS,EACT,UAAU,CACb,CAAC;QAEN,KAAK,CAAC;YACF,mBAAmB,EAAE,oCAAmB,CAAC,iBAAiB;YAC1D,gBAAgB,EAAE;gBACd,CAAC,SAAS,CAAC,EAAE,wBAAwB;aACxC;YACD,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;SAC9C,CAAC,CAAC;QAEH,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACnC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE;gBACjC,cAAc;gBACd,eAAe,EAAE;oBACb,4BAA4B,CAAC,oBAAoB,CAC7C,UAAU,CACb;iBACJ;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,IAAI,CACP,QAAkB,EAClB,QAAW,EACX,UAAU,GAAG,IAAI,EACjB,cAAc,GAAG,IAAI;QAErB,OAAO,IAAI,4BAA4B,CACnC,QAAQ,EACR,sBAAS,CAAC,gBAAgB,EAC1B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxB,UAAU,EACV,cAAc,CACjB,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,yBAAyB,CACpC,QAAgB,EAChB,SAAoB,EACpB,UAAmB;QAEnB,MAAM,mBAAmB,GAAG;YACxB,UAAU,EAAE,KAAK;YACjB,iBAAiB,EAAE;gBACf,CAAC,SAAS,CAAC,EAAE,QAAQ;aACxB;SACJ,CAAC;QAEF,OAAO,UAAU;YACb,CAAC,CAAC,EAAE,GAAG,mBAAmB,EAAE,GAAG,qCAAyB,EAAE;YAC1D,CAAC,CAAC,mBAAmB,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,UAAmB;QACnD,OAAO,UAAU;YACb,CAAC,CAAC,IAAA,sBAAU,EAAC,mBAAmB,CAAC;YACjC,CAAC,CAAC,mBAAmB,CAAC;IAC9B,CAAC;CACJ;AAxED,oEAwEC"}
@@ -0,0 +1,6 @@
1
+ import { Construct } from "constructs";
2
+ import { CanaryParameters } from "./canary-parameters";
3
+ import { Canary } from "@aws-cdk/aws-synthetics-alpha";
4
+ export declare class CanaryAlarm {
5
+ constructor(stack: Construct, canary: Canary, params: CanaryParameters);
6
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canary-alarm.js","sourceRoot":"","sources":["../../../../src/aws/infra/canaries/canary-alarm.ts"],"names":[],"mappings":";;;AAEA,+DAAqE;AAErE,+EAA6D;AAC7D,iDAA0C;AAE1C,MAAa,WAAW;IACpB,YAAY,KAAgB,EACxB,MAAc,EACd,MAAwB;QACxB,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,GAAG,MAAM,CAAC,IAAI,QAAQ,CAAC;YAEpE,MAAM,KAAK,GAAG,IAAI,sBAAK,CAAC,KAAK,EAAE,SAAS,EAAE;gBACtC,SAAS;gBACT,gBAAgB,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE;gBACjD,MAAM,EAAE,MAAM,CAAC,oBAAoB,EAAE;gBACrC,iBAAiB,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC;gBACtD,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,GAAG;gBACzC,kBAAkB,EAAE,mCAAkB,CAAC,mBAAmB;aAC7D,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;gBACxB,KAAK,CAAC,cAAc,CAAC,IAAI,kCAAS,CAAC,eAAK,CAAC,YAAY,CAAC,KAAK,EACvD,GAAG,SAAS,SAAS,EACrB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAChC;SACJ;IACL,CAAC;CACJ;AAvBD,kCAuBC"}
@@ -0,0 +1,3 @@
1
+ export declare const ENV_API_KEY = "apiKeyId";
2
+ export declare const ENV_HOSTNAME = "hostname";
3
+ export declare const ENV_SECRET = "secret";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canary-keys.js","sourceRoot":"","sources":["../../../../src/aws/infra/canaries/canary-keys.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,UAAU,CAAC;AACzB,QAAA,YAAY,GAAG,UAAU,CAAC;AAC1B,QAAA,UAAU,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Schedule } from "@aws-cdk/aws-synthetics-alpha";
2
+ /** Optional env parameters for canary */
3
+ declare type CanaryEnv = Record<string, string>;
4
+ export declare type CanaryParameters = {
5
+ readonly name: string;
6
+ readonly schedule?: Schedule;
7
+ readonly secret?: string;
8
+ readonly handler: string;
9
+ readonly alarm?: {
10
+ readonly alarmName?: string;
11
+ readonly description?: string;
12
+ readonly evalutionPeriods?: number;
13
+ readonly threshold?: number;
14
+ readonly topicArn?: string;
15
+ };
16
+ readonly canaryEnv?: CanaryEnv;
17
+ };
18
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canary-parameters.js","sourceRoot":"","sources":["../../../../src/aws/infra/canaries/canary-parameters.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { Role } from "aws-cdk-lib/aws-iam";
2
+ import { Construct } from "constructs";
3
+ export declare class DigitrafficCanaryRole extends Role {
4
+ constructor(stack: Construct, canaryName: string);
5
+ withDatabaseAccess(): DigitrafficCanaryRole;
6
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canary-role.js","sourceRoot":"","sources":["../../../../src/aws/infra/canaries/canary-role.ts"],"names":[],"mappings":";;;AAAA,iDAAiH;AAGjH,MAAM,2BAA2B,GAAyB;IACtD,OAAO,EAAE;QACL,sBAAsB;QACtB,mBAAmB;QACnB,qBAAqB;QACrB,wBAAwB;QACxB,yBAAyB;KAC5B;IACD,SAAS,EAAE,CAAC,GAAG,CAAC;CACnB,CAAC;AAEF,MAAM,0BAA0B,GAAyB;IACrD,OAAO,EAAE;QACL,0BAA0B;KAC7B;IACD,SAAS,EAAE,CAAC,GAAG,CAAC;IAChB,UAAU,EAAE;QACR,cAAc,EAAE;YACZ,sBAAsB,EAAE,sBAAsB;SACjD;KACJ;CACJ,CAAC;AAEF,MAAa,qBAAsB,SAAQ,cAAI;IAC3C,YAAY,KAAgB,EAAE,UAAkB;QAC5C,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,EAAE;YACtC,SAAS,EAAE,IAAI,0BAAgB,CAAC,sBAAsB,CAAC;YACvD,eAAe,EAAE;gBACb,uBAAa,CAAC,wBAAwB,CAAC,gCAAgC,CAAC;aAC3E;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,IAAI,yBAAe,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,CAAC,IAAI,yBAAe,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,kBAAkB;QACd,gBAAgB;QAChB,6DAA6D;QAC7D,QAAQ;QACR,IAAI,CAAC,gBAAgB,CAAC,uBAAa,CAAC,wBAAwB,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC9G,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AApBD,sDAoBC"}
@@ -0,0 +1,8 @@
1
+ import { Canary } from "@aws-cdk/aws-synthetics-alpha";
2
+ import { Role } from "aws-cdk-lib/aws-iam";
3
+ import { CanaryParameters } from "./canary-parameters";
4
+ import { Construct } from "constructs";
5
+ import { LambdaEnvironment } from "../stack/lambda-configs";
6
+ export declare class DigitrafficCanary extends Canary {
7
+ constructor(scope: Construct, canaryName: string, role: Role, params: CanaryParameters, environmentVariables: LambdaEnvironment);
8
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canary.js","sourceRoot":"","sources":["../../../../src/aws/infra/canaries/canary.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AACvC,wEAMuC;AAEvC,iDAA6C;AAK7C,MAAa,iBAAkB,SAAQ,6BAAM;IACzC,YACI,KAAgB,EAChB,UAAkB,EAClB,IAAU,EACV,MAAwB,EACxB,oBAAuC;QAEvC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE;YACrB,OAAO,EAAE,8BAAO,CAAC,+BAA+B;YAChD,IAAI;YACJ,IAAI,EAAE,2BAAI,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,IAAI,gCAAS,CAAC,MAAM,EAAE;oBACxB,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC;iBACzC,CAAC;gBACF,OAAO,EAAE,MAAM,CAAC,OAAO;aAC1B,CAAC;YACF,oBAAoB,EAAE;gBAClB,GAAG,oBAAoB;gBACvB,GAAG,MAAM,EAAE,SAAS;aACvB;YACD,UAAU;YACV,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,+BAAQ,CAAC,IAAI,CAAC,sBAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACnE,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,0BAAW,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACxC;IACL,CAAC;CACJ;AA/BD,8CA+BC"}
@@ -0,0 +1,18 @@
1
+ import { Role } from "aws-cdk-lib/aws-iam";
2
+ import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
3
+ import { CanaryParameters } from "./canary-parameters";
4
+ import { DigitrafficCanary } from "./canary";
5
+ import { DigitrafficStack } from "../stack/stack";
6
+ export declare class DatabaseCanary extends DigitrafficCanary {
7
+ constructor(stack: DigitrafficStack, role: Role, secret: ISecret, params: CanaryParameters);
8
+ static create(stack: DigitrafficStack, role: Role, params: CanaryParameters): DatabaseCanary;
9
+ /**
10
+ *
11
+ * @param stack
12
+ * @param role
13
+ * @param name name of the typescipt file without -db -suffix. Max len is 10 char if @param canaryName is not given.
14
+ * @param params
15
+ * @param canaryName Optional name for canary if multiple canaries is made from same ${name}-db.ts canary file.
16
+ */
17
+ static createV2(stack: DigitrafficStack, role: Role, name: string, params?: Partial<CanaryParameters>, canaryName?: string): DatabaseCanary;
18
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-canary.js","sourceRoot":"","sources":["../../../../src/aws/infra/canaries/database-canary.ts"],"names":[],"mappings":";;;AAEA,+DAAuD;AACvD,uDAAkD;AAClD,6CAAuC;AAGvC,qCAA6C;AAG7C,MAAa,cAAe,SAAQ,0BAAiB;IACjD,YACI,KAAuB,EACvB,IAAU,EACV,MAAe,EACf,MAAwB;QAExB,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC;QACvC,MAAM,oBAAoB,GAAG,KAAK,CAAC,8BAA8B,CAC7D,cAAc,UAAU,EAAE,CAC7B,CAAC;QAEF,+DAA+D;QAC/D,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAE7D,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5B,kEAAkE;QAClE,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,YAAY,0BAAS,EAAE;YAC7C,MAAM,SAAS,GACX,KAAK,CAAC,GAAG,KAAK,SAAS;gBACnB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEpE,MAAM,gBAAgB,GAClB,KAAK,CAAC,UAAU,KAAK,SAAS;gBAC1B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YAE7C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG;gBAC/B,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK;gBACvB,gBAAgB;gBAChB,SAAS;aACZ,CAAC;SACL;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CACT,KAAuB,EACvB,IAAU,EACV,MAAwB;QAExB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjC,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3C,GAAG;gBACC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ;gBACpC,QAAQ,EAAE,qBAAQ,CAAC,IAAI,CAAC,sBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1C,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,UAAU;aACpC;YACD,GAAG,MAAM;SACZ,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CACX,KAAuB,EACvB,IAAU,EACV,IAAY,EACZ,SAAoC,EAAE,EACtC,UAAU,GAAG,IAAI;QAEjB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjC,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3C,GAAG;gBACC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ;gBACpC,QAAQ,EAAE,qBAAQ,CAAC,IAAI,CAAC,sBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1C,OAAO,EAAE,GAAG,IAAI,aAAa;gBAC7B,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE;oBACH,SAAS,EACL,UAAU,KAAK,IAAI;wBACf,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,WAAW;wBAC7C,CAAC,CAAC,GAAG,UAAU,WAAW;oBAClC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,aAAa;iBAC9C;aACJ;YACD,GAAG,MAAM;SACZ,CAAC,CAAC;IACP,CAAC;CACJ;AAvFD,wCAuFC"}
@@ -0,0 +1,33 @@
1
+ import { Countable } from "../../../database/models";
2
+ declare abstract class DatabaseCheck<T> {
3
+ readonly name: string;
4
+ readonly sql: string;
5
+ failed: boolean;
6
+ protected constructor(name: string, sql: string);
7
+ abstract check(value: T): void;
8
+ }
9
+ /**
10
+ * Checker for sql that checks the count. Meaning that the
11
+ * sql must be structured as "select count(*) from <table> where <something>".
12
+ */
13
+ export declare class DatabaseCountChecker {
14
+ readonly credentialsFunction: () => Promise<void>;
15
+ readonly checks: DatabaseCheck<Countable>[];
16
+ private constructor();
17
+ static createForProxy(): DatabaseCountChecker;
18
+ static createForRds(): DatabaseCountChecker;
19
+ /**
20
+ * Expect that the count is 1
21
+ */
22
+ expectOne(name: string, sql: string): this;
23
+ /**
24
+ * Expect that the count is 0
25
+ */
26
+ expectZero(name: string, sql: string): this;
27
+ /**
28
+ * Expect that the count is 1 or more
29
+ */
30
+ expectOneOrMore(name: string, sql: string): this;
31
+ expect(): Promise<string>;
32
+ }
33
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-checker.js","sourceRoot":"","sources":["../../../../src/aws/infra/canaries/database-checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Construct } from "constructs";
2
+ import { CanaryParameters } from "./canary-parameters";
3
+ import { Role } from "aws-cdk-lib/aws-iam";
4
+ import { DigitrafficCanary } from "./canary";
5
+ import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
6
+ import { DigitrafficStack } from "../stack/stack";
7
+ import { DigitrafficRestApi } from "../stack/rest_apis";
8
+ export interface UrlCanaryParameters extends CanaryParameters {
9
+ readonly hostname: string;
10
+ readonly apiKeyId?: string;
11
+ }
12
+ export declare class UrlCanary extends DigitrafficCanary {
13
+ constructor(stack: Construct, role: Role, params: UrlCanaryParameters, secret?: ISecret);
14
+ static create(stack: DigitrafficStack, role: Role, publicApi: DigitrafficRestApi, params: Partial<UrlCanaryParameters>): UrlCanary;
15
+ static getApiKey(publicApi: DigitrafficRestApi): string | undefined;
16
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-canary.js","sourceRoot":"","sources":["../../../../src/aws/infra/canaries/url-canary.ts"],"names":[],"mappings":";;;AAGA,qCAA6C;AAK7C,+CAAsE;AAOtE,MAAa,SAAU,SAAQ,0BAAiB;IAC5C,YACI,KAAgB,EAChB,IAAU,EACV,MAA2B,EAC3B,MAAgB;QAEhB,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC;QACxC,MAAM,oBAAoB,GAAsB,EAAE,CAAC;QACnD,oBAAoB,CAAC,0BAAY,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAErD,IAAI,MAAM,CAAC,MAAM,EAAE;YACf,oBAAoB,CAAC,wBAAU,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;SACpD;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE;YACjB,oBAAoB,CAAC,yBAAW,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;SACvD;QAED,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC1B;QAED,+DAA+D;QAC/D,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,MAAM,CACT,KAAuB,EACvB,IAAU,EACV,SAA6B,EAC7B,MAAoC;QAEpC,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;YAC9B,GAAG;gBACC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,UAAU;gBACjC,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE;gBAC9B,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;aACtC;YACD,GAAG,MAAM;SACW,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,SAA6B;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;QAEpC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;SACtD;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACzC,OAAO,SAAS,CAAC;SACpB;QAED,2BAA2B;QAC3B,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;CACJ;AA1DD,8BA0DC"}
@@ -0,0 +1,46 @@
1
+ /// <reference types="node" />
2
+ import { IncomingMessage } from "http";
3
+ import { MediaType } from "../../types/mediatypes";
4
+ import { FeatureCollection } from "geojson";
5
+ export declare const API_KEY_HEADER = "x-api-key";
6
+ declare type CheckerFunction = (Res: IncomingMessage) => void;
7
+ declare type JsonCheckerFunction<T> = (json: T, body: string, message: IncomingMessage) => void;
8
+ export declare class UrlChecker {
9
+ private readonly requestOptions;
10
+ constructor(hostname: string, apiKey?: string);
11
+ static create(hostname: string, apiKeyId: string): Promise<UrlChecker>;
12
+ static createV2(): Promise<UrlChecker>;
13
+ expectStatus<T>(statusCode: number, url: string, callback: JsonCheckerFunction<T>): Promise<void>;
14
+ expect200<T>(url: string, ...callbacks: JsonCheckerFunction<T>[]): Promise<void>;
15
+ expect404(url: string): Promise<void>;
16
+ expect400(url: string): Promise<void>;
17
+ expect403WithoutApiKey(url: string, mediaType?: MediaType): Promise<void>;
18
+ done(): string;
19
+ }
20
+ export declare class ResponseChecker {
21
+ private readonly contentType;
22
+ private checkCors;
23
+ constructor(contentType: string);
24
+ static forJson(): ResponseChecker;
25
+ static forCSV(): ResponseChecker;
26
+ static forGeojson(): ResponseChecker;
27
+ static forJpeg(): ResponseChecker;
28
+ check(): CheckerFunction;
29
+ checkJson<T>(fn: (json: T, body: string, res: IncomingMessage) => void): CheckerFunction;
30
+ responseChecker(fn: (body: string, res: IncomingMessage) => void): CheckerFunction;
31
+ }
32
+ export declare class ContentChecker {
33
+ static checkJson<T>(fn: (json: T, body: string, res: IncomingMessage) => void): CheckerFunction;
34
+ static checkResponse(fn: (body: string, res: IncomingMessage) => void): CheckerFunction;
35
+ }
36
+ export declare class ContentTypeChecker {
37
+ static checkContentType(contentType: MediaType): (res: IncomingMessage) => void;
38
+ }
39
+ export declare class GeoJsonChecker {
40
+ static validFeatureCollection(fn?: (json: FeatureCollection) => void): CheckerFunction;
41
+ }
42
+ export declare class HeaderChecker {
43
+ static checkHeaderExists(headerName: string): CheckerFunction;
44
+ static checkHeaderMissing(headerName: string): CheckerFunction;
45
+ }
46
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-checker.js","sourceRoot":"","sources":["../../../../src/aws/infra/canaries/url-checker.ts"],"names":[],"mappings":"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"}