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,188 @@
1
+ import { TerraformStack, TerraformElement, HttpBackendConfig, HttpBackend } from "cdktf";
2
+ import { Construct, IConstruct, Node } from "constructs";
3
+ /**
4
+ * Options for creating a unique resource name_prefix.
5
+ */
6
+ export interface UniqueResourceNamePrefixOptions extends UniqueResourceNameOptions {
7
+ /**
8
+ * Length of the random generated suffix added by some Terraform providers.
9
+ *
10
+ * NOTE: https://github.com/hashicorp/terraform-provider-aws/issues/625
11
+ * @default - 26
12
+ */
13
+ readonly suffixLength?: number;
14
+ }
15
+ /**
16
+ * Options for creating a unique resource name.
17
+ */
18
+ export interface UniqueResourceNameOptions {
19
+ /**
20
+ * The maximum length of the unique resource name.
21
+ *
22
+ * @default - 256
23
+ */
24
+ readonly maxLength?: number;
25
+ /**
26
+ * The separator used between the path components.
27
+ *
28
+ * @default - none
29
+ */
30
+ readonly separator?: string;
31
+ /**
32
+ * Non-alphanumeric characters allowed in the unique resource name.
33
+ *
34
+ * @default - none
35
+ */
36
+ readonly allowedSpecialCharacters?: string;
37
+ /**
38
+ * Prefix to be added into the stack name
39
+ *
40
+ * @default - none
41
+ */
42
+ readonly prefix?: string;
43
+ /**
44
+ * Whether to convert the resource name to lowercase.
45
+ *
46
+ * @default - false
47
+ */
48
+ readonly lowerCase?: boolean;
49
+ }
50
+ export interface StackBaseProps {
51
+ /**
52
+ * TerraConstruct UUID within the grid.
53
+ *
54
+ * UUID is generated by the CLI and ensures resource Identity
55
+ * is decoupled from resource tagging for consistency.
56
+ *
57
+ * UUID may be user provided for imported resources
58
+ */
59
+ readonly gridUUID: string;
60
+ /**
61
+ * The environment name passed in from the CLI
62
+ */
63
+ readonly environmentName: string;
64
+ /**
65
+ * Stores the state using a simple REST client.
66
+ *
67
+ * State will be fetched via GET, updated via POST, and purged with DELETE.
68
+ * The method used for updating is configurable.
69
+ *
70
+ * This backend optionally supports state locking.
71
+ * When locking support is enabled it will use LOCK and UNLOCK requests providing the lock info in the body.
72
+ * The endpoint should return a 423: Locked or 409: Conflict with the holding lock info when
73
+ * it's already taken, 200: OK for success. Any other status will be considered an error.
74
+ * The ID of the holding lock info will be added as a query parameter to state updates requests.
75
+ *
76
+ * Read more about this backend in the Terraform docs:
77
+ * https://developer.hashicorp.com/terraform/language/settings/backends/http
78
+ */
79
+ readonly gridBackendConfig?: HttpBackendConfig;
80
+ }
81
+ export interface IStack extends IConstruct {
82
+ /**
83
+ * Environment Name passed in from the CLI
84
+ */
85
+ readonly environmentName: string;
86
+ readonly gridUUID: string;
87
+ readonly gridBackend?: HttpBackend;
88
+ resolve(obj: any, preparing?: boolean): any;
89
+ uniqueResourceName(tfElement: TerraformElement | Node, options: UniqueResourceNameOptions): string;
90
+ uniqueResourceNamePrefix(tfElement: TerraformElement | Node, options: UniqueResourceNamePrefixOptions): string;
91
+ }
92
+ /**
93
+ * Base class for all TerraConstructs stacks
94
+ *
95
+ * Provides a reference to the grid UUID and environment name
96
+ */
97
+ export declare abstract class StackBase extends TerraformStack implements IStack {
98
+ /**
99
+ * Return whether the given object is a Stack.
100
+ *
101
+ * attribute detection since as 'instanceof' potentially fails across Library releases.
102
+ */
103
+ static isTerraStack(x: any): x is IStack;
104
+ /**
105
+ * Looks up the first stack scope in which `construct` is defined. Fails if there is no stack up the tree or the stack is not an IStack.
106
+ * @param construct The construct to start the search from.
107
+ */
108
+ static ofTerraConstruct(construct: IConstruct): IStack;
109
+ /**
110
+ * Returns a unique identifier for a construct based on its path within
111
+ * a TerraformStack. see uniqueResourceName, but with no separator, maximum length 255 and allows
112
+ * "_" and "-" on top of alphanumerical characters.
113
+ *
114
+ * @param construct The construct
115
+ * @returns a unique resource name based on the construct path
116
+ */
117
+ static uniqueId(construct: IConstruct | Node): string;
118
+ /**
119
+ * Returns a unique identifier for a construct based
120
+ * on its path within a TerraformStack.
121
+ *
122
+ * Throws if no TerraformStack is found within it's construct path.
123
+ *
124
+ * This function finds the id of the parent stack (non-nested)
125
+ * to the construct, and the ids of the components in the construct path.
126
+ *
127
+ * The user can define allowed special characters, a separator between the elements,
128
+ * and the maximum length of the resource name. The name includes a human readable portion rendered
129
+ * from the path components, with or without user defined separators, and a hash suffix.
130
+ * If the resource name is longer than the maximum length, it is trimmed in the middle.
131
+ *
132
+ * @param construct The construct
133
+ * @param options Options for defining the unique resource name
134
+ * @returns a unique resource name based on the construct path
135
+ */
136
+ private static uniqueResourceName;
137
+ /**
138
+ * Stack unique grid identifier
139
+ */
140
+ readonly gridUUID: string;
141
+ /**
142
+ * Environment Name passed in from the CLI
143
+ */
144
+ readonly environmentName: string;
145
+ /**
146
+ * The grid provided backend for state storage
147
+ */
148
+ readonly gridBackend?: HttpBackend;
149
+ constructor(scope: Construct, id: string, props: StackBaseProps);
150
+ /**
151
+ * Returns a Terraform-compatible unique identifier for a Terraform Element based
152
+ * on its path. This function finds the stackName of the parent stack (non-nested)
153
+ * to the construct, and the ids of the components in the construct path.
154
+ *
155
+ * The user can define allowed special characters, a separator between the elements,
156
+ * and the maximum length of the resource name. The name includes a human readable portion rendered
157
+ * from the path components, with or without user defined separators, and a hash suffix.
158
+ * If the resource name is longer than the maximum length, it is trimmed in the middle.
159
+ *
160
+ * @param tfElement The construct
161
+ * @param options Options for defining the unique resource name
162
+ * @returns a unique resource name based on the construct path
163
+ */
164
+ uniqueResourceName(tfElement: TerraformElement | Node, options: UniqueResourceNameOptions): string;
165
+ /**
166
+ * Returns a Terraform-compatible unique identifier for a Terraform Element based
167
+ * on its path. This function finds the stackName of the parent stack (non-nested)
168
+ * to the construct, and the ids of the components in the construct path.
169
+ *
170
+ * The user can define allowed special characters, a separator between the elements,
171
+ * and the maximum length of the resource name. The name includes a human readable portion rendered
172
+ * from the path components, with or without user defined separators, and depends on the
173
+ * resource provider to generate the random suffix.
174
+ *
175
+ * If the resource name is longer than the maximum length - suffixLength, it is trimmed in the middle.
176
+ *
177
+ * @param tfElement The construct
178
+ * @param options Options for defining the unique resource name
179
+ * @returns a unique resource name based on the construct path
180
+ */
181
+ uniqueResourceNamePrefix(tfElement: TerraformElement | Node, options: UniqueResourceNamePrefixOptions): string;
182
+ /** Resolve IResolvable in scope of this AwsStack */
183
+ resolve(obj: any, preparing?: boolean): any;
184
+ /**
185
+ * Convert an object, potentially containing tokens, to a JSON string
186
+ */
187
+ toJsonString(obj: any, space?: number): string;
188
+ }
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.StackBase = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdktf_1 = require("cdktf");
7
+ const constructs_1 = require("constructs");
8
+ const private_1 = require("./private");
9
+ const TOKEN_RESOLVER = new cdktf_1.DefaultTokenResolver(new cdktf_1.StringConcat());
10
+ const TERRASTACK_SYMBOL = Symbol.for("terraconstructs/lib.Stack");
11
+ /**
12
+ * Base class for all TerraConstructs stacks
13
+ *
14
+ * Provides a reference to the grid UUID and environment name
15
+ */
16
+ class StackBase extends cdktf_1.TerraformStack {
17
+ /**
18
+ * Return whether the given object is a Stack.
19
+ *
20
+ * attribute detection since as 'instanceof' potentially fails across Library releases.
21
+ */
22
+ static isTerraStack(x) {
23
+ return x !== null && typeof x === "object" && TERRASTACK_SYMBOL in x;
24
+ }
25
+ /**
26
+ * Looks up the first stack scope in which `construct` is defined. Fails if there is no stack up the tree or the stack is not an IStack.
27
+ * @param construct The construct to start the search from.
28
+ */
29
+ static ofTerraConstruct(construct) {
30
+ const s = cdktf_1.TerraformStack.of(construct);
31
+ if (StackBase.isTerraStack(s)) {
32
+ return s;
33
+ }
34
+ throw new Error(`Resource '${construct.constructor?.name}' at '${construct.node.path}' should be created in the scope of TerraConstruct IStack, but no IStack found`);
35
+ }
36
+ /**
37
+ * Returns a unique identifier for a construct based on its path within
38
+ * a TerraformStack. see uniqueResourceName, but with no separator, maximum length 255 and allows
39
+ * "_" and "-" on top of alphanumerical characters.
40
+ *
41
+ * @param construct The construct
42
+ * @returns a unique resource name based on the construct path
43
+ */
44
+ static uniqueId(construct) {
45
+ return StackBase.uniqueResourceName(construct, {
46
+ maxLength: 255,
47
+ // avoid https://github.com/aws/aws-cdk/issues/6421
48
+ allowedSpecialCharacters: "_-",
49
+ });
50
+ }
51
+ /**
52
+ * Returns a unique identifier for a construct based
53
+ * on its path within a TerraformStack.
54
+ *
55
+ * Throws if no TerraformStack is found within it's construct path.
56
+ *
57
+ * This function finds the id of the parent stack (non-nested)
58
+ * to the construct, and the ids of the components in the construct path.
59
+ *
60
+ * The user can define allowed special characters, a separator between the elements,
61
+ * and the maximum length of the resource name. The name includes a human readable portion rendered
62
+ * from the path components, with or without user defined separators, and a hash suffix.
63
+ * If the resource name is longer than the maximum length, it is trimmed in the middle.
64
+ *
65
+ * @param construct The construct
66
+ * @param options Options for defining the unique resource name
67
+ * @returns a unique resource name based on the construct path
68
+ */
69
+ static uniqueResourceName(construct, options) {
70
+ const node = constructs_1.Construct.isConstruct(construct) ? construct.node : construct;
71
+ const stack = node.scopes
72
+ .reverse()
73
+ .find((component) => cdktf_1.TerraformStack.isStack(component));
74
+ if (!stack) {
75
+ throw new Error("Unable to calculate a unique id without a stack in the construct path");
76
+ }
77
+ const specIndex = node.scopes.indexOf(stack);
78
+ const componentsPath = node.scopes
79
+ .slice(specIndex)
80
+ .map((component) => component.node.id);
81
+ return (0, private_1.makeUniqueResourceName)(componentsPath, options);
82
+ }
83
+ constructor(scope, id, props) {
84
+ super(scope, id);
85
+ this.gridUUID = props.gridUUID;
86
+ this.environmentName = props.environmentName;
87
+ Object.defineProperty(this, TERRASTACK_SYMBOL, { value: true });
88
+ if (props.gridBackendConfig) {
89
+ this.gridBackend = new cdktf_1.HttpBackend(this, props.gridBackendConfig);
90
+ }
91
+ // Map construct tree dependencies to ITerraformDependables
92
+ // ref: https://github.com/hashicorp/terraform-cdk/issues/2727#issuecomment-1473321075
93
+ cdktf_1.Aspects.of(this).add(new private_1.TerraformDependencyAspect());
94
+ // Aspects are invoked in synth after stack has been prepared
95
+ // this should ensure any resources added during `prepareStack()` are included in the dependency tree
96
+ // ref: https://github.com/hashicorp/terraform-cdk/blob/v0.20.9/packages/cdktf/lib/synthesize/synthesizer.ts#L121
97
+ }
98
+ /**
99
+ * Returns a Terraform-compatible unique identifier for a Terraform Element based
100
+ * on its path. This function finds the stackName of the parent stack (non-nested)
101
+ * to the construct, and the ids of the components in the construct path.
102
+ *
103
+ * The user can define allowed special characters, a separator between the elements,
104
+ * and the maximum length of the resource name. The name includes a human readable portion rendered
105
+ * from the path components, with or without user defined separators, and a hash suffix.
106
+ * If the resource name is longer than the maximum length, it is trimmed in the middle.
107
+ *
108
+ * @param tfElement The construct
109
+ * @param options Options for defining the unique resource name
110
+ * @returns a unique resource name based on the construct path
111
+ */
112
+ uniqueResourceName(tfElement, options) {
113
+ const node = constructs_1.Construct.isConstruct(tfElement) ? tfElement.node : tfElement;
114
+ const stack = cdktf_1.TerraformElement.isTerraformElement(tfElement)
115
+ ? tfElement.cdktfStack
116
+ : this;
117
+ const stackIndex = node.scopes.indexOf(stack);
118
+ const componentsPath = node.scopes
119
+ .slice(stackIndex)
120
+ .map((component) => component.node.id);
121
+ return (0, private_1.makeUniqueResourceName)(componentsPath, options);
122
+ }
123
+ /**
124
+ * Returns a Terraform-compatible unique identifier for a Terraform Element based
125
+ * on its path. This function finds the stackName of the parent stack (non-nested)
126
+ * to the construct, and the ids of the components in the construct path.
127
+ *
128
+ * The user can define allowed special characters, a separator between the elements,
129
+ * and the maximum length of the resource name. The name includes a human readable portion rendered
130
+ * from the path components, with or without user defined separators, and depends on the
131
+ * resource provider to generate the random suffix.
132
+ *
133
+ * If the resource name is longer than the maximum length - suffixLength, it is trimmed in the middle.
134
+ *
135
+ * @param tfElement The construct
136
+ * @param options Options for defining the unique resource name
137
+ * @returns a unique resource name based on the construct path
138
+ */
139
+ uniqueResourceNamePrefix(tfElement, options) {
140
+ const node = constructs_1.Construct.isConstruct(tfElement) ? tfElement.node : tfElement;
141
+ const stack = cdktf_1.TerraformElement.isTerraformElement(tfElement)
142
+ ? tfElement.cdktfStack
143
+ : this;
144
+ const stackIndex = node.scopes.indexOf(stack);
145
+ const componentsPath = node.scopes
146
+ .slice(stackIndex)
147
+ .map((component) => component.node.id);
148
+ return (0, private_1.makeUniqueResourceNamePrefix)(componentsPath, options);
149
+ }
150
+ /** Resolve IResolvable in scope of this AwsStack */
151
+ resolve(obj, preparing = false) {
152
+ return cdktf_1.Tokenization.resolve(obj, {
153
+ scope: this,
154
+ preparing,
155
+ resolver: TOKEN_RESOLVER,
156
+ });
157
+ }
158
+ /**
159
+ * Convert an object, potentially containing tokens, to a JSON string
160
+ */
161
+ toJsonString(obj, space) {
162
+ return cdktf_1.Lazy.stringValue({
163
+ produce: (ctx) => {
164
+ // First resolve Token objects with string concat... then JSON.stringify the resulting object
165
+ //
166
+ // unlike cloudformation, Terraform does not need an intrinsic wrapper?
167
+ // https://github.com/aws/aws-cdk/blob/8dca5079e1893122057f9e2c54c0da0ba644926e/packages/%40aws-cdk/core/lib/private/cloudformation-lang.ts#L73
168
+ // intrinsic wrapper without cross stack ref
169
+ // https://github.com/aws/aws-cdk/blob/14e4bc91ed5f0f8cb7c8ac9ee8a6de4da54e6585/packages/%40aws-cdk/core/lib/private/cloudformation-lang.ts#L50
170
+ const resolved = cdktf_1.Tokenization.resolve(obj, {
171
+ preparing: ctx.preparing,
172
+ scope: ctx.scope,
173
+ resolver: TOKEN_RESOLVER,
174
+ });
175
+ return JSON.stringify(resolved, undefined, space);
176
+ },
177
+ });
178
+ }
179
+ }
180
+ exports.StackBase = StackBase;
181
+ _a = JSII_RTTI_SYMBOL_1;
182
+ StackBase[_a] = { fqn: "terraconstructs.StackBase", version: "0.0.8" };
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGFjay1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBV2U7QUFDZiwyQ0FBeUQ7QUFDekQsdUNBSW1CO0FBRW5CLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQW9CLENBQUMsSUFBSSxvQkFBWSxFQUFFLENBQUMsQ0FBQztBQUVwRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQStHbEU7Ozs7R0FJRztBQUNILE1BQXNCLFNBQVUsU0FBUSxzQkFBYztJQUNwRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFNO1FBQy9CLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksaUJBQWlCLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBcUI7UUFDbEQsTUFBTSxDQUFDLEdBQUcsc0JBQWMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixhQUFhLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxnRkFBZ0YsQ0FDckosQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUE0QjtRQUNqRCxPQUFPLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUU7WUFDN0MsU0FBUyxFQUFFLEdBQUc7WUFDZCxtREFBbUQ7WUFDbkQsd0JBQXdCLEVBQUUsSUFBSTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0ssTUFBTSxDQUFDLGtCQUFrQixDQUMvQixTQUE0QixFQUM1QixPQUFrQztRQUVsQyxNQUFNLElBQUksR0FBRyxzQkFBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNO2FBQ3RCLE9BQU8sRUFBRTthQUNULElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsc0JBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUNiLHVFQUF1RSxDQUN4RSxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNO2FBQy9CLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLE9BQU8sSUFBQSxnQ0FBc0IsRUFBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQWlCRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLG1CQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCwyREFBMkQ7UUFDM0Qsc0ZBQXNGO1FBQ3RGLGVBQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksbUNBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELDZEQUE2RDtRQUM3RCxxR0FBcUc7UUFDckcsaUhBQWlIO0lBQ25ILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0ksa0JBQWtCLENBQ3ZCLFNBQWtDLEVBQ2xDLE9BQWtDO1FBRWxDLE1BQU0sSUFBSSxHQUFHLHNCQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDM0UsTUFBTSxLQUFLLEdBQUcsd0JBQWdCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO1lBQzFELENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU07YUFDL0IsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNqQixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFekMsT0FBTyxJQUFBLGdDQUFzQixFQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0ksd0JBQXdCLENBQzdCLFNBQWtDLEVBQ2xDLE9BQXdDO1FBRXhDLE1BQU0sSUFBSSxHQUFHLHNCQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDM0UsTUFBTSxLQUFLLEdBQUcsd0JBQWdCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO1lBQzFELENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU07YUFDL0IsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNqQixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFekMsT0FBTyxJQUFBLHNDQUE0QixFQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsb0RBQW9EO0lBQzdDLE9BQU8sQ0FBQyxHQUFRLEVBQUUsU0FBUyxHQUFHLEtBQUs7UUFDeEMsT0FBTyxvQkFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDL0IsS0FBSyxFQUFFLElBQUk7WUFDWCxTQUFTO1lBQ1QsUUFBUSxFQUFFLGNBQWM7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWSxDQUFDLEdBQVEsRUFBRSxLQUFjO1FBQzFDLE9BQU8sWUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN0QixPQUFPLEVBQUUsQ0FBQyxHQUFvQixFQUFFLEVBQUU7Z0JBQ2hDLDZGQUE2RjtnQkFDN0YsRUFBRTtnQkFDRix1RUFBdUU7Z0JBQ3ZFLCtJQUErSTtnQkFDL0ksNENBQTRDO2dCQUM1QywrSUFBK0k7Z0JBQy9JLE1BQU0sUUFBUSxHQUFHLG9CQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtvQkFDekMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO29CQUN4QixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7b0JBQ2hCLFFBQVEsRUFBRSxjQUFjO2lCQUN6QixDQUFDLENBQUM7Z0JBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBNU1ILDhCQTZNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFRlcnJhZm9ybVN0YWNrLFxuICBUZXJyYWZvcm1FbGVtZW50LFxuICBIdHRwQmFja2VuZENvbmZpZyxcbiAgSHR0cEJhY2tlbmQsXG4gIFRva2VuaXphdGlvbixcbiAgRGVmYXVsdFRva2VuUmVzb2x2ZXIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3Rva2Vucy9yZXNvbHZhYmxlLnRzI0wxNzZcbiAgU3RyaW5nQ29uY2F0LCAvLyBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi92MC4yMC45L3BhY2thZ2VzL2Nka3RmL2xpYi90b2tlbnMvcmVzb2x2YWJsZS50cyNMMTU2XG4gIEFzcGVjdHMsXG4gIElSZXNvbHZlQ29udGV4dCxcbiAgTGF6eSxcbn0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QsIE5vZGUgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgbWFrZVVuaXF1ZVJlc291cmNlTmFtZSxcbiAgbWFrZVVuaXF1ZVJlc291cmNlTmFtZVByZWZpeCxcbiAgVGVycmFmb3JtRGVwZW5kZW5jeUFzcGVjdCxcbn0gZnJvbSBcIi4vcHJpdmF0ZVwiO1xuXG5jb25zdCBUT0tFTl9SRVNPTFZFUiA9IG5ldyBEZWZhdWx0VG9rZW5SZXNvbHZlcihuZXcgU3RyaW5nQ29uY2F0KCkpO1xuXG5jb25zdCBURVJSQVNUQUNLX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJ0ZXJyYWNvbnN0cnVjdHMvbGliLlN0YWNrXCIpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNTYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9jb3JlL2xpYi9uYW1lcy50c1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgdW5pcXVlIHJlc291cmNlIG5hbWVfcHJlZml4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaXF1ZVJlc291cmNlTmFtZVByZWZpeE9wdGlvbnNcbiAgZXh0ZW5kcyBVbmlxdWVSZXNvdXJjZU5hbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIExlbmd0aCBvZiB0aGUgcmFuZG9tIGdlbmVyYXRlZCBzdWZmaXggYWRkZWQgYnkgc29tZSBUZXJyYWZvcm0gcHJvdmlkZXJzLlxuICAgKlxuICAgKiBOT1RFOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvaXNzdWVzLzYyNVxuICAgKiBAZGVmYXVsdCAtIDI2XG4gICAqL1xuICByZWFkb25seSBzdWZmaXhMZW5ndGg/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmlxdWVSZXNvdXJjZU5hbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMjU2XG4gICAqL1xuICByZWFkb25seSBtYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXBhcmF0b3IgdXNlZCBiZXR3ZWVuIHRoZSBwYXRoIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VwYXJhdG9yPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOb24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYWxsb3dlZCBpbiB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggdG8gYmUgYWRkZWQgaW50byB0aGUgc3RhY2sgbmFtZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBjb252ZXJ0IHRoZSByZXNvdXJjZSBuYW1lIHRvIGxvd2VyY2FzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbG93ZXJDYXNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0Jhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUZXJyYUNvbnN0cnVjdCBVVUlEIHdpdGhpbiB0aGUgZ3JpZC5cbiAgICpcbiAgICogVVVJRCBpcyBnZW5lcmF0ZWQgYnkgdGhlIENMSSBhbmQgZW5zdXJlcyByZXNvdXJjZSBJZGVudGl0eVxuICAgKiBpcyBkZWNvdXBsZWQgZnJvbSByZXNvdXJjZSB0YWdnaW5nIGZvciBjb25zaXN0ZW5jeS5cbiAgICpcbiAgICogVVVJRCBtYXkgYmUgdXNlciBwcm92aWRlZCBmb3IgaW1wb3J0ZWQgcmVzb3VyY2VzXG4gICAqL1xuICByZWFkb25seSBncmlkVVVJRDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgbmFtZSBwYXNzZWQgaW4gZnJvbSB0aGUgQ0xJXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogU3RvcmVzIHRoZSBzdGF0ZSB1c2luZyBhIHNpbXBsZSBSRVNUIGNsaWVudC5cbiAgICpcbiAgICogU3RhdGUgd2lsbCBiZSBmZXRjaGVkIHZpYSBHRVQsIHVwZGF0ZWQgdmlhIFBPU1QsIGFuZCBwdXJnZWQgd2l0aCBERUxFVEUuXG4gICAqIFRoZSBtZXRob2QgdXNlZCBmb3IgdXBkYXRpbmcgaXMgY29uZmlndXJhYmxlLlxuICAgKlxuICAgKiBUaGlzIGJhY2tlbmQgb3B0aW9uYWxseSBzdXBwb3J0cyBzdGF0ZSBsb2NraW5nLlxuICAgKiBXaGVuIGxvY2tpbmcgc3VwcG9ydCBpcyBlbmFibGVkIGl0IHdpbGwgdXNlIExPQ0sgYW5kIFVOTE9DSyByZXF1ZXN0cyBwcm92aWRpbmcgdGhlIGxvY2sgaW5mbyBpbiB0aGUgYm9keS5cbiAgICogVGhlIGVuZHBvaW50IHNob3VsZCByZXR1cm4gYSA0MjM6IExvY2tlZCBvciA0MDk6IENvbmZsaWN0IHdpdGggdGhlIGhvbGRpbmcgbG9jayBpbmZvIHdoZW5cbiAgICogaXQncyBhbHJlYWR5IHRha2VuLCAyMDA6IE9LIGZvciBzdWNjZXNzLiBBbnkgb3RoZXIgc3RhdHVzIHdpbGwgYmUgY29uc2lkZXJlZCBhbiBlcnJvci5cbiAgICogVGhlIElEIG9mIHRoZSBob2xkaW5nIGxvY2sgaW5mbyB3aWxsIGJlIGFkZGVkIGFzIGEgcXVlcnkgcGFyYW1ldGVyIHRvIHN0YXRlIHVwZGF0ZXMgcmVxdWVzdHMuXG4gICAqXG4gICAqIFJlYWQgbW9yZSBhYm91dCB0aGlzIGJhY2tlbmQgaW4gdGhlIFRlcnJhZm9ybSBkb2NzOlxuICAgKiBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9zZXR0aW5ncy9iYWNrZW5kcy9odHRwXG4gICAqL1xuICByZWFkb25seSBncmlkQmFja2VuZENvbmZpZz86IEh0dHBCYWNrZW5kQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdGFjayBleHRlbmRzIElDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogRW52aXJvbm1lbnQgTmFtZSBwYXNzZWQgaW4gZnJvbSB0aGUgQ0xJXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZ3JpZFVVSUQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZ3JpZEJhY2tlbmQ/OiBIdHRwQmFja2VuZDtcbiAgcmVzb2x2ZShvYmo6IGFueSwgcHJlcGFyaW5nPzogYm9vbGVhbik6IGFueTtcbiAgdW5pcXVlUmVzb3VyY2VOYW1lKFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9uczogVW5pcXVlUmVzb3VyY2VOYW1lT3B0aW9ucyxcbiAgKTogc3RyaW5nO1xuICB1bmlxdWVSZXNvdXJjZU5hbWVQcmVmaXgoXG4gICAgdGZFbGVtZW50OiBUZXJyYWZvcm1FbGVtZW50IHwgTm9kZSxcbiAgICBvcHRpb25zOiBVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXhPcHRpb25zLFxuICApOiBzdHJpbmc7XG4gIC8vIHRvSnNvblN0cmluZyhvYmo6IGFueSwgc3BhY2U/OiBudW1iZXIpOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIFRlcnJhQ29uc3RydWN0cyBzdGFja3NcbiAqXG4gKiBQcm92aWRlcyBhIHJlZmVyZW5jZSB0byB0aGUgZ3JpZCBVVUlEIGFuZCBlbnZpcm9ubWVudCBuYW1lXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGFja0Jhc2UgZXh0ZW5kcyBUZXJyYWZvcm1TdGFjayBpbXBsZW1lbnRzIElTdGFjayB7XG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgU3RhY2suXG4gICAqXG4gICAqIGF0dHJpYnV0ZSBkZXRlY3Rpb24gc2luY2UgYXMgJ2luc3RhbmNlb2YnIHBvdGVudGlhbGx5IGZhaWxzIGFjcm9zcyBMaWJyYXJ5IHJlbGVhc2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1RlcnJhU3RhY2soeDogYW55KTogeCBpcyBJU3RhY2sge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIFRFUlJBU1RBQ0tfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogTG9va3MgdXAgdGhlIGZpcnN0IHN0YWNrIHNjb3BlIGluIHdoaWNoIGBjb25zdHJ1Y3RgIGlzIGRlZmluZWQuIEZhaWxzIGlmIHRoZXJlIGlzIG5vIHN0YWNrIHVwIHRoZSB0cmVlIG9yIHRoZSBzdGFjayBpcyBub3QgYW4gSVN0YWNrLlxuICAgKiBAcGFyYW0gY29uc3RydWN0IFRoZSBjb25zdHJ1Y3QgdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZlRlcnJhQ29uc3RydWN0KGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IElTdGFjayB7XG4gICAgY29uc3QgcyA9IFRlcnJhZm9ybVN0YWNrLm9mKGNvbnN0cnVjdCk7XG4gICAgaWYgKFN0YWNrQmFzZS5pc1RlcnJhU3RhY2socykpIHtcbiAgICAgIHJldHVybiBzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgUmVzb3VyY2UgJyR7Y29uc3RydWN0LmNvbnN0cnVjdG9yPy5uYW1lfScgYXQgJyR7Y29uc3RydWN0Lm5vZGUucGF0aH0nIHNob3VsZCBiZSBjcmVhdGVkIGluIHRoZSBzY29wZSBvZiBUZXJyYUNvbnN0cnVjdCBJU3RhY2ssIGJ1dCBubyBJU3RhY2sgZm91bmRgLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGNvbnN0cnVjdCBiYXNlZCBvbiBpdHMgcGF0aCB3aXRoaW5cbiAgICogYSBUZXJyYWZvcm1TdGFjay4gc2VlIHVuaXF1ZVJlc291cmNlTmFtZSwgYnV0IHdpdGggbm8gc2VwYXJhdG9yLCBtYXhpbXVtIGxlbmd0aCAyNTUgYW5kIGFsbG93c1xuICAgKiAgXCJfXCIgYW5kIFwiLVwiIG9uIHRvcCBvZiBhbHBoYW51bWVyaWNhbCBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gY29uc3RydWN0IFRoZSBjb25zdHJ1Y3RcbiAgICogQHJldHVybnMgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZSBiYXNlZCBvbiB0aGUgY29uc3RydWN0IHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdW5pcXVlSWQoY29uc3RydWN0OiBJQ29uc3RydWN0IHwgTm9kZSkge1xuICAgIHJldHVybiBTdGFja0Jhc2UudW5pcXVlUmVzb3VyY2VOYW1lKGNvbnN0cnVjdCwge1xuICAgICAgbWF4TGVuZ3RoOiAyNTUsXG4gICAgICAvLyBhdm9pZCBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzY0MjFcbiAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogXCJfLVwiLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBjb25zdHJ1Y3QgYmFzZWRcbiAgICogb24gaXRzIHBhdGggd2l0aGluIGEgVGVycmFmb3JtU3RhY2suXG4gICAqXG4gICAqIFRocm93cyBpZiBubyBUZXJyYWZvcm1TdGFjayBpcyBmb3VuZCB3aXRoaW4gaXQncyBjb25zdHJ1Y3QgcGF0aC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgaWQgb2YgdGhlIHBhcmVudCBzdGFjayAobm9uLW5lc3RlZClcbiAgICogdG8gdGhlIGNvbnN0cnVjdCwgYW5kIHRoZSBpZHMgb2YgdGhlIGNvbXBvbmVudHMgaW4gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKlxuICAgKiBUaGUgdXNlciBjYW4gZGVmaW5lIGFsbG93ZWQgc3BlY2lhbCBjaGFyYWN0ZXJzLCBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBlbGVtZW50cyxcbiAgICogYW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgcmVzb3VyY2UgbmFtZS4gVGhlIG5hbWUgaW5jbHVkZXMgYSBodW1hbiByZWFkYWJsZSBwb3J0aW9uIHJlbmRlcmVkXG4gICAqIGZyb20gdGhlIHBhdGggY29tcG9uZW50cywgd2l0aCBvciB3aXRob3V0IHVzZXIgZGVmaW5lZCBzZXBhcmF0b3JzLCBhbmQgYSBoYXNoIHN1ZmZpeC5cbiAgICogSWYgdGhlIHJlc291cmNlIG5hbWUgaXMgbG9uZ2VyIHRoYW4gdGhlIG1heGltdW0gbGVuZ3RoLCBpdCBpcyB0cmltbWVkIGluIHRoZSBtaWRkbGUuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBkZWZpbmluZyB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWVcbiAgICogQHJldHVybnMgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZSBiYXNlZCBvbiB0aGUgY29uc3RydWN0IHBhdGhcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHVuaXF1ZVJlc291cmNlTmFtZShcbiAgICBjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QgfCBOb2RlLFxuICAgIG9wdGlvbnM6IFVuaXF1ZVJlc291cmNlTmFtZU9wdGlvbnMsXG4gICkge1xuICAgIGNvbnN0IG5vZGUgPSBDb25zdHJ1Y3QuaXNDb25zdHJ1Y3QoY29uc3RydWN0KSA/IGNvbnN0cnVjdC5ub2RlIDogY29uc3RydWN0O1xuICAgIGNvbnN0IHN0YWNrID0gbm9kZS5zY29wZXNcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5maW5kKChjb21wb25lbnQpID0+IFRlcnJhZm9ybVN0YWNrLmlzU3RhY2soY29tcG9uZW50KSk7XG5cbiAgICBpZiAoIXN0YWNrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVW5hYmxlIHRvIGNhbGN1bGF0ZSBhIHVuaXF1ZSBpZCB3aXRob3V0IGEgc3RhY2sgaW4gdGhlIGNvbnN0cnVjdCBwYXRoXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNwZWNJbmRleCA9IG5vZGUuc2NvcGVzLmluZGV4T2Yoc3RhY2spO1xuICAgIGNvbnN0IGNvbXBvbmVudHNQYXRoID0gbm9kZS5zY29wZXNcbiAgICAgIC5zbGljZShzcGVjSW5kZXgpXG4gICAgICAubWFwKChjb21wb25lbnQpID0+IGNvbXBvbmVudC5ub2RlLmlkKTtcblxuICAgIHJldHVybiBtYWtlVW5pcXVlUmVzb3VyY2VOYW1lKGNvbXBvbmVudHNQYXRoLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFjayB1bmlxdWUgZ3JpZCBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JpZFVVSUQ6IHN0cmluZztcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgTmFtZSBwYXNzZWQgaW4gZnJvbSB0aGUgQ0xJXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW52aXJvbm1lbnROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBncmlkIHByb3ZpZGVkIGJhY2tlbmQgZm9yIHN0YXRlIHN0b3JhZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBncmlkQmFja2VuZD86IEh0dHBCYWNrZW5kO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFja0Jhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5ncmlkVVVJRCA9IHByb3BzLmdyaWRVVUlEO1xuICAgIHRoaXMuZW52aXJvbm1lbnROYW1lID0gcHJvcHMuZW52aXJvbm1lbnROYW1lO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBURVJSQVNUQUNLX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICBpZiAocHJvcHMuZ3JpZEJhY2tlbmRDb25maWcpIHtcbiAgICAgIHRoaXMuZ3JpZEJhY2tlbmQgPSBuZXcgSHR0cEJhY2tlbmQodGhpcywgcHJvcHMuZ3JpZEJhY2tlbmRDb25maWcpO1xuICAgIH1cblxuICAgIC8vIE1hcCBjb25zdHJ1Y3QgdHJlZSBkZXBlbmRlbmNpZXMgdG8gSVRlcnJhZm9ybURlcGVuZGFibGVzXG4gICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvaXNzdWVzLzI3MjcjaXNzdWVjb21tZW50LTE0NzMzMjEwNzVcbiAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChuZXcgVGVycmFmb3JtRGVwZW5kZW5jeUFzcGVjdCgpKTtcbiAgICAvLyBBc3BlY3RzIGFyZSBpbnZva2VkIGluIHN5bnRoIGFmdGVyIHN0YWNrIGhhcyBiZWVuIHByZXBhcmVkXG4gICAgLy8gdGhpcyBzaG91bGQgZW5zdXJlIGFueSByZXNvdXJjZXMgYWRkZWQgZHVyaW5nIGBwcmVwYXJlU3RhY2soKWAgYXJlIGluY2x1ZGVkIGluIHRoZSBkZXBlbmRlbmN5IHRyZWVcbiAgICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3N5bnRoZXNpemUvc3ludGhlc2l6ZXIudHMjTDEyMVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBUZXJyYWZvcm0tY29tcGF0aWJsZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBUZXJyYWZvcm0gRWxlbWVudCBiYXNlZFxuICAgKiBvbiBpdHMgcGF0aC4gVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgc3RhY2tOYW1lIG9mIHRoZSBwYXJlbnQgc3RhY2sgKG5vbi1uZXN0ZWQpXG4gICAqIHRvIHRoZSBjb25zdHJ1Y3QsIGFuZCB0aGUgaWRzIG9mIHRoZSBjb21wb25lbnRzIGluIHRoZSBjb25zdHJ1Y3QgcGF0aC5cbiAgICpcbiAgICogVGhlIHVzZXIgY2FuIGRlZmluZSBhbGxvd2VkIHNwZWNpYWwgY2hhcmFjdGVycywgYSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgZWxlbWVudHMsXG4gICAqIGFuZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIHJlc291cmNlIG5hbWUuIFRoZSBuYW1lIGluY2x1ZGVzIGEgaHVtYW4gcmVhZGFibGUgcG9ydGlvbiByZW5kZXJlZFxuICAgKiBmcm9tIHRoZSBwYXRoIGNvbXBvbmVudHMsIHdpdGggb3Igd2l0aG91dCB1c2VyIGRlZmluZWQgc2VwYXJhdG9ycywgYW5kIGEgaGFzaCBzdWZmaXguXG4gICAqIElmIHRoZSByZXNvdXJjZSBuYW1lIGlzIGxvbmdlciB0aGFuIHRoZSBtYXhpbXVtIGxlbmd0aCwgaXQgaXMgdHJpbW1lZCBpbiB0aGUgbWlkZGxlLlxuICAgKlxuICAgKiBAcGFyYW0gdGZFbGVtZW50IFRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZGVmaW5pbmcgdGhlIHVuaXF1ZSByZXNvdXJjZSBuYW1lXG4gICAqIEByZXR1cm5zIGEgdW5pcXVlIHJlc291cmNlIG5hbWUgYmFzZWQgb24gdGhlIGNvbnN0cnVjdCBwYXRoXG4gICAqL1xuICBwdWJsaWMgdW5pcXVlUmVzb3VyY2VOYW1lKFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9uczogVW5pcXVlUmVzb3VyY2VOYW1lT3B0aW9ucyxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBub2RlID0gQ29uc3RydWN0LmlzQ29uc3RydWN0KHRmRWxlbWVudCkgPyB0ZkVsZW1lbnQubm9kZSA6IHRmRWxlbWVudDtcbiAgICBjb25zdCBzdGFjayA9IFRlcnJhZm9ybUVsZW1lbnQuaXNUZXJyYWZvcm1FbGVtZW50KHRmRWxlbWVudClcbiAgICAgID8gdGZFbGVtZW50LmNka3RmU3RhY2tcbiAgICAgIDogdGhpcztcbiAgICBjb25zdCBzdGFja0luZGV4ID0gbm9kZS5zY29wZXMuaW5kZXhPZihzdGFjayk7XG4gICAgY29uc3QgY29tcG9uZW50c1BhdGggPSBub2RlLnNjb3Blc1xuICAgICAgLnNsaWNlKHN0YWNrSW5kZXgpXG4gICAgICAubWFwKChjb21wb25lbnQpID0+IGNvbXBvbmVudC5ub2RlLmlkKTtcblxuICAgIHJldHVybiBtYWtlVW5pcXVlUmVzb3VyY2VOYW1lKGNvbXBvbmVudHNQYXRoLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgVGVycmFmb3JtLWNvbXBhdGlibGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgVGVycmFmb3JtIEVsZW1lbnQgYmFzZWRcbiAgICogb24gaXRzIHBhdGguIFRoaXMgZnVuY3Rpb24gZmluZHMgdGhlIHN0YWNrTmFtZSBvZiB0aGUgcGFyZW50IHN0YWNrIChub24tbmVzdGVkKVxuICAgKiB0byB0aGUgY29uc3RydWN0LCBhbmQgdGhlIGlkcyBvZiB0aGUgY29tcG9uZW50cyBpbiB0aGUgY29uc3RydWN0IHBhdGguXG4gICAqXG4gICAqIFRoZSB1c2VyIGNhbiBkZWZpbmUgYWxsb3dlZCBzcGVjaWFsIGNoYXJhY3RlcnMsIGEgc2VwYXJhdG9yIGJldHdlZW4gdGhlIGVsZW1lbnRzLFxuICAgKiBhbmQgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSByZXNvdXJjZSBuYW1lLiBUaGUgbmFtZSBpbmNsdWRlcyBhIGh1bWFuIHJlYWRhYmxlIHBvcnRpb24gcmVuZGVyZWRcbiAgICogZnJvbSB0aGUgcGF0aCBjb21wb25lbnRzLCB3aXRoIG9yIHdpdGhvdXQgdXNlciBkZWZpbmVkIHNlcGFyYXRvcnMsIGFuZCBkZXBlbmRzIG9uIHRoZVxuICAgKiByZXNvdXJjZSBwcm92aWRlciB0byBnZW5lcmF0ZSB0aGUgcmFuZG9tIHN1ZmZpeC5cbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIG5hbWUgaXMgbG9uZ2VyIHRoYW4gdGhlIG1heGltdW0gbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBpdCBpcyB0cmltbWVkIGluIHRoZSBtaWRkbGUuXG4gICAqXG4gICAqIEBwYXJhbSB0ZkVsZW1lbnQgVGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBkZWZpbmluZyB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWVcbiAgICogQHJldHVybnMgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZSBiYXNlZCBvbiB0aGUgY29uc3RydWN0IHBhdGhcbiAgICovXG4gIHB1YmxpYyB1bmlxdWVSZXNvdXJjZU5hbWVQcmVmaXgoXG4gICAgdGZFbGVtZW50OiBUZXJyYWZvcm1FbGVtZW50IHwgTm9kZSxcbiAgICBvcHRpb25zOiBVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXhPcHRpb25zLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vZGUgPSBDb25zdHJ1Y3QuaXNDb25zdHJ1Y3QodGZFbGVtZW50KSA/IHRmRWxlbWVudC5ub2RlIDogdGZFbGVtZW50O1xuICAgIGNvbnN0IHN0YWNrID0gVGVycmFmb3JtRWxlbWVudC5pc1RlcnJhZm9ybUVsZW1lbnQodGZFbGVtZW50KVxuICAgICAgPyB0ZkVsZW1lbnQuY2RrdGZTdGFja1xuICAgICAgOiB0aGlzO1xuICAgIGNvbnN0IHN0YWNrSW5kZXggPSBub2RlLnNjb3Blcy5pbmRleE9mKHN0YWNrKTtcbiAgICBjb25zdCBjb21wb25lbnRzUGF0aCA9IG5vZGUuc2NvcGVzXG4gICAgICAuc2xpY2Uoc3RhY2tJbmRleClcbiAgICAgIC5tYXAoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Lm5vZGUuaWQpO1xuXG4gICAgcmV0dXJuIG1ha2VVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXgoY29tcG9uZW50c1BhdGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqIFJlc29sdmUgSVJlc29sdmFibGUgaW4gc2NvcGUgb2YgdGhpcyBBd3NTdGFjayAqL1xuICBwdWJsaWMgcmVzb2x2ZShvYmo6IGFueSwgcHJlcGFyaW5nID0gZmFsc2UpOiBhbnkge1xuICAgIHJldHVybiBUb2tlbml6YXRpb24ucmVzb2x2ZShvYmosIHtcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgcHJlcGFyaW5nLFxuICAgICAgcmVzb2x2ZXI6IFRPS0VOX1JFU09MVkVSLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYW4gb2JqZWN0LCBwb3RlbnRpYWxseSBjb250YWluaW5nIHRva2VucywgdG8gYSBKU09OIHN0cmluZ1xuICAgKi9cbiAgcHVibGljIHRvSnNvblN0cmluZyhvYmo6IGFueSwgc3BhY2U/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBMYXp5LnN0cmluZ1ZhbHVlKHtcbiAgICAgIHByb2R1Y2U6IChjdHg6IElSZXNvbHZlQ29udGV4dCkgPT4ge1xuICAgICAgICAvLyBGaXJzdCByZXNvbHZlIFRva2VuIG9iamVjdHMgd2l0aCBzdHJpbmcgY29uY2F0Li4uIHRoZW4gSlNPTi5zdHJpbmdpZnkgdGhlIHJlc3VsdGluZyBvYmplY3RcbiAgICAgICAgLy9cbiAgICAgICAgLy8gdW5saWtlIGNsb3VkZm9ybWF0aW9uLCBUZXJyYWZvcm0gZG9lcyBub3QgbmVlZCBhbiBpbnRyaW5zaWMgd3JhcHBlcj9cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvOGRjYTUwNzllMTg5MzEyMjA1N2Y5ZTJjNTRjMGRhMGJhNjQ0OTI2ZS9wYWNrYWdlcy8lNDBhd3MtY2RrL2NvcmUvbGliL3ByaXZhdGUvY2xvdWRmb3JtYXRpb24tbGFuZy50cyNMNzNcbiAgICAgICAgLy8gaW50cmluc2ljIHdyYXBwZXIgd2l0aG91dCBjcm9zcyBzdGFjayByZWZcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvMTRlNGJjOTFlZDVmMGY4Y2I3YzhhYzllZThhNmRlNGRhNTRlNjU4NS9wYWNrYWdlcy8lNDBhd3MtY2RrL2NvcmUvbGliL3ByaXZhdGUvY2xvdWRmb3JtYXRpb24tbGFuZy50cyNMNTBcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBUb2tlbml6YXRpb24ucmVzb2x2ZShvYmosIHtcbiAgICAgICAgICBwcmVwYXJpbmc6IGN0eC5wcmVwYXJpbmcsXG4gICAgICAgICAgc2NvcGU6IGN0eC5zY29wZSxcbiAgICAgICAgICByZXNvbHZlcjogVE9LRU5fUkVTT0xWRVIsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzb2x2ZWQsIHVuZGVmaW5lZCwgc3BhY2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
package/lib/token.d.ts ADDED
@@ -0,0 +1,32 @@
1
+ /**
2
+ * An enum-like class that represents the result of comparing two Tokens.
3
+ * The return type of `Token.compareStrings`.
4
+ */
5
+ export declare class TokenComparison {
6
+ /**
7
+ * This means we're certain the two components are NOT
8
+ * Tokens, and identical.
9
+ */
10
+ static readonly SAME: TokenComparison;
11
+ /**
12
+ * This means we're certain the two components are NOT
13
+ * Tokens, and different.
14
+ */
15
+ static readonly DIFFERENT: TokenComparison;
16
+ /** This means exactly one of the components is a Token. */
17
+ static readonly ONE_UNRESOLVED: TokenComparison;
18
+ /** This means both components are Tokens. */
19
+ static readonly BOTH_UNRESOLVED: TokenComparison;
20
+ private constructor();
21
+ }
22
+ /** Compare two strings that might contain Tokens with each other. */
23
+ export declare function tokenCompareStrings(possibleToken1: string, possibleToken2: string): TokenComparison;
24
+ /**
25
+ * Call the given function only if all given values are resolved
26
+ *
27
+ * Exported as a function since it will be used by TypeScript modules, but
28
+ * can't be exposed via JSII because of the generics.
29
+ */
30
+ export declare function withResolved<A>(a: A, fn: (a: A) => void): void;
31
+ export declare function withResolved<A, B>(a: A, b: B, fn: (a: A, b: B) => void): void;
32
+ export declare function withResolved<A, B, C>(a: A, b: B, c: C, fn: (a: A, b: B, c: C) => void): void;
package/lib/token.js ADDED
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withResolved = exports.tokenCompareStrings = exports.TokenComparison = void 0;
4
+ const cdktf_1 = require("cdktf");
5
+ // https://github.com/aws/aws-cdk/blob/v2.150.0/packages/aws-cdk-lib/core/lib/token.ts
6
+ /**
7
+ * An enum-like class that represents the result of comparing two Tokens.
8
+ * The return type of `Token.compareStrings`.
9
+ */
10
+ class TokenComparison {
11
+ constructor() { }
12
+ }
13
+ exports.TokenComparison = TokenComparison;
14
+ /**
15
+ * This means we're certain the two components are NOT
16
+ * Tokens, and identical.
17
+ */
18
+ TokenComparison.SAME = new TokenComparison();
19
+ /**
20
+ * This means we're certain the two components are NOT
21
+ * Tokens, and different.
22
+ */
23
+ TokenComparison.DIFFERENT = new TokenComparison();
24
+ /** This means exactly one of the components is a Token. */
25
+ TokenComparison.ONE_UNRESOLVED = new TokenComparison();
26
+ /** This means both components are Tokens. */
27
+ TokenComparison.BOTH_UNRESOLVED = new TokenComparison();
28
+ /** Compare two strings that might contain Tokens with each other. */
29
+ function tokenCompareStrings(possibleToken1, possibleToken2) {
30
+ const firstIsUnresolved = cdktf_1.Token.isUnresolved(possibleToken1);
31
+ const secondIsUnresolved = cdktf_1.Token.isUnresolved(possibleToken2);
32
+ if (firstIsUnresolved && secondIsUnresolved) {
33
+ return TokenComparison.BOTH_UNRESOLVED;
34
+ }
35
+ if (firstIsUnresolved || secondIsUnresolved) {
36
+ return TokenComparison.ONE_UNRESOLVED;
37
+ }
38
+ return possibleToken1 === possibleToken2
39
+ ? TokenComparison.SAME
40
+ : TokenComparison.DIFFERENT;
41
+ }
42
+ exports.tokenCompareStrings = tokenCompareStrings;
43
+ function withResolved(...args) {
44
+ if (args.length < 2) {
45
+ return;
46
+ }
47
+ const argArray = args.slice(0, args.length - 1);
48
+ if (argArray.some(cdktf_1.Token.isUnresolved)) {
49
+ return;
50
+ }
51
+ args[args.length - 1].apply(arguments, argArray);
52
+ }
53
+ exports.withResolved = withResolved;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQThCO0FBQzlCLHNGQUFzRjtBQUV0Rjs7O0dBR0c7QUFDSCxNQUFhLGVBQWU7SUFtQjFCLGdCQUF1QixDQUFDOztBQW5CMUIsMENBb0JDO0FBbkJDOzs7R0FHRztBQUNvQixvQkFBSSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFcEQ7OztHQUdHO0FBQ29CLHlCQUFTLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUV6RCwyREFBMkQ7QUFDcEMsOEJBQWMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0FBRTlELDZDQUE2QztBQUN0QiwrQkFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFLakUscUVBQXFFO0FBQ3JFLFNBQWdCLG1CQUFtQixDQUNqQyxjQUFzQixFQUN0QixjQUFzQjtJQUV0QixNQUFNLGlCQUFpQixHQUFHLGFBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxhQUFLLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTlELElBQUksaUJBQWlCLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUM1QyxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUM7SUFDekMsQ0FBQztJQUNELElBQUksaUJBQWlCLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUM1QyxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8sY0FBYyxLQUFLLGNBQWM7UUFDdEMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJO1FBQ3RCLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO0FBQ2hDLENBQUM7QUFqQkQsa0RBaUJDO0FBZ0JELFNBQWdCLFlBQVksQ0FBQyxHQUFHLElBQVc7SUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFURCxvQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNTAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9jb3JlL2xpYi90b2tlbi50c1xuXG4vKipcbiAqIEFuIGVudW0tbGlrZSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBjb21wYXJpbmcgdHdvIFRva2Vucy5cbiAqIFRoZSByZXR1cm4gdHlwZSBvZiBgVG9rZW4uY29tcGFyZVN0cmluZ3NgLlxuICovXG5leHBvcnQgY2xhc3MgVG9rZW5Db21wYXJpc29uIHtcbiAgLyoqXG4gICAqIFRoaXMgbWVhbnMgd2UncmUgY2VydGFpbiB0aGUgdHdvIGNvbXBvbmVudHMgYXJlIE5PVFxuICAgKiBUb2tlbnMsIGFuZCBpZGVudGljYWwuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNBTUUgPSBuZXcgVG9rZW5Db21wYXJpc29uKCk7XG5cbiAgLyoqXG4gICAqIFRoaXMgbWVhbnMgd2UncmUgY2VydGFpbiB0aGUgdHdvIGNvbXBvbmVudHMgYXJlIE5PVFxuICAgKiBUb2tlbnMsIGFuZCBkaWZmZXJlbnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJRkZFUkVOVCA9IG5ldyBUb2tlbkNvbXBhcmlzb24oKTtcblxuICAvKiogVGhpcyBtZWFucyBleGFjdGx5IG9uZSBvZiB0aGUgY29tcG9uZW50cyBpcyBhIFRva2VuLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9ORV9VTlJFU09MVkVEID0gbmV3IFRva2VuQ29tcGFyaXNvbigpO1xuXG4gIC8qKiBUaGlzIG1lYW5zIGJvdGggY29tcG9uZW50cyBhcmUgVG9rZW5zLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJPVEhfVU5SRVNPTFZFRCA9IG5ldyBUb2tlbkNvbXBhcmlzb24oKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cblxuLyoqIENvbXBhcmUgdHdvIHN0cmluZ3MgdGhhdCBtaWdodCBjb250YWluIFRva2VucyB3aXRoIGVhY2ggb3RoZXIuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5Db21wYXJlU3RyaW5ncyhcbiAgcG9zc2libGVUb2tlbjE6IHN0cmluZyxcbiAgcG9zc2libGVUb2tlbjI6IHN0cmluZyxcbik6IFRva2VuQ29tcGFyaXNvbiB7XG4gIGNvbnN0IGZpcnN0SXNVbnJlc29sdmVkID0gVG9rZW4uaXNVbnJlc29sdmVkKHBvc3NpYmxlVG9rZW4xKTtcbiAgY29uc3Qgc2Vjb25kSXNVbnJlc29sdmVkID0gVG9rZW4uaXNVbnJlc29sdmVkKHBvc3NpYmxlVG9rZW4yKTtcblxuICBpZiAoZmlyc3RJc1VucmVzb2x2ZWQgJiYgc2Vjb25kSXNVbnJlc29sdmVkKSB7XG4gICAgcmV0dXJuIFRva2VuQ29tcGFyaXNvbi5CT1RIX1VOUkVTT0xWRUQ7XG4gIH1cbiAgaWYgKGZpcnN0SXNVbnJlc29sdmVkIHx8IHNlY29uZElzVW5yZXNvbHZlZCkge1xuICAgIHJldHVybiBUb2tlbkNvbXBhcmlzb24uT05FX1VOUkVTT0xWRUQ7XG4gIH1cblxuICByZXR1cm4gcG9zc2libGVUb2tlbjEgPT09IHBvc3NpYmxlVG9rZW4yXG4gICAgPyBUb2tlbkNvbXBhcmlzb24uU0FNRVxuICAgIDogVG9rZW5Db21wYXJpc29uLkRJRkZFUkVOVDtcbn1cblxuLyoqXG4gKiBDYWxsIHRoZSBnaXZlbiBmdW5jdGlvbiBvbmx5IGlmIGFsbCBnaXZlbiB2YWx1ZXMgYXJlIHJlc29sdmVkXG4gKlxuICogRXhwb3J0ZWQgYXMgYSBmdW5jdGlvbiBzaW5jZSBpdCB3aWxsIGJlIHVzZWQgYnkgVHlwZVNjcmlwdCBtb2R1bGVzLCBidXRcbiAqIGNhbid0IGJlIGV4cG9zZWQgdmlhIEpTSUkgYmVjYXVzZSBvZiB0aGUgZ2VuZXJpY3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVzb2x2ZWQ8QT4oYTogQSwgZm46IChhOiBBKSA9PiB2b2lkKTogdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVzb2x2ZWQ8QSwgQj4oYTogQSwgYjogQiwgZm46IChhOiBBLCBiOiBCKSA9PiB2b2lkKTogdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVzb2x2ZWQ8QSwgQiwgQz4oXG4gIGE6IEEsXG4gIGI6IEIsXG4gIGM6IEMsXG4gIGZuOiAoYTogQSwgYjogQiwgYzogQykgPT4gdm9pZCxcbik6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc29sdmVkKC4uLmFyZ3M6IGFueVtdKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgYXJnQXJyYXkgPSBhcmdzLnNsaWNlKDAsIGFyZ3MubGVuZ3RoIC0gMSk7XG4gIGlmIChhcmdBcnJheS5zb21lKFRva2VuLmlzVW5yZXNvbHZlZCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYXJnc1thcmdzLmxlbmd0aCAtIDFdLmFwcGx5KGFyZ3VtZW50cywgYXJnQXJyYXkpO1xufVxuIl19
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,47 @@
1
+ # Camel Case
2
+
3
+ [![NPM version][npm-image]][npm-url]
4
+ [![NPM downloads][downloads-image]][downloads-url]
5
+ [![Bundle size][bundlephobia-image]][bundlephobia-url]
6
+
7
+ > Transform into a string with the separator denoted by the next word capitalized.
8
+
9
+ ## Installation
10
+
11
+ ```
12
+ npm install camel-case --save
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ ```js
18
+ import { camelCase } from "camel-case";
19
+
20
+ camelCase("string"); //=> "string"
21
+ camelCase("dot.case"); //=> "dotCase"
22
+ camelCase("PascalCase"); //=> "pascalCase"
23
+ camelCase("version 1.2.10"); //=> "version_1_2_10"
24
+ ```
25
+
26
+ The function also accepts [`options`](https://github.com/blakeembrey/change-case#options).
27
+
28
+ ### Merge Numbers
29
+
30
+ If you'd like to remove the behavior prefixing `_` before numbers, you can use `camelCaseTransformMerge`:
31
+
32
+ ```js
33
+ import { camelCaseTransformMerge } from "camel-case";
34
+
35
+ camelCase("version 12", { transform: camelCaseTransformMerge }); //=> "version12"
36
+ ```
37
+
38
+ ## License
39
+
40
+ MIT
41
+
42
+ [npm-image]: https://img.shields.io/npm/v/camel-case.svg?style=flat
43
+ [npm-url]: https://npmjs.org/package/camel-case
44
+ [downloads-image]: https://img.shields.io/npm/dm/camel-case.svg?style=flat
45
+ [downloads-url]: https://npmjs.org/package/camel-case
46
+ [bundlephobia-image]: https://img.shields.io/bundlephobia/minzip/camel-case.svg
47
+ [bundlephobia-url]: https://bundlephobia.com/result?p=camel-case
@@ -0,0 +1,5 @@
1
+ import { Options } from "pascal-case";
2
+ export { Options };
3
+ export declare function camelCaseTransform(input: string, index: number): string;
4
+ export declare function camelCaseTransformMerge(input: string, index: number): string;
5
+ export declare function camelCase(input: string, options?: Options): string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.camelCase = exports.camelCaseTransformMerge = exports.camelCaseTransform = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var pascal_case_1 = require("pascal-case");
6
+ function camelCaseTransform(input, index) {
7
+ if (index === 0)
8
+ return input.toLowerCase();
9
+ return pascal_case_1.pascalCaseTransform(input, index);
10
+ }
11
+ exports.camelCaseTransform = camelCaseTransform;
12
+ function camelCaseTransformMerge(input, index) {
13
+ if (index === 0)
14
+ return input.toLowerCase();
15
+ return pascal_case_1.pascalCaseTransformMerge(input);
16
+ }
17
+ exports.camelCaseTransformMerge = camelCaseTransformMerge;
18
+ function camelCase(input, options) {
19
+ if (options === void 0) { options = {}; }
20
+ return pascal_case_1.pascalCase(input, tslib_1.__assign({ transform: camelCaseTransform }, options));
21
+ }
22
+ exports.camelCase = camelCase;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,2CAKqB;AAIrB,SAAgB,kBAAkB,CAAC,KAAa,EAAE,KAAa;IAC7D,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,iCAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAHD,gDAGC;AAED,SAAgB,uBAAuB,CAAC,KAAa,EAAE,KAAa;IAClE,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,sCAAwB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAHD,0DAGC;AAED,SAAgB,SAAS,CAAC,KAAa,EAAE,OAAqB;IAArB,wBAAA,EAAA,YAAqB;IAC5D,OAAO,wBAAU,CAAC,KAAK,qBACrB,SAAS,EAAE,kBAAkB,IAC1B,OAAO,EACV,CAAC;AACL,CAAC;AALD,8BAKC","sourcesContent":["import {\n pascalCase,\n pascalCaseTransform,\n pascalCaseTransformMerge,\n Options,\n} from \"pascal-case\";\n\nexport { Options };\n\nexport function camelCaseTransform(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\n\nexport function camelCaseTransformMerge(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransformMerge(input);\n}\n\nexport function camelCase(input: string, options: Options = {}) {\n return pascalCase(input, {\n transform: camelCaseTransform,\n ...options,\n });\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var _1 = require(".");
4
+ var TEST_CASES = [
5
+ ["", ""],
6
+ ["test", "test"],
7
+ ["test string", "testString"],
8
+ ["Test String", "testString"],
9
+ ["TestV2", "testV2"],
10
+ ["_foo_bar_", "fooBar"],
11
+ ["version 1.2.10", "version_1_2_10"],
12
+ ["version 1.21.0", "version_1_21_0"],
13
+ ["version 1.2.10", "version1210", { transform: _1.camelCaseTransformMerge }],
14
+ ];
15
+ describe("camel case", function () {
16
+ var _loop_1 = function (input, result, options) {
17
+ it(input + " -> " + result, function () {
18
+ expect(_1.camelCase(input, options)).toEqual(result);
19
+ });
20
+ };
21
+ for (var _i = 0, TEST_CASES_1 = TEST_CASES; _i < TEST_CASES_1.length; _i++) {
22
+ var _a = TEST_CASES_1[_i], input = _a[0], result = _a[1], options = _a[2];
23
+ _loop_1(input, result, options);
24
+ }
25
+ });
26
+ //# sourceMappingURL=index.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":";;AAAA,sBAAgE;AAEhE,IAAM,UAAU,GAAiC;IAC/C,CAAC,EAAE,EAAE,EAAE,CAAC;IACR,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,aAAa,EAAE,YAAY,CAAC;IAC7B,CAAC,aAAa,EAAE,YAAY,CAAC;IAC7B,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,WAAW,EAAE,QAAQ,CAAC;IACvB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,gBAAgB,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,0BAAuB,EAAE,CAAC;CAC1E,CAAC;AAEF,QAAQ,CAAC,YAAY,EAAE;4BACT,KAAK,EAAE,MAAM,EAAE,OAAO;QAChC,EAAE,CAAI,KAAK,YAAO,MAAQ,EAAE;YAC1B,MAAM,CAAC,YAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;;IAHL,KAAuC,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU;QAAtC,IAAA,qBAAwB,EAAvB,KAAK,QAAA,EAAE,MAAM,QAAA,EAAE,OAAO,QAAA;gBAAtB,KAAK,EAAE,MAAM,EAAE,OAAO;KAIjC;AACH,CAAC,CAAC,CAAC","sourcesContent":["import { camelCase, camelCaseTransformMerge, Options } from \".\";\n\nconst TEST_CASES: [string, string, Options?][] = [\n [\"\", \"\"],\n [\"test\", \"test\"],\n [\"test string\", \"testString\"],\n [\"Test String\", \"testString\"],\n [\"TestV2\", \"testV2\"],\n [\"_foo_bar_\", \"fooBar\"],\n [\"version 1.2.10\", \"version_1_2_10\"],\n [\"version 1.21.0\", \"version_1_21_0\"],\n [\"version 1.2.10\", \"version1210\", { transform: camelCaseTransformMerge }],\n];\n\ndescribe(\"camel case\", () => {\n for (const [input, result, options] of TEST_CASES) {\n it(`${input} -> ${result}`, () => {\n expect(camelCase(input, options)).toEqual(result);\n });\n }\n});\n"]}