@digitraffic/common 2022.10.31-3 → 2022.11.1-1

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 (168) hide show
  1. package/dist/aws/infra/api/integration.d.ts +21 -0
  2. package/dist/aws/infra/api/integration.js.map +1 -0
  3. package/dist/aws/infra/api/response.d.ts +22 -0
  4. package/dist/aws/infra/api/response.js.map +1 -0
  5. package/dist/aws/infra/api/responses.d.ts +39 -0
  6. package/dist/aws/infra/api/responses.js.map +1 -0
  7. package/dist/aws/infra/api/static-integration.d.ts +15 -0
  8. package/dist/aws/infra/api/static-integration.js.map +1 -0
  9. package/dist/aws/infra/canaries/canary-alarm.d.ts +6 -0
  10. package/dist/aws/infra/canaries/canary-alarm.js.map +1 -0
  11. package/dist/aws/infra/canaries/canary-keys.d.ts +3 -0
  12. package/dist/aws/infra/canaries/canary-keys.js.map +1 -0
  13. package/dist/aws/infra/canaries/canary-parameters.d.ts +18 -0
  14. package/dist/aws/infra/canaries/canary-parameters.js.map +1 -0
  15. package/dist/aws/infra/canaries/canary-role.d.ts +6 -0
  16. package/dist/aws/infra/canaries/canary-role.js.map +1 -0
  17. package/dist/aws/infra/canaries/canary.d.ts +8 -0
  18. package/dist/aws/infra/canaries/canary.js.map +1 -0
  19. package/dist/aws/infra/canaries/database-canary.d.ts +18 -0
  20. package/dist/aws/infra/canaries/database-canary.js.map +1 -0
  21. package/dist/aws/infra/canaries/database-checker.d.ts +21 -0
  22. package/dist/aws/infra/canaries/database-checker.js.map +1 -0
  23. package/dist/aws/infra/canaries/url-canary.d.ts +16 -0
  24. package/dist/aws/infra/canaries/url-canary.js.map +1 -0
  25. package/dist/aws/infra/canaries/url-checker.d.ts +46 -0
  26. package/dist/aws/infra/canaries/url-checker.js.map +1 -0
  27. package/dist/aws/infra/documentation.d.ts +56 -0
  28. package/dist/aws/infra/documentation.js.map +1 -0
  29. package/dist/aws/infra/scheduler.d.ts +12 -0
  30. package/dist/aws/infra/scheduler.js.map +1 -0
  31. package/dist/aws/infra/security-rule.d.ts +12 -0
  32. package/dist/aws/infra/security-rule.js.map +1 -0
  33. package/dist/aws/infra/sqs-integration.d.ts +7 -0
  34. package/dist/aws/infra/sqs-integration.js.map +1 -0
  35. package/dist/aws/infra/sqs-queue.d.ts +16 -0
  36. package/dist/aws/infra/sqs-queue.js.map +1 -0
  37. package/dist/aws/infra/stack/lambda-configs.d.ts +72 -0
  38. package/dist/aws/infra/stack/lambda-configs.js.map +1 -0
  39. package/dist/aws/infra/stack/monitoredfunction.d.ts +84 -0
  40. package/dist/aws/infra/stack/monitoredfunction.js.map +1 -0
  41. package/dist/aws/infra/stack/rest_apis.d.ts +41 -0
  42. package/dist/aws/infra/stack/rest_apis.js +27 -31
  43. package/dist/aws/infra/stack/rest_apis.js.map +1 -0
  44. package/dist/aws/infra/stack/stack-checking-aspect.d.ts +21 -0
  45. package/dist/aws/infra/stack/stack-checking-aspect.js +3 -2
  46. package/dist/aws/infra/stack/stack-checking-aspect.js.map +1 -0
  47. package/dist/aws/infra/stack/stack.d.ts +45 -0
  48. package/dist/aws/infra/stack/stack.js.map +1 -0
  49. package/dist/aws/infra/stack/subscription.d.ts +17 -0
  50. package/dist/aws/infra/stack/subscription.js.map +1 -0
  51. package/dist/aws/infra/usage-plans.d.ts +15 -0
  52. package/dist/aws/infra/usage-plans.js.map +1 -0
  53. package/dist/aws/runtime/apikey.d.ts +2 -0
  54. package/dist/aws/runtime/apikey.js.map +1 -0
  55. package/dist/aws/runtime/digitraffic-integration-response.d.ts +8 -0
  56. package/dist/aws/runtime/digitraffic-integration-response.js.map +1 -0
  57. package/dist/aws/runtime/environment.d.ts +1 -0
  58. package/dist/aws/runtime/environment.js +4 -1
  59. package/dist/aws/runtime/environment.js.map +1 -0
  60. package/dist/aws/runtime/messaging.d.ts +10 -0
  61. package/dist/aws/runtime/messaging.js.map +1 -0
  62. package/dist/aws/runtime/s3.d.ts +2 -0
  63. package/dist/aws/runtime/s3.js.map +1 -0
  64. package/dist/aws/runtime/secrets/dbsecret.d.ts +54 -0
  65. package/dist/aws/runtime/secrets/dbsecret.js.map +1 -0
  66. package/dist/aws/runtime/secrets/proxy-holder.d.ts +9 -0
  67. package/dist/aws/runtime/secrets/proxy-holder.js.map +1 -0
  68. package/dist/aws/runtime/secrets/rds-holder.d.ts +9 -0
  69. package/dist/aws/runtime/secrets/rds-holder.js.map +1 -0
  70. package/dist/aws/runtime/secrets/secret-holder.d.ts +26 -0
  71. package/dist/aws/runtime/secrets/secret-holder.js.map +1 -0
  72. package/dist/aws/runtime/secrets/secret.d.ts +8 -0
  73. package/dist/aws/runtime/secrets/secret.js.map +1 -0
  74. package/dist/aws/types/errors.d.ts +8 -0
  75. package/dist/aws/types/errors.js.map +1 -0
  76. package/dist/aws/types/lambda-response.d.ts +13 -0
  77. package/dist/aws/types/lambda-response.js.map +1 -0
  78. package/dist/aws/types/mediatypes.d.ts +11 -0
  79. package/dist/aws/types/mediatypes.js +2 -1
  80. package/dist/aws/types/mediatypes.js.map +1 -0
  81. package/dist/aws/types/model-with-reference.d.ts +7 -0
  82. package/dist/aws/types/model-with-reference.js.map +1 -0
  83. package/dist/aws/types/proxytypes.d.ts +26 -0
  84. package/dist/aws/types/proxytypes.js.map +1 -0
  85. package/dist/aws/types/tags.d.ts +2 -0
  86. package/dist/aws/types/tags.js.map +1 -0
  87. package/dist/database/cached.d.ts +7 -0
  88. package/dist/database/cached.js.map +1 -0
  89. package/dist/database/database.d.ts +19 -0
  90. package/dist/database/database.js +6 -8
  91. package/dist/database/database.js.map +1 -0
  92. package/dist/database/last-updated.d.ts +16 -0
  93. package/dist/database/last-updated.js.map +1 -0
  94. package/dist/database/models.d.ts +6 -0
  95. package/dist/database/models.js.map +1 -0
  96. package/dist/marine/id_utils.d.ts +3 -0
  97. package/dist/marine/id_utils.js.map +1 -0
  98. package/dist/marine/rtz.d.ts +48 -0
  99. package/dist/marine/rtz.js.map +1 -0
  100. package/dist/test/asserter.d.ts +11 -0
  101. package/dist/test/asserter.js.map +1 -0
  102. package/dist/test/db-testutils.d.ts +3 -0
  103. package/dist/test/db-testutils.js +5 -1
  104. package/dist/test/db-testutils.js.map +1 -0
  105. package/dist/test/httpserver.d.ts +19 -0
  106. package/dist/test/httpserver.js.map +1 -0
  107. package/dist/test/secret.d.ts +3 -0
  108. package/dist/test/secret.js.map +1 -0
  109. package/dist/test/secrets-manager.d.ts +9 -0
  110. package/dist/test/secrets-manager.js.map +1 -0
  111. package/dist/test/testutils.d.ts +12 -0
  112. package/dist/test/testutils.js.map +1 -0
  113. package/dist/types/either.d.ts +9 -0
  114. package/dist/types/either.js.map +1 -0
  115. package/dist/types/input-error.d.ts +2 -0
  116. package/dist/types/input-error.js.map +1 -0
  117. package/dist/types/language.d.ts +5 -0
  118. package/dist/types/language.js.map +1 -0
  119. package/dist/types/traffictype.d.ts +8 -0
  120. package/dist/types/traffictype.js.map +1 -0
  121. package/dist/types/validator.d.ts +4 -0
  122. package/dist/types/validator.js.map +1 -0
  123. package/dist/utils/api-model.d.ts +87 -0
  124. package/dist/utils/api-model.js.map +1 -0
  125. package/dist/utils/base64.d.ts +12 -0
  126. package/dist/utils/base64.js.map +1 -0
  127. package/dist/utils/date-utils.d.ts +17 -0
  128. package/dist/utils/date-utils.js.map +1 -0
  129. package/dist/utils/geojson-types.d.ts +14 -0
  130. package/dist/utils/geojson-types.js.map +1 -0
  131. package/dist/utils/geometry.d.ts +36 -0
  132. package/dist/utils/geometry.js.map +1 -0
  133. package/dist/utils/retry.d.ts +13 -0
  134. package/dist/utils/retry.js.map +1 -0
  135. package/dist/utils/slack.d.ts +5 -0
  136. package/dist/utils/slack.js.map +1 -0
  137. package/dist/utils/utils.d.ts +46 -0
  138. package/dist/utils/utils.js.map +1 -0
  139. package/package.json +1 -1
  140. package/src/aws/infra/stack/rest_apis.ts +144 -91
  141. package/src/aws/infra/stack/stack-checking-aspect.ts +5 -2
  142. package/src/aws/runtime/environment.ts +5 -1
  143. package/src/aws/types/mediatypes.ts +2 -1
  144. package/src/database/database.ts +9 -10
  145. package/src/test/db-testutils.ts +5 -0
  146. package/.editorconfig +0 -9
  147. package/.eslintignore +0 -4
  148. package/.eslintrc.json +0 -27
  149. package/.github/CODEOWNERS +0 -2
  150. package/.github/workflows/build.yml +0 -36
  151. package/.github/workflows/eslint.yml +0 -38
  152. package/.github/workflows/mirror.yml +0 -15
  153. package/.gitignore +0 -29
  154. package/.husky/pre-commit +0 -4
  155. package/.prettierrc.json +0 -10
  156. package/jest.config.js +0 -15
  157. package/test/marine/id_utils.test.ts +0 -57
  158. package/test/promise/promise.test.ts +0 -143
  159. package/test/secrets/dbsecret.test.ts +0 -59
  160. package/test/secrets/secret-holder.test.ts +0 -143
  161. package/test/secrets/secret.test.ts +0 -49
  162. package/test/test/httpserver.test.ts +0 -128
  163. package/test/utils/date-utils.test.ts +0 -28
  164. package/test/utils/geometry.test.ts +0 -29
  165. package/test/utils/utils.test.ts +0 -64
  166. package/tsconfig.eslint.json +0 -4
  167. package/tsconfig.json +0 -22
  168. package/yarn.lock +0 -4060
