terraconstructs 0.0.25 → 0.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 (422) hide show
  1. package/.jsii +83939 -55116
  2. package/.mise.toml +2 -2
  3. package/.nvmrc +1 -1
  4. package/LICENSE +202 -674
  5. package/go.mod +1 -1
  6. package/go.sum +2 -2
  7. package/lib/asset-manager.d.ts +23 -0
  8. package/lib/asset-manager.js +3 -0
  9. package/lib/asset-staging.d.ts +178 -0
  10. package/lib/asset-staging.js +589 -0
  11. package/lib/assets.d.ts +359 -0
  12. package/lib/assets.js +55 -0
  13. package/lib/aws/arn.js +16 -15
  14. package/lib/aws/aws-asset-manager.d.ts +91 -0
  15. package/lib/aws/aws-asset-manager.js +244 -0
  16. package/lib/aws/aws-construct.js +1 -1
  17. package/lib/aws/aws-stack.d.ts +37 -0
  18. package/lib/aws/aws-stack.js +30 -9
  19. package/lib/aws/aws-tags.js +2 -2
  20. package/lib/aws/cloudwatch/actions/appscaling.d.ts +15 -0
  21. package/lib/aws/cloudwatch/actions/appscaling.js +24 -0
  22. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  23. package/lib/aws/cloudwatch/actions/index.d.ts +3 -0
  24. package/lib/aws/cloudwatch/actions/index.js +4 -4
  25. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  26. package/lib/aws/cloudwatch/actions/sns.d.ts +14 -0
  27. package/lib/aws/cloudwatch/actions/sns.js +23 -0
  28. package/lib/aws/cloudwatch/actions/ssm.d.ts +72 -0
  29. package/lib/aws/cloudwatch/actions/ssm.js +104 -0
  30. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  31. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  32. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  33. package/lib/aws/cloudwatch/alarm.js +1 -1
  34. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  35. package/lib/aws/cloudwatch/dashboard.js +1 -1
  36. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  37. package/lib/aws/cloudwatch/graph.js +8 -8
  38. package/lib/aws/cloudwatch/layout.js +3 -3
  39. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  40. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  41. package/lib/aws/cloudwatch/log-group.js +1 -1
  42. package/lib/aws/cloudwatch/log-query.js +1 -1
  43. package/lib/aws/cloudwatch/log-stream.js +1 -1
  44. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  45. package/lib/aws/cloudwatch/metric.js +2 -2
  46. package/lib/aws/cloudwatch/pattern.js +3 -3
  47. package/lib/aws/cloudwatch/policy.js +1 -1
  48. package/lib/aws/cloudwatch/query-definition.js +2 -2
  49. package/lib/aws/cloudwatch/stats.js +1 -1
  50. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  51. package/lib/aws/cloudwatch/text.js +1 -1
  52. package/lib/aws/cloudwatch/variable.js +3 -3
  53. package/lib/aws/cloudwatch/widget.js +1 -1
  54. package/lib/aws/compute/access-log.d.ts +478 -0
  55. package/lib/aws/compute/access-log.js +649 -0
  56. package/lib/aws/compute/activity.js +1 -1
  57. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  58. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  59. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  60. package/lib/aws/compute/alb/application-listener.js +1 -1
  61. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  62. package/lib/aws/compute/alb/application-target-group.js +1 -1
  63. package/lib/aws/compute/alb/conditions.js +1 -1
  64. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  65. package/lib/aws/compute/alb/trust-store.js +1 -1
  66. package/lib/aws/compute/api-definition.d.ts +106 -0
  67. package/lib/aws/compute/api-definition.js +200 -0
  68. package/lib/aws/compute/api-key.d.ts +184 -0
  69. package/lib/aws/compute/api-key.js +197 -0
  70. package/lib/aws/compute/apigateway-canned-metrics.generated.d.ts +169 -0
  71. package/lib/aws/compute/apigateway-canned-metrics.generated.js +63 -0
  72. package/lib/aws/compute/apigateway-util.d.ts +31 -0
  73. package/lib/aws/compute/apigateway-util.js +152 -0
  74. package/lib/aws/compute/architecture.js +1 -1
  75. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  76. package/lib/aws/compute/authorizer.d.ts +35 -0
  77. package/lib/aws/compute/authorizer.js +28 -0
  78. package/lib/aws/compute/authorizers/identity-source.d.ts +37 -0
  79. package/lib/aws/compute/authorizers/identity-source.js +61 -0
  80. package/lib/aws/compute/authorizers/index.d.ts +2 -0
  81. package/lib/aws/compute/authorizers/index.js +20 -0
  82. package/lib/aws/compute/authorizers/lambda.d.ts +140 -0
  83. package/lib/aws/compute/authorizers/lambda.js +208 -0
  84. package/lib/aws/compute/base-path-mapping.d.ts +49 -0
  85. package/lib/aws/compute/base-path-mapping.js +52 -0
  86. package/lib/aws/compute/base-scalable-attribute.js +3 -3
  87. package/lib/aws/compute/bastion-host.js +1 -1
  88. package/lib/aws/compute/chain.js +1 -1
  89. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  90. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  91. package/lib/aws/compute/client-vpn-route.js +2 -2
  92. package/lib/aws/compute/code.d.ts +415 -0
  93. package/lib/aws/compute/code.js +424 -0
  94. package/lib/aws/compute/condition.js +1 -1
  95. package/lib/aws/compute/connections.js +1 -1
  96. package/lib/aws/compute/cors.d.ts +102 -0
  97. package/lib/aws/compute/cors.js +33 -0
  98. package/lib/aws/compute/deployment.d.ts +83 -0
  99. package/lib/aws/compute/deployment.js +158 -0
  100. package/lib/aws/compute/domain-name.d.ts +153 -0
  101. package/lib/aws/compute/domain-name.js +158 -0
  102. package/lib/aws/compute/event-invoke-config.d.ts +2 -2
  103. package/lib/aws/compute/event-invoke-config.js +4 -4
  104. package/lib/aws/compute/event-source-filter.js +2 -2
  105. package/lib/aws/compute/event-source-mapping.d.ts +2 -2
  106. package/lib/aws/compute/event-source-mapping.js +9 -7
  107. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  108. package/lib/aws/compute/event-sources/s3.js +1 -1
  109. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  110. package/lib/aws/compute/event-sources/sqs.js +3 -2
  111. package/lib/aws/compute/fields.js +4 -4
  112. package/lib/aws/compute/function-alias.d.ts +2 -0
  113. package/lib/aws/compute/function-alias.js +14 -2
  114. package/lib/aws/compute/function-base.d.ts +23 -0
  115. package/lib/aws/compute/function-base.js +4 -4
  116. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  117. package/lib/aws/compute/function-destinations/function.js +1 -1
  118. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  119. package/lib/aws/compute/function-nodejs/bundling.d.ts +75 -0
  120. package/lib/aws/compute/function-nodejs/bundling.js +405 -0
  121. package/lib/aws/compute/function-nodejs/function.d.ts +99 -0
  122. package/lib/aws/compute/function-nodejs/function.js +175 -0
  123. package/lib/aws/compute/function-nodejs/index.d.ts +2 -0
  124. package/lib/aws/compute/function-nodejs/index.js +19 -0
  125. package/lib/aws/compute/function-nodejs/package-installation.d.ts +8 -0
  126. package/lib/aws/compute/function-nodejs/package-installation.js +36 -0
  127. package/lib/aws/compute/function-nodejs/package-manager.d.ts +33 -0
  128. package/lib/aws/compute/function-nodejs/package-manager.js +99 -0
  129. package/lib/aws/compute/function-nodejs/types.d.ts +410 -0
  130. package/lib/aws/compute/function-nodejs/types.js +81 -0
  131. package/lib/aws/compute/function-nodejs/util.d.ts +60 -0
  132. package/lib/aws/compute/function-nodejs/util.js +202 -0
  133. package/lib/aws/compute/function-url.d.ts +2 -2
  134. package/lib/aws/compute/function-url.js +4 -4
  135. package/lib/aws/compute/function.d.ts +43 -5
  136. package/lib/aws/compute/function.js +106 -18
  137. package/lib/aws/compute/gateway-response.d.ts +157 -0
  138. package/lib/aws/compute/gateway-response.js +156 -0
  139. package/lib/aws/compute/handler.d.ts +10 -0
  140. package/lib/aws/compute/handler.js +20 -0
  141. package/lib/aws/compute/index.d.ts +27 -0
  142. package/lib/aws/compute/index.js +29 -1
  143. package/lib/aws/compute/instance-types.js +1 -1
  144. package/lib/aws/compute/instance.js +1 -1
  145. package/lib/aws/compute/integration.d.ts +311 -0
  146. package/lib/aws/compute/integration.js +165 -0
  147. package/lib/aws/compute/integrations/aws.d.ts +72 -0
  148. package/lib/aws/compute/integrations/aws.js +55 -0
  149. package/lib/aws/compute/integrations/http.d.ts +37 -0
  150. package/lib/aws/compute/integrations/http.js +35 -0
  151. package/lib/aws/compute/integrations/index.d.ts +6 -0
  152. package/lib/aws/compute/integrations/index.js +24 -0
  153. package/lib/aws/compute/integrations/lambda.d.ts +40 -0
  154. package/lib/aws/compute/integrations/lambda.js +73 -0
  155. package/lib/aws/compute/integrations/mock.d.ts +16 -0
  156. package/lib/aws/compute/integrations/mock.js +30 -0
  157. package/lib/aws/compute/integrations/request-context.d.ts +144 -0
  158. package/lib/aws/compute/integrations/request-context.js +3 -0
  159. package/lib/aws/compute/integrations/stepfunctions.d.ts +102 -0
  160. package/lib/aws/compute/integrations/stepfunctions.js +268 -0
  161. package/lib/aws/compute/ip-addresses.js +2 -2
  162. package/lib/aws/compute/ipam.js +1 -1
  163. package/lib/aws/compute/json-schema.d.ts +75 -0
  164. package/lib/aws/compute/json-schema.js +23 -0
  165. package/lib/aws/compute/key-pair.js +1 -1
  166. package/lib/aws/compute/lambda-api.d.ts +46 -0
  167. package/lib/aws/compute/lambda-api.js +64 -0
  168. package/lib/aws/compute/launch-template.js +2 -2
  169. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  170. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  171. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  172. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  173. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  174. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  175. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  176. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  177. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  178. package/lib/aws/compute/load-balancer.js +3 -3
  179. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  180. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  181. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  182. package/lib/aws/compute/machine-image/common.js +1 -1
  183. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  184. package/lib/aws/compute/method.d.ts +219 -0
  185. package/lib/aws/compute/method.js +396 -0
  186. package/lib/aws/compute/methodresponse.d.ts +28 -0
  187. package/lib/aws/compute/methodresponse.js +3 -0
  188. package/lib/aws/compute/model.d.ts +143 -0
  189. package/lib/aws/compute/model.js +141 -0
  190. package/lib/aws/compute/nat.js +5 -5
  191. package/lib/aws/compute/network-acl-types.js +2 -2
  192. package/lib/aws/compute/network-acl.js +3 -3
  193. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  194. package/lib/aws/compute/nlb/network-listener.js +1 -1
  195. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  196. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  197. package/lib/aws/compute/peer.js +1 -1
  198. package/lib/aws/compute/placement-group.js +1 -1
  199. package/lib/aws/compute/port.js +1 -1
  200. package/lib/aws/compute/prefix-list.js +1 -1
  201. package/lib/aws/compute/requestvalidator.d.ts +50 -0
  202. package/lib/aws/compute/requestvalidator.js +59 -0
  203. package/lib/aws/compute/resource.d.ts +223 -0
  204. package/lib/aws/compute/resource.js +316 -0
  205. package/lib/aws/compute/restapi.d.ts +510 -0
  206. package/lib/aws/compute/restapi.js +626 -0
  207. package/lib/aws/compute/route.js +8 -8
  208. package/lib/aws/compute/runtime.d.ts +282 -0
  209. package/lib/aws/compute/runtime.js +337 -0
  210. package/lib/aws/compute/scalable-target.js +3 -3
  211. package/lib/aws/compute/schedule.js +3 -3
  212. package/lib/aws/compute/security-group.js +1 -1
  213. package/lib/aws/compute/stage.d.ts +350 -0
  214. package/lib/aws/compute/stage.js +304 -0
  215. package/lib/aws/compute/state-graph.js +1 -1
  216. package/lib/aws/compute/state-machine-fragment.js +1 -1
  217. package/lib/aws/compute/state-machine.js +4 -4
  218. package/lib/aws/compute/states/choice.js +1 -1
  219. package/lib/aws/compute/states/custom-state.js +1 -1
  220. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  221. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  222. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  223. package/lib/aws/compute/states/distributed-map.js +1 -1
  224. package/lib/aws/compute/states/fail.js +1 -1
  225. package/lib/aws/compute/states/map-base.js +1 -1
  226. package/lib/aws/compute/states/map.js +1 -1
  227. package/lib/aws/compute/states/parallel.js +1 -1
  228. package/lib/aws/compute/states/pass.js +2 -2
  229. package/lib/aws/compute/states/state.js +1 -1
  230. package/lib/aws/compute/states/succeed.js +1 -1
  231. package/lib/aws/compute/states/task-base.js +2 -2
  232. package/lib/aws/compute/states/task.js +1 -1
  233. package/lib/aws/compute/states/wait.js +2 -2
  234. package/lib/aws/compute/step-scaling-action.js +3 -3
  235. package/lib/aws/compute/step-scaling-policy.js +1 -1
  236. package/lib/aws/compute/stepfunctions-api.d.ts +103 -0
  237. package/lib/aws/compute/stepfunctions-api.js +39 -0
  238. package/lib/aws/compute/subnet-v2.js +2 -2
  239. package/lib/aws/compute/subnet.js +1 -1
  240. package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
  241. package/lib/aws/compute/task-credentials.js +1 -1
  242. package/lib/aws/compute/task-input.js +1 -1
  243. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  244. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  245. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  246. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  247. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  248. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  249. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  250. package/lib/aws/compute/types.js +1 -1
  251. package/lib/aws/compute/usage-plan.d.ts +194 -0
  252. package/lib/aws/compute/usage-plan.js +174 -0
  253. package/lib/aws/compute/user-data.js +3 -3
  254. package/lib/aws/compute/volume.js +2 -2
  255. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  256. package/lib/aws/compute/vpc-endpoint.js +6 -6
  257. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  258. package/lib/aws/compute/vpc-link.d.ts +104 -0
  259. package/lib/aws/compute/vpc-link.js +137 -0
  260. package/lib/aws/compute/vpc-v2-base.js +1 -1
  261. package/lib/aws/compute/vpc-v2.js +2 -2
  262. package/lib/aws/compute/vpc.js +4 -4
  263. package/lib/aws/compute/vpn.js +3 -3
  264. package/lib/aws/edge/certificate.js +1 -1
  265. package/lib/aws/edge/distribution.js +3 -3
  266. package/lib/aws/edge/dns-alias-record-targets.js +3 -3
  267. package/lib/aws/edge/dns-record.js +13 -13
  268. package/lib/aws/edge/dns-zone.js +1 -1
  269. package/lib/aws/edge/function.js +2 -2
  270. package/lib/aws/edge/key-value-store.js +4 -4
  271. package/lib/aws/edge/origin.js +3 -3
  272. package/lib/aws/edge/response-headers-policy.js +1 -1
  273. package/lib/aws/encryption/alias.js +1 -1
  274. package/lib/aws/encryption/key.js +1 -1
  275. package/lib/aws/encryption/via-service-principal.js +1 -1
  276. package/lib/aws/iam/grant.js +2 -2
  277. package/lib/aws/iam/group.js +1 -1
  278. package/lib/aws/iam/instance-profile.js +1 -1
  279. package/lib/aws/iam/managed-policy.js +1 -1
  280. package/lib/aws/iam/oidc-provider.js +1 -1
  281. package/lib/aws/iam/policy-document.js +1 -1
  282. package/lib/aws/iam/policy-statement.js +1 -1
  283. package/lib/aws/iam/policy.js +1 -1
  284. package/lib/aws/iam/principals.js +20 -20
  285. package/lib/aws/iam/role.js +1 -1
  286. package/lib/aws/iam/saml-provider.js +2 -2
  287. package/lib/aws/iam/unknown-principal.js +1 -1
  288. package/lib/aws/iam/user.js +5 -5
  289. package/lib/aws/index.d.ts +1 -0
  290. package/lib/aws/index.js +4 -1
  291. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  292. package/lib/aws/network/subnet-group.js +3 -3
  293. package/lib/aws/network/subnet.js +4 -4
  294. package/lib/aws/notify/archive.js +1 -1
  295. package/lib/aws/notify/connection.js +3 -3
  296. package/lib/aws/notify/event-bus.js +3 -3
  297. package/lib/aws/notify/event-pattern.js +1 -1
  298. package/lib/aws/notify/input.js +2 -2
  299. package/lib/aws/notify/kinesis-stream.js +1 -1
  300. package/lib/aws/notify/notification-rule.d.ts +1 -1
  301. package/lib/aws/notify/notification-rule.js +5 -5
  302. package/lib/aws/notify/policy.js +1 -1
  303. package/lib/aws/notify/queue-policy.js +1 -1
  304. package/lib/aws/notify/queue.js +1 -1
  305. package/lib/aws/notify/resource-policy.js +1 -1
  306. package/lib/aws/notify/rule.js +1 -1
  307. package/lib/aws/notify/schedule.js +1 -1
  308. package/lib/aws/notify/subscription-filter.js +1 -1
  309. package/lib/aws/notify/subscription.js +4 -4
  310. package/lib/aws/notify/subscriptions/email.js +1 -1
  311. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  312. package/lib/aws/notify/subscriptions/sms.js +1 -1
  313. package/lib/aws/notify/subscriptions/sqs.js +1 -1
  314. package/lib/aws/notify/subscriptions/url.js +1 -1
  315. package/lib/aws/notify/targets/event-bus.js +1 -1
  316. package/lib/aws/notify/targets/function.js +1 -1
  317. package/lib/aws/notify/targets/log-group.js +2 -2
  318. package/lib/aws/notify/targets/sqs.js +1 -1
  319. package/lib/aws/notify/targets/state-machine.js +1 -1
  320. package/lib/aws/notify/topic-base.js +1 -1
  321. package/lib/aws/notify/topic.js +6 -5
  322. package/lib/aws/partition.d.ts +21 -0
  323. package/lib/aws/partition.js +42 -0
  324. package/lib/aws/storage/assets/image-asset.d.ts +379 -0
  325. package/lib/aws/storage/assets/image-asset.js +247 -0
  326. package/lib/aws/storage/assets/index.d.ts +2 -0
  327. package/lib/aws/storage/assets/index.js +21 -0
  328. package/lib/aws/storage/assets/s3.d.ts +125 -0
  329. package/lib/aws/storage/assets/s3.js +80 -0
  330. package/lib/aws/storage/auth-token.d.ts +25 -0
  331. package/lib/aws/storage/auth-token.js +54 -0
  332. package/lib/aws/storage/billing.js +1 -1
  333. package/lib/aws/storage/bucket-notifications.js +1 -1
  334. package/lib/aws/storage/bucket-policy.js +1 -1
  335. package/lib/aws/storage/bucket-source.d.ts +1 -1
  336. package/lib/aws/storage/bucket-source.js +4 -4
  337. package/lib/aws/storage/bucket.d.ts +14 -6
  338. package/lib/aws/storage/bucket.js +48 -40
  339. package/lib/aws/storage/capacity.js +1 -1
  340. package/lib/aws/storage/ecr-lifecycle.d.ts +88 -0
  341. package/lib/aws/storage/ecr-lifecycle.js +23 -0
  342. package/lib/aws/storage/ecr-repository.d.ts +446 -0
  343. package/lib/aws/storage/ecr-repository.js +685 -0
  344. package/lib/aws/storage/encryption.js +1 -1
  345. package/lib/aws/storage/index.d.ts +5 -0
  346. package/lib/aws/storage/index.js +10 -3
  347. package/lib/aws/storage/location.d.ts +17 -0
  348. package/lib/aws/storage/location.js +4 -0
  349. package/lib/aws/storage/notification-targets/function.js +1 -1
  350. package/lib/aws/storage/notification-targets/queue.js +1 -1
  351. package/lib/aws/storage/origin-access-identity.js +1 -1
  352. package/lib/aws/storage/parameter.js +2 -2
  353. package/lib/aws/storage/table.js +3 -3
  354. package/lib/aws/storage/util.d.ts +8 -20
  355. package/lib/aws/storage/util.js +56 -34
  356. package/lib/aws/util.d.ts +1 -0
  357. package/lib/aws/util.js +6 -1
  358. package/lib/bundling.d.ts +434 -0
  359. package/lib/bundling.js +368 -0
  360. package/lib/construct-base.js +2 -2
  361. package/lib/duration.js +1 -1
  362. package/lib/expiration.js +1 -1
  363. package/lib/fs/copy.d.ts +2 -0
  364. package/lib/fs/copy.js +57 -0
  365. package/lib/fs/fingerprint.d.ts +21 -0
  366. package/lib/fs/fingerprint.js +165 -0
  367. package/lib/fs/ignore.d.ts +107 -0
  368. package/lib/fs/ignore.js +190 -0
  369. package/lib/fs/index.d.ts +47 -0
  370. package/lib/fs/index.js +88 -0
  371. package/lib/fs/options.d.ts +110 -0
  372. package/lib/fs/options.js +60 -0
  373. package/lib/fs/utils.d.ts +11 -0
  374. package/lib/fs/utils.js +34 -0
  375. package/lib/index.d.ts +5 -0
  376. package/lib/index.js +7 -1
  377. package/lib/private/asset-staging.d.ts +83 -0
  378. package/lib/private/asset-staging.js +205 -0
  379. package/lib/private/cache.d.ts +17 -0
  380. package/lib/private/cache.js +35 -0
  381. package/lib/private/jsii-deprecated.d.ts +2 -0
  382. package/lib/private/jsii-deprecated.js +19 -0
  383. package/lib/private/unique-resource-name.js +3 -2
  384. package/lib/size.js +1 -1
  385. package/lib/stack-base.js +1 -1
  386. package/lib/terra-func.js +2 -2
  387. package/lib/time-zone.js +1 -1
  388. package/node_modules/@balena/dockerignore/CHANGELOG.md +31 -0
  389. package/node_modules/@balena/dockerignore/LICENSE.md +206 -0
  390. package/node_modules/@balena/dockerignore/README.md +261 -0
  391. package/node_modules/@balena/dockerignore/ignore.js +363 -0
  392. package/node_modules/@balena/dockerignore/index.d.ts +45 -0
  393. package/node_modules/@balena/dockerignore/package.json +49 -0
  394. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  395. package/node_modules/balanced-match/LICENSE.md +21 -0
  396. package/node_modules/balanced-match/README.md +97 -0
  397. package/node_modules/balanced-match/index.js +62 -0
  398. package/node_modules/balanced-match/package.json +48 -0
  399. package/node_modules/concat-map/.travis.yml +4 -0
  400. package/node_modules/concat-map/LICENSE +18 -0
  401. package/node_modules/concat-map/README.markdown +62 -0
  402. package/node_modules/concat-map/example/map.js +6 -0
  403. package/node_modules/concat-map/index.js +13 -0
  404. package/node_modules/concat-map/package.json +43 -0
  405. package/node_modules/concat-map/test/map.js +39 -0
  406. package/node_modules/ignore/LICENSE-MIT +21 -0
  407. package/node_modules/ignore/README.md +412 -0
  408. package/node_modules/ignore/index.d.ts +61 -0
  409. package/node_modules/ignore/index.js +636 -0
  410. package/node_modules/ignore/legacy.js +559 -0
  411. package/node_modules/ignore/package.json +74 -0
  412. package/node_modules/minimatch/LICENSE +15 -0
  413. package/node_modules/minimatch/README.md +230 -0
  414. package/node_modules/minimatch/minimatch.js +947 -0
  415. package/node_modules/minimatch/node_modules/brace-expansion/LICENSE +21 -0
  416. package/node_modules/minimatch/node_modules/brace-expansion/README.md +129 -0
  417. package/node_modules/minimatch/node_modules/brace-expansion/index.js +201 -0
  418. package/node_modules/minimatch/node_modules/brace-expansion/package.json +47 -0
  419. package/node_modules/minimatch/package.json +33 -0
  420. package/package.json +14 -5
  421. package/lib/aws/compute/function-nodejs.d.ts +0 -55
  422. package/lib/aws/compute/function-nodejs.js +0 -70
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Cors = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const apigateway_util_1 = require("./apigateway-util");
7
+ class Cors {
8
+ // utility class
9
+ constructor() { }
10
+ }
11
+ exports.Cors = Cors;
12
+ _a = JSII_RTTI_SYMBOL_1;
13
+ Cors[_a] = { fqn: "terraconstructs.aws.compute.Cors", version: "0.1.1" };
14
+ /**
15
+ * All HTTP methods.
16
+ */
17
+ Cors.ALL_METHODS = apigateway_util_1.ALL_METHODS;
18
+ /**
19
+ * All origins.
20
+ */
21
+ Cors.ALL_ORIGINS = ["*"];
22
+ /**
23
+ * The set of default headers allowed for CORS and useful for API Gateway.
24
+ */
25
+ Cors.DEFAULT_HEADERS = [
26
+ "Content-Type",
27
+ "X-Amz-Date",
28
+ "Authorization",
29
+ "X-Api-Key",
30
+ "X-Amz-Security-Token",
31
+ "X-Amz-User-Agent",
32
+ ];
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9jb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdURBQWdEO0FBaUdoRCxNQUFhLElBQUk7SUF1QmYsZ0JBQWdCO0lBQ2hCLGdCQUF1QixDQUFDOztBQXhCMUIsb0JBeUJDOzs7QUF4QkM7O0dBRUc7QUFDb0IsZ0JBQVcsR0FBRyw2QkFBVyxDQUFDO0FBRWpEOztHQUVHO0FBQ29CLGdCQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUzQzs7R0FFRztBQUNvQixvQkFBZSxHQUFHO0lBQ3ZDLGNBQWM7SUFDZCxZQUFZO0lBQ1osZUFBZTtJQUNmLFdBQVc7SUFDWCxzQkFBc0I7SUFDdEIsa0JBQWtCO0NBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBTExfTUVUSE9EUyB9IGZyb20gXCIuL2FwaWdhdGV3YXktdXRpbFwiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiLi4vLi4vZHVyYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb3JzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHJlc3BvbnNlIHN0YXR1cyBjb2RlIHJldHVybmVkIGZyb20gdGhlIE9QVElPTlMgbWV0aG9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyMDRcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1c0NvZGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbGlzdCBvZiBvcmlnaW5zIHRoYXQgYXJlIGFsbG93ZWQgdG8gbWFrZSByZXF1ZXN0cyB0byB0aGlzXG4gICAqIHJlc291cmNlLiBJZiB5b3Ugd2lzaCB0byBhbGxvdyBhbGwgb3JpZ2lucywgc3BlY2lmeSBgQ29ycy5BTExfT1JJR0lOU2Agb3JcbiAgICogYFsgKiBdYC5cbiAgICpcbiAgICogUmVzcG9uc2VzIHdpbGwgaW5jbHVkZSB0aGUgYEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbmAgcmVzcG9uc2UgaGVhZGVyLlxuICAgKiBJZiBzcGVjaWZpYyBvcmlnaW5zIGFyZSBzcGVjaWZpZWQgKG5vdCBgQ29ycy5BTExfT1JJR0lOU2ApLCB0aGUgYFZhcnk6IE9yaWdpbmBcbiAgICogcmVzcG9uc2UgaGVhZGVyIHdpbGwgYWxzbyBiZSBpbmNsdWRlZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXG4gICAqL1xuICByZWFkb25seSBhbGxvd09yaWdpbnM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyByZXNwb25zZSBoZWFkZXIgaXMgdXNlZCBpbiByZXNwb25zZSB0byBhXG4gICAqIHByZWZsaWdodCByZXF1ZXN0IHdoaWNoIGluY2x1ZGVzIHRoZSBBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMgdG9cbiAgICogaW5kaWNhdGUgd2hpY2ggSFRUUCBoZWFkZXJzIGNhbiBiZSB1c2VkIGR1cmluZyB0aGUgYWN0dWFsIHJlcXVlc3QuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnNcbiAgICogQGRlZmF1bHQgQ29ycy5ERUZBVUxUX0hFQURFUlNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93SGVhZGVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyByZXNwb25zZSBoZWFkZXIgc3BlY2lmaWVzIHRoZSBtZXRob2Qgb3JcbiAgICogbWV0aG9kcyBhbGxvd2VkIHdoZW4gYWNjZXNzaW5nIHRoZSByZXNvdXJjZSBpbiByZXNwb25zZSB0byBhIHByZWZsaWdodCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiBgQU5ZYCBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgZXhwYW5kZWQgdG8gYENvcnMuQUxMX01FVEhPRFNgLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9BY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzXG4gICAqIEBkZWZhdWx0IENvcnMuQUxMX01FVEhPRFNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93TWV0aG9kcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgcmVzcG9uc2UgaGVhZGVyIHRlbGxzIGJyb3dzZXJzIHdoZXRoZXJcbiAgICogdG8gZXhwb3NlIHRoZSByZXNwb25zZSB0byBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgd2hlbiB0aGUgcmVxdWVzdCdzXG4gICAqIGNyZWRlbnRpYWxzIG1vZGUgKFJlcXVlc3QuY3JlZGVudGlhbHMpIGlzIFwiaW5jbHVkZVwiLlxuICAgKlxuICAgKiBXaGVuIGEgcmVxdWVzdCdzIGNyZWRlbnRpYWxzIG1vZGUgKFJlcXVlc3QuY3JlZGVudGlhbHMpIGlzIFwiaW5jbHVkZVwiLFxuICAgKiBicm93c2VycyB3aWxsIG9ubHkgZXhwb3NlIHRoZSByZXNwb25zZSB0byBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgaWYgdGhlXG4gICAqIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIHZhbHVlIGlzIHRydWUuXG4gICAqXG4gICAqIENyZWRlbnRpYWxzIGFyZSBjb29raWVzLCBhdXRob3JpemF0aW9uIGhlYWRlcnMgb3IgVExTIGNsaWVudCBjZXJ0aWZpY2F0ZXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0NyZWRlbnRpYWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEFjY2Vzcy1Db250cm9sLU1heC1BZ2UgcmVzcG9uc2UgaGVhZGVyIGluZGljYXRlcyBob3cgbG9uZyB0aGUgcmVzdWx0cyBvZlxuICAgKiBhIHByZWZsaWdodCByZXF1ZXN0ICh0aGF0IGlzIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhlXG4gICAqIEFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMgYW5kIEFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMgaGVhZGVycylcbiAgICogY2FuIGJlIGNhY2hlZC5cbiAgICpcbiAgICogVG8gZGlzYWJsZSBjYWNoaW5nIGFsdG9nZXRoZXIgdXNlIGBkaXNhYmxlQ2FjaGU6IHRydWVgLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9BY2Nlc3MtQ29udHJvbC1NYXgtQWdlXG4gICAqIEBkZWZhdWx0IC0gYnJvd3Nlci1zcGVjaWZpYyAoc2VlIHJlZmVyZW5jZSlcbiAgICovXG4gIHJlYWRvbmx5IG1heEFnZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXRzIEFjY2Vzcy1Db250cm9sLU1heC1BZ2UgdG8gLTEsIHdoaWNoIG1lYW5zIHRoYXQgY2FjaGluZyBpcyBkaXNhYmxlZC5cbiAgICogVGhpcyBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aCBgbWF4QWdlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjYWNoZSBpcyBlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlQ2FjaGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMgcmVzcG9uc2UgaGVhZGVyIGluZGljYXRlcyB3aGljaCBoZWFkZXJzXG4gICAqIGNhbiBiZSBleHBvc2VkIGFzIHBhcnQgb2YgdGhlIHJlc3BvbnNlIGJ5IGxpc3RpbmcgdGhlaXIgbmFtZXMuXG4gICAqXG4gICAqIElmIHlvdSB3YW50IGNsaWVudHMgdG8gYmUgYWJsZSB0byBhY2Nlc3Mgb3RoZXIgaGVhZGVycywgeW91IGhhdmUgdG8gbGlzdFxuICAgKiB0aGVtIHVzaW5nIHRoZSBBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyBoZWFkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gb25seSB0aGUgNiBDT1JTLXNhZmVsaXN0ZWQgcmVzcG9uc2UgaGVhZGVycyBhcmUgZXhwb3NlZDpcbiAgICogQ2FjaGUtQ29udHJvbCwgQ29udGVudC1MYW5ndWFnZSwgQ29udGVudC1UeXBlLCBFeHBpcmVzLCBMYXN0LU1vZGlmaWVkLFxuICAgKiBQcmFnbWFcbiAgICovXG4gIHJlYWRvbmx5IGV4cG9zZUhlYWRlcnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIENvcnMge1xuICAvKipcbiAgICogQWxsIEhUVFAgbWV0aG9kcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMX01FVEhPRFMgPSBBTExfTUVUSE9EUztcblxuICAvKipcbiAgICogQWxsIG9yaWdpbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFMTF9PUklHSU5TID0gW1wiKlwiXTtcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBkZWZhdWx0IGhlYWRlcnMgYWxsb3dlZCBmb3IgQ09SUyBhbmQgdXNlZnVsIGZvciBBUEkgR2F0ZXdheS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9IRUFERVJTID0gW1xuICAgIFwiQ29udGVudC1UeXBlXCIsXG4gICAgXCJYLUFtei1EYXRlXCIsXG4gICAgXCJBdXRob3JpemF0aW9uXCIsXG4gICAgXCJYLUFwaS1LZXlcIixcbiAgICBcIlgtQW16LVNlY3VyaXR5LVRva2VuXCIsXG4gICAgXCJYLUFtei1Vc2VyLUFnZW50XCIsXG4gIF07XG5cbiAgLy8gdXRpbGl0eSBjbGFzc1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==
@@ -0,0 +1,83 @@
1
+ import { Construct } from "constructs";
2
+ import { Method } from "./method";
3
+ import { IRestApi } from "./restapi";
4
+ import { AwsConstructBase, AwsConstructProps } from "../aws-construct";
5
+ export interface DeploymentProps extends AwsConstructProps {
6
+ /**
7
+ * The Rest API to deploy.
8
+ */
9
+ readonly api: IRestApi;
10
+ /**
11
+ * A description of the purpose of the API Gateway deployment.
12
+ *
13
+ * @default - No description.
14
+ */
15
+ readonly description?: string;
16
+ /**
17
+ * The name of the stage the API Gateway deployment deploys to.
18
+ * If this property is set and a stage with the corresponding name does not exist,
19
+ * a new stage resource will be created and associated with this deployment.
20
+ *
21
+ * @default - No stage is created or associated with this deployment.
22
+ */
23
+ readonly stageName?: string;
24
+ }
25
+ /**
26
+ * A Deployment of a REST API.
27
+ *
28
+ * An immutable representation of a RestApi resource that can be called by users
29
+ * using Stages. A deployment must be associated with a Stage for it to be
30
+ * callable over the Internet.
31
+ *
32
+ * Normally, you don't need to define deployments manually. The RestApi
33
+ * construct manages a Deployment resource that represents the latest model. It
34
+ * can be accessed through `restApi.latestDeployment` (unless `deploy: false` is
35
+ * set when defining the `RestApi`).
36
+ *
37
+ * If you manually define this resource, you will need to know that since
38
+ * deployments are immutable, their properties will not change after creation.
39
+ * To reflect API model changes, a new deployment must be created. This is typically
40
+ * achieved by changing the `triggers` property of the `ApiGatewayDeployment` resource.
41
+ *
42
+ * The `addToTriggers` method can be used to augment the set of triggers for this
43
+ * deployment. This ensures that if specific parts of the API model change (e.g., a Method's configuration),
44
+ * a new deployment is triggered. This is done automatically for the `restApi.latestDeployment` deployment.
45
+ *
46
+ * Furthermore, a deployment should depend on all API Gateway resources (Methods, Resources, etc.)
47
+ * that define the API. Use the `_addMethodDependency` or directly add dependencies to ensure correct
48
+ * provisioning order. This is also handled for `restApi.latestDeployment`.
49
+ */
50
+ export declare class Deployment extends AwsConstructBase {
51
+ readonly deploymentId: string;
52
+ readonly api: IRestApi;
53
+ /**
54
+ * The name of the stage created and associated with this deployment, if `stageName` was provided.
55
+ */
56
+ readonly stageName?: string;
57
+ private readonly deploymentResource;
58
+ private stageResource?;
59
+ private readonly triggerComponents;
60
+ constructor(scope: Construct, id: string, props: DeploymentProps);
61
+ private calculateTriggers;
62
+ /**
63
+ * Adds a component to the set of triggers that determine if a new deployment should be created.
64
+ *
65
+ * Triggers should be preferred over Dependencies, since Dependencies can only capture dependency
66
+ * ordering and will not cause the resource to recreate (redeploy the REST API) with upstream
67
+ * configuration changes.
68
+ *
69
+ * This should be called by constructs of the API Gateway model that want to
70
+ * invalidate the deployment when their settings change. The component will
71
+ * be resolved during synthesis so tokens are welcome.
72
+ */
73
+ addToTriggers(data: any): void;
74
+ /**
75
+ * Adds a dependency from this Deployment to an API Gateway Method.
76
+ * This ensures that the method is created before the deployment.
77
+ *
78
+ * @param method The Method construct to add as a dependency.
79
+ * @internal
80
+ */
81
+ _addMethodDependency(method: Method): void;
82
+ get outputs(): Record<string, any>;
83
+ }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Deployment = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const provider_aws_1 = require("@cdktf/provider-aws");
7
+ const cdktf_1 = require("cdktf");
8
+ const restapi_1 = require("./restapi");
9
+ // import { Fn } from "../../terra-func";
10
+ const helpers_internal_1 = require("../../helpers-internal");
11
+ const aws_construct_1 = require("../aws-construct");
12
+ /**
13
+ * A Deployment of a REST API.
14
+ *
15
+ * An immutable representation of a RestApi resource that can be called by users
16
+ * using Stages. A deployment must be associated with a Stage for it to be
17
+ * callable over the Internet.
18
+ *
19
+ * Normally, you don't need to define deployments manually. The RestApi
20
+ * construct manages a Deployment resource that represents the latest model. It
21
+ * can be accessed through `restApi.latestDeployment` (unless `deploy: false` is
22
+ * set when defining the `RestApi`).
23
+ *
24
+ * If you manually define this resource, you will need to know that since
25
+ * deployments are immutable, their properties will not change after creation.
26
+ * To reflect API model changes, a new deployment must be created. This is typically
27
+ * achieved by changing the `triggers` property of the `ApiGatewayDeployment` resource.
28
+ *
29
+ * The `addToTriggers` method can be used to augment the set of triggers for this
30
+ * deployment. This ensures that if specific parts of the API model change (e.g., a Method's configuration),
31
+ * a new deployment is triggered. This is done automatically for the `restApi.latestDeployment` deployment.
32
+ *
33
+ * Furthermore, a deployment should depend on all API Gateway resources (Methods, Resources, etc.)
34
+ * that define the API. Use the `_addMethodDependency` or directly add dependencies to ensure correct
35
+ * provisioning order. This is also handled for `restApi.latestDeployment`.
36
+ */
37
+ class Deployment extends aws_construct_1.AwsConstructBase {
38
+ constructor(scope, id, props) {
39
+ super(scope, id, props);
40
+ this.triggerComponents = new Array();
41
+ this.api = props.api;
42
+ this.deploymentResource = new provider_aws_1.apiGatewayDeployment.ApiGatewayDeployment(this, "Resource", {
43
+ restApiId: props.api.restApiId,
44
+ description: props.description,
45
+ // ensure lifecycle create before destroy is enabled unless explicitly set to false
46
+ lifecycle: {
47
+ createBeforeDestroy: props.lifecycle?.createBeforeDestroy ?? true, // default to true
48
+ ...props.lifecycle,
49
+ },
50
+ });
51
+ // Add triggers for redployment on checksum changes.
52
+ this.deploymentResource.addOverride("triggers", cdktf_1.Lazy.anyValue({
53
+ produce: () => this.calculateTriggers(),
54
+ }));
55
+ // TODO: Implement RemovalPolicy.RETAIN through removed block in Terraform.
56
+ // if (props.retainDeployments) {
57
+ // this.deploymentResource.addOverride("lifecycle", {
58
+ // prevent_destroy: true,
59
+ // });
60
+ // }
61
+ this.deploymentId = this.deploymentResource.id;
62
+ if (props.stageName) {
63
+ this.stageName = props.stageName;
64
+ this.stageResource = new provider_aws_1.apiGatewayStage.ApiGatewayStage(this, "Stage", {
65
+ restApiId: props.api.restApiId,
66
+ deploymentId: this.deploymentResource.id,
67
+ stageName: props.stageName,
68
+ description: props.description
69
+ ? `${props.description} Stage`
70
+ : undefined,
71
+ });
72
+ // Dependencies on methods should be added to the deploymentResource itself.
73
+ // The stageResource implicitly depends on deploymentResource via deploymentId.
74
+ }
75
+ if (props.api instanceof restapi_1.RestApiBase) {
76
+ // The method _attachDeployment might need to be adapted or might not exist in TerraConstructs RestApiBase
77
+ // This is specific to how `latestDeployment` is managed by the RestApi construct.
78
+ props.api._attachDeployment?.(this);
79
+ }
80
+ }
81
+ calculateTriggers() {
82
+ const triggers = [...this.triggerComponents];
83
+ // Ignore IRestApi that are imported
84
+ if (this.api instanceof restapi_1.RestApi || this.api instanceof restapi_1.SpecRestApi) {
85
+ const apiInternal = this.api.node
86
+ .defaultChild;
87
+ // TODO: AWSCDK Triggers redeployment on any changes (not just the body property).
88
+ const tfRestAPI = apiInternal.toTerraform();
89
+ triggers.push(tfRestAPI.resource.aws_api_gateway_rest_api);
90
+ }
91
+ // NOTE: AWSCDK calculates checksum against function properties.
92
+ // Terraform allows use to include the entire object, so we use that for clarity.
93
+ const checksum = (0, helpers_internal_1.md5hash)(triggers
94
+ .map((x) => this.stack.resolve(x))
95
+ .map((c) => JSON.stringify(c))
96
+ .join(""));
97
+ // triggers has to be Record<string, string> for Terraform to accept it.
98
+ return { redeployment: checksum };
99
+ // // NOTE: consider checksum too confusing and use full trigger objects instead?
100
+ // // TODO: This causes "missing attributer separator" errors
101
+ // return triggers.length !== 0
102
+ // ? { redeployment: Fn.sha1(Fn.jsonencode(this.stack.resolve(triggers))) }
103
+ // : // TODO: Wrap each trigger in sha instead? { redeployment: Fn.sha1(Fn.jsonencode()) }
104
+ // // triggers.reduce(
105
+ // // (acc, curr) => {
106
+ // // const key = `trigger-${Object.keys(acc).length + 1}`;
107
+ // // acc[key] = this.stack.resolve(curr);
108
+ // // return acc;
109
+ // // },
110
+ // // {} as { [key: string]: string },
111
+ // // )
112
+ // undefined;
113
+ }
114
+ /**
115
+ * Adds a component to the set of triggers that determine if a new deployment should be created.
116
+ *
117
+ * Triggers should be preferred over Dependencies, since Dependencies can only capture dependency
118
+ * ordering and will not cause the resource to recreate (redeploy the REST API) with upstream
119
+ * configuration changes.
120
+ *
121
+ * This should be called by constructs of the API Gateway model that want to
122
+ * invalidate the deployment when their settings change. The component will
123
+ * be resolved during synthesis so tokens are welcome.
124
+ */
125
+ addToTriggers(data) {
126
+ if (this.node.locked) {
127
+ throw new Error("Cannot modify deployment triggers when the construct is locked.");
128
+ }
129
+ this.triggerComponents.push(data);
130
+ }
131
+ /**
132
+ * Adds a dependency from this Deployment to an API Gateway Method.
133
+ * This ensures that the method is created before the deployment.
134
+ *
135
+ * @param method The Method construct to add as a dependency.
136
+ * @internal
137
+ */
138
+ _addMethodDependency(method) {
139
+ // adding a dependency between the constructs using `node.addDependency()`
140
+ // will create additional dependencies between `aws_api_gateway_deployment`
141
+ // and the `aws_lambda_permission` resources (children under Method),
142
+ // causing cyclic dependency errors. Hence, falling back to declaring
143
+ // dependencies between the underlying TerraformElements.
144
+ this.node.addDependency(method.node.defaultChild);
145
+ // TODO: Triggers are recommended instead of dependencies?
146
+ }
147
+ get outputs() {
148
+ return {
149
+ deploymentId: this.deploymentId,
150
+ stageName: this.stageName,
151
+ stageInvokeUrl: this.stageResource?.invokeUrl,
152
+ };
153
+ }
154
+ }
155
+ exports.Deployment = Deployment;
156
+ _a = JSII_RTTI_SYMBOL_1;
157
+ Deployment[_a] = { fqn: "terraconstructs.aws.compute.Deployment", version: "0.1.1" };
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBSzZCO0FBQzdCLGlDQUE2QjtBQUc3Qix1Q0FBd0U7QUFDeEUseUNBQXlDO0FBQ3pDLDZEQUFpRDtBQUNqRCxvREFBdUU7QUFxQ3ZFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxNQUFhLFVBQVcsU0FBUSxnQ0FBZ0I7SUFhOUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUhULHNCQUFpQixHQUFHLElBQUksS0FBSyxFQUFPLENBQUM7UUFLcEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBRXJCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLG1DQUFvQixDQUFDLG9CQUFvQixDQUNyRSxJQUFJLEVBQ0osVUFBVSxFQUNWO1lBQ0UsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUztZQUM5QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsbUZBQW1GO1lBQ25GLFNBQVMsRUFBRTtnQkFDVCxtQkFBbUIsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLG1CQUFtQixJQUFJLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3JGLEdBQUcsS0FBSyxDQUFDLFNBQVM7YUFDbkI7U0FDRixDQUNGLENBQUM7UUFFRixvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FDakMsVUFBVSxFQUNWLFlBQUksQ0FBQyxRQUFRLENBQUM7WUFDWixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1NBQ3hDLENBQUMsQ0FDSCxDQUFDO1FBRUYsMkVBQTJFO1FBQzNFLGlDQUFpQztRQUNqQyx1REFBdUQ7UUFDdkQsNkJBQTZCO1FBQzdCLFFBQVE7UUFDUixJQUFJO1FBRUosSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1FBRS9DLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksOEJBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDdEUsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUztnQkFDOUIsWUFBWSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO2dCQUN4QyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7Z0JBQzFCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDNUIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsUUFBUTtvQkFDOUIsQ0FBQyxDQUFDLFNBQVM7YUFDZCxDQUFDLENBQUM7WUFDSCw0RUFBNEU7WUFDNUUsK0VBQStFO1FBQ2pGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFHLFlBQVkscUJBQVcsRUFBRSxDQUFDO1lBQ3JDLDBHQUEwRztZQUMxRyxrRkFBa0Y7WUFDakYsS0FBSyxDQUFDLEdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU3QyxvQ0FBb0M7UUFDcEMsSUFBSSxJQUFJLENBQUMsR0FBRyxZQUFZLGlCQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsWUFBWSxxQkFBVyxFQUFFLENBQUM7WUFDbkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJO2lCQUM5QixZQUFtRCxDQUFDO1lBQ3ZELGtGQUFrRjtZQUNsRixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELGdFQUFnRTtRQUNoRSxpRkFBaUY7UUFDakYsTUFBTSxRQUFRLEdBQUcsSUFBQSwwQkFBTyxFQUN0QixRQUFRO2FBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUNaLENBQUM7UUFDRix3RUFBd0U7UUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUVsQyxpRkFBaUY7UUFDakYsNkRBQTZEO1FBQzdELCtCQUErQjtRQUMvQiw2RUFBNkU7UUFDN0UsNEZBQTRGO1FBQzVGLDBCQUEwQjtRQUMxQiw0QkFBNEI7UUFDNUIsbUVBQW1FO1FBQ25FLGtEQUFrRDtRQUNsRCx5QkFBeUI7UUFDekIsY0FBYztRQUNkLDRDQUE0QztRQUM1QyxXQUFXO1FBQ1gsaUJBQWlCO0lBQ25CLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksYUFBYSxDQUFDLElBQVM7UUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQ2IsaUVBQWlFLENBQ2xFLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksb0JBQW9CLENBQUMsTUFBYztRQUN4QywwRUFBMEU7UUFDMUUsMkVBQTJFO1FBQzNFLHFFQUFxRTtRQUNyRSxxRUFBcUU7UUFDckUseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQWlELENBQzlELENBQUM7UUFFRiwwREFBMEQ7SUFDNUQsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixjQUFjLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTO1NBQzlDLENBQUM7SUFDSixDQUFDOztBQTNKSCxnQ0E0SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhcGlHYXRld2F5RGVwbG95bWVudCxcbiAgYXBpR2F0ZXdheU1ldGhvZCxcbiAgYXBpR2F0ZXdheVJlc3RBcGksXG4gIGFwaUdhdGV3YXlTdGFnZSxcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IExhenkgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNZXRob2QgfSBmcm9tIFwiLi9tZXRob2RcIjtcbmltcG9ydCB7IElSZXN0QXBpLCBSZXN0QXBpLCBSZXN0QXBpQmFzZSwgU3BlY1Jlc3RBcGkgfSBmcm9tIFwiLi9yZXN0YXBpXCI7XG4vLyBpbXBvcnQgeyBGbiB9IGZyb20gXCIuLi8uLi90ZXJyYS1mdW5jXCI7XG5pbXBvcnQgeyBtZDVoYXNoIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMtaW50ZXJuYWxcIjtcbmltcG9ydCB7IEF3c0NvbnN0cnVjdEJhc2UsIEF3c0NvbnN0cnVjdFByb3BzIH0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50UHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgUmVzdCBBUEkgdG8gZGVwbG95LlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpOiBJUmVzdEFwaTtcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUgQVBJIEdhdGV3YXkgZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8vIC8vIFRPRE86IEltcGxlbWVudCBSZW1vdmFsUG9saWN5LlJFVEFJTiB0aHJvdWdoIHJlbW92ZWQgYmxvY2sgaW4gVGVycmFmb3JtLlxuICAvLyAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtL2lzc3Vlcy8yNzAzNSNpc3N1ZWNvbW1lbnQtMjM0MDM0ODgwMVxuICAvLyAvLyByZWY6IGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL3Jlc291cmNlcy9zeW50YXgjcmVtb3ZpbmctcmVzb3VyY2VzXG4gIC8vIC8qKlxuICAvLyAgKiBXaGVuIGFuIEFQSSBHYXRld2F5IG1vZGVsIGlzIHVwZGF0ZWQsIGEgbmV3IGRlcGxveW1lbnQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQuXG4gIC8vICAqIElmIHRoaXMgaXMgdHJ1ZSwgdGhlIG9sZCBBUEkgR2F0ZXdheSBEZXBsb3ltZW50IHJlc291cmNlIHdpbGwgbm90IGJlIGRlbGV0ZWQuXG4gIC8vICAqIFRoaXMgd2lsbCBhbGxvdyBtYW51YWxseSByZXZlcnRpbmcgYmFjayB0byBhIHByZXZpb3VzIGRlcGxveW1lbnQgaW4gY2FzZSBmb3IgZXhhbXBsZVxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCBmYWxzZVxuICAvLyAgKi9cbiAgLy8gcmVhZG9ubHkgcmV0YWluRGVwbG95bWVudHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3RhZ2UgdGhlIEFQSSBHYXRld2F5IGRlcGxveW1lbnQgZGVwbG95cyB0by5cbiAgICogSWYgdGhpcyBwcm9wZXJ0eSBpcyBzZXQgYW5kIGEgc3RhZ2Ugd2l0aCB0aGUgY29ycmVzcG9uZGluZyBuYW1lIGRvZXMgbm90IGV4aXN0LFxuICAgKiBhIG5ldyBzdGFnZSByZXNvdXJjZSB3aWxsIGJlIGNyZWF0ZWQgYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc3RhZ2UgaXMgY3JlYXRlZCBvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZXBsb3ltZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgRGVwbG95bWVudCBvZiBhIFJFU1QgQVBJLlxuICpcbiAqIEFuIGltbXV0YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIFJlc3RBcGkgcmVzb3VyY2UgdGhhdCBjYW4gYmUgY2FsbGVkIGJ5IHVzZXJzXG4gKiB1c2luZyBTdGFnZXMuIEEgZGVwbG95bWVudCBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIFN0YWdlIGZvciBpdCB0byBiZVxuICogY2FsbGFibGUgb3ZlciB0aGUgSW50ZXJuZXQuXG4gKlxuICogTm9ybWFsbHksIHlvdSBkb24ndCBuZWVkIHRvIGRlZmluZSBkZXBsb3ltZW50cyBtYW51YWxseS4gVGhlIFJlc3RBcGlcbiAqIGNvbnN0cnVjdCBtYW5hZ2VzIGEgRGVwbG95bWVudCByZXNvdXJjZSB0aGF0IHJlcHJlc2VudHMgdGhlIGxhdGVzdCBtb2RlbC4gSXRcbiAqIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGByZXN0QXBpLmxhdGVzdERlcGxveW1lbnRgICh1bmxlc3MgYGRlcGxveTogZmFsc2VgIGlzXG4gKiBzZXQgd2hlbiBkZWZpbmluZyB0aGUgYFJlc3RBcGlgKS5cbiAqXG4gKiBJZiB5b3UgbWFudWFsbHkgZGVmaW5lIHRoaXMgcmVzb3VyY2UsIHlvdSB3aWxsIG5lZWQgdG8ga25vdyB0aGF0IHNpbmNlXG4gKiBkZXBsb3ltZW50cyBhcmUgaW1tdXRhYmxlLCB0aGVpciBwcm9wZXJ0aWVzIHdpbGwgbm90IGNoYW5nZSBhZnRlciBjcmVhdGlvbi5cbiAqIFRvIHJlZmxlY3QgQVBJIG1vZGVsIGNoYW5nZXMsIGEgbmV3IGRlcGxveW1lbnQgbXVzdCBiZSBjcmVhdGVkLiBUaGlzIGlzIHR5cGljYWxseVxuICogYWNoaWV2ZWQgYnkgY2hhbmdpbmcgdGhlIGB0cmlnZ2Vyc2AgcHJvcGVydHkgb2YgdGhlIGBBcGlHYXRld2F5RGVwbG95bWVudGAgcmVzb3VyY2UuXG4gKlxuICogVGhlIGBhZGRUb1RyaWdnZXJzYCBtZXRob2QgY2FuIGJlIHVzZWQgdG8gYXVnbWVudCB0aGUgc2V0IG9mIHRyaWdnZXJzIGZvciB0aGlzXG4gKiBkZXBsb3ltZW50LiBUaGlzIGVuc3VyZXMgdGhhdCBpZiBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUgQVBJIG1vZGVsIGNoYW5nZSAoZS5nLiwgYSBNZXRob2QncyBjb25maWd1cmF0aW9uKSxcbiAqIGEgbmV3IGRlcGxveW1lbnQgaXMgdHJpZ2dlcmVkLiBUaGlzIGlzIGRvbmUgYXV0b21hdGljYWxseSBmb3IgdGhlIGByZXN0QXBpLmxhdGVzdERlcGxveW1lbnRgIGRlcGxveW1lbnQuXG4gKlxuICogRnVydGhlcm1vcmUsIGEgZGVwbG95bWVudCBzaG91bGQgZGVwZW5kIG9uIGFsbCBBUEkgR2F0ZXdheSByZXNvdXJjZXMgKE1ldGhvZHMsIFJlc291cmNlcywgZXRjLilcbiAqIHRoYXQgZGVmaW5lIHRoZSBBUEkuIFVzZSB0aGUgYF9hZGRNZXRob2REZXBlbmRlbmN5YCBvciBkaXJlY3RseSBhZGQgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSBjb3JyZWN0XG4gKiBwcm92aXNpb25pbmcgb3JkZXIuIFRoaXMgaXMgYWxzbyBoYW5kbGVkIGZvciBgcmVzdEFwaS5sYXRlc3REZXBsb3ltZW50YC5cbiAqL1xuZXhwb3J0IGNsYXNzIERlcGxveW1lbnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGRlcGxveW1lbnRJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpOiBJUmVzdEFwaTtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFnZSBjcmVhdGVkIGFuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZXBsb3ltZW50LCBpZiBgc3RhZ2VOYW1lYCB3YXMgcHJvdmlkZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhZ2VOYW1lPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwbG95bWVudFJlc291cmNlOiBhcGlHYXRld2F5RGVwbG95bWVudC5BcGlHYXRld2F5RGVwbG95bWVudDtcbiAgcHJpdmF0ZSBzdGFnZVJlc291cmNlPzogYXBpR2F0ZXdheVN0YWdlLkFwaUdhdGV3YXlTdGFnZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRyaWdnZXJDb21wb25lbnRzID0gbmV3IEFycmF5PGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGVwbG95bWVudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLmFwaSA9IHByb3BzLmFwaTtcblxuICAgIHRoaXMuZGVwbG95bWVudFJlc291cmNlID0gbmV3IGFwaUdhdGV3YXlEZXBsb3ltZW50LkFwaUdhdGV3YXlEZXBsb3ltZW50KFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgcmVzdEFwaUlkOiBwcm9wcy5hcGkucmVzdEFwaUlkLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgIC8vIGVuc3VyZSBsaWZlY3ljbGUgY3JlYXRlIGJlZm9yZSBkZXN0cm95IGlzIGVuYWJsZWQgdW5sZXNzIGV4cGxpY2l0bHkgc2V0IHRvIGZhbHNlXG4gICAgICAgIGxpZmVjeWNsZToge1xuICAgICAgICAgIGNyZWF0ZUJlZm9yZURlc3Ryb3k6IHByb3BzLmxpZmVjeWNsZT8uY3JlYXRlQmVmb3JlRGVzdHJveSA/PyB0cnVlLCAvLyBkZWZhdWx0IHRvIHRydWVcbiAgICAgICAgICAuLi5wcm9wcy5saWZlY3ljbGUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBBZGQgdHJpZ2dlcnMgZm9yIHJlZHBsb3ltZW50IG9uIGNoZWNrc3VtIGNoYW5nZXMuXG4gICAgdGhpcy5kZXBsb3ltZW50UmVzb3VyY2UuYWRkT3ZlcnJpZGUoXG4gICAgICBcInRyaWdnZXJzXCIsXG4gICAgICBMYXp5LmFueVZhbHVlKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5jYWxjdWxhdGVUcmlnZ2VycygpLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIFRPRE86IEltcGxlbWVudCBSZW1vdmFsUG9saWN5LlJFVEFJTiB0aHJvdWdoIHJlbW92ZWQgYmxvY2sgaW4gVGVycmFmb3JtLlxuICAgIC8vIGlmIChwcm9wcy5yZXRhaW5EZXBsb3ltZW50cykge1xuICAgIC8vICAgdGhpcy5kZXBsb3ltZW50UmVzb3VyY2UuYWRkT3ZlcnJpZGUoXCJsaWZlY3ljbGVcIiwge1xuICAgIC8vICAgICBwcmV2ZW50X2Rlc3Ryb3k6IHRydWUsXG4gICAgLy8gICB9KTtcbiAgICAvLyB9XG5cbiAgICB0aGlzLmRlcGxveW1lbnRJZCA9IHRoaXMuZGVwbG95bWVudFJlc291cmNlLmlkO1xuXG4gICAgaWYgKHByb3BzLnN0YWdlTmFtZSkge1xuICAgICAgdGhpcy5zdGFnZU5hbWUgPSBwcm9wcy5zdGFnZU5hbWU7XG4gICAgICB0aGlzLnN0YWdlUmVzb3VyY2UgPSBuZXcgYXBpR2F0ZXdheVN0YWdlLkFwaUdhdGV3YXlTdGFnZSh0aGlzLCBcIlN0YWdlXCIsIHtcbiAgICAgICAgcmVzdEFwaUlkOiBwcm9wcy5hcGkucmVzdEFwaUlkLFxuICAgICAgICBkZXBsb3ltZW50SWQ6IHRoaXMuZGVwbG95bWVudFJlc291cmNlLmlkLFxuICAgICAgICBzdGFnZU5hbWU6IHByb3BzLnN0YWdlTmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgPyBgJHtwcm9wcy5kZXNjcmlwdGlvbn0gU3RhZ2VgXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICAgIC8vIERlcGVuZGVuY2llcyBvbiBtZXRob2RzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZGVwbG95bWVudFJlc291cmNlIGl0c2VsZi5cbiAgICAgIC8vIFRoZSBzdGFnZVJlc291cmNlIGltcGxpY2l0bHkgZGVwZW5kcyBvbiBkZXBsb3ltZW50UmVzb3VyY2UgdmlhIGRlcGxveW1lbnRJZC5cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYXBpIGluc3RhbmNlb2YgUmVzdEFwaUJhc2UpIHtcbiAgICAgIC8vIFRoZSBtZXRob2QgX2F0dGFjaERlcGxveW1lbnQgbWlnaHQgbmVlZCB0byBiZSBhZGFwdGVkIG9yIG1pZ2h0IG5vdCBleGlzdCBpbiBUZXJyYUNvbnN0cnVjdHMgUmVzdEFwaUJhc2VcbiAgICAgIC8vIFRoaXMgaXMgc3BlY2lmaWMgdG8gaG93IGBsYXRlc3REZXBsb3ltZW50YCBpcyBtYW5hZ2VkIGJ5IHRoZSBSZXN0QXBpIGNvbnN0cnVjdC5cbiAgICAgIChwcm9wcy5hcGkgYXMgYW55KS5fYXR0YWNoRGVwbG95bWVudD8uKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlVHJpZ2dlcnMoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdHJpZ2dlcnMgPSBbLi4udGhpcy50cmlnZ2VyQ29tcG9uZW50c107XG5cbiAgICAvLyBJZ25vcmUgSVJlc3RBcGkgdGhhdCBhcmUgaW1wb3J0ZWRcbiAgICBpZiAodGhpcy5hcGkgaW5zdGFuY2VvZiBSZXN0QXBpIHx8IHRoaXMuYXBpIGluc3RhbmNlb2YgU3BlY1Jlc3RBcGkpIHtcbiAgICAgIGNvbnN0IGFwaUludGVybmFsID0gdGhpcy5hcGkubm9kZVxuICAgICAgICAuZGVmYXVsdENoaWxkIGFzIGFwaUdhdGV3YXlSZXN0QXBpLkFwaUdhdGV3YXlSZXN0QXBpO1xuICAgICAgLy8gVE9ETzogQVdTQ0RLIFRyaWdnZXJzIHJlZGVwbG95bWVudCBvbiBhbnkgY2hhbmdlcyAobm90IGp1c3QgdGhlIGJvZHkgcHJvcGVydHkpLlxuICAgICAgY29uc3QgdGZSZXN0QVBJID0gYXBpSW50ZXJuYWwudG9UZXJyYWZvcm0oKTtcbiAgICAgIHRyaWdnZXJzLnB1c2godGZSZXN0QVBJLnJlc291cmNlLmF3c19hcGlfZ2F0ZXdheV9yZXN0X2FwaSk7XG4gICAgfVxuXG4gICAgLy8gTk9URTogQVdTQ0RLIGNhbGN1bGF0ZXMgY2hlY2tzdW0gYWdhaW5zdCBmdW5jdGlvbiBwcm9wZXJ0aWVzLlxuICAgIC8vIFRlcnJhZm9ybSBhbGxvd3MgdXNlIHRvIGluY2x1ZGUgdGhlIGVudGlyZSBvYmplY3QsIHNvIHdlIHVzZSB0aGF0IGZvciBjbGFyaXR5LlxuICAgIGNvbnN0IGNoZWNrc3VtID0gbWQ1aGFzaChcbiAgICAgIHRyaWdnZXJzXG4gICAgICAgIC5tYXAoKHgpID0+IHRoaXMuc3RhY2sucmVzb2x2ZSh4KSlcbiAgICAgICAgLm1hcCgoYykgPT4gSlNPTi5zdHJpbmdpZnkoYykpXG4gICAgICAgIC5qb2luKFwiXCIpLFxuICAgICk7XG4gICAgLy8gdHJpZ2dlcnMgaGFzIHRvIGJlIFJlY29yZDxzdHJpbmcsIHN0cmluZz4gZm9yIFRlcnJhZm9ybSB0byBhY2NlcHQgaXQuXG4gICAgcmV0dXJuIHsgcmVkZXBsb3ltZW50OiBjaGVja3N1bSB9O1xuXG4gICAgLy8gLy8gTk9URTogY29uc2lkZXIgY2hlY2tzdW0gdG9vIGNvbmZ1c2luZyBhbmQgdXNlIGZ1bGwgdHJpZ2dlciBvYmplY3RzIGluc3RlYWQ/XG4gICAgLy8gLy8gVE9ETzogVGhpcyBjYXVzZXMgXCJtaXNzaW5nIGF0dHJpYnV0ZXIgc2VwYXJhdG9yXCIgZXJyb3JzXG4gICAgLy8gcmV0dXJuIHRyaWdnZXJzLmxlbmd0aCAhPT0gMFxuICAgIC8vICAgPyB7IHJlZGVwbG95bWVudDogRm4uc2hhMShGbi5qc29uZW5jb2RlKHRoaXMuc3RhY2sucmVzb2x2ZSh0cmlnZ2VycykpKSB9XG4gICAgLy8gICA6IC8vIFRPRE86IFdyYXAgZWFjaCB0cmlnZ2VyIGluIHNoYSBpbnN0ZWFkPyB7IHJlZGVwbG95bWVudDogRm4uc2hhMShGbi5qc29uZW5jb2RlKCkpIH1cbiAgICAvLyAgICAgLy8gdHJpZ2dlcnMucmVkdWNlKFxuICAgIC8vICAgICAvLyAgIChhY2MsIGN1cnIpID0+IHtcbiAgICAvLyAgICAgLy8gICAgIGNvbnN0IGtleSA9IGB0cmlnZ2VyLSR7T2JqZWN0LmtleXMoYWNjKS5sZW5ndGggKyAxfWA7XG4gICAgLy8gICAgIC8vICAgICBhY2Nba2V5XSA9IHRoaXMuc3RhY2sucmVzb2x2ZShjdXJyKTtcbiAgICAvLyAgICAgLy8gICAgIHJldHVybiBhY2M7XG4gICAgLy8gICAgIC8vICAgfSxcbiAgICAvLyAgICAgLy8gICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIC8vICAgICAvLyApXG4gICAgLy8gICAgIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY29tcG9uZW50IHRvIHRoZSBzZXQgb2YgdHJpZ2dlcnMgdGhhdCBkZXRlcm1pbmUgaWYgYSBuZXcgZGVwbG95bWVudCBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogVHJpZ2dlcnMgc2hvdWxkIGJlIHByZWZlcnJlZCBvdmVyIERlcGVuZGVuY2llcywgc2luY2UgRGVwZW5kZW5jaWVzIGNhbiBvbmx5IGNhcHR1cmUgZGVwZW5kZW5jeVxuICAgKiBvcmRlcmluZyBhbmQgd2lsbCBub3QgY2F1c2UgdGhlIHJlc291cmNlIHRvIHJlY3JlYXRlIChyZWRlcGxveSB0aGUgUkVTVCBBUEkpIHdpdGggdXBzdHJlYW1cbiAgICogY29uZmlndXJhdGlvbiBjaGFuZ2VzLlxuICAgKlxuICAgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYnkgY29uc3RydWN0cyBvZiB0aGUgQVBJIEdhdGV3YXkgbW9kZWwgdGhhdCB3YW50IHRvXG4gICAqIGludmFsaWRhdGUgdGhlIGRlcGxveW1lbnQgd2hlbiB0aGVpciBzZXR0aW5ncyBjaGFuZ2UuIFRoZSBjb21wb25lbnQgd2lsbFxuICAgKiBiZSByZXNvbHZlZCBkdXJpbmcgc3ludGhlc2lzIHNvIHRva2VucyBhcmUgd2VsY29tZS5cbiAgICovXG4gIHB1YmxpYyBhZGRUb1RyaWdnZXJzKGRhdGE6IGFueSkge1xuICAgIGlmICh0aGlzLm5vZGUubG9ja2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IG1vZGlmeSBkZXBsb3ltZW50IHRyaWdnZXJzIHdoZW4gdGhlIGNvbnN0cnVjdCBpcyBsb2NrZWQuXCIsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnRyaWdnZXJDb21wb25lbnRzLnB1c2goZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGRlcGVuZGVuY3kgZnJvbSB0aGlzIERlcGxveW1lbnQgdG8gYW4gQVBJIEdhdGV3YXkgTWV0aG9kLlxuICAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbWV0aG9kIGlzIGNyZWF0ZWQgYmVmb3JlIHRoZSBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kIFRoZSBNZXRob2QgY29uc3RydWN0IHRvIGFkZCBhcyBhIGRlcGVuZGVuY3kuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9hZGRNZXRob2REZXBlbmRlbmN5KG1ldGhvZDogTWV0aG9kKSB7XG4gICAgLy8gYWRkaW5nIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBjb25zdHJ1Y3RzIHVzaW5nIGBub2RlLmFkZERlcGVuZGVuY3koKWBcbiAgICAvLyB3aWxsIGNyZWF0ZSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGBhd3NfYXBpX2dhdGV3YXlfZGVwbG95bWVudGBcbiAgICAvLyBhbmQgdGhlIGBhd3NfbGFtYmRhX3Blcm1pc3Npb25gIHJlc291cmNlcyAoY2hpbGRyZW4gdW5kZXIgTWV0aG9kKSxcbiAgICAvLyBjYXVzaW5nIGN5Y2xpYyBkZXBlbmRlbmN5IGVycm9ycy4gSGVuY2UsIGZhbGxpbmcgYmFjayB0byBkZWNsYXJpbmdcbiAgICAvLyBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUgdW5kZXJseWluZyBUZXJyYWZvcm1FbGVtZW50cy5cbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShcbiAgICAgIG1ldGhvZC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBhcGlHYXRld2F5TWV0aG9kLkFwaUdhdGV3YXlNZXRob2QsXG4gICAgKTtcblxuICAgIC8vIFRPRE86IFRyaWdnZXJzIGFyZSByZWNvbW1lbmRlZCBpbnN0ZWFkIG9mIGRlcGVuZGVuY2llcz9cbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVwbG95bWVudElkOiB0aGlzLmRlcGxveW1lbnRJZCxcbiAgICAgIHN0YWdlTmFtZTogdGhpcy5zdGFnZU5hbWUsXG4gICAgICBzdGFnZUludm9rZVVybDogdGhpcy5zdGFnZVJlc291cmNlPy5pbnZva2VVcmwsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,153 @@
1
+ import { Construct } from "constructs";
2
+ import { BasePathMapping, BasePathMappingOptions } from "./base-path-mapping";
3
+ import { EndpointType, IRestApi } from "./restapi";
4
+ import { IStage } from "./stage";
5
+ import { AwsConstructBase, AwsConstructProps, IAwsConstruct } from "../aws-construct";
6
+ import * as acm from "../edge";
7
+ import { IBucket } from "../storage";
8
+ /**
9
+ * Options for creating an api mapping
10
+ */
11
+ export interface ApiMappingOptions {
12
+ /**
13
+ * The api path name that callers of the API must provide in the URL after
14
+ * the domain name (e.g. `example.com/base-path`). If you specify this
15
+ * property, it can't be an empty string.
16
+ *
17
+ * If this is undefined, a mapping will be added for the empty path. Any request
18
+ * that does not match a mapping will get sent to the API that has been mapped
19
+ * to the empty path.
20
+ *
21
+ * @default - map requests from the domain root (e.g. `example.com`).
22
+ */
23
+ readonly basePath?: string;
24
+ }
25
+ /**
26
+ * The minimum version of the SSL protocol that you want API Gateway to use for HTTPS connections.
27
+ */
28
+ export declare enum SecurityPolicy {
29
+ /** Cipher suite TLS 1.0 */
30
+ TLS_1_0 = "TLS_1_0",
31
+ /** Cipher suite TLS 1.2 */
32
+ TLS_1_2 = "TLS_1_2"
33
+ }
34
+ export interface DomainNameOptions {
35
+ /**
36
+ * The custom domain name for your API. Uppercase letters are not supported.
37
+ */
38
+ readonly domainName: string;
39
+ /**
40
+ * The reference to an AWS-managed certificate for use by the edge-optimized
41
+ * endpoint for the domain name. For "EDGE" domain names, the certificate
42
+ * needs to be in the US East (N. Virginia) region.
43
+ */
44
+ readonly certificate: acm.ICertificate;
45
+ /**
46
+ * The type of endpoint for this DomainName.
47
+ * @default REGIONAL
48
+ */
49
+ readonly endpointType?: EndpointType;
50
+ /**
51
+ * The Transport Layer Security (TLS) version + cipher suite for this domain name.
52
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-domainname.html
53
+ * @default SecurityPolicy.TLS_1_2
54
+ */
55
+ readonly securityPolicy?: SecurityPolicy;
56
+ /**
57
+ * The mutual TLS authentication configuration for a custom domain name.
58
+ * @default - mTLS is not configured.
59
+ */
60
+ readonly mtls?: MTLSConfig;
61
+ /**
62
+ * The base path name that callers of the API must provide in the URL after
63
+ * the domain name (e.g. `example.com/base-path`). If you specify this
64
+ * property, it can't be an empty string.
65
+ *
66
+ * @default - map requests from the domain root (e.g. `example.com`).
67
+ */
68
+ readonly basePath?: string;
69
+ }
70
+ export interface DomainNameProps extends DomainNameOptions, AwsConstructProps {
71
+ /**
72
+ * If specified, all requests to this domain will be mapped to the production
73
+ * deployment of this API. If you wish to map this domain to multiple APIs
74
+ * with different base paths, use `addBasePathMapping` or `addApiMapping`.
75
+ *
76
+ * @default - you will have to call `addBasePathMapping` to map this domain to
77
+ * API endpoints.
78
+ */
79
+ readonly mapping?: IRestApi;
80
+ }
81
+ export interface IDomainName extends IAwsConstruct {
82
+ /**
83
+ * The domain name (e.g. `example.com`)
84
+ *
85
+ * @attribute DomainName
86
+ */
87
+ readonly domainName: string;
88
+ /**
89
+ * The Route53 alias target to use in order to connect a record set to this domain through an alias.
90
+ *
91
+ * @attribute DistributionDomainName,RegionalDomainName
92
+ */
93
+ readonly domainNameAliasDomainName: string;
94
+ /**
95
+ * The Route53 hosted zone ID to use in order to connect a record set to this domain through an alias.
96
+ *
97
+ * @attribute DistributionHostedZoneId,RegionalHostedZoneId
98
+ */
99
+ readonly domainNameAliasHostedZoneId: string;
100
+ }
101
+ export declare class DomainName extends AwsConstructBase implements IDomainName {
102
+ /**
103
+ * Imports an existing domain name.
104
+ */
105
+ static fromDomainNameAttributes(scope: Construct, id: string, attrs: DomainNameAttributes): IDomainName;
106
+ readonly domainName: string;
107
+ readonly domainNameAliasDomainName: string;
108
+ readonly domainNameAliasHostedZoneId: string;
109
+ private readonly basePaths;
110
+ private readonly securityPolicy?;
111
+ private readonly endpointType;
112
+ private readonly resource;
113
+ get outputs(): Record<string, any>;
114
+ constructor(scope: Construct, id: string, props: DomainNameProps);
115
+ private validateBasePath;
116
+ private isMultiLevel;
117
+ addBasePathMapping(targetApi: IRestApi, options?: BasePathMappingOptions): BasePathMapping;
118
+ addApiMapping(targetStage: IStage, options?: ApiMappingOptions): void;
119
+ private configureMTLS;
120
+ }
121
+ export interface DomainNameAttributes {
122
+ /**
123
+ * The domain name (e.g. `example.com`)
124
+ */
125
+ readonly domainName: string;
126
+ /**
127
+ * The Route53 alias target to use in order to connect a record set to this domain through an alias.
128
+ */
129
+ readonly domainNameAliasTarget: string;
130
+ /**
131
+ * The Route53 hosted zone ID to use in order to connect a record set to this domain through an alias.
132
+ */
133
+ readonly domainNameAliasHostedZoneId: string;
134
+ }
135
+ /**
136
+ * The mTLS authentication configuration for a custom domain name.
137
+ */
138
+ export interface MTLSConfig {
139
+ /**
140
+ * The bucket that the trust store is hosted in.
141
+ */
142
+ readonly bucket: IBucket;
143
+ /**
144
+ * The key in S3 to look at for the trust store.
145
+ */
146
+ readonly key: string;
147
+ /**
148
+ * The version of the S3 object that contains your truststore.
149
+ * To specify a version, you must have versioning enabled for the S3 bucket.
150
+ * @default - latest version
151
+ */
152
+ readonly version?: string;
153
+ }