terraconstructs 0.0.8

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 (680) hide show
  1. package/.envrc +5 -0
  2. package/.jsii +79780 -0
  3. package/.mise.toml +8 -0
  4. package/.nvmrc +1 -0
  5. package/.terraform-version +1 -0
  6. package/.terraform.d/plugin-cache/.gitignore +5 -0
  7. package/LICENSE +674 -0
  8. package/NOTICE.txt +12 -0
  9. package/README.md +42 -0
  10. package/bun.lockb +0 -0
  11. package/go.mod +158 -0
  12. package/go.sum +1206 -0
  13. package/lib/aws/arn.d.ts +187 -0
  14. package/lib/aws/arn.js +383 -0
  15. package/lib/aws/aws-construct.d.ts +76 -0
  16. package/lib/aws/aws-construct.js +38 -0
  17. package/lib/aws/aws-stack.d.ts +201 -0
  18. package/lib/aws/aws-stack.js +303 -0
  19. package/lib/aws/cloudwatch/actions/ec2.d.ts +35 -0
  20. package/lib/aws/cloudwatch/actions/ec2.js +48 -0
  21. package/lib/aws/cloudwatch/actions/index.d.ts +2 -0
  22. package/lib/aws/cloudwatch/actions/index.js +24 -0
  23. package/lib/aws/cloudwatch/actions/lambda.d.ts +16 -0
  24. package/lib/aws/cloudwatch/actions/lambda.js +48 -0
  25. package/lib/aws/cloudwatch/alarm-action.d.ts +23 -0
  26. package/lib/aws/cloudwatch/alarm-action.js +4 -0
  27. package/lib/aws/cloudwatch/alarm-base.d.ts +84 -0
  28. package/lib/aws/cloudwatch/alarm-base.js +64 -0
  29. package/lib/aws/cloudwatch/alarm-rule.d.ts +61 -0
  30. package/lib/aws/cloudwatch/alarm-rule.js +116 -0
  31. package/lib/aws/cloudwatch/alarm-status-widget.d.ts +77 -0
  32. package/lib/aws/cloudwatch/alarm-status-widget.js +62 -0
  33. package/lib/aws/cloudwatch/alarm.d.ts +158 -0
  34. package/lib/aws/cloudwatch/alarm.js +410 -0
  35. package/lib/aws/cloudwatch/composite-alarm.d.ts +88 -0
  36. package/lib/aws/cloudwatch/composite-alarm.js +98 -0
  37. package/lib/aws/cloudwatch/dashboard.d.ts +137 -0
  38. package/lib/aws/cloudwatch/dashboard.js +141 -0
  39. package/lib/aws/cloudwatch/data-protection-policy.d.ts +184 -0
  40. package/lib/aws/cloudwatch/data-protection-policy.js +246 -0
  41. package/lib/aws/cloudwatch/graph.d.ts +792 -0
  42. package/lib/aws/cloudwatch/graph.js +537 -0
  43. package/lib/aws/cloudwatch/index.d.ts +26 -0
  44. package/lib/aws/cloudwatch/index.js +49 -0
  45. package/lib/aws/cloudwatch/layout.d.ts +89 -0
  46. package/lib/aws/cloudwatch/layout.js +147 -0
  47. package/lib/aws/cloudwatch/log-destinations/index.d.ts +2 -0
  48. package/lib/aws/cloudwatch/log-destinations/index.js +20 -0
  49. package/lib/aws/cloudwatch/log-destinations/kinesis.d.ts +29 -0
  50. package/lib/aws/cloudwatch/log-destinations/kinesis.js +52 -0
  51. package/lib/aws/cloudwatch/log-destinations/lambda.d.ts +22 -0
  52. package/lib/aws/cloudwatch/log-destinations/lambda.js +46 -0
  53. package/lib/aws/cloudwatch/log-group.d.ts +453 -0
  54. package/lib/aws/cloudwatch/log-group.js +350 -0
  55. package/lib/aws/cloudwatch/log-query.d.ts +91 -0
  56. package/lib/aws/cloudwatch/log-query.js +85 -0
  57. package/lib/aws/cloudwatch/log-stream.d.ts +57 -0
  58. package/lib/aws/cloudwatch/log-stream.js +57 -0
  59. package/lib/aws/cloudwatch/metric-filter.d.ts +30 -0
  60. package/lib/aws/cloudwatch/metric-filter.js +69 -0
  61. package/lib/aws/cloudwatch/metric-types.d.ts +407 -0
  62. package/lib/aws/cloudwatch/metric-types.js +151 -0
  63. package/lib/aws/cloudwatch/metric.d.ts +492 -0
  64. package/lib/aws/cloudwatch/metric.js +493 -0
  65. package/lib/aws/cloudwatch/pattern.d.ts +195 -0
  66. package/lib/aws/cloudwatch/pattern.js +412 -0
  67. package/lib/aws/cloudwatch/policy.d.ts +43 -0
  68. package/lib/aws/cloudwatch/policy.js +50 -0
  69. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +14 -0
  70. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +37 -0
  71. package/lib/aws/cloudwatch/private/env-tokens.d.ts +8 -0
  72. package/lib/aws/cloudwatch/private/env-tokens.js +48 -0
  73. package/lib/aws/cloudwatch/private/metric-util.d.ts +60 -0
  74. package/lib/aws/cloudwatch/private/metric-util.js +132 -0
  75. package/lib/aws/cloudwatch/private/object.d.ts +1 -0
  76. package/lib/aws/cloudwatch/private/object.js +18 -0
  77. package/lib/aws/cloudwatch/private/rendering.d.ts +60 -0
  78. package/lib/aws/cloudwatch/private/rendering.js +181 -0
  79. package/lib/aws/cloudwatch/private/statistic.d.ts +51 -0
  80. package/lib/aws/cloudwatch/private/statistic.js +176 -0
  81. package/lib/aws/cloudwatch/query-definition.d.ts +150 -0
  82. package/lib/aws/cloudwatch/query-definition.js +114 -0
  83. package/lib/aws/cloudwatch/stats.d.ts +150 -0
  84. package/lib/aws/cloudwatch/stats.js +207 -0
  85. package/lib/aws/cloudwatch/subscription-filter.d.ts +75 -0
  86. package/lib/aws/cloudwatch/subscription-filter.js +51 -0
  87. package/lib/aws/cloudwatch/text.d.ts +52 -0
  88. package/lib/aws/cloudwatch/text.js +53 -0
  89. package/lib/aws/cloudwatch/variable.d.ts +156 -0
  90. package/lib/aws/cloudwatch/variable.js +156 -0
  91. package/lib/aws/cloudwatch/widget.d.ts +62 -0
  92. package/lib/aws/cloudwatch/widget.js +45 -0
  93. package/lib/aws/compute/activity.d.ts +81 -0
  94. package/lib/aws/compute/activity.js +132 -0
  95. package/lib/aws/compute/architecture.d.ts +33 -0
  96. package/lib/aws/compute/architecture.js +42 -0
  97. package/lib/aws/compute/chain.d.ts +52 -0
  98. package/lib/aws/compute/chain.js +68 -0
  99. package/lib/aws/compute/condition.d.ts +202 -0
  100. package/lib/aws/compute/condition.js +409 -0
  101. package/lib/aws/compute/event-invoke-config.d.ts +74 -0
  102. package/lib/aws/compute/event-invoke-config.js +63 -0
  103. package/lib/aws/compute/event-source-filter.d.ts +64 -0
  104. package/lib/aws/compute/event-source-filter.js +86 -0
  105. package/lib/aws/compute/event-source-mapping.d.ts +310 -0
  106. package/lib/aws/compute/event-source-mapping.js +267 -0
  107. package/lib/aws/compute/event-sources/index.d.ts +4 -0
  108. package/lib/aws/compute/event-sources/index.js +28 -0
  109. package/lib/aws/compute/event-sources/s3-onfailure-destination.d.ts +13 -0
  110. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +26 -0
  111. package/lib/aws/compute/event-sources/s3.d.ts +24 -0
  112. package/lib/aws/compute/event-sources/s3.js +25 -0
  113. package/lib/aws/compute/event-sources/sqs-dlq.d.ts +13 -0
  114. package/lib/aws/compute/event-sources/sqs-dlq.js +26 -0
  115. package/lib/aws/compute/event-sources/sqs.d.ts +75 -0
  116. package/lib/aws/compute/event-sources/sqs.js +84 -0
  117. package/lib/aws/compute/fields.d.ts +367 -0
  118. package/lib/aws/compute/fields.js +546 -0
  119. package/lib/aws/compute/function-alias.d.ts +148 -0
  120. package/lib/aws/compute/function-alias.js +176 -0
  121. package/lib/aws/compute/function-base.d.ts +314 -0
  122. package/lib/aws/compute/function-base.js +421 -0
  123. package/lib/aws/compute/function-destination.d.ts +42 -0
  124. package/lib/aws/compute/function-destination.js +18 -0
  125. package/lib/aws/compute/function-destinations/event-bridge.d.ts +19 -0
  126. package/lib/aws/compute/function-destinations/event-bridge.js +46 -0
  127. package/lib/aws/compute/function-destinations/function.d.ts +34 -0
  128. package/lib/aws/compute/function-destinations/function.js +55 -0
  129. package/lib/aws/compute/function-destinations/index.d.ts +3 -0
  130. package/lib/aws/compute/function-destinations/index.js +22 -0
  131. package/lib/aws/compute/function-destinations/sqs.d.ts +14 -0
  132. package/lib/aws/compute/function-destinations/sqs.js +27 -0
  133. package/lib/aws/compute/function-nodejs.d.ts +55 -0
  134. package/lib/aws/compute/function-nodejs.js +70 -0
  135. package/lib/aws/compute/function-permission.d.ts +83 -0
  136. package/lib/aws/compute/function-permission.js +3 -0
  137. package/lib/aws/compute/function-url.d.ts +210 -0
  138. package/lib/aws/compute/function-url.js +148 -0
  139. package/lib/aws/compute/function-vpc-config.generated.d.ts +36 -0
  140. package/lib/aws/compute/function-vpc-config.generated.js +3 -0
  141. package/lib/aws/compute/function.d.ts +492 -0
  142. package/lib/aws/compute/function.js +692 -0
  143. package/lib/aws/compute/index.d.ts +42 -0
  144. package/lib/aws/compute/index.js +64 -0
  145. package/lib/aws/compute/private/intrinstics.d.ts +86 -0
  146. package/lib/aws/compute/private/intrinstics.js +220 -0
  147. package/lib/aws/compute/private/json-path.d.ts +57 -0
  148. package/lib/aws/compute/private/json-path.js +351 -0
  149. package/lib/aws/compute/private/util.d.ts +1 -0
  150. package/lib/aws/compute/private/util.js +38 -0
  151. package/lib/aws/compute/state-graph.d.ts +100 -0
  152. package/lib/aws/compute/state-graph.js +177 -0
  153. package/lib/aws/compute/state-machine-fragment.d.ts +61 -0
  154. package/lib/aws/compute/state-machine-fragment.js +56 -0
  155. package/lib/aws/compute/state-machine.d.ts +323 -0
  156. package/lib/aws/compute/state-machine.js +392 -0
  157. package/lib/aws/compute/states/choice.d.ts +94 -0
  158. package/lib/aws/compute/states/choice.js +81 -0
  159. package/lib/aws/compute/states/custom-state.d.ts +55 -0
  160. package/lib/aws/compute/states/custom-state.js +114 -0
  161. package/lib/aws/compute/states/distributed-map/item-batcher.d.ts +64 -0
  162. package/lib/aws/compute/states/distributed-map/item-batcher.js +58 -0
  163. package/lib/aws/compute/states/distributed-map/item-reader.d.ts +256 -0
  164. package/lib/aws/compute/states/distributed-map/item-reader.js +253 -0
  165. package/lib/aws/compute/states/distributed-map/result-writer.d.ts +41 -0
  166. package/lib/aws/compute/states/distributed-map/result-writer.js +66 -0
  167. package/lib/aws/compute/states/distributed-map.d.ts +153 -0
  168. package/lib/aws/compute/states/distributed-map.js +207 -0
  169. package/lib/aws/compute/states/fail.d.ts +74 -0
  170. package/lib/aws/compute/states/fail.js +83 -0
  171. package/lib/aws/compute/states/map-base.d.ts +145 -0
  172. package/lib/aws/compute/states/map-base.js +109 -0
  173. package/lib/aws/compute/states/map.d.ts +76 -0
  174. package/lib/aws/compute/states/map.js +110 -0
  175. package/lib/aws/compute/states/parallel.d.ts +113 -0
  176. package/lib/aws/compute/states/parallel.js +100 -0
  177. package/lib/aws/compute/states/pass.d.ts +122 -0
  178. package/lib/aws/compute/states/pass.js +99 -0
  179. package/lib/aws/compute/states/private/state-type.d.ts +13 -0
  180. package/lib/aws/compute/states/private/state-type.js +19 -0
  181. package/lib/aws/compute/states/state.d.ts +276 -0
  182. package/lib/aws/compute/states/state.js +482 -0
  183. package/lib/aws/compute/states/succeed.d.ts +51 -0
  184. package/lib/aws/compute/states/succeed.js +32 -0
  185. package/lib/aws/compute/states/task-base.d.ts +225 -0
  186. package/lib/aws/compute/states/task-base.js +160 -0
  187. package/lib/aws/compute/states/task.d.ts +127 -0
  188. package/lib/aws/compute/states/task.js +92 -0
  189. package/lib/aws/compute/states/wait.d.ts +78 -0
  190. package/lib/aws/compute/states/wait.js +90 -0
  191. package/lib/aws/compute/step-functions-task.d.ts +78 -0
  192. package/lib/aws/compute/step-functions-task.js +27 -0
  193. package/lib/aws/compute/task-credentials.d.ts +45 -0
  194. package/lib/aws/compute/task-credentials.js +52 -0
  195. package/lib/aws/compute/task-input.d.ts +86 -0
  196. package/lib/aws/compute/task-input.js +107 -0
  197. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.d.ts +73 -0
  198. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +69 -0
  199. package/lib/aws/compute/tasks/eventbridge/put-events.d.ts +74 -0
  200. package/lib/aws/compute/tasks/eventbridge/put-events.js +94 -0
  201. package/lib/aws/compute/tasks/http/invoke.d.ts +104 -0
  202. package/lib/aws/compute/tasks/http/invoke.js +117 -0
  203. package/lib/aws/compute/tasks/index.d.ts +7 -0
  204. package/lib/aws/compute/tasks/index.js +42 -0
  205. package/lib/aws/compute/tasks/lambda/invoke.d.ts +106 -0
  206. package/lib/aws/compute/tasks/lambda/invoke.js +125 -0
  207. package/lib/aws/compute/tasks/private/task-utils.d.ts +8 -0
  208. package/lib/aws/compute/tasks/private/task-utils.js +36 -0
  209. package/lib/aws/compute/tasks/resource-arn-suffix.d.ts +3 -0
  210. package/lib/aws/compute/tasks/resource-arn-suffix.js +25 -0
  211. package/lib/aws/compute/tasks/sqs/send-message.d.ts +62 -0
  212. package/lib/aws/compute/tasks/sqs/send-message.js +70 -0
  213. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.d.ts +36 -0
  214. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +45 -0
  215. package/lib/aws/compute/tasks/stepfunctions/start-execution.d.ts +63 -0
  216. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +123 -0
  217. package/lib/aws/compute/types.d.ts +214 -0
  218. package/lib/aws/compute/types.js +103 -0
  219. package/lib/aws/compute/util.d.ts +12 -0
  220. package/lib/aws/compute/util.js +29 -0
  221. package/lib/aws/edge/certificate.d.ts +144 -0
  222. package/lib/aws/edge/certificate.js +191 -0
  223. package/lib/aws/edge/distribution.d.ts +505 -0
  224. package/lib/aws/edge/distribution.js +444 -0
  225. package/lib/aws/edge/dns-alias-record-targets.d.ts +29 -0
  226. package/lib/aws/edge/dns-alias-record-targets.js +46 -0
  227. package/lib/aws/edge/dns-record.d.ts +536 -0
  228. package/lib/aws/edge/dns-record.js +532 -0
  229. package/lib/aws/edge/dns-zone.d.ts +169 -0
  230. package/lib/aws/edge/dns-zone.js +149 -0
  231. package/lib/aws/edge/function.d.ts +185 -0
  232. package/lib/aws/edge/function.js +141 -0
  233. package/lib/aws/edge/index.d.ts +8 -0
  234. package/lib/aws/edge/index.js +25 -0
  235. package/lib/aws/edge/key-value-store.d.ts +162 -0
  236. package/lib/aws/edge/key-value-store.js +163 -0
  237. package/lib/aws/edge/origin.d.ts +160 -0
  238. package/lib/aws/edge/origin.js +245 -0
  239. package/lib/aws/encryption/alias.d.ts +137 -0
  240. package/lib/aws/encryption/alias.js +216 -0
  241. package/lib/aws/encryption/index.d.ts +4 -0
  242. package/lib/aws/encryption/index.js +21 -0
  243. package/lib/aws/encryption/key-lookup.d.ts +11 -0
  244. package/lib/aws/encryption/key-lookup.js +4 -0
  245. package/lib/aws/encryption/key.d.ts +461 -0
  246. package/lib/aws/encryption/key.js +586 -0
  247. package/lib/aws/encryption/private/perms.d.ts +5 -0
  248. package/lib/aws/encryption/private/perms.js +30 -0
  249. package/lib/aws/encryption/via-service-principal.d.ts +11 -0
  250. package/lib/aws/encryption/via-service-principal.js +39 -0
  251. package/lib/aws/iam/grant.d.ts +221 -0
  252. package/lib/aws/iam/grant.js +239 -0
  253. package/lib/aws/iam/identity-base.d.ts +20 -0
  254. package/lib/aws/iam/identity-base.js +3 -0
  255. package/lib/aws/iam/index.d.ts +16 -0
  256. package/lib/aws/iam/index.js +34 -0
  257. package/lib/aws/iam/managed-policy.d.ts +227 -0
  258. package/lib/aws/iam/managed-policy.js +237 -0
  259. package/lib/aws/iam/oidc-provider.d.ts +120 -0
  260. package/lib/aws/iam/oidc-provider.js +82 -0
  261. package/lib/aws/iam/policy-document-config.generated.d.ts +78 -0
  262. package/lib/aws/iam/policy-document-config.generated.js +3 -0
  263. package/lib/aws/iam/policy-document.d.ts +150 -0
  264. package/lib/aws/iam/policy-document.js +172 -0
  265. package/lib/aws/iam/policy-statement-props.generated.d.ts +55 -0
  266. package/lib/aws/iam/policy-statement-props.generated.js +3 -0
  267. package/lib/aws/iam/policy-statement.d.ts +451 -0
  268. package/lib/aws/iam/policy-statement.js +947 -0
  269. package/lib/aws/iam/policy.d.ts +122 -0
  270. package/lib/aws/iam/policy.js +192 -0
  271. package/lib/aws/iam/principals.d.ts +668 -0
  272. package/lib/aws/iam/principals.js +1032 -0
  273. package/lib/aws/iam/private/adapter.d.ts +21 -0
  274. package/lib/aws/iam/private/adapter.js +51 -0
  275. package/lib/aws/iam/private/assume-role-policy.d.ts +8 -0
  276. package/lib/aws/iam/private/assume-role-policy.js +27 -0
  277. package/lib/aws/iam/private/comparable-principal.d.ts +6 -0
  278. package/lib/aws/iam/private/comparable-principal.js +20 -0
  279. package/lib/aws/iam/private/immutable-role.d.ts +43 -0
  280. package/lib/aws/iam/private/immutable-role.js +76 -0
  281. package/lib/aws/iam/private/imported-role.d.ts +49 -0
  282. package/lib/aws/iam/private/imported-role.js +103 -0
  283. package/lib/aws/iam/private/merge-statements.d.ts +44 -0
  284. package/lib/aws/iam/private/merge-statements.js +214 -0
  285. package/lib/aws/iam/private/postprocess-policy-document.d.ts +15 -0
  286. package/lib/aws/iam/private/postprocess-policy-document.js +102 -0
  287. package/lib/aws/iam/private/util.d.ts +37 -0
  288. package/lib/aws/iam/private/util.js +87 -0
  289. package/lib/aws/iam/role.d.ts +425 -0
  290. package/lib/aws/iam/role.js +407 -0
  291. package/lib/aws/iam/saml-provider.d.ts +79 -0
  292. package/lib/aws/iam/saml-provider.js +79 -0
  293. package/lib/aws/iam/unknown-principal.d.ts +32 -0
  294. package/lib/aws/iam/unknown-principal.js +45 -0
  295. package/lib/aws/iam/utils.d.ts +12 -0
  296. package/lib/aws/iam/utils.js +41 -0
  297. package/lib/aws/index.d.ts +13 -0
  298. package/lib/aws/index.js +34 -0
  299. package/lib/aws/log-retention.d.ts +97 -0
  300. package/lib/aws/log-retention.js +103 -0
  301. package/lib/aws/network/index.d.ts +4 -0
  302. package/lib/aws/network/index.js +21 -0
  303. package/lib/aws/network/network.d.ts +77 -0
  304. package/lib/aws/network/network.js +3 -0
  305. package/lib/aws/network/simple-ipv4-vpc.d.ts +84 -0
  306. package/lib/aws/network/simple-ipv4-vpc.js +236 -0
  307. package/lib/aws/network/subnet-group.d.ts +42 -0
  308. package/lib/aws/network/subnet-group.js +72 -0
  309. package/lib/aws/network/subnet.d.ts +95 -0
  310. package/lib/aws/network/subnet.js +123 -0
  311. package/lib/aws/notify/archive.d.ts +77 -0
  312. package/lib/aws/notify/archive.js +62 -0
  313. package/lib/aws/notify/connection.d.ts +276 -0
  314. package/lib/aws/notify/connection.js +261 -0
  315. package/lib/aws/notify/event-bus.d.ts +298 -0
  316. package/lib/aws/notify/event-bus.js +326 -0
  317. package/lib/aws/notify/event-pattern.d.ts +220 -0
  318. package/lib/aws/notify/event-pattern.js +197 -0
  319. package/lib/aws/notify/index.d.ts +15 -0
  320. package/lib/aws/notify/index.js +35 -0
  321. package/lib/aws/notify/input.d.ts +126 -0
  322. package/lib/aws/notify/input.js +282 -0
  323. package/lib/aws/notify/kinesis-canned-metrics.generated.d.ts +68 -0
  324. package/lib/aws/notify/kinesis-canned-metrics.generated.js +103 -0
  325. package/lib/aws/notify/kinesis-fixed-canned-metrics.d.ts +195 -0
  326. package/lib/aws/notify/kinesis-fixed-canned-metrics.js +155 -0
  327. package/lib/aws/notify/kinesis-stream.d.ts +705 -0
  328. package/lib/aws/notify/kinesis-stream.js +541 -0
  329. package/lib/aws/notify/on-event-options.d.ts +54 -0
  330. package/lib/aws/notify/on-event-options.js +3 -0
  331. package/lib/aws/notify/queue-config.generated.d.ts +85 -0
  332. package/lib/aws/notify/queue-config.generated.js +3 -0
  333. package/lib/aws/notify/queue-policy.d.ts +35 -0
  334. package/lib/aws/notify/queue-policy.js +39 -0
  335. package/lib/aws/notify/queue.d.ts +355 -0
  336. package/lib/aws/notify/queue.js +305 -0
  337. package/lib/aws/notify/resource-policy.d.ts +41 -0
  338. package/lib/aws/notify/resource-policy.js +43 -0
  339. package/lib/aws/notify/rule.d.ts +153 -0
  340. package/lib/aws/notify/rule.js +227 -0
  341. package/lib/aws/notify/schedule.d.ts +83 -0
  342. package/lib/aws/notify/schedule.js +116 -0
  343. package/lib/aws/notify/target.d.ts +102 -0
  344. package/lib/aws/notify/target.js +3 -0
  345. package/lib/aws/notify/targets/event-bus.d.ts +39 -0
  346. package/lib/aws/notify/targets/event-bus.js +40 -0
  347. package/lib/aws/notify/targets/function.d.ts +31 -0
  348. package/lib/aws/notify/targets/function.js +36 -0
  349. package/lib/aws/notify/targets/index.d.ts +6 -0
  350. package/lib/aws/notify/targets/index.js +37 -0
  351. package/lib/aws/notify/targets/log-group.d.ts +89 -0
  352. package/lib/aws/notify/targets/log-group.js +110 -0
  353. package/lib/aws/notify/targets/sqs.d.ts +45 -0
  354. package/lib/aws/notify/targets/sqs.js +73 -0
  355. package/lib/aws/notify/targets/state-machine.d.ts +36 -0
  356. package/lib/aws/notify/targets/state-machine.js +39 -0
  357. package/lib/aws/notify/targets/util.d.ts +71 -0
  358. package/lib/aws/notify/targets/util.js +130 -0
  359. package/lib/aws/notify/util.d.ts +13 -0
  360. package/lib/aws/notify/util.js +69 -0
  361. package/lib/aws/provider-config.generated.d.ts +220 -0
  362. package/lib/aws/provider-config.generated.js +3 -0
  363. package/lib/aws/storage/bucket-destination.d.ts +41 -0
  364. package/lib/aws/storage/bucket-destination.js +13 -0
  365. package/lib/aws/storage/bucket-notifications.d.ts +58 -0
  366. package/lib/aws/storage/bucket-notifications.js +169 -0
  367. package/lib/aws/storage/bucket-perms.d.ts +9 -0
  368. package/lib/aws/storage/bucket-perms.js +33 -0
  369. package/lib/aws/storage/bucket-policy.d.ts +51 -0
  370. package/lib/aws/storage/bucket-policy.js +53 -0
  371. package/lib/aws/storage/bucket-source.d.ts +41 -0
  372. package/lib/aws/storage/bucket-source.js +79 -0
  373. package/lib/aws/storage/bucket.d.ts +941 -0
  374. package/lib/aws/storage/bucket.js +869 -0
  375. package/lib/aws/storage/cors-config.generated.d.ts +57 -0
  376. package/lib/aws/storage/cors-config.generated.js +3 -0
  377. package/lib/aws/storage/cors-rule-config.generated.d.ts +38 -0
  378. package/lib/aws/storage/cors-rule-config.generated.js +3 -0
  379. package/lib/aws/storage/index.d.ts +12 -0
  380. package/lib/aws/storage/index.js +31 -0
  381. package/lib/aws/storage/lifecycle-config.generated.d.ts +55 -0
  382. package/lib/aws/storage/lifecycle-config.generated.js +3 -0
  383. package/lib/aws/storage/notification-targets/function.d.ts +11 -0
  384. package/lib/aws/storage/notification-targets/function.js +48 -0
  385. package/lib/aws/storage/notification-targets/index.d.ts +2 -0
  386. package/lib/aws/storage/notification-targets/index.js +21 -0
  387. package/lib/aws/storage/notification-targets/queue.d.ts +15 -0
  388. package/lib/aws/storage/notification-targets/queue.js +58 -0
  389. package/lib/aws/storage/origin-access-identity.d.ts +91 -0
  390. package/lib/aws/storage/origin-access-identity.js +76 -0
  391. package/lib/aws/storage/util.d.ts +40 -0
  392. package/lib/aws/storage/util.js +85 -0
  393. package/lib/aws/storage/website-config.generated.d.ts +73 -0
  394. package/lib/aws/storage/website-config.generated.js +3 -0
  395. package/lib/aws/util.d.ts +4 -0
  396. package/lib/aws/util.js +25 -0
  397. package/lib/construct-base.d.ts +69 -0
  398. package/lib/construct-base.js +89 -0
  399. package/lib/duration.d.ts +160 -0
  400. package/lib/duration.js +327 -0
  401. package/lib/index.d.ts +5 -0
  402. package/lib/index.js +24 -0
  403. package/lib/private/index.d.ts +2 -0
  404. package/lib/private/index.js +19 -0
  405. package/lib/private/terraform-dependables-aspect.d.ts +20 -0
  406. package/lib/private/terraform-dependables-aspect.js +95 -0
  407. package/lib/private/unique-resource-name.d.ts +9 -0
  408. package/lib/private/unique-resource-name.js +145 -0
  409. package/lib/size.d.ts +146 -0
  410. package/lib/size.js +220 -0
  411. package/lib/stack-base.d.ts +188 -0
  412. package/lib/stack-base.js +183 -0
  413. package/lib/token.d.ts +32 -0
  414. package/lib/token.js +54 -0
  415. package/node_modules/camel-case/LICENSE +21 -0
  416. package/node_modules/camel-case/README.md +47 -0
  417. package/node_modules/camel-case/dist/index.d.ts +5 -0
  418. package/node_modules/camel-case/dist/index.js +23 -0
  419. package/node_modules/camel-case/dist/index.js.map +1 -0
  420. package/node_modules/camel-case/dist/index.spec.d.ts +1 -0
  421. package/node_modules/camel-case/dist/index.spec.js +26 -0
  422. package/node_modules/camel-case/dist/index.spec.js.map +1 -0
  423. package/node_modules/camel-case/dist.es2015/index.d.ts +5 -0
  424. package/node_modules/camel-case/dist.es2015/index.js +17 -0
  425. package/node_modules/camel-case/dist.es2015/index.js.map +1 -0
  426. package/node_modules/camel-case/dist.es2015/index.spec.d.ts +1 -0
  427. package/node_modules/camel-case/dist.es2015/index.spec.js +24 -0
  428. package/node_modules/camel-case/dist.es2015/index.spec.js.map +1 -0
  429. package/node_modules/camel-case/package.json +89 -0
  430. package/node_modules/capital-case/LICENSE +21 -0
  431. package/node_modules/capital-case/README.md +37 -0
  432. package/node_modules/capital-case/dist/index.d.ts +4 -0
  433. package/node_modules/capital-case/dist/index.js +16 -0
  434. package/node_modules/capital-case/dist/index.js.map +1 -0
  435. package/node_modules/capital-case/dist/index.spec.d.ts +1 -0
  436. package/node_modules/capital-case/dist/index.spec.js +24 -0
  437. package/node_modules/capital-case/dist/index.spec.js.map +1 -0
  438. package/node_modules/capital-case/dist.es2015/index.d.ts +4 -0
  439. package/node_modules/capital-case/dist.es2015/index.js +11 -0
  440. package/node_modules/capital-case/dist.es2015/index.js.map +1 -0
  441. package/node_modules/capital-case/dist.es2015/index.spec.d.ts +1 -0
  442. package/node_modules/capital-case/dist.es2015/index.spec.js +22 -0
  443. package/node_modules/capital-case/dist.es2015/index.spec.js.map +1 -0
  444. package/node_modules/capital-case/package.json +90 -0
  445. package/node_modules/change-case/LICENSE +21 -0
  446. package/node_modules/change-case/README.md +44 -0
  447. package/node_modules/change-case/dist/index.d.ts +11 -0
  448. package/node_modules/change-case/dist/index.js +15 -0
  449. package/node_modules/change-case/dist/index.js.map +1 -0
  450. package/node_modules/change-case/dist/index.spec.d.ts +1 -0
  451. package/node_modules/change-case/dist/index.spec.js +9 -0
  452. package/node_modules/change-case/dist/index.spec.js.map +1 -0
  453. package/node_modules/change-case/dist.es2015/index.d.ts +11 -0
  454. package/node_modules/change-case/dist.es2015/index.js +12 -0
  455. package/node_modules/change-case/dist.es2015/index.js.map +1 -0
  456. package/node_modules/change-case/dist.es2015/index.spec.d.ts +1 -0
  457. package/node_modules/change-case/dist.es2015/index.spec.js +7 -0
  458. package/node_modules/change-case/dist.es2015/index.spec.js.map +1 -0
  459. package/node_modules/change-case/package.json +101 -0
  460. package/node_modules/constant-case/LICENSE +21 -0
  461. package/node_modules/constant-case/README.md +37 -0
  462. package/node_modules/constant-case/dist/index.d.ts +3 -0
  463. package/node_modules/constant-case/dist/index.js +12 -0
  464. package/node_modules/constant-case/dist/index.js.map +1 -0
  465. package/node_modules/constant-case/dist/index.spec.d.ts +1 -0
  466. package/node_modules/constant-case/dist/index.spec.js +26 -0
  467. package/node_modules/constant-case/dist/index.spec.js.map +1 -0
  468. package/node_modules/constant-case/dist.es2015/index.d.ts +3 -0
  469. package/node_modules/constant-case/dist.es2015/index.js +8 -0
  470. package/node_modules/constant-case/dist.es2015/index.js.map +1 -0
  471. package/node_modules/constant-case/dist.es2015/index.spec.d.ts +1 -0
  472. package/node_modules/constant-case/dist.es2015/index.spec.js +24 -0
  473. package/node_modules/constant-case/dist.es2015/index.spec.js.map +1 -0
  474. package/node_modules/constant-case/package.json +90 -0
  475. package/node_modules/dot-case/LICENSE +21 -0
  476. package/node_modules/dot-case/README.md +37 -0
  477. package/node_modules/dot-case/dist/index.d.ts +3 -0
  478. package/node_modules/dot-case/dist/index.js +11 -0
  479. package/node_modules/dot-case/dist/index.js.map +1 -0
  480. package/node_modules/dot-case/dist/index.spec.d.ts +1 -0
  481. package/node_modules/dot-case/dist/index.spec.js +26 -0
  482. package/node_modules/dot-case/dist/index.spec.js.map +1 -0
  483. package/node_modules/dot-case/dist.es2015/index.d.ts +3 -0
  484. package/node_modules/dot-case/dist.es2015/index.js +7 -0
  485. package/node_modules/dot-case/dist.es2015/index.js.map +1 -0
  486. package/node_modules/dot-case/dist.es2015/index.spec.d.ts +1 -0
  487. package/node_modules/dot-case/dist.es2015/index.spec.js +24 -0
  488. package/node_modules/dot-case/dist.es2015/index.spec.js.map +1 -0
  489. package/node_modules/dot-case/package.json +89 -0
  490. package/node_modules/esbuild-wasm/LICENSE.md +21 -0
  491. package/node_modules/esbuild-wasm/README.md +3 -0
  492. package/node_modules/esbuild-wasm/bin/esbuild +91 -0
  493. package/node_modules/esbuild-wasm/esbuild.wasm +0 -0
  494. package/node_modules/esbuild-wasm/esm/browser.d.ts +705 -0
  495. package/node_modules/esbuild-wasm/esm/browser.js +2370 -0
  496. package/node_modules/esbuild-wasm/esm/browser.min.js +20 -0
  497. package/node_modules/esbuild-wasm/lib/browser.d.ts +705 -0
  498. package/node_modules/esbuild-wasm/lib/browser.js +2415 -0
  499. package/node_modules/esbuild-wasm/lib/browser.min.js +22 -0
  500. package/node_modules/esbuild-wasm/lib/main.d.ts +705 -0
  501. package/node_modules/esbuild-wasm/lib/main.js +2051 -0
  502. package/node_modules/esbuild-wasm/package.json +19 -0
  503. package/node_modules/esbuild-wasm/wasm_exec.js +561 -0
  504. package/node_modules/esbuild-wasm/wasm_exec_node.js +39 -0
  505. package/node_modules/header-case/LICENSE +21 -0
  506. package/node_modules/header-case/README.md +37 -0
  507. package/node_modules/header-case/dist/index.d.ts +3 -0
  508. package/node_modules/header-case/dist/index.js +11 -0
  509. package/node_modules/header-case/dist/index.js.map +1 -0
  510. package/node_modules/header-case/dist/index.spec.d.ts +1 -0
  511. package/node_modules/header-case/dist/index.spec.js +24 -0
  512. package/node_modules/header-case/dist/index.spec.js.map +1 -0
  513. package/node_modules/header-case/dist.es2015/index.d.ts +3 -0
  514. package/node_modules/header-case/dist.es2015/index.js +7 -0
  515. package/node_modules/header-case/dist.es2015/index.js.map +1 -0
  516. package/node_modules/header-case/dist.es2015/index.spec.d.ts +1 -0
  517. package/node_modules/header-case/dist.es2015/index.spec.js +22 -0
  518. package/node_modules/header-case/dist.es2015/index.spec.js.map +1 -0
  519. package/node_modules/header-case/package.json +89 -0
  520. package/node_modules/lower-case/LICENSE +21 -0
  521. package/node_modules/lower-case/README.md +35 -0
  522. package/node_modules/lower-case/dist/index.d.ts +8 -0
  523. package/node_modules/lower-case/dist/index.js +53 -0
  524. package/node_modules/lower-case/dist/index.js.map +1 -0
  525. package/node_modules/lower-case/dist/index.spec.d.ts +1 -0
  526. package/node_modules/lower-case/dist/index.spec.js +36 -0
  527. package/node_modules/lower-case/dist/index.spec.js.map +1 -0
  528. package/node_modules/lower-case/dist.es2015/index.d.ts +8 -0
  529. package/node_modules/lower-case/dist.es2015/index.js +48 -0
  530. package/node_modules/lower-case/dist.es2015/index.js.map +1 -0
  531. package/node_modules/lower-case/dist.es2015/index.spec.d.ts +1 -0
  532. package/node_modules/lower-case/dist.es2015/index.spec.js +34 -0
  533. package/node_modules/lower-case/dist.es2015/index.spec.js.map +1 -0
  534. package/node_modules/lower-case/package.json +87 -0
  535. package/node_modules/mime-db/HISTORY.md +507 -0
  536. package/node_modules/mime-db/LICENSE +23 -0
  537. package/node_modules/mime-db/README.md +100 -0
  538. package/node_modules/mime-db/db.json +8519 -0
  539. package/node_modules/mime-db/index.js +12 -0
  540. package/node_modules/mime-db/package.json +60 -0
  541. package/node_modules/mime-types/HISTORY.md +397 -0
  542. package/node_modules/mime-types/LICENSE +23 -0
  543. package/node_modules/mime-types/README.md +113 -0
  544. package/node_modules/mime-types/index.js +188 -0
  545. package/node_modules/mime-types/package.json +44 -0
  546. package/node_modules/no-case/LICENSE +21 -0
  547. package/node_modules/no-case/README.md +37 -0
  548. package/node_modules/no-case/dist/index.d.ts +10 -0
  549. package/node_modules/no-case/dist/index.js +35 -0
  550. package/node_modules/no-case/dist/index.js.map +1 -0
  551. package/node_modules/no-case/dist/index.spec.d.ts +1 -0
  552. package/node_modules/no-case/dist/index.spec.js +59 -0
  553. package/node_modules/no-case/dist/index.spec.js.map +1 -0
  554. package/node_modules/no-case/dist.es2015/index.d.ts +10 -0
  555. package/node_modules/no-case/dist.es2015/index.js +31 -0
  556. package/node_modules/no-case/dist.es2015/index.js.map +1 -0
  557. package/node_modules/no-case/dist.es2015/index.spec.d.ts +1 -0
  558. package/node_modules/no-case/dist.es2015/index.spec.js +57 -0
  559. package/node_modules/no-case/dist.es2015/index.spec.js.map +1 -0
  560. package/node_modules/no-case/package.json +85 -0
  561. package/node_modules/param-case/LICENSE +21 -0
  562. package/node_modules/param-case/README.md +37 -0
  563. package/node_modules/param-case/dist/index.d.ts +3 -0
  564. package/node_modules/param-case/dist/index.js +11 -0
  565. package/node_modules/param-case/dist/index.js.map +1 -0
  566. package/node_modules/param-case/dist/index.spec.d.ts +1 -0
  567. package/node_modules/param-case/dist/index.spec.js +24 -0
  568. package/node_modules/param-case/dist/index.spec.js.map +1 -0
  569. package/node_modules/param-case/dist.es2015/index.d.ts +3 -0
  570. package/node_modules/param-case/dist.es2015/index.js +7 -0
  571. package/node_modules/param-case/dist.es2015/index.js.map +1 -0
  572. package/node_modules/param-case/dist.es2015/index.spec.d.ts +1 -0
  573. package/node_modules/param-case/dist.es2015/index.spec.js +22 -0
  574. package/node_modules/param-case/dist.es2015/index.spec.js.map +1 -0
  575. package/node_modules/param-case/package.json +91 -0
  576. package/node_modules/pascal-case/LICENSE +21 -0
  577. package/node_modules/pascal-case/README.md +47 -0
  578. package/node_modules/pascal-case/dist/index.d.ts +5 -0
  579. package/node_modules/pascal-case/dist/index.js +24 -0
  580. package/node_modules/pascal-case/dist/index.js.map +1 -0
  581. package/node_modules/pascal-case/dist/index.spec.d.ts +1 -0
  582. package/node_modules/pascal-case/dist/index.spec.js +25 -0
  583. package/node_modules/pascal-case/dist/index.spec.js.map +1 -0
  584. package/node_modules/pascal-case/dist.es2015/index.d.ts +5 -0
  585. package/node_modules/pascal-case/dist.es2015/index.js +18 -0
  586. package/node_modules/pascal-case/dist.es2015/index.js.map +1 -0
  587. package/node_modules/pascal-case/dist.es2015/index.spec.d.ts +1 -0
  588. package/node_modules/pascal-case/dist.es2015/index.spec.js +23 -0
  589. package/node_modules/pascal-case/dist.es2015/index.spec.js.map +1 -0
  590. package/node_modules/pascal-case/package.json +90 -0
  591. package/node_modules/path-case/LICENSE +21 -0
  592. package/node_modules/path-case/README.md +37 -0
  593. package/node_modules/path-case/dist/index.d.ts +3 -0
  594. package/node_modules/path-case/dist/index.js +11 -0
  595. package/node_modules/path-case/dist/index.js.map +1 -0
  596. package/node_modules/path-case/dist/index.spec.d.ts +1 -0
  597. package/node_modules/path-case/dist/index.spec.js +24 -0
  598. package/node_modules/path-case/dist/index.spec.js.map +1 -0
  599. package/node_modules/path-case/dist.es2015/index.d.ts +3 -0
  600. package/node_modules/path-case/dist.es2015/index.js +7 -0
  601. package/node_modules/path-case/dist.es2015/index.js.map +1 -0
  602. package/node_modules/path-case/dist.es2015/index.spec.d.ts +1 -0
  603. package/node_modules/path-case/dist.es2015/index.spec.js +22 -0
  604. package/node_modules/path-case/dist.es2015/index.spec.js.map +1 -0
  605. package/node_modules/path-case/package.json +88 -0
  606. package/node_modules/sentence-case/LICENSE +21 -0
  607. package/node_modules/sentence-case/README.md +37 -0
  608. package/node_modules/sentence-case/dist/index.d.ts +4 -0
  609. package/node_modules/sentence-case/dist/index.js +19 -0
  610. package/node_modules/sentence-case/dist/index.js.map +1 -0
  611. package/node_modules/sentence-case/dist/index.spec.d.ts +1 -0
  612. package/node_modules/sentence-case/dist/index.spec.js +24 -0
  613. package/node_modules/sentence-case/dist/index.spec.js.map +1 -0
  614. package/node_modules/sentence-case/dist.es2015/index.d.ts +4 -0
  615. package/node_modules/sentence-case/dist.es2015/index.js +14 -0
  616. package/node_modules/sentence-case/dist.es2015/index.js.map +1 -0
  617. package/node_modules/sentence-case/dist.es2015/index.spec.d.ts +1 -0
  618. package/node_modules/sentence-case/dist.es2015/index.spec.js +22 -0
  619. package/node_modules/sentence-case/dist.es2015/index.spec.js.map +1 -0
  620. package/node_modules/sentence-case/package.json +89 -0
  621. package/node_modules/snake-case/LICENSE +21 -0
  622. package/node_modules/snake-case/README.md +37 -0
  623. package/node_modules/snake-case/dist/index.d.ts +3 -0
  624. package/node_modules/snake-case/dist/index.js +11 -0
  625. package/node_modules/snake-case/dist/index.js.map +1 -0
  626. package/node_modules/snake-case/dist/index.spec.d.ts +1 -0
  627. package/node_modules/snake-case/dist/index.spec.js +25 -0
  628. package/node_modules/snake-case/dist/index.spec.js.map +1 -0
  629. package/node_modules/snake-case/dist.es2015/index.d.ts +3 -0
  630. package/node_modules/snake-case/dist.es2015/index.js +7 -0
  631. package/node_modules/snake-case/dist.es2015/index.js.map +1 -0
  632. package/node_modules/snake-case/dist.es2015/index.spec.d.ts +1 -0
  633. package/node_modules/snake-case/dist.es2015/index.spec.js +23 -0
  634. package/node_modules/snake-case/dist.es2015/index.spec.js.map +1 -0
  635. package/node_modules/snake-case/package.json +90 -0
  636. package/node_modules/tslib/CopyrightNotice.txt +15 -0
  637. package/node_modules/tslib/LICENSE.txt +12 -0
  638. package/node_modules/tslib/README.md +164 -0
  639. package/node_modules/tslib/SECURITY.md +41 -0
  640. package/node_modules/tslib/modules/index.d.ts +37 -0
  641. package/node_modules/tslib/modules/index.js +68 -0
  642. package/node_modules/tslib/modules/package.json +3 -0
  643. package/node_modules/tslib/package.json +47 -0
  644. package/node_modules/tslib/tslib.d.ts +453 -0
  645. package/node_modules/tslib/tslib.es6.html +1 -0
  646. package/node_modules/tslib/tslib.es6.js +374 -0
  647. package/node_modules/tslib/tslib.es6.mjs +373 -0
  648. package/node_modules/tslib/tslib.html +1 -0
  649. package/node_modules/tslib/tslib.js +424 -0
  650. package/node_modules/upper-case/README.md +34 -0
  651. package/node_modules/upper-case/dist/index.d.ts +8 -0
  652. package/node_modules/upper-case/dist/index.js +49 -0
  653. package/node_modules/upper-case/dist/index.js.map +1 -0
  654. package/node_modules/upper-case/dist/index.spec.d.ts +1 -0
  655. package/node_modules/upper-case/dist/index.spec.js +34 -0
  656. package/node_modules/upper-case/dist/index.spec.js.map +1 -0
  657. package/node_modules/upper-case/dist.es2015/index.d.ts +8 -0
  658. package/node_modules/upper-case/dist.es2015/index.js +44 -0
  659. package/node_modules/upper-case/dist.es2015/index.js.map +1 -0
  660. package/node_modules/upper-case/dist.es2015/index.spec.d.ts +1 -0
  661. package/node_modules/upper-case/dist.es2015/index.spec.js +32 -0
  662. package/node_modules/upper-case/dist.es2015/index.spec.js.map +1 -0
  663. package/node_modules/upper-case/package.json +86 -0
  664. package/node_modules/upper-case-first/LICENSE +21 -0
  665. package/node_modules/upper-case-first/README.md +32 -0
  666. package/node_modules/upper-case-first/dist/index.d.ts +4 -0
  667. package/node_modules/upper-case-first/dist/index.js +11 -0
  668. package/node_modules/upper-case-first/dist/index.js.map +1 -0
  669. package/node_modules/upper-case-first/dist/index.spec.d.ts +1 -0
  670. package/node_modules/upper-case-first/dist/index.spec.js +20 -0
  671. package/node_modules/upper-case-first/dist/index.spec.js.map +1 -0
  672. package/node_modules/upper-case-first/dist.es2015/index.d.ts +4 -0
  673. package/node_modules/upper-case-first/dist.es2015/index.js +7 -0
  674. package/node_modules/upper-case-first/dist.es2015/index.js.map +1 -0
  675. package/node_modules/upper-case-first/dist.es2015/index.spec.d.ts +1 -0
  676. package/node_modules/upper-case-first/dist.es2015/index.spec.js +18 -0
  677. package/node_modules/upper-case-first/dist.es2015/index.spec.js.map +1 -0
  678. package/node_modules/upper-case-first/package.json +87 -0
  679. package/package.json +152 -0
  680. package/setup.js +2 -0