@@ -0,0 +1,84 @@
1
+ import { Function, FunctionProps } from "aws-cdk-lib/aws-lambda";
2
+ import { Stack } from "aws-cdk-lib";
3
+ import { ComparisonOperator } from "aws-cdk-lib/aws-cloudwatch";
4
+ import { DigitrafficStack } from "../stack/stack";
5
+ import { ITopic } from "aws-cdk-lib/aws-sns";
6
+ import { LambdaEnvironment, MonitoredFunctionParameters } from "../stack/lambda-configs";
7
+ import { TrafficType } from "../../../types/traffictype";
8
+ /**
9
+ * Allows customization of CloudWatch Alarm properties
10
+ */
11
+ export declare type MonitoredFunctionAlarmProps = {
12
+ /**
13
+ * Setting this to false will not create a CloudWatch alarm
14
+ */
15
+ readonly create: boolean;
16
+ readonly threshold?: number;
17
+ readonly evaluationPeriods?: number;
18
+ readonly datapointsToAlarm?: number;
19
+ readonly comparisonOperator?: ComparisonOperator;
20
+ };
21
+ export declare type MonitoredFunctionProps = {
22
+ readonly durationAlarmProps?: MonitoredFunctionAlarmProps;
23
+ readonly durationWarningProps?: MonitoredFunctionAlarmProps;
24
+ readonly errorAlarmProps?: MonitoredFunctionAlarmProps;
25
+ readonly throttleAlarmProps?: MonitoredFunctionAlarmProps;
26
+ };
27
+ /**
28
+ * Creates a Lambda function that monitors default CloudWatch Lambda metrics with CloudWatch Alarms.
29
+ */
30
+ export declare class MonitoredFunction extends Function {
31
+ readonly givenName: string;
32
+ /** disable all alarms */
33
+ static readonly DISABLE_ALARMS: MonitoredFunctionProps;
34
+ /**
35
+ * Create new MonitoredFunction. Use topics from given DigitrafficStack.
36
+ *
37
+ * @param stack DigitrafficStack
38
+ * @param id Lambda construct Id
39
+ * @param functionProps Lambda function properties
40
+ * @param props Monitored function properties
41
+ */
42
+ static create(stack: DigitrafficStack, id: string, functionProps: FunctionProps, props?: Partial<MonitoredFunctionProps>): MonitoredFunction;
43
+ /**
44
+ * Create new MonitoredFunction. Use topics from given DigitrafficStack. Generate names from given name and configuration shortName.
45
+ *
46
+ * For example, shortName FOO and given name update-things will create function FOO-UpdateThings and use code from lambda/update-things/update-things.ts method handler.
47
+ *
48
+ * @param stack DigitrafficStack
49
+ * @param name param-case name
50
+ * @param environment Lambda environment
51
+ * @param functionParameters Lambda function parameters
52
+ */
53
+ static createV2(stack: DigitrafficStack, name: string, environment: LambdaEnvironment, functionParameters?: Partial<MonitoredFunctionParameters>): MonitoredFunction;
54
+ /**
55
+ * @param scope Stack
56
+ * @param id Lambda construct Id
57
+ * @param functionProps Lambda function properties
58
+ * @param alarmSnsTopic SNS topic for alarms
59
+ * @param warningSnsTopic SNS topic for warnings
60
+ * @param production Is the stack a production stack, used for determining the alarm topic
61
+ * @param trafficType Traffic type, used for alarm names. Set to null if Lambda is not related to any traffic type.
62
+ * @param props Monitored function properties
63
+ */
64
+ constructor(scope: Stack, id: string, functionProps: FunctionProps, alarmSnsTopic: ITopic, warningSnsTopic: ITopic, production: boolean, trafficType: TrafficType | null, props?: MonitoredFunctionProps);
65
+ private createAlarm;
66
+ private getAlarmActionForEnv;
67
+ }
68
+ export declare class MonitoredDBFunction {
69
+ /**
70
+ * Create new MonitoredDBFunction. Use topics from given DigitrafficStack. Generate names from given name and configuration shortName.
71
+ * Grant secret and create log subscription.
72
+ *
73
+ * For example, shortName FOO and given name update-things will create function FOO-UpdateThings and use code from lambda/update-things/update-things.ts method handler.
74
+ *
75
+ * If you don't need to pass any extra arguments to lambda-environment, you can leave environment out and this function will create the
76
+ * default Lambda Environment with SECRET_ID and DB_APPLICATION.
77
+ *
78
+ * @param stack DigitrafficStack
79
+ * @param name param-case name
80
+ * @param environment Lambda environment
81
+ * @param functionParameters Lambda function parameters
82
+ */
83
+ static create(stack: DigitrafficStack, name: string, environment?: LambdaEnvironment, functionParameters?: Partial<MonitoredFunctionParameters>): MonitoredFunction;
84
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoredfunction.js","sourceRoot":"","sources":["../../../../src/aws/infra/stack/monitoredfunction.ts"],"names":[],"mappings":";;;AAAA,uDAAiE;AAEjE,+EAA+D;AAC/D,+DAAwE;AAGxE,4DAIiC;AACjC,6CAAyC;AACzC,wDAAoE;AA+BpE;;GAEG;AACH,MAAa,iBAAkB,SAAQ,qBAAQ;IAyF3C;;;;;;;;;OASG;IACH,YACI,KAAY,EACZ,EAAU,EACV,aAA4B,EAC5B,aAAqB,EACrB,eAAuB,EACvB,UAAmB,EACnB,WAA+B,EAC/B,KAA8B;QAE9B,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;QAEhC,IAAI,aAAa,CAAC,YAAY,KAAK,SAAS,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC;QAE5C,MAAM,cAAc,GAAG,IAAI,kCAAS,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,gBAAgB,GAAG,IAAI,kCAAS,CAAC,eAAe,CAAC,CAAC;QAExD,IAAI,KAAK,EAAE,kBAAkB,EAAE,MAAM,KAAK,KAAK,EAAE;YAC7C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;aACzD;YAED,IAAI,CAAC,WAAW,CACZ,KAAK,EACL,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAChD,UAAU,EACV,gBAAgB,EAChB,yBAAyB,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EACpE,WAAW,EACX,IAAI,CAAC,oBAAoB,CACrB,cAAc,EACd,gBAAgB,EAChB,UAAU,CACb,EACD,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,EACtC,CAAC,EACD,CAAC,EACD,mCAAkB,CAAC,kCAAkC,EACrD,KAAK,EAAE,kBAAkB,CAC5B,CAAC;SACL;QACD,IAAI,KAAK,EAAE,oBAAoB,EAAE,MAAM,KAAK,KAAK,EAAE;YAC/C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;aACzD;YAED,IAAI,CAAC,WAAW,CACZ,KAAK,EACL,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAChD,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EACtE,WAAW,EACX,gBAAgB,EAChB,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,IAAI,EAC7C,CAAC,EACD,CAAC,EACD,mCAAkB,CAAC,kCAAkC,EACrD,KAAK,EAAE,oBAAoB,CAC9B,CAAC;SACL;QAED,IAAI,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,KAAK,EAAE;YAC1C,IAAI,CAAC,WAAW,CACZ,KAAK,EACL,IAAI,CAAC,YAAY,EAAE,EACnB,QAAQ,EACR,cAAc,EACd,6BAA6B,EAC7B,WAAW,EACX,IAAI,CAAC,oBAAoB,CACrB,cAAc,EACd,gBAAgB,EAChB,UAAU,CACb,EACD,CAAC,EACD,CAAC,EACD,CAAC,EACD,mCAAkB,CAAC,kCAAkC,EACrD,KAAK,EAAE,eAAe,CACzB,CAAC;SACL;QAED,IAAI,KAAK,EAAE,kBAAkB,EAAE,MAAM,KAAK,KAAK,EAAE;YAC7C,IAAI,CAAC,WAAW,CACZ,KAAK,EACL,IAAI,CAAC,eAAe,EAAE,EACtB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,IAAI,CAAC,oBAAoB,CACrB,cAAc,EACd,gBAAgB,EAChB,UAAU,CACb,EACD,CAAC,EACD,CAAC,EACD,CAAC,EACD,mCAAkB,CAAC,sBAAsB,EACzC,KAAK,EAAE,kBAAkB,CAC5B,CAAC;SACL;IACL,CAAC;IA1LD;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CACT,KAAuB,EACvB,EAAU,EACV,aAA4B,EAC5B,KAAuC;QAEvC,IACI,KAAK,KAAK,iBAAiB,CAAC,cAAc;YAC1C,KAAK,CAAC,aAAa,CAAC,UAAU,EAChC;YACE,MAAM,IAAI,KAAK,CACX,YAAY,aAAa,CAAC,YAAY,6FAA6F,CACtI,CAAC;SACL;QAED,OAAO,IAAI,iBAAiB,CACxB,KAAK,EACL,EAAE,EACF,aAAa,EACb,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,CAAC,UAAU,EAC9B,KAAK,CAAC,aAAa,CAAC,WAAW,EAC/B,KAAK,CACR,CAAC;IACN,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CACX,KAAuB,EACvB,IAAY,EACZ,WAA8B,EAC9B,kBAAyD;QAEzD,MAAM,YAAY,GACd,kBAAkB,EAAE,YAAY;YAChC,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,IAAI,IAAA,wBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,aAAa,GAAG,IAAA,sCAAqB,EACvC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,kBAAkB,CACrB,CAAC;QAEF,OAAO,iBAAiB,CAAC,MAAM,CAC3B,KAAK,EACL,YAAY,EACZ,aAAa,EACb,kBAAkB,CACrB,CAAC;IACN,CAAC;IAwHO,WAAW,CACf,KAAY,EACZ,MAAc,EACd,OAAe,EACf,SAAiB,EACjB,gBAAwB,EACxB,WAA+B,EAC/B,cAAyB,EACzB,SAAiB,EACjB,iBAAyB,EACzB,iBAAyB,EACzB,kBAAsC,EACtC,UAAwC;QAExC,MAAM;aACD,WAAW,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,EAAE;YAC9C,SAAS,EAAE,GAAG,WAAW,IAAI,EAAE,IAAI,KAAK,CAAC,SAAS,IAC9C,IAAI,CAAC,YACT,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE;YACtB,gBAAgB;YAChB,SAAS,EAAE,UAAU,EAAE,SAAS,IAAI,SAAS;YAC7C,iBAAiB,EACb,UAAU,EAAE,iBAAiB,IAAI,iBAAiB;YACtD,iBAAiB,EACb,UAAU,EAAE,iBAAiB,IAAI,iBAAiB;YACtD,kBAAkB,EACd,UAAU,EAAE,kBAAkB,IAAI,kBAAkB;SAC3D,CAAC;aACD,cAAc,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;IAEO,oBAAoB,CACxB,WAAsB,EACtB,aAAwB,EACxB,UAAmB;QAEnB,OAAO,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;IACpD,CAAC;;AApPL,8CAqPC;AAlPG,yBAAyB;AACF,gCAAc,GAA2B;IAC5D,kBAAkB,EAAE;QAChB,MAAM,EAAE,KAAK;KAChB;IACD,oBAAoB,EAAE;QAClB,MAAM,EAAE,KAAK;KAChB;IACD,eAAe,EAAE;QACb,MAAM,EAAE,KAAK;KAChB;IACD,kBAAkB,EAAE;QAChB,MAAM,EAAE,KAAK;KAChB;CACJ,CAAC;AAsON,MAAa,mBAAmB;IAC5B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,MAAM,CACT,KAAuB,EACvB,IAAY,EACZ,WAA+B,EAC/B,kBAAyD;QAEzD,MAAM,YAAY,GACd,kBAAkB,EAAE,YAAY;YAChC,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,IAAI,IAAA,wBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC;QACxE,MAAM,aAAa,GAAG,IAAA,sCAAqB,EACvC,KAAK,EACL,GAAG,EACH,YAAY,EACZ,IAAI,EACJ,kBAAkB,CACrB,CAAC;QAEF,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAC/B,KAAK,EACL,YAAY,EACZ,aAAa,EACb,kBAAkB,CACrB,CAAC;QAEF,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAEtB,IAAI,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE;YACxC,IAAI,0CAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC9C;QAED,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAhDD,kDAgDC"}
@@ -0,0 +1,41 @@
1
+ import { RestApi, RestApiProps, JsonSchema, Resource } from "aws-cdk-lib/aws-apigateway";
2
+ import { PolicyDocument } from "aws-cdk-lib/aws-iam";
3
+ import { Construct } from "constructs";
4
+ import { DigitrafficStack } from "./stack";
5
+ import { ModelWithReference } from "../../types/model-with-reference";
6
+ import { DocumentationPart } from "../documentation";
7
+ export declare class DigitrafficRestApi extends RestApi {
8
+ readonly apiKeyIds: string[];
9
+ readonly enableDocumentation: boolean;
10
+ constructor(stack: DigitrafficStack, apiId: string, apiName: string, allowFromIpAddresses?: string[] | undefined, config?: Partial<RestApiProps>);
11
+ hostname(): string;
12
+ createUsagePlan(apiKeyId: string, apiKeyName: string): string;
13
+ createUsagePlanV2(apiName: string): string;
14
+ addJsonModel(modelName: string, schema: JsonSchema): ModelWithReference;
15
+ addCSVModel(modelName: string): ModelWithReference;
16
+ private getModelWithReference;
17
+ private addDocumentationPart;
18
+ documentResource(resource: Resource, ...documentationPart: DocumentationPart[]): void;
19
+ }
20
+ /**
21
+ * Due to AWS API design API Gateway will always return 403 'Missing Authentication Token' for requests
22
+ * with a non-existent endpoint. This function translates this response to a 404.
23
+ * Requests with an invalid or missing API key are not affected (still return 403 'Forbidden').
24
+ * @param restApi RestApi
25
+ * @param stack Construct
26
+ */
27
+ export declare function add404Support(restApi: RestApi, stack: Construct): void;
28
+ export declare function add401Support(restApi: RestApi, stack: Construct): void;
29
+ /**
30
+ * Due to AWS API design API Gateway will always return 403 'Missing Authentication Token' for requests
31
+ * with a non-existent endpoint. This function converts this response to a custom one.
32
+ * Requests with an invalid or missing API key are not affected (still return 403 'Forbidden').
33
+ * @param returnCode
34
+ * @param message
35
+ * @param restApi RestApi
36
+ * @param stack Construct
37
+ */
38
+ export declare function setReturnCodeForMissingAuthenticationToken(returnCode: number, message: string, restApi: RestApi, stack: Construct): void;
39
+ export declare function createRestApi(stack: Construct, apiId: string, apiName: string, allowFromIpAddresses?: string[] | undefined): RestApi;
40
+ export declare function createDefaultPolicyDocument(): PolicyDocument;
41
+ export declare function createIpRestrictionPolicyDocument(allowFromIpAddresses: string[]): PolicyDocument;
@@ -9,19 +9,25 @@ const mediatypes_1 = require("../../types/mediatypes");
9
9
  const R = require("ramda");
10
10
  class DigitrafficRestApi extends aws_apigateway_1.RestApi {
11
11
  constructor(stack, apiId, apiName, allowFromIpAddresses, config) {
12
- const policyDocument = allowFromIpAddresses == null ? createDefaultPolicyDocument() : createIpRestrictionPolicyDocument(allowFromIpAddresses);
12
+ const policyDocument = allowFromIpAddresses == null
13
+ ? createDefaultPolicyDocument()
14
+ : createIpRestrictionPolicyDocument(allowFromIpAddresses);
13
15
  // override default config with given extra config
14
- const apiConfig = { ...{
16
+ const apiConfig = {
17
+ ...{
15
18
  deployOptions: {
16
19
  loggingLevel: aws_apigateway_1.MethodLoggingLevel.ERROR,
17
20
  },
18
21
  restApiName: apiName,
19
22
  endpointTypes: [aws_apigateway_1.EndpointType.REGIONAL],
20
23
  policy: policyDocument,
21
- }, ...config };
24
+ },
25
+ ...config,
26
+ };
22
27
  super(stack, apiId, apiConfig);
23
28
  this.apiKeyIds = [];
24
- this.enableDocumentation = stack.configuration.stackFeatures?.enableDocumentation ?? true;
29
+ this.enableDocumentation =
30
+ stack.configuration.stackFeatures?.enableDocumentation ?? true;
25
31
  add404Support(this, stack);
26
32
  }
27
33
  hostname() {
@@ -52,13 +58,13 @@ class DigitrafficRestApi extends aws_apigateway_1.RestApi {
52
58
  }));
53
59
  }