@@ -0,0 +1,225 @@
1
+ import { Construct } from "constructs";
2
+ import { State } from "./state";
3
+ import { Duration } from "../../..";
4
+ import * as iam from "../../iam";
5
+ import { Chain } from "../chain";
6
+ import { StateGraph } from "../state-graph";
7
+ import { Credentials } from "../task-credentials";
8
+ import { CatchProps, IChainable, INextable, RetryProps } from "../types";
9
+ /**
10
+ * Props that are common to all tasks
11
+ */
12
+ export interface TaskStateBaseProps {
13
+ /**
14
+ * Optional name for this state
15
+ *
16
+ * @default - The construct ID will be used as state name
17
+ */
18
+ readonly stateName?: string;
19
+ /**
20
+ * An optional description for this state
21
+ *
22
+ * @default - No comment
23
+ */
24
+ readonly comment?: string;
25
+ /**
26
+ * JSONPath expression to select part of the state to be the input to this state.
27
+ *
28
+ * May also be the special value JsonPath.DISCARD, which will cause the effective
29
+ * input to be the empty object {}.
30
+ *
31
+ * @default - The entire task input (JSON path '$')
32
+ */
33
+ readonly inputPath?: string;
34
+ /**
35
+ * JSONPath expression to select select a portion of the state output to pass
36
+ * to the next state.
37
+ *
38
+ * May also be the special value JsonPath.DISCARD, which will cause the effective
39
+ * output to be the empty object {}.
40
+ *
41
+ * @default - The entire JSON node determined by the state input, the task result,
42
+ * and resultPath is passed to the next state (JSON path '$')
43
+ */
44
+ readonly outputPath?: string;
45
+ /**
46
+ * JSONPath expression to indicate where to inject the state's output
47
+ *
48
+ * May also be the special value JsonPath.DISCARD, which will cause the state's
49
+ * input to become its output.
50
+ *
51
+ * @default - Replaces the entire input with the result (JSON path '$')
52
+ */
53
+ readonly resultPath?: string;
54
+ /**
55
+ * The JSON that will replace the state's raw result and become the effective
56
+ * result before ResultPath is applied.
57
+ *
58
+ * You can use ResultSelector to create a payload with values that are static
59
+ * or selected from the state's raw result.
60
+ *
61
+ * @see
62
+ * https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html#input-output-resultselector
63
+ *
64
+ * @default - None
65
+ */
66
+ readonly resultSelector?: {
67
+ [key: string]: any;
68
+ };
69
+ /**
70
+ * Timeout for the task
71
+ *
72
+ * @default - None
73
+ * @deprecated use `taskTimeout`
74
+ */
75
+ readonly timeout?: Duration;
76
+ /**
77
+ * Timeout for the task
78
+ *
79
+ * [disable-awslint:duration-prop-type] is needed because all props interface in
80
+ * aws-stepfunctions-tasks extend this interface
81
+ *
82
+ * @default - None
83
+ */
84
+ readonly taskTimeout?: Timeout;
85
+ /**
86
+ * Timeout for the heartbeat
87
+ *
88
+ * @default - None
89
+ * @deprecated use `heartbeatTimeout`
90
+ */
91
+ readonly heartbeat?: Duration;
92
+ /**
93
+ * Timeout for the heartbeat
94
+ *
95
+ * [disable-awslint:duration-prop-type] is needed because all props interface in
96
+ * aws-stepfunctions-tasks extend this interface
97
+ *
98
+ * @default - None
99
+ */
100
+ readonly heartbeatTimeout?: Timeout;
101
+ /**
102
+ * AWS Step Functions integrates with services directly in the Amazon States Language.
103
+ * You can control these AWS services using service integration patterns.
104
+ *
105
+ * Depending on the AWS Service, the Service Integration Pattern availability will vary.
106
+ *
107
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-supported-services.html
108
+ *
109
+ * @default - `IntegrationPattern.REQUEST_RESPONSE` for most tasks.
110
+ * `IntegrationPattern.RUN_JOB` for the following exceptions:
111
+ * `BatchSubmitJob`, `EmrAddStep`, `EmrCreateCluster`, `EmrTerminationCluster`, and `EmrContainersStartJobRun`.
112
+ *
113
+ */
114
+ readonly integrationPattern?: IntegrationPattern;
115
+ /**
116
+ * Credentials for an IAM Role that the State Machine assumes for executing the task.
117
+ * This enables cross-account resource invocations.
118
+ *
119
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/concepts-access-cross-acct-resources.html
120
+ *
121
+ * @default - None (Task is executed using the State Machine's execution role)
122
+ */
123
+ readonly credentials?: Credentials;
124
+ }
125
+ /**
126
+ * Define a Task state in the state machine
127
+ *
128
+ * Reaching a Task state causes some work to be executed, represented by the
129
+ * Task's resource property. Task constructs represent a generic Amazon
130
+ * States Language Task.
131
+ *
132
+ * For some resource types, more specific subclasses of Task may be available
133
+ * which are more convenient to use.
134
+ */
135
+ export declare abstract class TaskStateBase extends State implements INextable {
136
+ readonly endStates: INextable[];
137
+ protected abstract readonly taskPolicies?: iam.PolicyStatement[];
138
+ private readonly timeout?;
139
+ private readonly taskTimeout?;
140
+ private readonly heartbeat?;
141
+ private readonly heartbeatTimeout?;
142
+ private readonly credentials?;
143
+ constructor(scope: Construct, id: string, props: TaskStateBaseProps);
144
+ /**
145
+ * Add retry configuration for this state
146
+ *
147
+ * This controls if and how the execution will be retried if a particular
148
+ * error occurs.
149
+ */
150
+ addRetry(props?: RetryProps): TaskStateBase;
151
+ /**
152
+ * Add a recovery handler for this state
153
+ *
154
+ * When a particular error occurs, execution will continue at the error
155
+ * handler instead of failing the state machine execution.
156
+ */
157
+ addCatch(handler: IChainable, props?: CatchProps): TaskStateBase;
158
+ /**
159
+ * Continue normal execution with the given state
160
+ */
161
+ next(next: IChainable): Chain;
162
+ /**
163
+ * Return the Amazon States Language object for this state
164
+ */
165
+ toStateJson(): object;
166
+ protected whenBoundToGraph(graph: StateGraph): void;
167
+ /**
168
+ * @internal
169
+ */
170
+ protected abstract _renderTask(): any;
171
+ private renderCredentials;
172
+ private renderTaskBase;
173
+ }
174
+ /**
175
+ *
176
+ * AWS Step Functions integrates with services directly in the Amazon States Language.
177
+ * You can control these AWS services using service integration patterns:
178
+ *
179
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html
180
+ *
181
+ */
182
+ export declare enum IntegrationPattern {
183
+ /**
184
+ * Step Functions will wait for an HTTP response and then progress to the next state.
185
+ *
186
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-default
187
+ */
188
+ REQUEST_RESPONSE = "REQUEST_RESPONSE",
189
+ /**
190
+ * Step Functions can wait for a request to complete before progressing to the next state.
191
+ *
192
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-sync
193
+ */
194
+ RUN_JOB = "RUN_JOB",
195
+ /**
196
+ * Callback tasks provide a way to pause a workflow until a task token is returned.
197
+ * You must set a task token when using the callback pattern
198
+ *
199
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-wait-token
200
+ */
201
+ WAIT_FOR_TASK_TOKEN = "WAIT_FOR_TASK_TOKEN"
202
+ }
203
+ /**
204
+ * Timeout for a task or heartbeat
205
+ */
206
+ export declare abstract class Timeout {
207
+ /**
208
+ * Use a duration as timeout
209
+ */
210
+ static duration(duration: Duration): Timeout;
211
+ /**
212
+ * Use a dynamic timeout specified by a path in the state input.
213
+ *
214
+ * The path must select a field whose value is a positive integer.
215
+ */
216
+ static at(path: string): Timeout;
217
+ /**
218
+ * Seconds for this timeout
219
+ */
220
+ abstract readonly seconds?: number;
221
+ /**
222
+ * Path for this timeout
223
+ */
224
+ abstract readonly path?: string;
225
+ }
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Timeout = exports.IntegrationPattern = exports.TaskStateBase = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const state_1 = require("./state");
7
+ const iam = require("../../iam");
8
+ const chain_1 = require("../chain");
9
+ const fields_1 = require("../fields");
10
+ /**
11
+ * Define a Task state in the state machine
12
+ *
13
+ * Reaching a Task state causes some work to be executed, represented by the
14
+ * Task's resource property. Task constructs represent a generic Amazon
15
+ * States Language Task.
16
+ *
17
+ * For some resource types, more specific subclasses of Task may be available
18
+ * which are more convenient to use.
19
+ */
20
+ class TaskStateBase extends state_1.State {
21
+ constructor(scope, id, props) {
22
+ super(scope, id, props);
23
+ this.endStates = [this];
24
+ this.timeout = props.timeout;
25
+ this.taskTimeout = props.taskTimeout;
26
+ this.heartbeat = props.heartbeat;
27
+ this.heartbeatTimeout = props.heartbeatTimeout;
28
+ this.credentials = props.credentials;
29
+ }
30
+ /**
31
+ * Add retry configuration for this state
32
+ *
33
+ * This controls if and how the execution will be retried if a particular
34
+ * error occurs.
35
+ */
36
+ addRetry(props = {}) {
37
+ super._addRetry(props);
38
+ return this;
39
+ }
40
+ /**
41
+ * Add a recovery handler for this state
42
+ *
43
+ * When a particular error occurs, execution will continue at the error
44
+ * handler instead of failing the state machine execution.
45
+ */
46
+ addCatch(handler, props = {}) {
47
+ super._addCatch(handler.startState, props);
48
+ return this;
49
+ }
50
+ /**
51
+ * Continue normal execution with the given state
52
+ */
53
+ next(next) {
54
+ super.makeNext(next.startState);
55
+ return chain_1.Chain.sequence(this, next);
56
+ }
57
+ /**
58
+ * Return the Amazon States Language object for this state
59
+ */
60
+ toStateJson() {
61
+ return {
62
+ ...this.renderNextEnd(),
63
+ ...this.renderRetryCatch(),
64
+ ...this.renderTaskBase(),
65
+ ...this._renderTask(),
66
+ };
67
+ }
68
+ // TODO: Re-add CloudWatch metrics
69
+ whenBoundToGraph(graph) {
70
+ super.whenBoundToGraph(graph);
71
+ for (const policyStatement of this.taskPolicies || []) {
72
+ graph.registerPolicyStatement(policyStatement);
73
+ }
74
+ if (this.credentials) {
75
+ graph.registerPolicyStatement(new iam.PolicyStatement({
76
+ effect: iam.Effect.ALLOW,
77
+ actions: ["sts:AssumeRole"],
78
+ resources: [this.credentials.role.resource],
79
+ }));
80
+ }
81
+ }
82
+ renderCredentials() {
83
+ return this.credentials
84
+ ? fields_1.FieldUtils.renderObject({
85
+ Credentials: { RoleArn: this.credentials.role.roleArn },
86
+ })
87
+ : undefined;
88
+ }
89
+ renderTaskBase() {
90
+ return {
91
+ Type: "Task",
92
+ Comment: this.comment,
93
+ TimeoutSeconds: this.timeout?.toSeconds() ?? this.taskTimeout?.seconds,
94
+ TimeoutSecondsPath: this.taskTimeout?.path,
95
+ HeartbeatSeconds: this.heartbeat?.toSeconds() ?? this.heartbeatTimeout?.seconds,
96
+ HeartbeatSecondsPath: this.heartbeatTimeout?.path,
97
+ InputPath: (0, state_1.renderJsonPath)(this.inputPath),
98
+ OutputPath: (0, state_1.renderJsonPath)(this.outputPath),
99
+ ResultPath: (0, state_1.renderJsonPath)(this.resultPath),
100
+ ...this.renderResultSelector(),
101
+ ...this.renderCredentials(),
102
+ };
103
+ }
104
+ }
105
+ exports.TaskStateBase = TaskStateBase;
106
+ _a = JSII_RTTI_SYMBOL_1;
107
+ TaskStateBase[_a] = { fqn: "terraconstructs.aws.compute.TaskStateBase", version: "0.0.8" };
108
+ /**
109
+ *
110
+ * AWS Step Functions integrates with services directly in the Amazon States Language.
111
+ * You can control these AWS services using service integration patterns:
112
+ *
113
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html
114
+ *
115
+ */
116
+ var IntegrationPattern;
117
+ (function (IntegrationPattern) {
118
+ /**
119
+ * Step Functions will wait for an HTTP response and then progress to the next state.
120
+ *
121
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-default
122
+ */
123
+ IntegrationPattern["REQUEST_RESPONSE"] = "REQUEST_RESPONSE";
124
+ /**
125
+ * Step Functions can wait for a request to complete before progressing to the next state.
126
+ *
127
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-sync
128
+ */
129
+ IntegrationPattern["RUN_JOB"] = "RUN_JOB";
130
+ /**
131
+ * Callback tasks provide a way to pause a workflow until a task token is returned.
132
+ * You must set a task token when using the callback pattern
133
+ *
134
+ * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-wait-token
135
+ */
136
+ IntegrationPattern["WAIT_FOR_TASK_TOKEN"] = "WAIT_FOR_TASK_TOKEN";
137
+ })(IntegrationPattern || (exports.IntegrationPattern = IntegrationPattern = {}));
138
+ /**
139
+ * Timeout for a task or heartbeat
140
+ */
141
+ class Timeout {
142
+ /**
143
+ * Use a duration as timeout
144
+ */
145
+ static duration(duration) {
146
+ return { seconds: duration.toSeconds() };
147
+ }
148
+ /**
149
+ * Use a dynamic timeout specified by a path in the state input.
150
+ *
151
+ * The path must select a field whose value is a positive integer.
152
+ */
153
+ static at(path) {
154
+ return { path };
155
+ }
156
+ }
157
+ exports.Timeout = Timeout;
158
+ _b = JSII_RTTI_SYMBOL_1;
159
+ Timeout[_b] = { fqn: "terraconstructs.aws.compute.Timeout", version: "0.0.8" };
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL3N0YXRlcy90YXNrLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxtQ0FBZ0Q7QUFFaEQsaUNBQWlDO0FBQ2pDLG9DQUFpQztBQUNqQyxzQ0FBdUM7QUFtSXZDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQXNCLGFBQWMsU0FBUSxhQUFLO0lBWS9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxRQUFvQixFQUFFO1FBQ3BDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxRQUFRLENBQUMsT0FBbUIsRUFBRSxRQUFvQixFQUFFO1FBQ3pELEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxJQUFnQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxPQUFPLGFBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBRUQsa0NBQWtDO0lBRXhCLGdCQUFnQixDQUFDLEtBQWlCO1FBQzFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixLQUFLLE1BQU0sZUFBZSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixLQUFLLENBQUMsdUJBQXVCLENBQzNCLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztnQkFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztnQkFDeEIsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzNCLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUM1QyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBT08saUJBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVc7WUFDckIsQ0FBQyxDQUFDLG1CQUFVLENBQUMsWUFBWSxDQUFDO2dCQUN0QixXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2FBQ3hELENBQUM7WUFDSixDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE9BQU87WUFDTCxJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU87WUFDdEUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJO1lBQzFDLGdCQUFnQixFQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU87WUFDL0Qsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUk7WUFDakQsU0FBUyxFQUFFLElBQUEsc0JBQWMsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pDLFVBQVUsRUFBRSxJQUFBLHNCQUFjLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUMzQyxVQUFVLEVBQUUsSUFBQSxzQkFBYyxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDM0MsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDOUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7U0FDNUIsQ0FBQztJQUNKLENBQUM7O0FBL0dILHNDQWdIQzs7O0FBRUQ7Ozs7Ozs7R0FPRztBQUNILElBQVksa0JBc0JYO0FBdEJELFdBQVksa0JBQWtCO0lBQzVCOzs7O09BSUc7SUFDSCwyREFBcUMsQ0FBQTtJQUVyQzs7OztPQUlHO0lBQ0gseUNBQW1CLENBQUE7SUFFbkI7Ozs7O09BS0c7SUFDSCxpRUFBMkMsQ0FBQTtBQUM3QyxDQUFDLEVBdEJXLGtCQUFrQixrQ0FBbEIsa0JBQWtCLFFBc0I3QjtBQUVEOztHQUVHO0FBQ0gsTUFBc0IsT0FBTztJQUMzQjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBa0I7UUFDdkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBWTtRQUMzQixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbEIsQ0FBQzs7QUFmSCwwQkEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgcmVuZGVySnNvblBhdGgsIFN0YXRlIH0gZnJvbSBcIi4vc3RhdGVcIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcIi4uLy4uLy4uXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uLy4uL2lhbVwiO1xuaW1wb3J0IHsgQ2hhaW4gfSBmcm9tIFwiLi4vY2hhaW5cIjtcbmltcG9ydCB7IEZpZWxkVXRpbHMgfSBmcm9tIFwiLi4vZmllbGRzXCI7XG5pbXBvcnQgeyBTdGF0ZUdyYXBoIH0gZnJvbSBcIi4uL3N0YXRlLWdyYXBoXCI7XG5pbXBvcnQgeyBDcmVkZW50aWFscyB9IGZyb20gXCIuLi90YXNrLWNyZWRlbnRpYWxzXCI7XG5pbXBvcnQgeyBDYXRjaFByb3BzLCBJQ2hhaW5hYmxlLCBJTmV4dGFibGUsIFJldHJ5UHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuLyoqXG4gKiBQcm9wcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIHRhc2tzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza1N0YXRlQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIG5hbWUgZm9yIHRoaXMgc3RhdGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgY29uc3RydWN0IElEIHdpbGwgYmUgdXNlZCBhcyBzdGF0ZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBzdGF0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGlzIHN0YXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY29tbWVudFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudD86IHN0cmluZztcblxuICAvKipcbiAgICogSlNPTlBhdGggZXhwcmVzc2lvbiB0byBzZWxlY3QgcGFydCBvZiB0aGUgc3RhdGUgdG8gYmUgdGhlIGlucHV0IHRvIHRoaXMgc3RhdGUuXG4gICAqXG4gICAqIE1heSBhbHNvIGJlIHRoZSBzcGVjaWFsIHZhbHVlIEpzb25QYXRoLkRJU0NBUkQsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGVmZmVjdGl2ZVxuICAgKiBpbnB1dCB0byBiZSB0aGUgZW1wdHkgb2JqZWN0IHt9LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBlbnRpcmUgdGFzayBpbnB1dCAoSlNPTiBwYXRoICckJylcbiAgICovXG4gIHJlYWRvbmx5IGlucHV0UGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogSlNPTlBhdGggZXhwcmVzc2lvbiB0byBzZWxlY3Qgc2VsZWN0IGEgcG9ydGlvbiBvZiB0aGUgc3RhdGUgb3V0cHV0IHRvIHBhc3NcbiAgICogdG8gdGhlIG5leHQgc3RhdGUuXG4gICAqXG4gICAqIE1heSBhbHNvIGJlIHRoZSBzcGVjaWFsIHZhbHVlIEpzb25QYXRoLkRJU0NBUkQsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGVmZmVjdGl2ZVxuICAgKiBvdXRwdXQgdG8gYmUgdGhlIGVtcHR5IG9iamVjdCB7fS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgZW50aXJlIEpTT04gbm9kZSBkZXRlcm1pbmVkIGJ5IHRoZSBzdGF0ZSBpbnB1dCwgdGhlIHRhc2sgcmVzdWx0LFxuICAgKiAgIGFuZCByZXN1bHRQYXRoIGlzIHBhc3NlZCB0byB0aGUgbmV4dCBzdGF0ZSAoSlNPTiBwYXRoICckJylcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEpTT05QYXRoIGV4cHJlc3Npb24gdG8gaW5kaWNhdGUgd2hlcmUgdG8gaW5qZWN0IHRoZSBzdGF0ZSdzIG91dHB1dFxuICAgKlxuICAgKiBNYXkgYWxzbyBiZSB0aGUgc3BlY2lhbCB2YWx1ZSBKc29uUGF0aC5ESVNDQVJELCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzdGF0ZSdzXG4gICAqIGlucHV0IHRvIGJlY29tZSBpdHMgb3V0cHV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFJlcGxhY2VzIHRoZSBlbnRpcmUgaW5wdXQgd2l0aCB0aGUgcmVzdWx0IChKU09OIHBhdGggJyQnKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdWx0UGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEpTT04gdGhhdCB3aWxsIHJlcGxhY2UgdGhlIHN0YXRlJ3MgcmF3IHJlc3VsdCBhbmQgYmVjb21lIHRoZSBlZmZlY3RpdmVcbiAgICogcmVzdWx0IGJlZm9yZSBSZXN1bHRQYXRoIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqIFlvdSBjYW4gdXNlIFJlc3VsdFNlbGVjdG9yIHRvIGNyZWF0ZSBhIHBheWxvYWQgd2l0aCB2YWx1ZXMgdGhhdCBhcmUgc3RhdGljXG4gICAqIG9yIHNlbGVjdGVkIGZyb20gdGhlIHN0YXRlJ3MgcmF3IHJlc3VsdC5cbiAgICpcbiAgICogQHNlZVxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2lucHV0LW91dHB1dC1pbnB1dHBhdGgtcGFyYW1zLmh0bWwjaW5wdXQtb3V0cHV0LXJlc3VsdHNlbGVjdG9yXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdWx0U2VsZWN0b3I/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGZvciB0aGUgdGFza1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGB0YXNrVGltZW91dGBcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGltZW91dCBmb3IgdGhlIHRhc2tcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpkdXJhdGlvbi1wcm9wLXR5cGVdIGlzIG5lZWRlZCBiZWNhdXNlIGFsbCBwcm9wcyBpbnRlcmZhY2UgaW5cbiAgICogYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3MgZXh0ZW5kIHRoaXMgaW50ZXJmYWNlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFza1RpbWVvdXQ/OiBUaW1lb3V0O1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGZvciB0aGUgaGVhcnRiZWF0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGhlYXJ0YmVhdFRpbWVvdXRgXG4gICAqL1xuICByZWFkb25seSBoZWFydGJlYXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGltZW91dCBmb3IgdGhlIGhlYXJ0YmVhdFxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50OmR1cmF0aW9uLXByb3AtdHlwZV0gaXMgbmVlZGVkIGJlY2F1c2UgYWxsIHByb3BzIGludGVyZmFjZSBpblxuICAgKiBhd3Mtc3RlcGZ1bmN0aW9ucy10YXNrcyBleHRlbmQgdGhpcyBpbnRlcmZhY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBoZWFydGJlYXRUaW1lb3V0PzogVGltZW91dDtcblxuICAvKipcbiAgICogQVdTIFN0ZXAgRnVuY3Rpb25zIGludGVncmF0ZXMgd2l0aCBzZXJ2aWNlcyBkaXJlY3RseSBpbiB0aGUgQW1hem9uIFN0YXRlcyBMYW5ndWFnZS5cbiAgICogWW91IGNhbiBjb250cm9sIHRoZXNlIEFXUyBzZXJ2aWNlcyB1c2luZyBzZXJ2aWNlIGludGVncmF0aW9uIHBhdHRlcm5zLlxuICAgKlxuICAgKiBEZXBlbmRpbmcgb24gdGhlIEFXUyBTZXJ2aWNlLCB0aGUgU2VydmljZSBJbnRlZ3JhdGlvbiBQYXR0ZXJuIGF2YWlsYWJpbGl0eSB3aWxsIHZhcnkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9jb25uZWN0LXN1cHBvcnRlZC1zZXJ2aWNlcy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYEludGVncmF0aW9uUGF0dGVybi5SRVFVRVNUX1JFU1BPTlNFYCBmb3IgbW9zdCB0YXNrcy5cbiAgICogYEludGVncmF0aW9uUGF0dGVybi5SVU5fSk9CYCBmb3IgdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOlxuICAgKiAgYEJhdGNoU3VibWl0Sm9iYCwgYEVtckFkZFN0ZXBgLCBgRW1yQ3JlYXRlQ2x1c3RlcmAsIGBFbXJUZXJtaW5hdGlvbkNsdXN0ZXJgLCBhbmQgYEVtckNvbnRhaW5lcnNTdGFydEpvYlJ1bmAuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBpbnRlZ3JhdGlvblBhdHRlcm4/OiBJbnRlZ3JhdGlvblBhdHRlcm47XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWxzIGZvciBhbiBJQU0gUm9sZSB0aGF0IHRoZSBTdGF0ZSBNYWNoaW5lIGFzc3VtZXMgZm9yIGV4ZWN1dGluZyB0aGUgdGFzay5cbiAgICogVGhpcyBlbmFibGVzIGNyb3NzLWFjY291bnQgcmVzb3VyY2UgaW52b2NhdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9jb25jZXB0cy1hY2Nlc3MtY3Jvc3MtYWNjdC1yZXNvdXJjZXMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUgKFRhc2sgaXMgZXhlY3V0ZWQgdXNpbmcgdGhlIFN0YXRlIE1hY2hpbmUncyBleGVjdXRpb24gcm9sZSlcbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHM7XG59XG5cbi8qKlxuICogRGVmaW5lIGEgVGFzayBzdGF0ZSBpbiB0aGUgc3RhdGUgbWFjaGluZVxuICpcbiAqIFJlYWNoaW5nIGEgVGFzayBzdGF0ZSBjYXVzZXMgc29tZSB3b3JrIHRvIGJlIGV4ZWN1dGVkLCByZXByZXNlbnRlZCBieSB0aGVcbiAqIFRhc2sncyByZXNvdXJjZSBwcm9wZXJ0eS4gVGFzayBjb25zdHJ1Y3RzIHJlcHJlc2VudCBhIGdlbmVyaWMgQW1hem9uXG4gKiBTdGF0ZXMgTGFuZ3VhZ2UgVGFzay5cbiAqXG4gKiBGb3Igc29tZSByZXNvdXJjZSB0eXBlcywgbW9yZSBzcGVjaWZpYyBzdWJjbGFzc2VzIG9mIFRhc2sgbWF5IGJlIGF2YWlsYWJsZVxuICogd2hpY2ggYXJlIG1vcmUgY29udmVuaWVudCB0byB1c2UuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYXNrU3RhdGVCYXNlIGV4dGVuZHMgU3RhdGUgaW1wbGVtZW50cyBJTmV4dGFibGUge1xuICBwdWJsaWMgcmVhZG9ubHkgZW5kU3RhdGVzOiBJTmV4dGFibGVbXTtcblxuICAvLyBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgdGFza01ldHJpY3M/OiBUYXNrTWV0cmljc0NvbmZpZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IHRhc2tQb2xpY2llcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRpbWVvdXQ/OiBEdXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSB0YXNrVGltZW91dD86IFRpbWVvdXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhcnRiZWF0PzogRHVyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhcnRiZWF0VGltZW91dD86IFRpbWVvdXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFscztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGFza1N0YXRlQmFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLmVuZFN0YXRlcyA9IFt0aGlzXTtcbiAgICB0aGlzLnRpbWVvdXQgPSBwcm9wcy50aW1lb3V0O1xuICAgIHRoaXMudGFza1RpbWVvdXQgPSBwcm9wcy50YXNrVGltZW91dDtcbiAgICB0aGlzLmhlYXJ0YmVhdCA9IHByb3BzLmhlYXJ0YmVhdDtcbiAgICB0aGlzLmhlYXJ0YmVhdFRpbWVvdXQgPSBwcm9wcy5oZWFydGJlYXRUaW1lb3V0O1xuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBwcm9wcy5jcmVkZW50aWFscztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBzdGF0ZVxuICAgKlxuICAgKiBUaGlzIGNvbnRyb2xzIGlmIGFuZCBob3cgdGhlIGV4ZWN1dGlvbiB3aWxsIGJlIHJldHJpZWQgaWYgYSBwYXJ0aWN1bGFyXG4gICAqIGVycm9yIG9jY3Vycy5cbiAgICovXG4gIHB1YmxpYyBhZGRSZXRyeShwcm9wczogUmV0cnlQcm9wcyA9IHt9KTogVGFza1N0YXRlQmFzZSB7XG4gICAgc3VwZXIuX2FkZFJldHJ5KHByb3BzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSByZWNvdmVyeSBoYW5kbGVyIGZvciB0aGlzIHN0YXRlXG4gICAqXG4gICAqIFdoZW4gYSBwYXJ0aWN1bGFyIGVycm9yIG9jY3VycywgZXhlY3V0aW9uIHdpbGwgY29udGludWUgYXQgdGhlIGVycm9yXG4gICAqIGhhbmRsZXIgaW5zdGVhZCBvZiBmYWlsaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIGV4ZWN1dGlvbi5cbiAgICovXG4gIHB1YmxpYyBhZGRDYXRjaChoYW5kbGVyOiBJQ2hhaW5hYmxlLCBwcm9wczogQ2F0Y2hQcm9wcyA9IHt9KTogVGFza1N0YXRlQmFzZSB7XG4gICAgc3VwZXIuX2FkZENhdGNoKGhhbmRsZXIuc3RhcnRTdGF0ZSwgcHJvcHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRpbnVlIG5vcm1hbCBleGVjdXRpb24gd2l0aCB0aGUgZ2l2ZW4gc3RhdGVcbiAgICovXG4gIHB1YmxpYyBuZXh0KG5leHQ6IElDaGFpbmFibGUpOiBDaGFpbiB7XG4gICAgc3VwZXIubWFrZU5leHQobmV4dC5zdGFydFN0YXRlKTtcbiAgICByZXR1cm4gQ2hhaW4uc2VxdWVuY2UodGhpcywgbmV4dCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBBbWF6b24gU3RhdGVzIExhbmd1YWdlIG9iamVjdCBmb3IgdGhpcyBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHRvU3RhdGVKc29uKCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMucmVuZGVyTmV4dEVuZCgpLFxuICAgICAgLi4udGhpcy5yZW5kZXJSZXRyeUNhdGNoKCksXG4gICAgICAuLi50aGlzLnJlbmRlclRhc2tCYXNlKCksXG4gICAgICAuLi50aGlzLl9yZW5kZXJUYXNrKCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIFRPRE86IFJlLWFkZCBDbG91ZFdhdGNoIG1ldHJpY3NcblxuICBwcm90ZWN0ZWQgd2hlbkJvdW5kVG9HcmFwaChncmFwaDogU3RhdGVHcmFwaCkge1xuICAgIHN1cGVyLndoZW5Cb3VuZFRvR3JhcGgoZ3JhcGgpO1xuICAgIGZvciAoY29uc3QgcG9saWN5U3RhdGVtZW50IG9mIHRoaXMudGFza1BvbGljaWVzIHx8IFtdKSB7XG4gICAgICBncmFwaC5yZWdpc3RlclBvbGljeVN0YXRlbWVudChwb2xpY3lTdGF0ZW1lbnQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jcmVkZW50aWFscykge1xuICAgICAgZ3JhcGgucmVnaXN0ZXJQb2xpY3lTdGF0ZW1lbnQoXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5jcmVkZW50aWFscy5yb2xlLnJlc291cmNlXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfcmVuZGVyVGFzaygpOiBhbnk7XG5cbiAgcHJpdmF0ZSByZW5kZXJDcmVkZW50aWFscygpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVkZW50aWFsc1xuICAgICAgPyBGaWVsZFV0aWxzLnJlbmRlck9iamVjdCh7XG4gICAgICAgICAgQ3JlZGVudGlhbHM6IHsgUm9sZUFybjogdGhpcy5jcmVkZW50aWFscy5yb2xlLnJvbGVBcm4gfSxcbiAgICAgICAgfSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJUYXNrQmFzZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgVHlwZTogXCJUYXNrXCIsXG4gICAgICBDb21tZW50OiB0aGlzLmNvbW1lbnQsXG4gICAgICBUaW1lb3V0U2Vjb25kczogdGhpcy50aW1lb3V0Py50b1NlY29uZHMoKSA/PyB0aGlzLnRhc2tUaW1lb3V0Py5zZWNvbmRzLFxuICAgICAgVGltZW91dFNlY29uZHNQYXRoOiB0aGlzLnRhc2tUaW1lb3V0Py5wYXRoLFxuICAgICAgSGVhcnRiZWF0U2Vjb25kczpcbiAgICAgICAgdGhpcy5oZWFydGJlYXQ/LnRvU2Vjb25kcygpID8/IHRoaXMuaGVhcnRiZWF0VGltZW91dD8uc2Vjb25kcyxcbiAgICAgIEhlYXJ0YmVhdFNlY29uZHNQYXRoOiB0aGlzLmhlYXJ0YmVhdFRpbWVvdXQ/LnBhdGgsXG4gICAgICBJbnB1dFBhdGg6IHJlbmRlckpzb25QYXRoKHRoaXMuaW5wdXRQYXRoKSxcbiAgICAgIE91dHB1dFBhdGg6IHJlbmRlckpzb25QYXRoKHRoaXMub3V0cHV0UGF0aCksXG4gICAgICBSZXN1bHRQYXRoOiByZW5kZXJKc29uUGF0aCh0aGlzLnJlc3VsdFBhdGgpLFxuICAgICAgLi4udGhpcy5yZW5kZXJSZXN1bHRTZWxlY3RvcigpLFxuICAgICAgLi4udGhpcy5yZW5kZXJDcmVkZW50aWFscygpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKlxuICogQVdTIFN0ZXAgRnVuY3Rpb25zIGludGVncmF0ZXMgd2l0aCBzZXJ2aWNlcyBkaXJlY3RseSBpbiB0aGUgQW1hem9uIFN0YXRlcyBMYW5ndWFnZS5cbiAqIFlvdSBjYW4gY29udHJvbCB0aGVzZSBBV1Mgc2VydmljZXMgdXNpbmcgc2VydmljZSBpbnRlZ3JhdGlvbiBwYXR0ZXJuczpcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvY29ubmVjdC10by1yZXNvdXJjZS5odG1sXG4gKlxuICovXG5leHBvcnQgZW51bSBJbnRlZ3JhdGlvblBhdHRlcm4ge1xuICAvKipcbiAgICogU3RlcCBGdW5jdGlvbnMgd2lsbCB3YWl0IGZvciBhbiBIVFRQIHJlc3BvbnNlIGFuZCB0aGVuIHByb2dyZXNzIHRvIHRoZSBuZXh0IHN0YXRlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvY29ubmVjdC10by1yZXNvdXJjZS5odG1sI2Nvbm5lY3QtZGVmYXVsdFxuICAgKi9cbiAgUkVRVUVTVF9SRVNQT05TRSA9IFwiUkVRVUVTVF9SRVNQT05TRVwiLFxuXG4gIC8qKlxuICAgKiBTdGVwIEZ1bmN0aW9ucyBjYW4gd2FpdCBmb3IgYSByZXF1ZXN0IHRvIGNvbXBsZXRlIGJlZm9yZSBwcm9ncmVzc2luZyB0byB0aGUgbmV4dCBzdGF0ZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2Nvbm5lY3QtdG8tcmVzb3VyY2UuaHRtbCNjb25uZWN0LXN5bmNcbiAgICovXG4gIFJVTl9KT0IgPSBcIlJVTl9KT0JcIixcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdGFza3MgcHJvdmlkZSBhIHdheSB0byBwYXVzZSBhIHdvcmtmbG93IHVudGlsIGEgdGFzayB0b2tlbiBpcyByZXR1cm5lZC5cbiAgICogWW91IG11c3Qgc2V0IGEgdGFzayB0b2tlbiB3aGVuIHVzaW5nIHRoZSBjYWxsYmFjayBwYXR0ZXJuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9jb25uZWN0LXRvLXJlc291cmNlLmh0bWwjY29ubmVjdC13YWl0LXRva2VuXG4gICAqL1xuICBXQUlUX0ZPUl9UQVNLX1RPS0VOID0gXCJXQUlUX0ZPUl9UQVNLX1RPS0VOXCIsXG59XG5cbi8qKlxuICogVGltZW91dCBmb3IgYSB0YXNrIG9yIGhlYXJ0YmVhdFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGltZW91dCB7XG4gIC8qKlxuICAgKiBVc2UgYSBkdXJhdGlvbiBhcyB0aW1lb3V0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGR1cmF0aW9uKGR1cmF0aW9uOiBEdXJhdGlvbik6IFRpbWVvdXQge1xuICAgIHJldHVybiB7IHNlY29uZHM6IGR1cmF0aW9uLnRvU2Vjb25kcygpIH07XG4gIH1cblxuICAvKipcbiAgICogVXNlIGEgZHluYW1pYyB0aW1lb3V0IHNwZWNpZmllZCBieSBhIHBhdGggaW4gdGhlIHN0YXRlIGlucHV0LlxuICAgKlxuICAgKiBUaGUgcGF0aCBtdXN0IHNlbGVjdCBhIGZpZWxkIHdob3NlIHZhbHVlIGlzIGEgcG9zaXRpdmUgaW50ZWdlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXQocGF0aDogc3RyaW5nKTogVGltZW91dCB7XG4gICAgcmV0dXJuIHsgcGF0aCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlY29uZHMgZm9yIHRoaXMgdGltZW91dFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBhdGggZm9yIHRoaXMgdGltZW91dFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,127 @@
1
+ import { Construct } from "constructs";
2
+ import { State } from "./state";
3
+ import { Duration } from "../../..";
4
+ import { Chain } from "../chain";
5
+ import { StateGraph } from "../state-graph";
6
+ import { IStepFunctionsTask } from "../step-functions-task";
7
+ import { CatchProps, IChainable, INextable, RetryProps } from "../types";
8
+ /**
9
+ * Props that are common to all tasks
10
+ */
11
+ export interface TaskProps {
12
+ /**
13
+ * Actual task to be invoked in this workflow
14
+ */
15
+ readonly task: IStepFunctionsTask;
16
+ /**
17
+ * Optional name for this state
18
+ *
19
+ * @default - The construct ID will be used as state name
20
+ */
21
+ readonly stateName?: string;
22
+ /**
23
+ * An optional description for this state
24
+ *
25
+ * @default No comment
26
+ */
27
+ readonly comment?: string;
28
+ /**
29
+ * JSONPath expression to select part of the state to be the input to this state.
30
+ *
31
+ * May also be the special value JsonPath.DISCARD, which will cause the effective
32
+ * input to be the empty object {}.
33
+ *
34
+ * @default $
35
+ */
36
+ readonly inputPath?: string;
37
+ /**
38
+ * JSONPath expression to select part of the state to be the output to this state.
39
+ *
40
+ * May also be the special value JsonPath.DISCARD, which will cause the effective
41
+ * output to be the empty object {}.
42
+ *
43
+ * @default $
44
+ */
45
+ readonly outputPath?: string;
46
+ /**
47
+ * JSONPath expression to indicate where to inject the state's output
48
+ *
49
+ * May also be the special value JsonPath.DISCARD, which will cause the state's
50
+ * input to become its output.
51
+ *
52
+ * @default $
53
+ */
54
+ readonly resultPath?: string;
55
+ /**
56
+ * Parameters to invoke the task with
57
+ *
58
+ * It is not recommended to use this field. The object that is passed in
59
+ * the `task` property will take care of returning the right values for the
60
+ * `Parameters` field in the Step Functions definition.
61
+ *
62
+ * The various classes that implement `IStepFunctionsTask` will take a
63
+ * properties which make sense for the task type. For example, for
64
+ * `InvokeFunction` the field that populates the `parameters` field will be
65
+ * called `payload`, and for the `PublishToTopic` the `parameters` field
66
+ * will be populated via a combination of the referenced topic, subject and
67
+ * message.
68
+ *
69
+ * If passed anyway, the keys in this map will override the parameters
70
+ * returned by the task object.
71
+ *
72
+ * @see
73
+ * https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html#input-output-parameters
74
+ *
75
+ * @default - Use the parameters implied by the `task` property
76
+ */
77
+ readonly parameters?: {
78
+ [name: string]: any;
79
+ };
80
+ /**
81
+ * Maximum run time of this state
82
+ *
83
+ * If the state takes longer than this amount of time to complete, a 'Timeout' error is raised.
84
+ *
85
+ * @default 60
86
+ */
87
+ readonly timeout?: Duration;
88
+ }
89
+ /**
90
+ * Define a Task state in the state machine
91
+ *
92
+ * Reaching a Task state causes some work to be executed, represented by the
93
+ * Task's resource property. Task constructs represent a generic Amazon
94
+ * States Language Task.
95
+ *
96
+ * For some resource types, more specific subclasses of Task may be available
97
+ * which are more convenient to use.
98
+ */
99
+ export declare class Task extends State implements INextable {
100
+ readonly endStates: INextable[];
101
+ private readonly timeout?;
102
+ private readonly taskProps;
103
+ constructor(scope: Construct, id: string, props: TaskProps);
104
+ /**
105
+ * Add retry configuration for this state
106
+ *
107
+ * This controls if and how the execution will be retried if a particular
108
+ * error occurs.
109
+ */
110
+ addRetry(props?: RetryProps): Task;
111
+ /**
112
+ * Add a recovery handler for this state
113
+ *
114
+ * When a particular error occurs, execution will continue at the error
115
+ * handler instead of failing the state machine execution.
116
+ */
117
+ addCatch(handler: IChainable, props?: CatchProps): Task;
118
+ /**
119
+ * Continue normal execution with the given state
120
+ */
121
+ next(next: IChainable): Chain;
122
+ /**
123
+ * Return the Amazon States Language object for this state
124
+ */
125
+ toStateJson(): object;
126
+ protected whenBoundToGraph(graph: StateGraph): void;
127
+ }
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Task = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const state_type_1 = require("./private/state-type");
7
+ const state_1 = require("./state");
8
+ const chain_1 = require("../chain");
9
+ // import { TaskStateBase, TaskStateBaseProps } from "./task-base";
10
+ const fields_1 = require("../fields");
11
+ const util_1 = require("../private/util");
12
+ /**
13
+ * Define a Task state in the state machine
14
+ *
15
+ * Reaching a Task state causes some work to be executed, represented by the
16
+ * Task's resource property. Task constructs represent a generic Amazon
17
+ * States Language Task.
18
+ *
19
+ * For some resource types, more specific subclasses of Task may be available
20
+ * which are more convenient to use.
21
+ */
22
+ class Task extends state_1.State {
23
+ constructor(scope, id, props) {
24
+ super(scope, id, props);
25
+ this.timeout = props.timeout;
26
+ const taskProps = props.task.bind(this);
27
+ this.taskProps = {
28
+ ...taskProps,
29
+ parameters: (0, util_1.noEmptyObject)({
30
+ ...(taskProps.parameters || {}),
31
+ ...(props.parameters || {}),
32
+ }),
33
+ };
34
+ this.endStates = [this];
35
+ }
36
+ /**
37
+ * Add retry configuration for this state
38
+ *
39
+ * This controls if and how the execution will be retried if a particular
40
+ * error occurs.
41
+ */
42
+ addRetry(props = {}) {
43
+ super._addRetry(props);
44
+ return this;
45
+ }
46
+ /**
47
+ * Add a recovery handler for this state
48
+ *
49
+ * When a particular error occurs, execution will continue at the error
50
+ * handler instead of failing the state machine execution.
51
+ */
52
+ addCatch(handler, props = {}) {
53
+ super._addCatch(handler.startState, props);
54
+ return this;
55
+ }
56
+ /**
57
+ * Continue normal execution with the given state
58
+ */
59
+ next(next) {
60
+ super.makeNext(next.startState);
61
+ return chain_1.Chain.sequence(this, next);
62
+ }
63
+ /**
64
+ * Return the Amazon States Language object for this state
65
+ */
66
+ toStateJson() {
67
+ return {
68
+ ...this.renderNextEnd(),
69
+ ...this.renderRetryCatch(),
70
+ ...this.renderInputOutput(),
71
+ Type: state_type_1.StateType.TASK,
72
+ Comment: this.comment,
73
+ Resource: this.taskProps.resourceArn,
74
+ Parameters: this.taskProps.parameters &&
75
+ fields_1.FieldUtils.renderObject(this.taskProps.parameters),
76
+ ResultPath: (0, state_1.renderJsonPath)(this.resultPath),
77
+ TimeoutSeconds: this.timeout && this.timeout.toSeconds(),
78
+ HeartbeatSeconds: this.taskProps.heartbeat && this.taskProps.heartbeat.toSeconds(),
79
+ };
80
+ }
81
+ // TODO: Re-add CloudWatch metrics
82
+ whenBoundToGraph(graph) {
83
+ super.whenBoundToGraph(graph);
84
+ for (const policyStatement of this.taskProps.policyStatements || []) {
85
+ graph.registerPolicyStatement(policyStatement);
86
+ }
87
+ }
88
+ }
89
+ exports.Task = Task;
90
+ _a = JSII_RTTI_SYMBOL_1;
91
+ Task[_a] = { fqn: "terraconstructs.aws.compute.Task", version: "0.0.8" };
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9zdGF0ZXMvdGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHFEQUFpRDtBQUNqRCxtQ0FBZ0Q7QUFFaEQsb0NBQWlDO0FBQ2pDLG1FQUFtRTtBQUNuRSxzQ0FBdUM7QUFDdkMsMENBQWdEO0FBa0doRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLElBQUssU0FBUSxhQUFLO0lBTzdCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZ0I7UUFDeEQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLFNBQVM7WUFDWixVQUFVLEVBQUUsSUFBQSxvQkFBYSxFQUFDO2dCQUN4QixHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7Z0JBQy9CLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQzthQUM1QixDQUFDO1NBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxRQUFRLENBQUMsUUFBb0IsRUFBRTtRQUNwQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksUUFBUSxDQUFDLE9BQW1CLEVBQUUsUUFBb0IsRUFBRTtRQUN6RCxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUMsSUFBZ0I7UUFDMUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsT0FBTyxhQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2hCLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxFQUFFLHNCQUFTLENBQUMsSUFBSTtZQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVztZQUNwQyxVQUFVLEVBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVO2dCQUN6QixtQkFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUNwRCxVQUFVLEVBQUUsSUFBQSxzQkFBYyxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDM0MsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDeEQsZ0JBQWdCLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1NBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQsa0NBQWtDO0lBRXhCLGdCQUFnQixDQUFDLEtBQWlCO1FBQzFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixLQUFLLE1BQU0sZUFBZSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFFLENBQUM7WUFDcEUsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDOztBQWpGSCxvQkFrRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU3RhdGVUeXBlIH0gZnJvbSBcIi4vcHJpdmF0ZS9zdGF0ZS10eXBlXCI7XG5pbXBvcnQgeyByZW5kZXJKc29uUGF0aCwgU3RhdGUgfSBmcm9tIFwiLi9zdGF0ZVwiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiLi4vLi4vLi5cIjtcbmltcG9ydCB7IENoYWluIH0gZnJvbSBcIi4uL2NoYWluXCI7XG4vLyBpbXBvcnQgeyBUYXNrU3RhdGVCYXNlLCBUYXNrU3RhdGVCYXNlUHJvcHMgfSBmcm9tIFwiLi90YXNrLWJhc2VcIjtcbmltcG9ydCB7IEZpZWxkVXRpbHMgfSBmcm9tIFwiLi4vZmllbGRzXCI7XG5pbXBvcnQgeyBub0VtcHR5T2JqZWN0IH0gZnJvbSBcIi4uL3ByaXZhdGUvdXRpbFwiO1xuaW1wb3J0IHsgU3RhdGVHcmFwaCB9IGZyb20gXCIuLi9zdGF0ZS1ncmFwaFwiO1xuaW1wb3J0IHtcbiAgSVN0ZXBGdW5jdGlvbnNUYXNrLFxuICBTdGVwRnVuY3Rpb25zVGFza0NvbmZpZyxcbn0gZnJvbSBcIi4uL3N0ZXAtZnVuY3Rpb25zLXRhc2tcIjtcbmltcG9ydCB7IENhdGNoUHJvcHMsIElDaGFpbmFibGUsIElOZXh0YWJsZSwgUmV0cnlQcm9wcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vLyBUT0RPOiByZXBsYWNlIGJ5IHNlcnZpY2UgaW50ZWdyYXRpb24gc3BlY2lmaWMgY2xhc3NlcyAoaS5lLiBMYW1iZGFJbnZva2UsIFNuc1B1Ymxpc2gpXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNjAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrcy9SRUFETUUubWRcblxuLyoqXG4gKiBQcm9wcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIHRhc2tzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza1Byb3BzIHtcbiAgLyoqXG4gICAqIEFjdHVhbCB0YXNrIHRvIGJlIGludm9rZWQgaW4gdGhpcyB3b3JrZmxvd1xuICAgKi9cbiAgcmVhZG9ubHkgdGFzazogSVN0ZXBGdW5jdGlvbnNUYXNrO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBuYW1lIGZvciB0aGlzIHN0YXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIGNvbnN0cnVjdCBJRCB3aWxsIGJlIHVzZWQgYXMgc3RhdGUgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhpcyBzdGF0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBjb21tZW50XG4gICAqL1xuICByZWFkb25seSBjb21tZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBKU09OUGF0aCBleHByZXNzaW9uIHRvIHNlbGVjdCBwYXJ0IG9mIHRoZSBzdGF0ZSB0byBiZSB0aGUgaW5wdXQgdG8gdGhpcyBzdGF0ZS5cbiAgICpcbiAgICogTWF5IGFsc28gYmUgdGhlIHNwZWNpYWwgdmFsdWUgSnNvblBhdGguRElTQ0FSRCwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgZWZmZWN0aXZlXG4gICAqIGlucHV0IHRvIGJlIHRoZSBlbXB0eSBvYmplY3Qge30uXG4gICAqXG4gICAqIEBkZWZhdWx0ICRcbiAgICovXG4gIHJlYWRvbmx5IGlucHV0UGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogSlNPTlBhdGggZXhwcmVzc2lvbiB0byBzZWxlY3QgcGFydCBvZiB0aGUgc3RhdGUgdG8gYmUgdGhlIG91dHB1dCB0byB0aGlzIHN0YXRlLlxuICAgKlxuICAgKiBNYXkgYWxzbyBiZSB0aGUgc3BlY2lhbCB2YWx1ZSBKc29uUGF0aC5ESVNDQVJELCB3aGljaCB3aWxsIGNhdXNlIHRoZSBlZmZlY3RpdmVcbiAgICogb3V0cHV0IHRvIGJlIHRoZSBlbXB0eSBvYmplY3Qge30uXG4gICAqXG4gICAqIEBkZWZhdWx0ICRcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEpTT05QYXRoIGV4cHJlc3Npb24gdG8gaW5kaWNhdGUgd2hlcmUgdG8gaW5qZWN0IHRoZSBzdGF0ZSdzIG91dHB1dFxuICAgKlxuICAgKiBNYXkgYWxzbyBiZSB0aGUgc3BlY2lhbCB2YWx1ZSBKc29uUGF0aC5ESVNDQVJELCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzdGF0ZSdzXG4gICAqIGlucHV0IHRvIGJlY29tZSBpdHMgb3V0cHV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAkXG4gICAqL1xuICByZWFkb25seSByZXN1bHRQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXJzIHRvIGludm9rZSB0aGUgdGFzayB3aXRoXG4gICAqXG4gICAqIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBmaWVsZC4gVGhlIG9iamVjdCB0aGF0IGlzIHBhc3NlZCBpblxuICAgKiB0aGUgYHRhc2tgIHByb3BlcnR5IHdpbGwgdGFrZSBjYXJlIG9mIHJldHVybmluZyB0aGUgcmlnaHQgdmFsdWVzIGZvciB0aGVcbiAgICogYFBhcmFtZXRlcnNgIGZpZWxkIGluIHRoZSBTdGVwIEZ1bmN0aW9ucyBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBUaGUgdmFyaW91cyBjbGFzc2VzIHRoYXQgaW1wbGVtZW50IGBJU3RlcEZ1bmN0aW9uc1Rhc2tgIHdpbGwgdGFrZSBhXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggbWFrZSBzZW5zZSBmb3IgdGhlIHRhc2sgdHlwZS4gRm9yIGV4YW1wbGUsIGZvclxuICAgKiBgSW52b2tlRnVuY3Rpb25gIHRoZSBmaWVsZCB0aGF0IHBvcHVsYXRlcyB0aGUgYHBhcmFtZXRlcnNgIGZpZWxkIHdpbGwgYmVcbiAgICogY2FsbGVkIGBwYXlsb2FkYCwgYW5kIGZvciB0aGUgYFB1Ymxpc2hUb1RvcGljYCB0aGUgYHBhcmFtZXRlcnNgIGZpZWxkXG4gICAqIHdpbGwgYmUgcG9wdWxhdGVkIHZpYSBhIGNvbWJpbmF0aW9uIG9mIHRoZSByZWZlcmVuY2VkIHRvcGljLCBzdWJqZWN0IGFuZFxuICAgKiBtZXNzYWdlLlxuICAgKlxuICAgKiBJZiBwYXNzZWQgYW55d2F5LCB0aGUga2V5cyBpbiB0aGlzIG1hcCB3aWxsIG92ZXJyaWRlIHRoZSBwYXJhbWV0ZXJzXG4gICAqIHJldHVybmVkIGJ5IHRoZSB0YXNrIG9iamVjdC5cbiAgICpcbiAgICogQHNlZVxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2lucHV0LW91dHB1dC1pbnB1dHBhdGgtcGFyYW1zLmh0bWwjaW5wdXQtb3V0cHV0LXBhcmFtZXRlcnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2UgdGhlIHBhcmFtZXRlcnMgaW1wbGllZCBieSB0aGUgYHRhc2tgIHByb3BlcnR5XG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIE1heGltdW0gcnVuIHRpbWUgb2YgdGhpcyBzdGF0ZVxuICAgKlxuICAgKiBJZiB0aGUgc3RhdGUgdGFrZXMgbG9uZ2VyIHRoYW4gdGhpcyBhbW91bnQgb2YgdGltZSB0byBjb21wbGV0ZSwgYSAnVGltZW91dCcgZXJyb3IgaXMgcmFpc2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCA2MFxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IER1cmF0aW9uO1xufVxuXG4vKipcbiAqIERlZmluZSBhIFRhc2sgc3RhdGUgaW4gdGhlIHN0YXRlIG1hY2hpbmVcbiAqXG4gKiBSZWFjaGluZyBhIFRhc2sgc3RhdGUgY2F1c2VzIHNvbWUgd29yayB0byBiZSBleGVjdXRlZCwgcmVwcmVzZW50ZWQgYnkgdGhlXG4gKiBUYXNrJ3MgcmVzb3VyY2UgcHJvcGVydHkuIFRhc2sgY29uc3RydWN0cyByZXByZXNlbnQgYSBnZW5lcmljIEFtYXpvblxuICogU3RhdGVzIExhbmd1YWdlIFRhc2suXG4gKlxuICogRm9yIHNvbWUgcmVzb3VyY2UgdHlwZXMsIG1vcmUgc3BlY2lmaWMgc3ViY2xhc3NlcyBvZiBUYXNrIG1heSBiZSBhdmFpbGFibGVcbiAqIHdoaWNoIGFyZSBtb3JlIGNvbnZlbmllbnQgdG8gdXNlLlxuICovXG5leHBvcnQgY2xhc3MgVGFzayBleHRlbmRzIFN0YXRlIGltcGxlbWVudHMgSU5leHRhYmxlIHtcbiAgLy8gVE9ETzogcmVwbGFjZSBieSBzZXJ2aWNlIGludGVncmF0aW9uIHNwZWNpZmljIGNsYXNzZXMgKGkuZS4gTGFtYmRhSW52b2tlLCBTbnNQdWJsaXNoKVxuICAvLyByZWY6IGF3cy1zdGVwZnVuY3Rpb25zLXRhc2tzL1JFQURNRS5tZFxuICBwdWJsaWMgcmVhZG9ubHkgZW5kU3RhdGVzOiBJTmV4dGFibGVbXTtcbiAgcHJpdmF0ZSByZWFkb25seSB0aW1lb3V0PzogRHVyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFza1Byb3BzOiBTdGVwRnVuY3Rpb25zVGFza0NvbmZpZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGFza1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnRpbWVvdXQgPSBwcm9wcy50aW1lb3V0O1xuICAgIGNvbnN0IHRhc2tQcm9wcyA9IHByb3BzLnRhc2suYmluZCh0aGlzKTtcblxuICAgIHRoaXMudGFza1Byb3BzID0ge1xuICAgICAgLi4udGFza1Byb3BzLFxuICAgICAgcGFyYW1ldGVyczogbm9FbXB0eU9iamVjdCh7XG4gICAgICAgIC4uLih0YXNrUHJvcHMucGFyYW1ldGVycyB8fCB7fSksXG4gICAgICAgIC4uLihwcm9wcy5wYXJhbWV0ZXJzIHx8IHt9KSxcbiAgICAgIH0pLFxuICAgIH07XG4gICAgdGhpcy5lbmRTdGF0ZXMgPSBbdGhpc107XG4gIH1cblxuICAvKipcbiAgICogQWRkIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgc3RhdGVcbiAgICpcbiAgICogVGhpcyBjb250cm9scyBpZiBhbmQgaG93IHRoZSBleGVjdXRpb24gd2lsbCBiZSByZXRyaWVkIGlmIGEgcGFydGljdWxhclxuICAgKiBlcnJvciBvY2N1cnMuXG4gICAqL1xuICBwdWJsaWMgYWRkUmV0cnkocHJvcHM6IFJldHJ5UHJvcHMgPSB7fSk6IFRhc2sge1xuICAgIHN1cGVyLl9hZGRSZXRyeShwcm9wcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcmVjb3ZlcnkgaGFuZGxlciBmb3IgdGhpcyBzdGF0ZVxuICAgKlxuICAgKiBXaGVuIGEgcGFydGljdWxhciBlcnJvciBvY2N1cnMsIGV4ZWN1dGlvbiB3aWxsIGNvbnRpbnVlIGF0IHRoZSBlcnJvclxuICAgKiBoYW5kbGVyIGluc3RlYWQgb2YgZmFpbGluZyB0aGUgc3RhdGUgbWFjaGluZSBleGVjdXRpb24uXG4gICAqL1xuICBwdWJsaWMgYWRkQ2F0Y2goaGFuZGxlcjogSUNoYWluYWJsZSwgcHJvcHM6IENhdGNoUHJvcHMgPSB7fSk6IFRhc2sge1xuICAgIHN1cGVyLl9hZGRDYXRjaChoYW5kbGVyLnN0YXJ0U3RhdGUsIHByb3BzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb250aW51ZSBub3JtYWwgZXhlY3V0aW9uIHdpdGggdGhlIGdpdmVuIHN0YXRlXG4gICAqL1xuICBwdWJsaWMgbmV4dChuZXh0OiBJQ2hhaW5hYmxlKTogQ2hhaW4ge1xuICAgIHN1cGVyLm1ha2VOZXh0KG5leHQuc3RhcnRTdGF0ZSk7XG4gICAgcmV0dXJuIENoYWluLnNlcXVlbmNlKHRoaXMsIG5leHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgQW1hem9uIFN0YXRlcyBMYW5ndWFnZSBvYmplY3QgZm9yIHRoaXMgc3RhdGVcbiAgICovXG4gIHB1YmxpYyB0b1N0YXRlSnNvbigpOiBvYmplY3Qge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLnJlbmRlck5leHRFbmQoKSxcbiAgICAgIC4uLnRoaXMucmVuZGVyUmV0cnlDYXRjaCgpLFxuICAgICAgLi4udGhpcy5yZW5kZXJJbnB1dE91dHB1dCgpLFxuICAgICAgVHlwZTogU3RhdGVUeXBlLlRBU0ssXG4gICAgICBDb21tZW50OiB0aGlzLmNvbW1lbnQsXG4gICAgICBSZXNvdXJjZTogdGhpcy50YXNrUHJvcHMucmVzb3VyY2VBcm4sXG4gICAgICBQYXJhbWV0ZXJzOlxuICAgICAgICB0aGlzLnRhc2tQcm9wcy5wYXJhbWV0ZXJzICYmXG4gICAgICAgIEZpZWxkVXRpbHMucmVuZGVyT2JqZWN0KHRoaXMudGFza1Byb3BzLnBhcmFtZXRlcnMpLFxuICAgICAgUmVzdWx0UGF0aDogcmVuZGVySnNvblBhdGgodGhpcy5yZXN1bHRQYXRoKSxcbiAgICAgIFRpbWVvdXRTZWNvbmRzOiB0aGlzLnRpbWVvdXQgJiYgdGhpcy50aW1lb3V0LnRvU2Vjb25kcygpLFxuICAgICAgSGVhcnRiZWF0U2Vjb25kczpcbiAgICAgICAgdGhpcy50YXNrUHJvcHMuaGVhcnRiZWF0ICYmIHRoaXMudGFza1Byb3BzLmhlYXJ0YmVhdC50b1NlY29uZHMoKSxcbiAgICB9O1xuICB9XG5cbiAgLy8gVE9ETzogUmUtYWRkIENsb3VkV2F0Y2ggbWV0cmljc1xuXG4gIHByb3RlY3RlZCB3aGVuQm91bmRUb0dyYXBoKGdyYXBoOiBTdGF0ZUdyYXBoKSB7XG4gICAgc3VwZXIud2hlbkJvdW5kVG9HcmFwaChncmFwaCk7XG4gICAgZm9yIChjb25zdCBwb2xpY3lTdGF0ZW1lbnQgb2YgdGhpcy50YXNrUHJvcHMucG9saWN5U3RhdGVtZW50cyB8fCBbXSkge1xuICAgICAgZ3JhcGgucmVnaXN0ZXJQb2xpY3lTdGF0ZW1lbnQocG9saWN5U3RhdGVtZW50KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==