54
60
  getModelWithReference(model) {
55
- return R.assoc('modelReference', (0, api_model_1.getModelReference)(model.modelId, this.restApiId), model);
61
+ return R.assoc("modelReference", (0, api_model_1.getModelReference)(model.modelId, this.restApiId), model);
56
62
  }
57
63
  addDocumentationPart(resource, parameterName, resourceName, type, properties) {
58
64
  const location = {
59
65
  type,
60
66
  path: resource.path,
61
- name: type !== 'METHOD' ? parameterName : undefined,
67
+ name: type !== "METHOD" ? parameterName : undefined,
62
68
  };
63
69
  new aws_apigateway_1.CfnDocumentationPart(this.stack, resourceName, {
64
70
  restApiId: resource.api.restApiId,
@@ -68,7 +74,7 @@ class DigitrafficRestApi extends aws_apigateway_1.RestApi {
68
74
  }
69
75
  documentResource(resource, ...documentationPart) {
70
76
  if (this.enableDocumentation) {
71
- documentationPart.forEach(dp => this.addDocumentationPart(resource, dp.parameterName, `${resource.path}.${dp.parameterName}.Documentation`, dp.type, dp.documentationProperties));
77
+ documentationPart.forEach((dp) => this.addDocumentationPart(resource, dp.parameterName, `${resource.path}.${dp.parameterName}.Documentation`, dp.type, dp.documentationProperties));
72
78
  }
73
79
  else {
74
80
  console.info("Skipping documentation for %s", resource.path);
@@ -87,9 +93,9 @@ function add404Support(restApi, stack) {
87
93
  new aws_apigateway_1.GatewayResponse(stack, `MissingAuthenticationTokenResponse-${restApi.restApiName}`, {
88
94
  restApi,
89
95
  type: aws_apigateway_1.ResponseType.MISSING_AUTHENTICATION_TOKEN,
90
- statusCode: '404',
96
+ statusCode: "404",
91
97
  templates: {
92
- 'application/json': '{"message": "Not found"}',
98
+ [mediatypes_1.MediaType.APPLICATION_JSON]: '{"message": "Not found"}',
93
99
  },
94
100
  });
95
101
  }
@@ -100,7 +106,7 @@ function add401Support(restApi, stack) {
100
106
  type: aws_apigateway_1.ResponseType.UNAUTHORIZED,
101
107
  statusCode: "401",
102
108
  responseHeaders: {
103
- 'WWW-Authenticate': "'Basic'",
109
+ "WWW-Authenticate": "'Basic'",
104
110
  },
105
111
  });
106
112
  }
@@ -120,13 +126,15 @@ function setReturnCodeForMissingAuthenticationToken(returnCode, message, restApi
120
126
  type: aws_apigateway_1.ResponseType.MISSING_AUTHENTICATION_TOKEN,
121
127
  statusCode: `${returnCode}`,
122
128
  templates: {
123
- 'application/json': `{"message": ${message}}`,
129
+ [mediatypes_1.MediaType.APPLICATION_JSON]: `{"message": ${message}}`,
124
130
  },
125
131
  });
126
132
  }
127
133
  exports.setReturnCodeForMissingAuthenticationToken = setReturnCodeForMissingAuthenticationToken;
128
134
  function createRestApi(stack, apiId, apiName, allowFromIpAddresses) {
129
- const policyDocument = allowFromIpAddresses == null ? createDefaultPolicyDocument() : createIpRestrictionPolicyDocument(allowFromIpAddresses);
135
+ const policyDocument = allowFromIpAddresses == null
136
+ ? createDefaultPolicyDocument()
137
+ : createIpRestrictionPolicyDocument(allowFromIpAddresses);
130
138
  const restApi = new aws_apigateway_1.RestApi(stack, apiId, {
131
139
  deployOptions: {
132
140
  loggingLevel: aws_apigateway_1.MethodLoggingLevel.ERROR,
@@ -144,15 +152,9 @@ function createDefaultPolicyDocument() {
144
152
  statements: [
145
153
  new aws_iam_1.PolicyStatement({
146
154
  effect: aws_iam_1.Effect.ALLOW,
147
- actions: [
148
- "execute-api:Invoke",
149
- ],
150
- resources: [
151
- "*",
152
- ],
153
- principals: [
154
- new aws_iam_1.AnyPrincipal(),
155
- ],
155
+ actions: ["execute-api:Invoke"],
156
+ resources: ["*"],
157
+ principals: [new aws_iam_1.AnyPrincipal()],
156
158
  }),
157
159
  ],
158
160
  });
@@ -164,19 +166,13 @@ function createIpRestrictionPolicyDocument(allowFromIpAddresses) {
164
166
  new aws_iam_1.PolicyStatement({
165
167
  effect: aws_iam_1.Effect.ALLOW,
166
168
  conditions: {
167
- "IpAddress": {
169
+ IpAddress: {
168
170
  "aws:SourceIp": allowFromIpAddresses,
169
171
  },
170
172
  },
171
- actions: [
172
- "execute-api:Invoke",
173
- ],
174
- resources: [
175
- "*",
176
- ],
177
- principals: [
178
- new aws_iam_1.AnyPrincipal(),
179
- ],
173
+ actions: ["execute-api:Invoke"],
174
+ resources: ["*"],
175
+ principals: [new aws_iam_1.AnyPrincipal()],
180
176
  }),
181
177
  ],
182
178
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest_apis.js","sourceRoot":"","sources":["../../../../src/aws/infra/stack/rest_apis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { IAspect } from "aws-cdk-lib";
2
+ import { DigitrafficStack } from "./stack";
3
+ import { IConstruct } from "constructs";
4
+ export declare class StackCheckingAspect implements IAspect {
5
+ private readonly stackShortName?;
6
+ private readonly whitelistedResources?;
7
+ constructor(stackShortName?: string, whitelistedResources?: string[]);
8
+ static create(stack: DigitrafficStack): StackCheckingAspect;
9
+ visit(node: IConstruct): void;
10
+ private isWhitelisted;
11
+ private addAnnotation;
12
+ private checkStack;
13
+ private checkFunction;
14
+ private checkTags;
15
+ private checkBucket;
16
+ private static isValidPath;
17
+ private static isValidQueryString;
18
+ private checkResourceCasing;
19
+ private checkQueueEncryption;
20
+ private checkLogGroupRetention;
21
+ }
@@ -10,7 +10,7 @@ const change_case_1 = require("change-case");
10
10
  const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
11
11
  const aws_logs_1 = require("aws-cdk-lib/aws-logs");
12
12
  const MAX_CONCURRENCY_LIMIT = 100;
13
- const NODE_RUNTIME = aws_lambda_1.Runtime.NODEJS_14_X.name;
13
+ const NODE_RUNTIMES = [aws_lambda_1.Runtime.NODEJS_14_X.name, aws_lambda_1.Runtime.NODEJS_16_X.name];
14
14
  var ResourceType;
15
15
  (function (ResourceType) {
16
16
  ResourceType["stackName"] = "STACK_NAME";
@@ -89,7 +89,8 @@ class StackCheckingAspect {
89
89
  if (!node.memorySize) {
90
90
  this.addAnnotation(node, ResourceType.functionMemorySize, "Function must have memorySize");
91
91
  }
92
- if (node.runtime !== NODE_RUNTIME) {
92
+ if (node.runtime !== undefined &&
93
+ !NODE_RUNTIMES.includes(node.runtime)) {
93
94
  this.addAnnotation(node, ResourceType.functionRuntime, `Function has wrong runtime ${node.runtime}!`);
94
95
  }
95
96
  if (this.stackShortName &&
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-checking-aspect.js","sourceRoot":"","sources":["../../../../src/aws/infra/stack/stack-checking-aspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { Stack, StackProps } from "aws-cdk-lib";
2
+ import { IVpc } from "aws-cdk-lib/aws-ec2";
3
+ import { ISecurityGroup } from "aws-cdk-lib/aws-ec2/lib/security-group";
4
+ import { ITopic } from "aws-cdk-lib/aws-sns";
5
+ import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
6
+ import { Function as AWSFunction } from "aws-cdk-lib/aws-lambda";
7
+ import { Construct } from "constructs";
8
+ import { TrafficType } from "../../../types/traffictype";
9
+ import { DBLambdaEnvironment } from "./lambda-configs";
10
+ export declare const SOLUTION_KEY = "Solution";
11
+ export declare const SSM_KEY_WARNING_TOPIC: string;
12
+ export declare const SSM_KEY_ALARM_TOPIC: string;
13
+ export interface StackConfiguration {
14
+ readonly shortName: string;
15
+ readonly secretId?: string;
16
+ readonly alarmTopicArn: string;
17
+ readonly warningTopicArn: string;
18
+ readonly logsDestinationArn?: string;
19
+ readonly vpcId?: string;
20
+ readonly lambdaDbSgId?: string;
21
+ readonly privateSubnetIds?: string[];
22
+ readonly availabilityZones?: string[];
23
+ readonly trafficType: TrafficType;
24
+ readonly production: boolean;
25
+ readonly stackProps: StackProps;
26
+ readonly stackFeatures?: {
27
+ readonly enableCanaries?: boolean;
28
+ readonly enableDocumentation?: boolean;
29
+ };
30
+ readonly whitelistedResources?: string[];
31
+ }
32
+ export declare class DigitrafficStack extends Stack {
33
+ readonly vpc?: IVpc;
34
+ readonly lambdaDbSg?: ISecurityGroup;
35
+ readonly alarmTopic: ITopic;
36
+ readonly warningTopic: ITopic;
37
+ readonly secret?: ISecret;
38
+ readonly configuration: StackConfiguration;
39
+ constructor(scope: Construct, id: string, configuration: StackConfiguration);
40
+ addAspects(): void;
41
+ createLambdaEnvironment(): DBLambdaEnvironment;
42
+ createDefaultLambdaEnvironment(dbApplication: string): DBLambdaEnvironment;
43
+ getSecret(): ISecret;
44
+ grantSecret(...lambdas: AWSFunction[]): void;
45
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../../src/aws/infra/stack/stack.ts"],"names":[],"mappings":";;;AAAA,6CAAyD;AACzD,iDAA+D;AAE/D,iDAAoD;AACpD,iDAAsD;AACtD,uEAAiE;AAGjE,mEAA8D;AAK9D,MAAM,QAAQ,GAAG,cAAc,CAAC;AACnB,QAAA,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,eAAe,GAAG,aAAa,CAAC;AAEzB,QAAA,qBAAqB,GAAG,GAAG,QAAQ,GAAG,eAAe,gBAAgB,CAAC;AACtE,QAAA,mBAAmB,GAAG,GAAG,QAAQ,GAAG,eAAe,cAAc,CAAC;AA2B/E,MAAa,gBAAiB,SAAQ,mBAAK;IASvC,YACI,KAAgB,EAChB,EAAU,EACV,aAAiC;QAEjC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,aAAa,CAAC,QAAQ,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,2BAAM,CAAC,gBAAgB,CACjC,IAAI,EACJ,QAAQ,EACR,aAAa,CAAC,QAAQ,CACzB,CAAC;SACL;QAED,mEAAmE;QACnE,mDAAmD;QACnD,IAAI,aAAa,CAAC,KAAK,EAAE;YACrB,IAAI,CAAC,GAAG,GAAG,aAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC1C,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;gBAChD,iBAAiB,EAAE,aAAa,CAAC,iBAAiB,IAAI,EAAE;aAC3D,CAAC,CAAC;SACN;QAED,oDAAoD;QACpD,IAAI,aAAa,CAAC,YAAY,EAAE;YAC5B,IAAI,CAAC,UAAU,GAAG,uBAAa,CAAC,mBAAmB,CAC/C,IAAI,EACJ,YAAY,EACZ,aAAa,CAAC,YAAY,CAC7B,CAAC;SACL;QAED,IAAI,CAAC,UAAU,GAAG,eAAK,CAAC,YAAY,CAChC,IAAI,EACJ,YAAY,EACZ,yBAAe,CAAC,uBAAuB,CACnC,IAAI,EACJ,iBAAiB,EACjB,2BAAmB,CACtB,CAAC,WAAW,CAChB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,eAAK,CAAC,YAAY,CAClC,IAAI,EACJ,cAAc,EACd,yBAAe,CAAC,uBAAuB,CACnC,IAAI,EACJ,mBAAmB,EACnB,6BAAqB,CACxB,CAAC,WAAW,CAChB,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,UAAU;QACN,qBAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,2CAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,uBAAuB;QACnB,OAAO,IAAI,CAAC,8BAA8B,CACtC,IAAI,CAAC,aAAa,CAAC,SAAS,CAC/B,CAAC;IACN,CAAC;IAED,8BAA8B,CAAC,aAAqB;QAChD,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ;YAC9B,CAAC,CAAC;gBACI,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;gBACtC,cAAc,EAAE,aAAa;aAChC;YACH,CAAC,CAAC;gBACI,cAAc,EAAE,aAAa;aAChC,CAAC;IACZ,CAAC;IAED,SAAS;QACL,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SAC1C;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,GAAG,OAAsB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAc,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;CACJ;AAnGD,4CAmGC"}
@@ -0,0 +1,17 @@
1
+ import { CfnSubscriptionFilter } from "aws-cdk-lib/aws-logs";
2
+ import { Function as AWSFunction } from "aws-cdk-lib/aws-lambda";
3
+ import { DigitrafficStack } from "./stack";
4
+ import { Construct } from "constructs";
5
+ import { MonitoredFunction } from "./monitoredfunction";
6
+ /**
7
+ * Creates a subscription filter that subscribes to a Lambda Log Group and delivers the logs to another destination.
8
+ * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
9
+ * @param lambda The Lambda function, needed to create a dependency
10
+ * @param lambdaName The Lambda name from which the Log Group name is derived
11
+ * @param logDestinationArn Destination for streamed logs
12
+ * @param stack CloudFormation stack
13
+ */
14
+ export declare function createSubscription(lambda: AWSFunction, lambdaName: string, logDestinationArn: string | undefined, stack: Construct): CfnSubscriptionFilter | undefined;
15
+ export declare class DigitrafficLogSubscriptions {
16
+ constructor(stack: DigitrafficStack, ...lambdas: MonitoredFunction[]);
17
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../../src/aws/infra/stack/subscription.ts"],"names":[],"mappings":";;;AAAA,mDAA6D;AAM7D;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAC9B,MAAmB,EACnB,UAAkB,EAClB,iBAAqC,EACrC,KAAgB;IAEhB,IAAI,iBAAiB,IAAI,SAAS,EAAE;QAChC,OAAO,SAAS,CAAC;KACpB;IACD,MAAM,MAAM,GAAG,IAAI,gCAAqB,CACpC,KAAK,EACL,GAAG,UAAU,kBAAkB,EAC/B;QACI,YAAY,EAAE,eAAe,UAAU,EAAE;QACzC,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,iBAAiB;KACpC,CACJ,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAClB,CAAC;AAtBD,gDAsBC;AAED,MAAa,2BAA2B;IACpC,YAAY,KAAuB,EAAE,GAAG,OAA4B;QAChE,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAC9D,IAAI,cAAc,KAAK,SAAS,EAAE;YAC9B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,IAAI,gCAAqB,CACpC,KAAK,EACL,GAAG,MAAM,CAAC,SAAS,kBAAkB,EACrC;oBACI,YAAY,EAAE,eAAe,MAAM,CAAC,SAAS,EAAE;oBAC/C,aAAa,EAAE,EAAE;oBACjB,cAAc;iBACjB,CACJ,CAAC;gBAEF,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;SACN;IACL,CAAC;CACJ;AAnBD,kEAmBC"}
@@ -0,0 +1,15 @@
1
+ import { IApiKey, RestApi } from 'aws-cdk-lib/aws-apigateway';
2
+ /**
3
+ * Creates an usage plan for a REST API with a single API key
4
+ * @param api The REST API
5
+ * @param apiKeyId Id for the API key, this is a surrogate id for CDK, not displayed anywhere
6
+ * @param apiKeyName Name for the API key, this is displayed in the AWS Console
7
+ * @deprecated Creates randomized API key names, use createDefaultUsagePlan instead
8
+ */
9
+ export declare function createUsagePlan(api: RestApi, apiKeyId: string, apiKeyName: string): IApiKey;
10
+ /**
11
+ * Creates a default usage plan for a REST API with a single API key
12
+ * @param api The REST API
13
+ * @param apiName Name of the api. Will generate key: apiName + ' API Key' and plan: apiName + ' API Usage Plan'
14
+ */
15
+ export declare function createDefaultUsagePlan(api: RestApi, apiName: string): IApiKey;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-plans.js","sourceRoot":"","sources":["../../../src/aws/infra/usage-plans.ts"],"names":[],"mappings":";;;AAEA;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,GAAY,EAAE,QAAgB,EAAE,UAAkB;IAC9E,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE;QACtC,IAAI,EAAE,UAAU;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,CAAC;QACb,KAAK,EAAE,GAAG,CAAC,eAAe;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAClB,CAAC;AAXD,0CAWC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,GAAY,EAAE,OAAe;IAChE,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IACxC,MAAM,aAAa,GAAG,OAAO,GAAG,iBAAiB,CAAC;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE;QACzC,IAAI,EAAE,aAAa;KACtB,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,CAAC;QACb,KAAK,EAAE,GAAG,CAAC,eAAe;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAClB,CAAC;AAbD,wDAaC"}
@@ -0,0 +1,2 @@
1
+ import { APIGateway } from "aws-sdk";
2
+ export declare function getApiKeyFromAPIGateway(keyId: string): Promise<APIGateway.Types.ApiKey>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apikey.js","sourceRoot":"","sources":["../../../src/aws/runtime/apikey.ts"],"names":[],"mappings":";;;AAAA,qCAAmC;AAEnC,SAAgB,uBAAuB,CAAC,KAAa;IACjD,MAAM,GAAG,GAAG,IAAI,oBAAU,EAAE,CAAC;IAC7B,OAAO,GAAG,CAAC,SAAS,CAAC;QACjB,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC;AAND,0DAMC"}
@@ -0,0 +1,8 @@
1
+ import { IntegrationResponse } from "aws-cdk-lib/aws-apigateway";
2
+ import { MediaType } from "../types/mediatypes";
3
+ export declare abstract class DigitrafficIntegrationResponse {
4
+ static ok(mediaType: MediaType): IntegrationResponse;
5
+ static badRequest(mediaType?: MediaType): IntegrationResponse;
6
+ static notImplemented(mediaType?: MediaType): IntegrationResponse;
7
+ static create(statusCode: string, mediaType: MediaType): IntegrationResponse;
8
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digitraffic-integration-response.js","sourceRoot":"","sources":["../../../src/aws/runtime/digitraffic-integration-response.ts"],"names":[],"mappings":";;;AACA,oDAA8C;AAC9C,oDAA8D;AAE9D,MAAsB,8BAA8B;IAEhD,MAAM,CAAC,EAAE,CAAC,SAAoB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,SAAqB;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,sBAAS,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,SAAqB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,sBAAS,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,UAAkB,EAAE,SAAoB;QAClD,OAAO;YACH,UAAU;YACV,iBAAiB,EAAE;gBACf,CAAC,SAAS,CAAC,EAAE,kCAAuB;aACvC;SACJ,CAAC;IACN,CAAC;CACJ;AAtBD,wEAsBC"}
@@ -0,0 +1 @@
1
+ export declare function envValue(key: string, defaultValue?: string): string;
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.envValue = void 0;
4
- function envValue(key) {
4
+ function envValue(key, defaultValue) {
5
5
  const value = process.env[key];
6
6
  if (value == null) {
7
+ if (defaultValue) {
8
+ return defaultValue;
9
+ }
7
10
  throw new Error(`Missing environment value ${key}`);
8
11
  }
9
12
  return value;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/aws/runtime/environment.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,GAAW,EAAE,YAAqB;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,KAAK,IAAI,IAAI,EAAE;QACf,IAAI,YAAY,EAAE;YACd,OAAO,YAAY,CAAC;SACvB;QAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;KACvD;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAZD,4BAYC"}
@@ -0,0 +1,10 @@
1
+ import { SNS } from "aws-sdk";
2
+ /**
3
+ * Utility function for publishing SNS messages.
4
+ * Made because using *await* with AWS APIs doesn't require calling promise() but nothing works if it isn't called.
5
+ * Retries a single time in case of failure.
6
+ * @param message
7
+ * @param topicArn
8
+ * @param sns
9
+ */
10
+ export declare function snsPublish(message: string, topicArn: string, sns: SNS): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../../src/aws/runtime/messaging.ts"],"names":[],"mappings":";;;AAEA;;;;;;;GAOG;AACI,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,QAAgB,EAAE,GAAQ;IACxE,MAAM,aAAa,GAAG;QAClB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,QAAQ;KACrB,CAAC;IACF,IAAI;QACA,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;KAC9C;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI;YACA,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;SAC9C;QAAC,OAAO,EAAE,EAAE;YACT,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;SAC5D;KACJ;AACL,CAAC;AAfD,gCAeC"}
@@ -0,0 +1,2 @@
1
+ import { S3 } from "aws-sdk";
2
+ export declare function uploadToS3<Body extends S3.Body | undefined>(bucketName: string, body: Body, objectName: string, cannedAcl?: string, contentType?: string): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../../../src/aws/runtime/s3.ts"],"names":[],"mappings":";;;AAAA,qCAA2B;AAEpB,KAAK,UAAU,UAAU,CAC5B,UAAkB,EAClB,IAAU,EACV,UAAkB,EAClB,SAAkB,EAClB,WAAoB;IAGpB,MAAM,EAAE,GAAG,IAAI,YAAE,EAAE,CAAC;IACpB,IAAI;QACA,MAAM,QAAQ,CACV,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAC3D,CAAC;KACL;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI;YACA,MAAM,QAAQ,CACV,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAC3D,CAAC;SACL;QAAC,OAAO,EAAE,EAAE;YACT,OAAO,CAAC,KAAK,CAAC,uDAAuD,EAAE,UAAU,CAAC,CAAC;SACtF;KACJ;AACL,CAAC;AAvBD,gCAuBC;AAED,SAAS,QAAQ,CACb,EAAM,EACN,UAAkB,EAClB,IAAU,EACV,QAAgB,EAChB,SAAkB,EAClB,WAAoB;IAGpB,OAAO,EAAE,CAAC,MAAM,CAAC;QACb,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,SAAS;QACd,WAAW,EAAE,WAAW;KAC3B,CAAC,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,54 @@
1
+ export declare type DbSecret = {
2
+ readonly username: string;
3
+ readonly password: string;
4
+ readonly host: string;
5
+ readonly ro_host: string;
6
+ };
7
+ export declare enum RdsProxySecretKey {
8
+ username = "username",
9
+ password = "password",
10
+ proxy_host = "proxy_host",
11
+ proxy_ro_host = "proxy_ro_host"
12
+ }
13
+ export declare enum RdsSecretKey {
14
+ username = "username",
15
+ password = "password",
16
+ host = "host",
17
+ ro_host = "ro_host"
18
+ }
19
+ export declare type RdsProxySecret = Record<RdsProxySecretKey, string>;
20
+ export declare type RdsSecret = Record<RdsSecretKey, string>;
21
+ export declare enum DatabaseEnvironmentKeys {
22
+ DB_USER = "DB_USER",
23
+ DB_PASS = "DB_PASS",
24
+ DB_URI = "DB_URI",
25
+ DB_RO_URI = "DB_RO_URI",
26
+ DB_APPLICATION = "DB_APPLICATION"
27
+ }
28
+ /**
29
+ * You can give the following options for retrieving a secret:
30
+ *
31
+ * expectedKeys: the list of keys the secret must include. If not, an error will be thrown.
32
+ * prefix: a prefix that's included in retrieved secret's keys. Only keys begining with the prefix will be included.
33
+ * The secret that is passed to the given function will not include the prefix in it's keys.
34
+
35
+ */
36
+ export declare type SecretOptions = {
37
+ readonly expectedKeys?: string[];
38
+ readonly prefix?: string;
39
+ };
40
+ export declare type SecretToPromiseFunction<Secret, Response = void> = (secret: Secret) => Promise<Response> | void;
41
+ export declare type SecretFunction<Secret, Response = void> = (secretId: string, fn: SecretToPromiseFunction<Secret, Response>, options?: SecretOptions) => Promise<Response | void>;
42
+ export declare type EmptySecretFunction<Response = void> = SecretFunction<DbSecret, Response>;
43
+ /**
44
+ * Run the given function with secret retrieved from Secrets Manager. Also injects database-credentials into environment.
45
+ *
46
+ * @deprecated use SecretHolder & ProxyHolder
47
+ * @see SecretOptions
48
+ *
49
+ * @param {string} secretId
50
+ * @param {function} fn
51
+ * @param {SecretOptions} options
52
+ */
53
+ export declare function withDbSecret<Secret, Response>(secretId: string, fn: SecretToPromiseFunction<Secret, Response>, options?: SecretOptions): Promise<Response | void>;
54
+ export declare function checkExpectedSecretKeys<Secret>(keys: string[], secret: Secret): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dbsecret.js","sourceRoot":"","sources":["../../../../src/aws/runtime/secrets/dbsecret.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Holds credentials for RDS Proxy access.
3
+ */
4
+ export declare class ProxyHolder {
5
+ private readonly secretHolder;
6
+ constructor(secretId: string);
7
+ static create(): ProxyHolder;
8
+ setCredentials(): Promise<void>;
9
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-holder.js","sourceRoot":"","sources":["../../../../src/aws/runtime/secrets/proxy-holder.ts"],"names":[],"mappings":";;;AAAA,mDAA+C;AAC/C,yCAIoB;AACpB,gDAAsD;AAEtD,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,4BAAiB,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAa,WAAW;IAGpB,YAAY,QAAgB;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAY,CAChC,QAAQ,EACR,EAAE,EACF,qBAAqB,CACxB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,WAAW,CAAC,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,cAAc;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAE7C,OAAO,CAAC,GAAG,CAAC,kCAAuB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,kCAAuB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,kCAAuB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,kCAAuB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;IAC1E,CAAC;CACJ;AAvBD,kCAuBC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Holds credentials for RDS access.
3
+ */
4
+ export declare class RdsHolder {
5
+ private readonly secretHolder;
6
+ constructor(secretId: string);
7
+ static create(): RdsHolder;
8
+ setCredentials(): Promise<void>;
9
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rds-holder.js","sourceRoot":"","sources":["../../../../src/aws/runtime/secrets/rds-holder.ts"],"names":[],"mappings":";;;AAAA,mDAA+C;AAC/C,yCAA8E;AAC9E,gDAAsD;AAEtD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAY,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAa,SAAS;IAGlB,YAAY,QAAgB;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAY,CAChC,QAAQ,EACR,EAAE,EACF,eAAe,CAClB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,SAAS,CAAC,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,cAAc;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAE7C,OAAO,CAAC,GAAG,CAAC,kCAAuB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,kCAAuB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,kCAAuB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,kCAAuB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IACpE,CAAC;CACJ;AAvBD,8BAuBC"}