terraconstructs 0.0.24 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/.jsii +83665 -54911
  2. package/.mise.toml +1 -1
  3. package/.nvmrc +1 -1
  4. package/LICENSE +202 -674
  5. package/go.mod +9 -7
  6. package/go.sum +18 -14
  7. package/lib/asset-manager.d.ts +23 -0
  8. package/lib/asset-manager.js +3 -0
  9. package/lib/asset-staging.d.ts +178 -0
  10. package/lib/asset-staging.js +589 -0
  11. package/lib/assets.d.ts +359 -0
  12. package/lib/assets.js +55 -0
  13. package/lib/aws/arn.js +16 -15
  14. package/lib/aws/aws-asset-manager.d.ts +91 -0
  15. package/lib/aws/aws-asset-manager.js +244 -0
  16. package/lib/aws/aws-construct.js +1 -1
  17. package/lib/aws/aws-stack.d.ts +37 -0
  18. package/lib/aws/aws-stack.js +30 -9
  19. package/lib/aws/aws-tags.js +2 -2
  20. package/lib/aws/cloudwatch/actions/appscaling.d.ts +15 -0
  21. package/lib/aws/cloudwatch/actions/appscaling.js +24 -0
  22. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  23. package/lib/aws/cloudwatch/actions/index.d.ts +3 -0
  24. package/lib/aws/cloudwatch/actions/index.js +4 -4
  25. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  26. package/lib/aws/cloudwatch/actions/sns.d.ts +14 -0
  27. package/lib/aws/cloudwatch/actions/sns.js +23 -0
  28. package/lib/aws/cloudwatch/actions/ssm.d.ts +72 -0
  29. package/lib/aws/cloudwatch/actions/ssm.js +104 -0
  30. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  31. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  32. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  33. package/lib/aws/cloudwatch/alarm.js +1 -1
  34. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  35. package/lib/aws/cloudwatch/dashboard.js +1 -1
  36. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  37. package/lib/aws/cloudwatch/graph.js +8 -8
  38. package/lib/aws/cloudwatch/layout.js +3 -3
  39. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  40. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  41. package/lib/aws/cloudwatch/log-group.js +1 -1
  42. package/lib/aws/cloudwatch/log-query.js +1 -1
  43. package/lib/aws/cloudwatch/log-stream.js +1 -1
  44. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  45. package/lib/aws/cloudwatch/metric.js +2 -2
  46. package/lib/aws/cloudwatch/pattern.js +3 -3
  47. package/lib/aws/cloudwatch/policy.js +1 -1
  48. package/lib/aws/cloudwatch/query-definition.js +2 -2
  49. package/lib/aws/cloudwatch/stats.js +1 -1
  50. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  51. package/lib/aws/cloudwatch/text.js +1 -1
  52. package/lib/aws/cloudwatch/variable.js +3 -3
  53. package/lib/aws/cloudwatch/widget.js +1 -1
  54. package/lib/aws/compute/access-log.d.ts +478 -0
  55. package/lib/aws/compute/access-log.js +649 -0
  56. package/lib/aws/compute/activity.js +1 -1
  57. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  58. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  59. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  60. package/lib/aws/compute/alb/application-listener.js +1 -1
  61. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  62. package/lib/aws/compute/alb/application-target-group.js +1 -1
  63. package/lib/aws/compute/alb/conditions.js +1 -1
  64. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  65. package/lib/aws/compute/alb/trust-store.js +1 -1
  66. package/lib/aws/compute/api-definition.d.ts +106 -0
  67. package/lib/aws/compute/api-definition.js +200 -0
  68. package/lib/aws/compute/api-key.d.ts +184 -0
  69. package/lib/aws/compute/api-key.js +197 -0
  70. package/lib/aws/compute/apigateway-canned-metrics.generated.d.ts +169 -0
  71. package/lib/aws/compute/apigateway-canned-metrics.generated.js +63 -0
  72. package/lib/aws/compute/apigateway-util.d.ts +31 -0
  73. package/lib/aws/compute/apigateway-util.js +152 -0
  74. package/lib/aws/compute/architecture.js +1 -1
  75. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  76. package/lib/aws/compute/authorizer.d.ts +35 -0
  77. package/lib/aws/compute/authorizer.js +28 -0
  78. package/lib/aws/compute/authorizers/identity-source.d.ts +37 -0
  79. package/lib/aws/compute/authorizers/identity-source.js +61 -0
  80. package/lib/aws/compute/authorizers/index.d.ts +2 -0
  81. package/lib/aws/compute/authorizers/index.js +20 -0
  82. package/lib/aws/compute/authorizers/lambda.d.ts +140 -0
  83. package/lib/aws/compute/authorizers/lambda.js +208 -0
  84. package/lib/aws/compute/base-path-mapping.d.ts +49 -0
  85. package/lib/aws/compute/base-path-mapping.js +52 -0
  86. package/lib/aws/compute/base-scalable-attribute.js +3 -3
  87. package/lib/aws/compute/bastion-host.js +1 -1
  88. package/lib/aws/compute/chain.js +1 -1
  89. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  90. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  91. package/lib/aws/compute/client-vpn-route.js +2 -2
  92. package/lib/aws/compute/code.d.ts +415 -0
  93. package/lib/aws/compute/code.js +424 -0
  94. package/lib/aws/compute/condition.js +1 -1
  95. package/lib/aws/compute/connections.js +1 -1
  96. package/lib/aws/compute/cors.d.ts +102 -0
  97. package/lib/aws/compute/cors.js +33 -0
  98. package/lib/aws/compute/deployment.d.ts +83 -0
  99. package/lib/aws/compute/deployment.js +158 -0
  100. package/lib/aws/compute/domain-name.d.ts +153 -0
  101. package/lib/aws/compute/domain-name.js +158 -0
  102. package/lib/aws/compute/event-invoke-config.d.ts +2 -2
  103. package/lib/aws/compute/event-invoke-config.js +4 -4
  104. package/lib/aws/compute/event-source-filter.js +2 -2
  105. package/lib/aws/compute/event-source-mapping.d.ts +2 -2
  106. package/lib/aws/compute/event-source-mapping.js +9 -7
  107. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  108. package/lib/aws/compute/event-sources/s3.js +1 -1
  109. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  110. package/lib/aws/compute/event-sources/sqs.js +3 -2
  111. package/lib/aws/compute/fields.js +4 -4
  112. package/lib/aws/compute/function-alias.d.ts +1 -0
  113. package/lib/aws/compute/function-alias.js +8 -2
  114. package/lib/aws/compute/function-base.d.ts +15 -0
  115. package/lib/aws/compute/function-base.js +4 -4
  116. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  117. package/lib/aws/compute/function-destinations/function.js +1 -1
  118. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  119. package/lib/aws/compute/function-nodejs/bundling.d.ts +75 -0
  120. package/lib/aws/compute/function-nodejs/bundling.js +405 -0
  121. package/lib/aws/compute/function-nodejs/function.d.ts +99 -0
  122. package/lib/aws/compute/function-nodejs/function.js +175 -0
  123. package/lib/aws/compute/function-nodejs/index.d.ts +2 -0
  124. package/lib/aws/compute/function-nodejs/index.js +19 -0
  125. package/lib/aws/compute/function-nodejs/package-installation.d.ts +8 -0
  126. package/lib/aws/compute/function-nodejs/package-installation.js +36 -0
  127. package/lib/aws/compute/function-nodejs/package-manager.d.ts +33 -0
  128. package/lib/aws/compute/function-nodejs/package-manager.js +99 -0
  129. package/lib/aws/compute/function-nodejs/types.d.ts +410 -0
  130. package/lib/aws/compute/function-nodejs/types.js +81 -0
  131. package/lib/aws/compute/function-nodejs/util.d.ts +60 -0
  132. package/lib/aws/compute/function-nodejs/util.js +202 -0
  133. package/lib/aws/compute/function-url.d.ts +2 -2
  134. package/lib/aws/compute/function-url.js +4 -4
  135. package/lib/aws/compute/function.d.ts +34 -4
  136. package/lib/aws/compute/function.js +91 -17
  137. package/lib/aws/compute/gateway-response.d.ts +157 -0
  138. package/lib/aws/compute/gateway-response.js +156 -0
  139. package/lib/aws/compute/handler.d.ts +10 -0
  140. package/lib/aws/compute/handler.js +20 -0
  141. package/lib/aws/compute/index.d.ts +27 -0
  142. package/lib/aws/compute/index.js +29 -1
  143. package/lib/aws/compute/instance-types.js +1 -1
  144. package/lib/aws/compute/instance.js +1 -1
  145. package/lib/aws/compute/integration.d.ts +311 -0
  146. package/lib/aws/compute/integration.js +165 -0
  147. package/lib/aws/compute/integrations/aws.d.ts +72 -0
  148. package/lib/aws/compute/integrations/aws.js +55 -0
  149. package/lib/aws/compute/integrations/http.d.ts +37 -0
  150. package/lib/aws/compute/integrations/http.js +35 -0
  151. package/lib/aws/compute/integrations/index.d.ts +6 -0
  152. package/lib/aws/compute/integrations/index.js +24 -0
  153. package/lib/aws/compute/integrations/lambda.d.ts +40 -0
  154. package/lib/aws/compute/integrations/lambda.js +73 -0
  155. package/lib/aws/compute/integrations/mock.d.ts +16 -0
  156. package/lib/aws/compute/integrations/mock.js +30 -0
  157. package/lib/aws/compute/integrations/request-context.d.ts +144 -0
  158. package/lib/aws/compute/integrations/request-context.js +3 -0
  159. package/lib/aws/compute/integrations/stepfunctions.d.ts +102 -0
  160. package/lib/aws/compute/integrations/stepfunctions.js +268 -0
  161. package/lib/aws/compute/ip-addresses.js +2 -2
  162. package/lib/aws/compute/ipam.js +1 -1
  163. package/lib/aws/compute/json-schema.d.ts +75 -0
  164. package/lib/aws/compute/json-schema.js +23 -0
  165. package/lib/aws/compute/key-pair.js +1 -1
  166. package/lib/aws/compute/lambda-api.d.ts +46 -0
  167. package/lib/aws/compute/lambda-api.js +64 -0
  168. package/lib/aws/compute/launch-template.js +2 -2
  169. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  170. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  171. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  172. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  173. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  174. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  175. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  176. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  177. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  178. package/lib/aws/compute/load-balancer.js +3 -3
  179. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  180. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  181. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  182. package/lib/aws/compute/machine-image/common.js +1 -1
  183. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  184. package/lib/aws/compute/method.d.ts +219 -0
  185. package/lib/aws/compute/method.js +396 -0
  186. package/lib/aws/compute/methodresponse.d.ts +28 -0
  187. package/lib/aws/compute/methodresponse.js +3 -0
  188. package/lib/aws/compute/model.d.ts +143 -0
  189. package/lib/aws/compute/model.js +141 -0
  190. package/lib/aws/compute/nat.js +5 -5
  191. package/lib/aws/compute/network-acl-types.js +2 -2
  192. package/lib/aws/compute/network-acl.js +3 -3
  193. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  194. package/lib/aws/compute/nlb/network-listener.js +1 -1
  195. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  196. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  197. package/lib/aws/compute/peer.js +1 -1
  198. package/lib/aws/compute/placement-group.js +1 -1
  199. package/lib/aws/compute/port.js +1 -1
  200. package/lib/aws/compute/prefix-list.js +1 -1
  201. package/lib/aws/compute/requestvalidator.d.ts +50 -0
  202. package/lib/aws/compute/requestvalidator.js +59 -0
  203. package/lib/aws/compute/resource.d.ts +223 -0
  204. package/lib/aws/compute/resource.js +316 -0
  205. package/lib/aws/compute/restapi.d.ts +510 -0
  206. package/lib/aws/compute/restapi.js +626 -0
  207. package/lib/aws/compute/route.js +8 -8
  208. package/lib/aws/compute/runtime.d.ts +282 -0
  209. package/lib/aws/compute/runtime.js +337 -0
  210. package/lib/aws/compute/scalable-target.js +3 -3
  211. package/lib/aws/compute/schedule.js +3 -3
  212. package/lib/aws/compute/security-group.js +1 -1
  213. package/lib/aws/compute/stage.d.ts +350 -0
  214. package/lib/aws/compute/stage.js +304 -0
  215. package/lib/aws/compute/state-graph.js +1 -1
  216. package/lib/aws/compute/state-machine-fragment.js +1 -1
  217. package/lib/aws/compute/state-machine.js +4 -4
  218. package/lib/aws/compute/states/choice.js +1 -1
  219. package/lib/aws/compute/states/custom-state.js +1 -1
  220. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  221. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  222. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  223. package/lib/aws/compute/states/distributed-map.js +1 -1
  224. package/lib/aws/compute/states/fail.js +1 -1
  225. package/lib/aws/compute/states/map-base.js +1 -1
  226. package/lib/aws/compute/states/map.js +1 -1
  227. package/lib/aws/compute/states/parallel.js +1 -1
  228. package/lib/aws/compute/states/pass.js +2 -2
  229. package/lib/aws/compute/states/state.js +1 -1
  230. package/lib/aws/compute/states/succeed.js +1 -1
  231. package/lib/aws/compute/states/task-base.js +2 -2
  232. package/lib/aws/compute/states/task.js +1 -1
  233. package/lib/aws/compute/states/wait.js +2 -2
  234. package/lib/aws/compute/step-scaling-action.js +3 -3
  235. package/lib/aws/compute/step-scaling-policy.js +1 -1
  236. package/lib/aws/compute/stepfunctions-api.d.ts +103 -0
  237. package/lib/aws/compute/stepfunctions-api.js +39 -0
  238. package/lib/aws/compute/subnet-v2.js +2 -2
  239. package/lib/aws/compute/subnet.js +1 -1
  240. package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
  241. package/lib/aws/compute/task-credentials.js +1 -1
  242. package/lib/aws/compute/task-input.js +1 -1
  243. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  244. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  245. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  246. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  247. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  248. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  249. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  250. package/lib/aws/compute/types.js +1 -1
  251. package/lib/aws/compute/usage-plan.d.ts +194 -0
  252. package/lib/aws/compute/usage-plan.js +174 -0
  253. package/lib/aws/compute/user-data.js +3 -3
  254. package/lib/aws/compute/volume.js +2 -2
  255. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  256. package/lib/aws/compute/vpc-endpoint.js +6 -6
  257. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  258. package/lib/aws/compute/vpc-link.d.ts +104 -0
  259. package/lib/aws/compute/vpc-link.js +137 -0
  260. package/lib/aws/compute/vpc-v2-base.js +1 -1
  261. package/lib/aws/compute/vpc-v2.js +2 -2
  262. package/lib/aws/compute/vpc.js +4 -4
  263. package/lib/aws/compute/vpn.js +3 -3
  264. package/lib/aws/edge/certificate.js +1 -1
  265. package/lib/aws/edge/distribution.js +3 -3
  266. package/lib/aws/edge/dns-alias-record-targets.js +3 -3
  267. package/lib/aws/edge/dns-record.js +13 -13
  268. package/lib/aws/edge/dns-zone.js +1 -1
  269. package/lib/aws/edge/function.js +2 -2
  270. package/lib/aws/edge/key-value-store.js +4 -4
  271. package/lib/aws/edge/origin.js +3 -3
  272. package/lib/aws/edge/response-headers-policy.js +1 -1
  273. package/lib/aws/encryption/alias.js +1 -1
  274. package/lib/aws/encryption/key.js +1 -1
  275. package/lib/aws/encryption/via-service-principal.js +1 -1
  276. package/lib/aws/iam/grant.js +2 -2
  277. package/lib/aws/iam/group.js +1 -1
  278. package/lib/aws/iam/instance-profile.js +1 -1
  279. package/lib/aws/iam/managed-policy.js +1 -1
  280. package/lib/aws/iam/oidc-provider.js +1 -1
  281. package/lib/aws/iam/policy-document.js +1 -1
  282. package/lib/aws/iam/policy-statement.js +1 -1
  283. package/lib/aws/iam/policy.js +1 -1
  284. package/lib/aws/iam/principals.js +20 -20
  285. package/lib/aws/iam/role.js +1 -1
  286. package/lib/aws/iam/saml-provider.js +2 -2
  287. package/lib/aws/iam/unknown-principal.js +1 -1
  288. package/lib/aws/iam/user.js +5 -5
  289. package/lib/aws/index.d.ts +1 -0
  290. package/lib/aws/index.js +4 -1
  291. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  292. package/lib/aws/network/subnet-group.js +3 -3
  293. package/lib/aws/network/subnet.js +4 -4
  294. package/lib/aws/notify/archive.js +1 -1
  295. package/lib/aws/notify/connection.js +3 -3
  296. package/lib/aws/notify/event-bus.js +3 -3
  297. package/lib/aws/notify/event-pattern.js +1 -1
  298. package/lib/aws/notify/input.js +2 -2
  299. package/lib/aws/notify/kinesis-stream.js +1 -1
  300. package/lib/aws/notify/notification-rule.d.ts +1 -1
  301. package/lib/aws/notify/notification-rule.js +5 -5
  302. package/lib/aws/notify/policy.js +1 -1
  303. package/lib/aws/notify/queue-policy.js +1 -1
  304. package/lib/aws/notify/queue.js +1 -1
  305. package/lib/aws/notify/resource-policy.js +1 -1
  306. package/lib/aws/notify/rule.js +1 -1
  307. package/lib/aws/notify/schedule.js +1 -1
  308. package/lib/aws/notify/subscription-filter.js +1 -1
  309. package/lib/aws/notify/subscription.js +4 -4
  310. package/lib/aws/notify/subscriptions/email.js +1 -1
  311. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  312. package/lib/aws/notify/subscriptions/sms.js +1 -1
  313. package/lib/aws/notify/subscriptions/sqs.js +1 -1
  314. package/lib/aws/notify/subscriptions/url.js +1 -1
  315. package/lib/aws/notify/targets/event-bus.js +1 -1
  316. package/lib/aws/notify/targets/function.js +1 -1
  317. package/lib/aws/notify/targets/log-group.js +2 -2
  318. package/lib/aws/notify/targets/sqs.js +1 -1
  319. package/lib/aws/notify/targets/state-machine.js +1 -1
  320. package/lib/aws/notify/topic-base.js +1 -1
  321. package/lib/aws/notify/topic.js +6 -5
  322. package/lib/aws/partition.d.ts +21 -0
  323. package/lib/aws/partition.js +42 -0
  324. package/lib/aws/storage/assets/image-asset.d.ts +379 -0
  325. package/lib/aws/storage/assets/image-asset.js +247 -0
  326. package/lib/aws/storage/assets/index.d.ts +2 -0
  327. package/lib/aws/storage/assets/index.js +21 -0
  328. package/lib/aws/storage/assets/s3.d.ts +125 -0
  329. package/lib/aws/storage/assets/s3.js +80 -0
  330. package/lib/aws/storage/auth-token.d.ts +25 -0
  331. package/lib/aws/storage/auth-token.js +54 -0
  332. package/lib/aws/storage/billing.js +1 -1
  333. package/lib/aws/storage/bucket-notifications.js +1 -1
  334. package/lib/aws/storage/bucket-policy.js +1 -1
  335. package/lib/aws/storage/bucket-source.d.ts +1 -1
  336. package/lib/aws/storage/bucket-source.js +4 -4
  337. package/lib/aws/storage/bucket.d.ts +14 -6
  338. package/lib/aws/storage/bucket.js +48 -40
  339. package/lib/aws/storage/capacity.js +1 -1
  340. package/lib/aws/storage/ecr-lifecycle.d.ts +88 -0
  341. package/lib/aws/storage/ecr-lifecycle.js +23 -0
  342. package/lib/aws/storage/ecr-repository.d.ts +446 -0
  343. package/lib/aws/storage/ecr-repository.js +685 -0
  344. package/lib/aws/storage/encryption.js +1 -1
  345. package/lib/aws/storage/index.d.ts +5 -0
  346. package/lib/aws/storage/index.js +10 -3
  347. package/lib/aws/storage/location.d.ts +17 -0
  348. package/lib/aws/storage/location.js +4 -0
  349. package/lib/aws/storage/notification-targets/function.js +1 -1
  350. package/lib/aws/storage/notification-targets/queue.js +1 -1
  351. package/lib/aws/storage/origin-access-identity.js +1 -1
  352. package/lib/aws/storage/parameter.js +2 -2
  353. package/lib/aws/storage/table.js +3 -3
  354. package/lib/aws/storage/util.d.ts +8 -20
  355. package/lib/aws/storage/util.js +56 -34
  356. package/lib/aws/util.d.ts +1 -0
  357. package/lib/aws/util.js +6 -1
  358. package/lib/bundling.d.ts +434 -0
  359. package/lib/bundling.js +368 -0
  360. package/lib/construct-base.js +2 -2
  361. package/lib/duration.js +1 -1
  362. package/lib/expiration.js +1 -1
  363. package/lib/fs/copy.d.ts +2 -0
  364. package/lib/fs/copy.js +57 -0
  365. package/lib/fs/fingerprint.d.ts +21 -0
  366. package/lib/fs/fingerprint.js +165 -0
  367. package/lib/fs/ignore.d.ts +107 -0
  368. package/lib/fs/ignore.js +190 -0
  369. package/lib/fs/index.d.ts +47 -0
  370. package/lib/fs/index.js +88 -0
  371. package/lib/fs/options.d.ts +110 -0
  372. package/lib/fs/options.js +60 -0
  373. package/lib/fs/utils.d.ts +11 -0
  374. package/lib/fs/utils.js +34 -0
  375. package/lib/index.d.ts +5 -0
  376. package/lib/index.js +7 -1
  377. package/lib/private/asset-staging.d.ts +83 -0
  378. package/lib/private/asset-staging.js +205 -0
  379. package/lib/private/cache.d.ts +17 -0
  380. package/lib/private/cache.js +35 -0
  381. package/lib/private/jsii-deprecated.d.ts +2 -0
  382. package/lib/private/jsii-deprecated.js +19 -0
  383. package/lib/private/unique-resource-name.js +3 -2
  384. package/lib/size.js +1 -1
  385. package/lib/stack-base.js +1 -1
  386. package/lib/terra-func.js +2 -2
  387. package/lib/time-zone.js +1 -1
  388. package/node_modules/@balena/dockerignore/CHANGELOG.md +31 -0
  389. package/node_modules/@balena/dockerignore/LICENSE.md +206 -0
  390. package/node_modules/@balena/dockerignore/README.md +261 -0
  391. package/node_modules/@balena/dockerignore/ignore.js +363 -0
  392. package/node_modules/@balena/dockerignore/index.d.ts +45 -0
  393. package/node_modules/@balena/dockerignore/package.json +49 -0
  394. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  395. package/node_modules/balanced-match/LICENSE.md +21 -0
  396. package/node_modules/balanced-match/README.md +97 -0
  397. package/node_modules/balanced-match/index.js +62 -0
  398. package/node_modules/balanced-match/package.json +48 -0
  399. package/node_modules/concat-map/.travis.yml +4 -0
  400. package/node_modules/concat-map/LICENSE +18 -0
  401. package/node_modules/concat-map/README.markdown +62 -0
  402. package/node_modules/concat-map/example/map.js +6 -0
  403. package/node_modules/concat-map/index.js +13 -0
  404. package/node_modules/concat-map/package.json +43 -0
  405. package/node_modules/concat-map/test/map.js +39 -0
  406. package/node_modules/ignore/LICENSE-MIT +21 -0
  407. package/node_modules/ignore/README.md +412 -0
  408. package/node_modules/ignore/index.d.ts +61 -0
  409. package/node_modules/ignore/index.js +636 -0
  410. package/node_modules/ignore/legacy.js +559 -0
  411. package/node_modules/ignore/package.json +74 -0
  412. package/node_modules/minimatch/LICENSE +15 -0
  413. package/node_modules/minimatch/README.md +230 -0
  414. package/node_modules/minimatch/minimatch.js +947 -0
  415. package/node_modules/minimatch/node_modules/brace-expansion/LICENSE +21 -0
  416. package/node_modules/minimatch/node_modules/brace-expansion/README.md +129 -0
  417. package/node_modules/minimatch/node_modules/brace-expansion/index.js +201 -0
  418. package/node_modules/minimatch/node_modules/brace-expansion/package.json +47 -0
  419. package/node_modules/minimatch/package.json +33 -0
  420. package/package.json +14 -5
  421. package/lib/aws/compute/function-nodejs.d.ts +0 -55
  422. package/lib/aws/compute/function-nodejs.js +0 -70
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Determines how symlinks are followed.
3
+ */
4
+ export declare enum SymlinkFollowMode {
5
+ /**
6
+ * Never follow symlinks.
7
+ */
8
+ NEVER = "never",
9
+ /**
10
+ * Materialize all symlinks, whether they are internal or external to the source directory.
11
+ */
12
+ ALWAYS = "always",
13
+ /**
14
+ * Only follows symlinks that are external to the source directory.
15
+ */
16
+ EXTERNAL = "external",
17
+ /**
18
+ * Forbids source from having any symlinks pointing outside of the source
19
+ * tree.
20
+ *
21
+ * This is the safest mode of operation as it ensures that copy operations
22
+ * won't materialize files from the user's file system. Internal symlinks are
23
+ * not followed.
24
+ *
25
+ * If the copy operation runs into an external symlink, it will fail.
26
+ */
27
+ BLOCK_EXTERNAL = "internal-only"
28
+ }
29
+ /**
30
+ * Determines the ignore behavior to use.
31
+ */
32
+ export declare enum IgnoreMode {
33
+ /**
34
+ * Ignores file paths based on simple glob patterns.
35
+ *
36
+ * This is the default for file assets.
37
+ *
38
+ * It is also the default for Docker image assets, unless the '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport'
39
+ * context flag is set.
40
+ */
41
+ GLOB = "glob",
42
+ /**
43
+ * Ignores file paths based on the [`.gitignore specification`](https://git-scm.com/docs/gitignore).
44
+ */
45
+ GIT = "git",
46
+ /**
47
+ * Ignores file paths based on the [`.dockerignore specification`](https://docs.docker.com/engine/reference/builder/#dockerignore-file).
48
+ *
49
+ * This is the default for Docker image assets if the '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport'
50
+ * context flag is set.
51
+ */
52
+ DOCKER = "docker"
53
+ }
54
+ interface FileOptions {
55
+ /**
56
+ * File paths matching the patterns will be excluded. See `ignoreMode` to set the matching behavior.
57
+ * Has no effect on Assets bundled using the `bundling` property.
58
+ *
59
+ * @default - nothing is excluded
60
+ */
61
+ readonly exclude?: string[];
62
+ /**
63
+ * The ignore behavior to use for `exclude` patterns.
64
+ *
65
+ * @default IgnoreMode.GLOB
66
+ */
67
+ readonly ignoreMode?: IgnoreMode;
68
+ }
69
+ /**
70
+ * Options applied when copying directories
71
+ */
72
+ export interface CopyOptions extends FileOptions {
73
+ /**
74
+ * A strategy for how to handle symlinks.
75
+ *
76
+ * @default SymlinkFollowMode.NEVER
77
+ */
78
+ readonly follow?: SymlinkFollowMode;
79
+ }
80
+ /**
81
+ * Options applied when copying directories into the staging location.
82
+ */
83
+ export interface FileCopyOptions extends FileOptions {
84
+ /**
85
+ * A strategy for how to handle symlinks.
86
+ *
87
+ * @default SymlinkFollowMode.NEVER
88
+ */
89
+ readonly followSymlinks?: SymlinkFollowMode;
90
+ }
91
+ interface ExtraHashOptions {
92
+ /**
93
+ * Extra information to encode into the fingerprint (e.g. build instructions
94
+ * and other inputs)
95
+ *
96
+ * @default - hash is only based on source content
97
+ */
98
+ readonly extraHash?: string;
99
+ }
100
+ /**
101
+ * Options related to calculating source hash.
102
+ */
103
+ export interface FingerprintOptions extends CopyOptions, ExtraHashOptions {
104
+ }
105
+ /**
106
+ * Options related to calculating source hash.
107
+ */
108
+ export interface FileFingerprintOptions extends FileCopyOptions, ExtraHashOptions {
109
+ }
110
+ export {};
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ // https://github.com/aws/aws-cdk/blob/v2.186.0/packages/aws-cdk-lib/core/lib/fs/options.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.IgnoreMode = exports.SymlinkFollowMode = void 0;
5
+ /**
6
+ * Determines how symlinks are followed.
7
+ */
8
+ var SymlinkFollowMode;
9
+ (function (SymlinkFollowMode) {
10
+ /**
11
+ * Never follow symlinks.
12
+ */
13
+ SymlinkFollowMode["NEVER"] = "never";
14
+ /**
15
+ * Materialize all symlinks, whether they are internal or external to the source directory.
16
+ */
17
+ SymlinkFollowMode["ALWAYS"] = "always";
18
+ /**
19
+ * Only follows symlinks that are external to the source directory.
20
+ */
21
+ SymlinkFollowMode["EXTERNAL"] = "external";
22
+ /**
23
+ * Forbids source from having any symlinks pointing outside of the source
24
+ * tree.
25
+ *
26
+ * This is the safest mode of operation as it ensures that copy operations
27
+ * won't materialize files from the user's file system. Internal symlinks are
28
+ * not followed.
29
+ *
30
+ * If the copy operation runs into an external symlink, it will fail.
31
+ */
32
+ SymlinkFollowMode["BLOCK_EXTERNAL"] = "internal-only";
33
+ })(SymlinkFollowMode || (exports.SymlinkFollowMode = SymlinkFollowMode = {}));
34
+ /**
35
+ * Determines the ignore behavior to use.
36
+ */
37
+ var IgnoreMode;
38
+ (function (IgnoreMode) {
39
+ /**
40
+ * Ignores file paths based on simple glob patterns.
41
+ *
42
+ * This is the default for file assets.
43
+ *
44
+ * It is also the default for Docker image assets, unless the '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport'
45
+ * context flag is set.
46
+ */
47
+ IgnoreMode["GLOB"] = "glob";
48
+ /**
49
+ * Ignores file paths based on the [`.gitignore specification`](https://git-scm.com/docs/gitignore).
50
+ */
51
+ IgnoreMode["GIT"] = "git";
52
+ /**
53
+ * Ignores file paths based on the [`.dockerignore specification`](https://docs.docker.com/engine/reference/builder/#dockerignore-file).
54
+ *
55
+ * This is the default for Docker image assets if the '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport'
56
+ * context flag is set.
57
+ */
58
+ IgnoreMode["DOCKER"] = "docker";
59
+ })(IgnoreMode || (exports.IgnoreMode = IgnoreMode = {}));
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mcy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyRkFBMkY7OztBQUUzRjs7R0FFRztBQUNILElBQVksaUJBMkJYO0FBM0JELFdBQVksaUJBQWlCO0lBQzNCOztPQUVHO0lBQ0gsb0NBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsc0NBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCwwQ0FBcUIsQ0FBQTtJQUVyQjs7Ozs7Ozs7O09BU0c7SUFDSCxxREFBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBM0JXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBMkI1QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxVQXVCWDtBQXZCRCxXQUFZLFVBQVU7SUFDcEI7Ozs7Ozs7T0FPRztJQUNILDJCQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILHlCQUFXLENBQUE7SUFFWDs7Ozs7T0FLRztJQUNILCtCQUFpQixDQUFBO0FBQ25CLENBQUMsRUF2QlcsVUFBVSwwQkFBVixVQUFVLFFBdUJyQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE4Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL2ZzL29wdGlvbnMudHNcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyBzeW1saW5rcyBhcmUgZm9sbG93ZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFN5bWxpbmtGb2xsb3dNb2RlIHtcbiAgLyoqXG4gICAqIE5ldmVyIGZvbGxvdyBzeW1saW5rcy5cbiAgICovXG4gIE5FVkVSID0gXCJuZXZlclwiLFxuXG4gIC8qKlxuICAgKiBNYXRlcmlhbGl6ZSBhbGwgc3ltbGlua3MsIHdoZXRoZXIgdGhleSBhcmUgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnkuXG4gICAqL1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuXG4gIC8qKlxuICAgKiBPbmx5IGZvbGxvd3Mgc3ltbGlua3MgdGhhdCBhcmUgZXh0ZXJuYWwgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnkuXG4gICAqL1xuICBFWFRFUk5BTCA9IFwiZXh0ZXJuYWxcIixcblxuICAvKipcbiAgICogRm9yYmlkcyBzb3VyY2UgZnJvbSBoYXZpbmcgYW55IHN5bWxpbmtzIHBvaW50aW5nIG91dHNpZGUgb2YgdGhlIHNvdXJjZVxuICAgKiB0cmVlLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBzYWZlc3QgbW9kZSBvZiBvcGVyYXRpb24gYXMgaXQgZW5zdXJlcyB0aGF0IGNvcHkgb3BlcmF0aW9uc1xuICAgKiB3b24ndCBtYXRlcmlhbGl6ZSBmaWxlcyBmcm9tIHRoZSB1c2VyJ3MgZmlsZSBzeXN0ZW0uIEludGVybmFsIHN5bWxpbmtzIGFyZVxuICAgKiBub3QgZm9sbG93ZWQuXG4gICAqXG4gICAqIElmIHRoZSBjb3B5IG9wZXJhdGlvbiBydW5zIGludG8gYW4gZXh0ZXJuYWwgc3ltbGluaywgaXQgd2lsbCBmYWlsLlxuICAgKi9cbiAgQkxPQ0tfRVhURVJOQUwgPSBcImludGVybmFsLW9ubHlcIixcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBpZ25vcmUgYmVoYXZpb3IgdG8gdXNlLlxuICovXG5leHBvcnQgZW51bSBJZ25vcmVNb2RlIHtcbiAgLyoqXG4gICAqIElnbm9yZXMgZmlsZSBwYXRocyBiYXNlZCBvbiBzaW1wbGUgZ2xvYiBwYXR0ZXJucy5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgZmlsZSBhc3NldHMuXG4gICAqXG4gICAqIEl0IGlzIGFsc28gdGhlIGRlZmF1bHQgZm9yIERvY2tlciBpbWFnZSBhc3NldHMsIHVubGVzcyB0aGUgJ0Bhd3MtY2RrL2F3cy1lY3ItYXNzZXRzOmRvY2tlcklnbm9yZVN1cHBvcnQnXG4gICAqIGNvbnRleHQgZmxhZyBpcyBzZXQuXG4gICAqL1xuICBHTE9CID0gXCJnbG9iXCIsXG5cbiAgLyoqXG4gICAqIElnbm9yZXMgZmlsZSBwYXRocyBiYXNlZCBvbiB0aGUgW2AuZ2l0aWdub3JlIHNwZWNpZmljYXRpb25gXShodHRwczovL2dpdC1zY20uY29tL2RvY3MvZ2l0aWdub3JlKS5cbiAgICovXG4gIEdJVCA9IFwiZ2l0XCIsXG5cbiAgLyoqXG4gICAqIElnbm9yZXMgZmlsZSBwYXRocyBiYXNlZCBvbiB0aGUgW2AuZG9ja2VyaWdub3JlIHNwZWNpZmljYXRpb25gXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2J1aWxkZXIvI2RvY2tlcmlnbm9yZS1maWxlKS5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgRG9ja2VyIGltYWdlIGFzc2V0cyBpZiB0aGUgJ0Bhd3MtY2RrL2F3cy1lY3ItYXNzZXRzOmRvY2tlcklnbm9yZVN1cHBvcnQnXG4gICAqIGNvbnRleHQgZmxhZyBpcyBzZXQuXG4gICAqL1xuICBET0NLRVIgPSBcImRvY2tlclwiLFxufVxuXG5pbnRlcmZhY2UgRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogRmlsZSBwYXRocyBtYXRjaGluZyB0aGUgcGF0dGVybnMgd2lsbCBiZSBleGNsdWRlZC4gU2VlIGBpZ25vcmVNb2RlYCB0byBzZXQgdGhlIG1hdGNoaW5nIGJlaGF2aW9yLlxuICAgKiBIYXMgbm8gZWZmZWN0IG9uIEFzc2V0cyBidW5kbGVkIHVzaW5nIHRoZSBgYnVuZGxpbmdgIHByb3BlcnR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdGhpbmcgaXMgZXhjbHVkZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGlnbm9yZSBiZWhhdmlvciB0byB1c2UgZm9yIGBleGNsdWRlYCBwYXR0ZXJucy5cbiAgICpcbiAgICogQGRlZmF1bHQgSWdub3JlTW9kZS5HTE9CXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVNb2RlPzogSWdub3JlTW9kZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGFwcGxpZWQgd2hlbiBjb3B5aW5nIGRpcmVjdG9yaWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29weU9wdGlvbnMgZXh0ZW5kcyBGaWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIHN0cmF0ZWd5IGZvciBob3cgdG8gaGFuZGxlIHN5bWxpbmtzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTeW1saW5rRm9sbG93TW9kZS5ORVZFUlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sbG93PzogU3ltbGlua0ZvbGxvd01vZGU7XG59XG5cbi8qKlxuICogT3B0aW9ucyBhcHBsaWVkIHdoZW4gY29weWluZyBkaXJlY3RvcmllcyBpbnRvIHRoZSBzdGFnaW5nIGxvY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVDb3B5T3B0aW9ucyBleHRlbmRzIEZpbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgc3RyYXRlZ3kgZm9yIGhvdyB0byBoYW5kbGUgc3ltbGlua3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN5bWxpbmtGb2xsb3dNb2RlLk5FVkVSXG4gICAqL1xuICByZWFkb25seSBmb2xsb3dTeW1saW5rcz86IFN5bWxpbmtGb2xsb3dNb2RlO1xufVxuXG5pbnRlcmZhY2UgRXh0cmFIYXNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBFeHRyYSBpbmZvcm1hdGlvbiB0byBlbmNvZGUgaW50byB0aGUgZmluZ2VycHJpbnQgKGUuZy4gYnVpbGQgaW5zdHJ1Y3Rpb25zXG4gICAqIGFuZCBvdGhlciBpbnB1dHMpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaGFzaCBpcyBvbmx5IGJhc2VkIG9uIHNvdXJjZSBjb250ZW50XG4gICAqL1xuICByZWFkb25seSBleHRyYUhhc2g/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyByZWxhdGVkIHRvIGNhbGN1bGF0aW5nIHNvdXJjZSBoYXNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbmdlcnByaW50T3B0aW9ucyBleHRlbmRzIENvcHlPcHRpb25zLCBFeHRyYUhhc2hPcHRpb25zIHt9XG5cbi8qKlxuICogT3B0aW9ucyByZWxhdGVkIHRvIGNhbGN1bGF0aW5nIHNvdXJjZSBoYXNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVGaW5nZXJwcmludE9wdGlvbnNcbiAgZXh0ZW5kcyBGaWxlQ29weU9wdGlvbnMsXG4gICAgRXh0cmFIYXNoT3B0aW9ucyB7fVxuIl19
@@ -0,0 +1,11 @@
1
+ import { SymlinkFollowMode } from "./options";
2
+ /**
3
+ * Determines whether a symlink should be followed or not, based on a FollowMode.
4
+ *
5
+ * @param mode the FollowMode.
6
+ * @param sourceRoot the root of the source tree.
7
+ * @param realPath the real path of the target of the symlink.
8
+ *
9
+ * @returns true if the link should be followed.
10
+ */
11
+ export declare function shouldFollow(mode: SymlinkFollowMode, sourceRoot: string, realPath: string): boolean;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ // https://github.com/aws/aws-cdk/blob/v2.186.0/packages/aws-cdk-lib/core/lib/fs/utils.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.shouldFollow = shouldFollow;
5
+ const fs = require("fs");
6
+ const path = require("path");
7
+ const options_1 = require("./options");
8
+ /**
9
+ * Determines whether a symlink should be followed or not, based on a FollowMode.
10
+ *
11
+ * @param mode the FollowMode.
12
+ * @param sourceRoot the root of the source tree.
13
+ * @param realPath the real path of the target of the symlink.
14
+ *
15
+ * @returns true if the link should be followed.
16
+ */
17
+ function shouldFollow(mode, sourceRoot, realPath) {
18
+ switch (mode) {
19
+ case options_1.SymlinkFollowMode.ALWAYS:
20
+ return fs.existsSync(realPath);
21
+ case options_1.SymlinkFollowMode.EXTERNAL:
22
+ return !_isInternal() && fs.existsSync(realPath);
23
+ case options_1.SymlinkFollowMode.BLOCK_EXTERNAL:
24
+ return _isInternal() && fs.existsSync(realPath);
25
+ case options_1.SymlinkFollowMode.NEVER:
26
+ return false;
27
+ default:
28
+ throw new Error(`Unsupported FollowMode: ${mode}`);
29
+ }
30
+ function _isInternal() {
31
+ return path.resolve(realPath).startsWith(path.resolve(sourceRoot));
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlGQUF5Rjs7QUFlekYsb0NBcUJDO0FBbENELHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsdUNBQThDO0FBRTlDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsWUFBWSxDQUMxQixJQUF1QixFQUN2QixVQUFrQixFQUNsQixRQUFnQjtJQUVoQixRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSywyQkFBaUIsQ0FBQyxNQUFNO1lBQzNCLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxLQUFLLDJCQUFpQixDQUFDLFFBQVE7WUFDN0IsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsS0FBSywyQkFBaUIsQ0FBQyxjQUFjO1lBQ25DLE9BQU8sV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxLQUFLLDJCQUFpQixDQUFDLEtBQUs7WUFDMUIsT0FBTyxLQUFLLENBQUM7UUFDZjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFNBQVMsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE4Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL2ZzL3V0aWxzLnRzXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgU3ltbGlua0ZvbGxvd01vZGUgfSBmcm9tIFwiLi9vcHRpb25zXCI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3ltbGluayBzaG91bGQgYmUgZm9sbG93ZWQgb3Igbm90LCBiYXNlZCBvbiBhIEZvbGxvd01vZGUuXG4gKlxuICogQHBhcmFtIG1vZGUgICAgICAgdGhlIEZvbGxvd01vZGUuXG4gKiBAcGFyYW0gc291cmNlUm9vdCB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuXG4gKiBAcGFyYW0gcmVhbFBhdGggICB0aGUgcmVhbCBwYXRoIG9mIHRoZSB0YXJnZXQgb2YgdGhlIHN5bWxpbmsuXG4gKlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgbGluayBzaG91bGQgYmUgZm9sbG93ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRGb2xsb3coXG4gIG1vZGU6IFN5bWxpbmtGb2xsb3dNb2RlLFxuICBzb3VyY2VSb290OiBzdHJpbmcsXG4gIHJlYWxQYXRoOiBzdHJpbmcsXG4pOiBib29sZWFuIHtcbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSBTeW1saW5rRm9sbG93TW9kZS5BTFdBWVM6XG4gICAgICByZXR1cm4gZnMuZXhpc3RzU3luYyhyZWFsUGF0aCk7XG4gICAgY2FzZSBTeW1saW5rRm9sbG93TW9kZS5FWFRFUk5BTDpcbiAgICAgIHJldHVybiAhX2lzSW50ZXJuYWwoKSAmJiBmcy5leGlzdHNTeW5jKHJlYWxQYXRoKTtcbiAgICBjYXNlIFN5bWxpbmtGb2xsb3dNb2RlLkJMT0NLX0VYVEVSTkFMOlxuICAgICAgcmV0dXJuIF9pc0ludGVybmFsKCkgJiYgZnMuZXhpc3RzU3luYyhyZWFsUGF0aCk7XG4gICAgY2FzZSBTeW1saW5rRm9sbG93TW9kZS5ORVZFUjpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBGb2xsb3dNb2RlOiAke21vZGV9YCk7XG4gIH1cblxuICBmdW5jdGlvbiBfaXNJbnRlcm5hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHJlYWxQYXRoKS5zdGFydHNXaXRoKHBhdGgucmVzb2x2ZShzb3VyY2VSb290KSk7XG4gIH1cbn1cbiJdfQ==
package/lib/index.d.ts CHANGED
@@ -5,4 +5,9 @@ export * from "./time-zone";
5
5
  export * from "./expiration";
6
6
  export * from "./size";
7
7
  export * from "./terra-func";
8
+ export * from "./assets";
9
+ export * from "./asset-staging";
10
+ export * from "./asset-manager";
11
+ export * from "./bundling";
12
+ export * from "./fs";
8
13
  export * as aws from "./aws";
package/lib/index.js CHANGED
@@ -22,6 +22,12 @@ __exportStar(require("./time-zone"), exports);
22
22
  __exportStar(require("./expiration"), exports);
23
23
  __exportStar(require("./size"), exports);
24
24
  __exportStar(require("./terra-func"), exports);
25
+ // AWS CDK Bundling
26
+ __exportStar(require("./assets"), exports);
27
+ __exportStar(require("./asset-staging"), exports);
28
+ __exportStar(require("./asset-manager"), exports);
29
+ __exportStar(require("./bundling"), exports);
30
+ __exportStar(require("./fs"), exports);
25
31
  // cloud specific exports
26
32
  exports.aws = require("./aws");
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsK0NBQTZCO0FBQzdCLDZDQUEyQjtBQUMzQiw4Q0FBNEI7QUFDNUIsK0NBQTZCO0FBQzdCLHlDQUF1QjtBQUN2QiwrQ0FBNkI7QUFFN0IseUJBQXlCO0FBQ3pCLCtCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0cnVjdC1iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdGFjay1iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kdXJhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGltZS16b25lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leHBpcmF0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zaXplXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYS1mdW5jXCI7XG5cbi8vIGNsb3VkIHNwZWNpZmljIGV4cG9ydHNcbmV4cG9ydCAqIGFzIGF3cyBmcm9tIFwiLi9hd3NcIjtcbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsK0NBQTZCO0FBQzdCLDZDQUEyQjtBQUMzQiw4Q0FBNEI7QUFDNUIsK0NBQTZCO0FBQzdCLHlDQUF1QjtBQUN2QiwrQ0FBNkI7QUFFN0IsbUJBQW1CO0FBQ25CLDJDQUF5QjtBQUN6QixrREFBZ0M7QUFDaEMsa0RBQWdDO0FBQ2hDLDZDQUEyQjtBQUMzQix1Q0FBcUI7QUFFckIseUJBQXlCO0FBQ3pCLCtCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0cnVjdC1iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdGFjay1iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kdXJhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGltZS16b25lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leHBpcmF0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zaXplXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYS1mdW5jXCI7XG5cbi8vIEFXUyBDREsgQnVuZGxpbmdcbmV4cG9ydCAqIGZyb20gXCIuL2Fzc2V0c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXNzZXQtc3RhZ2luZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXNzZXQtbWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYnVuZGxpbmdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZzXCI7XG5cbi8vIGNsb3VkIHNwZWNpZmljIGV4cG9ydHNcbmV4cG9ydCAqIGFzIGF3cyBmcm9tIFwiLi9hd3NcIjtcbiJdfQ==
@@ -0,0 +1,83 @@
1
+ import { SpawnSyncOptions } from "child_process";
2
+ import { BundlingOptions } from "../bundling";
3
+ /**
4
+ * Options for Docker based bundling of assets
5
+ */
6
+ interface AssetBundlingOptions extends BundlingOptions {
7
+ /**
8
+ * Path where the source files are located
9
+ */
10
+ readonly sourcePath: string;
11
+ /**
12
+ * Path where the output files should be stored
13
+ */
14
+ readonly bundleDir: string;
15
+ }
16
+ declare abstract class AssetBundlingBase {
17
+ protected options: AssetBundlingOptions;
18
+ constructor(options: AssetBundlingOptions);
19
+ /**
20
+ * Determines a useful default user if not given otherwise
21
+ */
22
+ protected determineUser(): string;
23
+ }
24
+ /**
25
+ * Bundles files with bind mount as copy method
26
+ */
27
+ export declare class AssetBundlingBindMount extends AssetBundlingBase {
28
+ /**
29
+ * Bundle files with bind mount as copy method
30
+ */
31
+ run(): void;
32
+ }
33
+ /**
34
+ * Provides a helper container for copying bundling related files to specific input and output volumes
35
+ */
36
+ export declare class AssetBundlingVolumeCopy extends AssetBundlingBase {
37
+ /**
38
+ * Name of the Docker volume that is used for the asset input
39
+ */
40
+ private inputVolumeName;
41
+ /**
42
+ * Name of the Docker volume that is used for the asset output
43
+ */
44
+ private outputVolumeName;
45
+ /**
46
+ * Name of the Docker helper container to copy files into the volume
47
+ */
48
+ copyContainerName: string;
49
+ constructor(options: AssetBundlingOptions);
50
+ /**
51
+ * Creates volumes for asset input and output
52
+ */
53
+ private prepareVolumes;
54
+ /**
55
+ * Removes volumes for asset input and output
56
+ */
57
+ private cleanVolumes;
58
+ /**
59
+ * runs a helper container that holds volumes and does some preparation tasks
60
+ * @param user The user that will later access these files and needs permissions to do so
61
+ */
62
+ private startHelperContainer;
63
+ /**
64
+ * removes the Docker helper container
65
+ */
66
+ private cleanHelperContainer;
67
+ /**
68
+ * copy files from the host where this is executed into the input volume
69
+ * @param sourcePath - path to folder where files should be copied from - without trailing slash
70
+ */
71
+ private copyInputFrom;
72
+ /**
73
+ * copy files from the the output volume to the host where this is executed
74
+ * @param outputPath - path to folder where files should be copied to - without trailing slash
75
+ */
76
+ private copyOutputTo;
77
+ /**
78
+ * Bundle files with VOLUME_COPY method
79
+ */
80
+ run(): void;
81
+ }
82
+ export declare function dockerExec(args: string[], options?: SpawnSyncOptions): import("child_process").SpawnSyncReturns<string | Buffer<ArrayBufferLike>>;
83
+ export {};
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ // https://github.com/aws/aws-cdk/blob/v2.186.0/packages/aws-cdk-lib/core/lib/private/asset-staging.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AssetBundlingVolumeCopy = exports.AssetBundlingBindMount = void 0;
5
+ exports.dockerExec = dockerExec;
6
+ const child_process_1 = require("child_process");
7
+ const crypto = require("crypto");
8
+ const os = require("os");
9
+ // import { AssetStaging } from "../asset-staging";
10
+ const asset_staging_1 = require("../asset-staging");
11
+ class AssetBundlingBase {
12
+ constructor(options) {
13
+ this.options = options;
14
+ }
15
+ /**
16
+ * Determines a useful default user if not given otherwise
17
+ */
18
+ determineUser() {
19
+ let user;
20
+ if (this.options.user) {
21
+ user = this.options.user;
22
+ }
23
+ else {
24
+ // Default to current user
25
+ const userInfo = os.userInfo();
26
+ user =
27
+ userInfo.uid !== -1 // uid is -1 on Windows
28
+ ? `${userInfo.uid}:${userInfo.gid}`
29
+ : "1000:1000";
30
+ }
31
+ return user;
32
+ }
33
+ }
34
+ /**
35
+ * Bundles files with bind mount as copy method
36
+ */
37
+ class AssetBundlingBindMount extends AssetBundlingBase {
38
+ /**
39
+ * Bundle files with bind mount as copy method
40
+ */
41
+ run() {
42
+ this.options.image.run({
43
+ command: this.options.command,
44
+ user: this.determineUser(),
45
+ environment: this.options.environment,
46
+ entrypoint: this.options.entrypoint,
47
+ workingDirectory: this.options.workingDirectory ?? asset_staging_1.AssetStaging.BUNDLING_INPUT_DIR,
48
+ securityOpt: this.options.securityOpt ?? "",
49
+ volumesFrom: this.options.volumesFrom,
50
+ volumes: [
51
+ {
52
+ hostPath: this.options.sourcePath,
53
+ containerPath: asset_staging_1.AssetStaging.BUNDLING_INPUT_DIR,
54
+ },
55
+ {
56
+ hostPath: this.options.bundleDir,
57
+ containerPath: asset_staging_1.AssetStaging.BUNDLING_OUTPUT_DIR,
58
+ },
59
+ ...(this.options.volumes ?? []),
60
+ ],
61
+ network: this.options.network,
62
+ });
63
+ }
64
+ }
65
+ exports.AssetBundlingBindMount = AssetBundlingBindMount;
66
+ /**
67
+ * Provides a helper container for copying bundling related files to specific input and output volumes
68
+ */
69
+ class AssetBundlingVolumeCopy extends AssetBundlingBase {
70
+ constructor(options) {
71
+ super(options);
72
+ const copySuffix = crypto.randomBytes(12).toString("hex");
73
+ this.inputVolumeName = `assetInput${copySuffix}`;
74
+ this.outputVolumeName = `assetOutput${copySuffix}`;
75
+ this.copyContainerName = `copyContainer${copySuffix}`;
76
+ }
77
+ /**
78
+ * Creates volumes for asset input and output
79
+ */
80
+ prepareVolumes() {
81
+ dockerExec(["volume", "create", this.inputVolumeName]);
82
+ dockerExec(["volume", "create", this.outputVolumeName]);
83
+ }
84
+ /**
85
+ * Removes volumes for asset input and output
86
+ */
87
+ cleanVolumes() {
88
+ dockerExec(["volume", "rm", this.inputVolumeName]);
89
+ dockerExec(["volume", "rm", this.outputVolumeName]);
90
+ }
91
+ /**
92
+ * runs a helper container that holds volumes and does some preparation tasks
93
+ * @param user The user that will later access these files and needs permissions to do so
94
+ */
95
+ startHelperContainer(user) {
96
+ dockerExec([
97
+ "run",
98
+ "--name",
99
+ this.copyContainerName,
100
+ "-v",
101
+ `${this.inputVolumeName}:${asset_staging_1.AssetStaging.BUNDLING_INPUT_DIR}`,
102
+ "-v",
103
+ `${this.outputVolumeName}:${asset_staging_1.AssetStaging.BUNDLING_OUTPUT_DIR}`,
104
+ "public.ecr.aws/docker/library/alpine",
105
+ "sh",
106
+ "-c",
107
+ `mkdir -p ${asset_staging_1.AssetStaging.BUNDLING_INPUT_DIR} && chown -R ${user} ${asset_staging_1.AssetStaging.BUNDLING_OUTPUT_DIR} && chown -R ${user} ${asset_staging_1.AssetStaging.BUNDLING_INPUT_DIR}`,
108
+ ]);
109
+ }
110
+ /**
111
+ * removes the Docker helper container
112
+ */
113
+ cleanHelperContainer() {
114
+ dockerExec(["rm", this.copyContainerName]);
115
+ }
116
+ /**
117
+ * copy files from the host where this is executed into the input volume
118
+ * @param sourcePath - path to folder where files should be copied from - without trailing slash
119
+ */
120
+ copyInputFrom(sourcePath) {
121
+ dockerExec([
122
+ "cp",
123
+ `${sourcePath}/.`,
124
+ `${this.copyContainerName}:${asset_staging_1.AssetStaging.BUNDLING_INPUT_DIR}`,
125
+ ]);
126
+ }
127
+ /**
128
+ * copy files from the the output volume to the host where this is executed
129
+ * @param outputPath - path to folder where files should be copied to - without trailing slash
130
+ */
131
+ copyOutputTo(outputPath) {
132
+ dockerExec([
133
+ "cp",
134
+ `${this.copyContainerName}:${asset_staging_1.AssetStaging.BUNDLING_OUTPUT_DIR}/.`,
135
+ outputPath,
136
+ ]);
137
+ }
138
+ /**
139
+ * Bundle files with VOLUME_COPY method
140
+ */
141
+ run() {
142
+ const user = this.determineUser();
143
+ this.prepareVolumes();
144
+ this.startHelperContainer(user); // TODO handle user properly
145
+ this.copyInputFrom(this.options.sourcePath);
146
+ this.options.image.run({
147
+ command: this.options.command,
148
+ user: user,
149
+ environment: this.options.environment,
150
+ entrypoint: this.options.entrypoint,
151
+ workingDirectory: this.options.workingDirectory ?? asset_staging_1.AssetStaging.BUNDLING_INPUT_DIR,
152
+ securityOpt: this.options.securityOpt ?? "",
153
+ volumes: this.options.volumes,
154
+ volumesFrom: [
155
+ this.copyContainerName,
156
+ ...(this.options.volumesFrom ?? []),
157
+ ],
158
+ });
159
+ this.copyOutputTo(this.options.bundleDir);
160
+ this.cleanHelperContainer();
161
+ this.cleanVolumes();
162
+ }
163
+ }
164
+ exports.AssetBundlingVolumeCopy = AssetBundlingVolumeCopy;
165
+ function dockerExec(args, options) {
166
+ const prog = process.env.CDK_DOCKER ?? "docker";
167
+ const proc = (0, child_process_1.spawnSync)(prog, args, options ?? {
168
+ encoding: "utf-8",
169
+ stdio: [
170
+ // show Docker output
171
+ "ignore", // ignore stdio
172
+ // AWSCDK: process.stderr, // redirect stdout to stderr (causes radix error in bun?)
173
+ "inherit",
174
+ "inherit", // inherit stderr
175
+ ],
176
+ });
177
+ if (proc.error) {
178
+ throw proc.error;
179
+ }
180
+ if (proc.status !== 0) {
181
+ const reason = proc.signal != null ? `signal ${proc.signal}` : `status ${proc.status}`;
182
+ const command = [
183
+ prog,
184
+ ...args.map((arg) => /[^a-z0-9_-]/i.test(arg) ? JSON.stringify(arg) : arg),
185
+ ].join(" ");
186
+ function prependLines(firstLine, text) {
187
+ if (!text || text.length === 0) {
188
+ return [];
189
+ }
190
+ const padding = " ".repeat(firstLine.length);
191
+ return text
192
+ .toString("utf-8")
193
+ .split("\n")
194
+ .map((line, idx) => `${idx === 0 ? firstLine : padding}${line}`);
195
+ }
196
+ throw new Error([
197
+ `${prog} exited with ${reason}`,
198
+ ...(prependLines("--> STDOUT: ", proc.stdout) ?? []),
199
+ ...(prependLines("--> STDERR: ", proc.stderr) ?? []),
200
+ `--> Command: ${command}`,
201
+ ].join("\n"));
202
+ }
203
+ return proc;
204
+ }
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtc3RhZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcml2YXRlL2Fzc2V0LXN0YWdpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNHQUFzRzs7O0FBME10RyxnQ0F3REM7QUFoUUQsaURBQTREO0FBQzVELGlDQUFpQztBQUNqQyx5QkFBeUI7QUFDekIsbURBQW1EO0FBQ25ELG9EQUFnRDtBQWlCaEQsTUFBZSxpQkFBaUI7SUFFOUIsWUFBWSxPQUE2QjtRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBQ0Q7O09BRUc7SUFDTyxhQUFhO1FBQ3JCLElBQUksSUFBWSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTiwwQkFBMEI7WUFDMUIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQy9CLElBQUk7Z0JBQ0YsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyx1QkFBdUI7b0JBQ3pDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDbkMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsaUJBQWlCO0lBQzNEOztPQUVHO0lBQ0ksR0FBRztRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzFC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QUMsQ0FBQyxHQUFHLENBQ3JEO1NBQ0YsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFWixTQUFTLFlBQVksQ0FDbkIsU0FBaUIsRUFDakIsSUFBaUM7WUFFakMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QyxPQUFPLElBQUk7aUJBQ1IsUUFBUSxDQUFDLE9BQU8sQ0FBQztpQkFDakIsS0FBSyxDQUFDLElBQUksQ0FBQztpQkFDWCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQ2I7WUFDRSxHQUFHLElBQUksZ0JBQWdCLE1BQU0sRUFBRTtZQUMvQixHQUFHLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JELEdBQUcsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLE9BQU8sRUFBRTtTQUMxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE4Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL3ByaXZhdGUvYXNzZXQtc3RhZ2luZy50c1xuXG5pbXBvcnQgeyBzcGF3blN5bmMsIFNwYXduU3luY09wdGlvbnMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuLy8gaW1wb3J0IHsgQXNzZXRTdGFnaW5nIH0gZnJvbSBcIi4uL2Fzc2V0LXN0YWdpbmdcIjtcbmltcG9ydCB7IEFzc2V0U3RhZ2luZyB9IGZyb20gXCIuLi9hc3NldC1zdGFnaW5nXCI7XG5pbXBvcnQgeyBCdW5kbGluZ09wdGlvbnMgfSBmcm9tIFwiLi4vYnVuZGxpbmdcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBEb2NrZXIgYmFzZWQgYnVuZGxpbmcgb2YgYXNzZXRzXG4gKi9cbmludGVyZmFjZSBBc3NldEJ1bmRsaW5nT3B0aW9ucyBleHRlbmRzIEJ1bmRsaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXRoIHdoZXJlIHRoZSBzb3VyY2UgZmlsZXMgYXJlIGxvY2F0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZVBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggd2hlcmUgdGhlIG91dHB1dCBmaWxlcyBzaG91bGQgYmUgc3RvcmVkXG4gICAqL1xuICByZWFkb25seSBidW5kbGVEaXI6IHN0cmluZztcbn1cblxuYWJzdHJhY3QgY2xhc3MgQXNzZXRCdW5kbGluZ0Jhc2Uge1xuICBwcm90ZWN0ZWQgb3B0aW9uczogQXNzZXRCdW5kbGluZ09wdGlvbnM7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFzc2V0QnVuZGxpbmdPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBhIHVzZWZ1bCBkZWZhdWx0IHVzZXIgaWYgbm90IGdpdmVuIG90aGVyd2lzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRldGVybWluZVVzZXIoKSB7XG4gICAgbGV0IHVzZXI6IHN0cmluZztcbiAgICBpZiAodGhpcy5vcHRpb25zLnVzZXIpIHtcbiAgICAgIHVzZXIgPSB0aGlzLm9wdGlvbnMudXNlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IHVzZXJcbiAgICAgIGNvbnN0IHVzZXJJbmZvID0gb3MudXNlckluZm8oKTtcbiAgICAgIHVzZXIgPVxuICAgICAgICB1c2VySW5mby51aWQgIT09IC0xIC8vIHVpZCBpcyAtMSBvbiBXaW5kb3dzXG4gICAgICAgICAgPyBgJHt1c2VySW5mby51aWR9OiR7dXNlckluZm8uZ2lkfWBcbiAgICAgICAgICA6IFwiMTAwMDoxMDAwXCI7XG4gICAgfVxuICAgIHJldHVybiB1c2VyO1xuICB9XG59XG5cbi8qKlxuICogQnVuZGxlcyBmaWxlcyB3aXRoIGJpbmQgbW91bnQgYXMgY29weSBtZXRob2RcbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2V0QnVuZGxpbmdCaW5kTW91bnQgZXh0ZW5kcyBBc3NldEJ1bmRsaW5nQmFzZSB7XG4gIC8qKlxuICAgKiBCdW5kbGUgZmlsZXMgd2l0aCBiaW5kIG1vdW50IGFzIGNvcHkgbWV0aG9kXG4gICAqL1xuICBwdWJsaWMgcnVuKCkge1xuICAgIHRoaXMub3B0aW9ucy5pbWFnZS5ydW4oe1xuICAgICAgY29tbWFuZDogdGhpcy5vcHRpb25zLmNvbW1hbmQsXG4gICAgICB1c2VyOiB0aGlzLmRldGVybWluZVVzZXIoKSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLm9wdGlvbnMuZW52aXJvbm1lbnQsXG4gICAgICBlbnRyeXBvaW50OiB0aGlzLm9wdGlvbnMuZW50cnlwb2ludCxcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6XG4gICAgICAgIHRoaXMub3B0aW9ucy53b3JraW5nRGlyZWN0b3J5ID8/IEFzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVIsXG4gICAgICBzZWN1cml0eU9wdDogdGhpcy5vcHRpb25zLnNlY3VyaXR5T3B0ID8/IFwiXCIsXG4gICAgICB2b2x1bWVzRnJvbTogdGhpcy5vcHRpb25zLnZvbHVtZXNGcm9tLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICB7XG4gICAgICAgICAgaG9zdFBhdGg6IHRoaXMub3B0aW9ucy5zb3VyY2VQYXRoLFxuICAgICAgICAgIGNvbnRhaW5lclBhdGg6IEFzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBob3N0UGF0aDogdGhpcy5vcHRpb25zLmJ1bmRsZURpcixcbiAgICAgICAgICBjb250YWluZXJQYXRoOiBBc3NldFN0YWdpbmcuQlVORExJTkdfT1VUUFVUX0RJUixcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKHRoaXMub3B0aW9ucy52b2x1bWVzID8/IFtdKSxcbiAgICAgIF0sXG4gICAgICBuZXR3b3JrOiB0aGlzLm9wdGlvbnMubmV0d29yayxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgaGVscGVyIGNvbnRhaW5lciBmb3IgY29weWluZyBidW5kbGluZyByZWxhdGVkIGZpbGVzIHRvIHNwZWNpZmljIGlucHV0IGFuZCBvdXRwdXQgdm9sdW1lc1xuICovXG5leHBvcnQgY2xhc3MgQXNzZXRCdW5kbGluZ1ZvbHVtZUNvcHkgZXh0ZW5kcyBBc3NldEJ1bmRsaW5nQmFzZSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBEb2NrZXIgdm9sdW1lIHRoYXQgaXMgdXNlZCBmb3IgdGhlIGFzc2V0IGlucHV0XG4gICAqL1xuICBwcml2YXRlIGlucHV0Vm9sdW1lTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgRG9ja2VyIHZvbHVtZSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBhc3NldCBvdXRwdXRcbiAgICovXG4gIHByaXZhdGUgb3V0cHV0Vm9sdW1lTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgRG9ja2VyIGhlbHBlciBjb250YWluZXIgdG8gY29weSBmaWxlcyBpbnRvIHRoZSB2b2x1bWVcbiAgICovXG4gIHB1YmxpYyBjb3B5Q29udGFpbmVyTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFzc2V0QnVuZGxpbmdPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgY29uc3QgY29weVN1ZmZpeCA9IGNyeXB0by5yYW5kb21CeXRlcygxMikudG9TdHJpbmcoXCJoZXhcIik7XG4gICAgdGhpcy5pbnB1dFZvbHVtZU5hbWUgPSBgYXNzZXRJbnB1dCR7Y29weVN1ZmZpeH1gO1xuICAgIHRoaXMub3V0cHV0Vm9sdW1lTmFtZSA9IGBhc3NldE91dHB1dCR7Y29weVN1ZmZpeH1gO1xuICAgIHRoaXMuY29weUNvbnRhaW5lck5hbWUgPSBgY29weUNvbnRhaW5lciR7Y29weVN1ZmZpeH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdm9sdW1lcyBmb3IgYXNzZXQgaW5wdXQgYW5kIG91dHB1dFxuICAgKi9cbiAgcHJpdmF0ZSBwcmVwYXJlVm9sdW1lcygpIHtcbiAgICBkb2NrZXJFeGVjKFtcInZvbHVtZVwiLCBcImNyZWF0ZVwiLCB0aGlzLmlucHV0Vm9sdW1lTmFtZV0pO1xuICAgIGRvY2tlckV4ZWMoW1widm9sdW1lXCIsIFwiY3JlYXRlXCIsIHRoaXMub3V0cHV0Vm9sdW1lTmFtZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdm9sdW1lcyBmb3IgYXNzZXQgaW5wdXQgYW5kIG91dHB1dFxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhblZvbHVtZXMoKSB7XG4gICAgZG9ja2VyRXhlYyhbXCJ2b2x1bWVcIiwgXCJybVwiLCB0aGlzLmlucHV0Vm9sdW1lTmFtZV0pO1xuICAgIGRvY2tlckV4ZWMoW1widm9sdW1lXCIsIFwicm1cIiwgdGhpcy5vdXRwdXRWb2x1bWVOYW1lXSk7XG4gIH1cblxuICAvKipcbiAgICogcnVucyBhIGhlbHBlciBjb250YWluZXIgdGhhdCBob2xkcyB2b2x1bWVzIGFuZCBkb2VzIHNvbWUgcHJlcGFyYXRpb24gdGFza3NcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdGhhdCB3aWxsIGxhdGVyIGFjY2VzcyB0aGVzZSBmaWxlcyBhbmQgbmVlZHMgcGVybWlzc2lvbnMgdG8gZG8gc29cbiAgICovXG4gIHByaXZhdGUgc3RhcnRIZWxwZXJDb250YWluZXIodXNlcjogc3RyaW5nKSB7XG4gICAgZG9ja2VyRXhlYyhbXG4gICAgICBcInJ1blwiLFxuICAgICAgXCItLW5hbWVcIixcbiAgICAgIHRoaXMuY29weUNvbnRhaW5lck5hbWUsXG4gICAgICBcIi12XCIsXG4gICAgICBgJHt0aGlzLmlucHV0Vm9sdW1lTmFtZX06JHtBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSfWAsXG4gICAgICBcIi12XCIsXG4gICAgICBgJHt0aGlzLm91dHB1dFZvbHVtZU5hbWV9OiR7QXNzZXRTdGFnaW5nLkJVTkRMSU5HX09VVFBVVF9ESVJ9YCxcbiAgICAgIFwicHVibGljLmVjci5hd3MvZG9ja2VyL2xpYnJhcnkvYWxwaW5lXCIsXG4gICAgICBcInNoXCIsXG4gICAgICBcIi1jXCIsXG4gICAgICBgbWtkaXIgLXAgJHtBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSfSAmJiBjaG93biAtUiAke3VzZXJ9ICR7QXNzZXRTdGFnaW5nLkJVTkRMSU5HX09VVFBVVF9ESVJ9ICYmIGNob3duIC1SICR7dXNlcn0gJHtBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSfWAsXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogcmVtb3ZlcyB0aGUgRG9ja2VyIGhlbHBlciBjb250YWluZXJcbiAgICovXG4gIHByaXZhdGUgY2xlYW5IZWxwZXJDb250YWluZXIoKSB7XG4gICAgZG9ja2VyRXhlYyhbXCJybVwiLCB0aGlzLmNvcHlDb250YWluZXJOYW1lXSk7XG4gIH1cblxuICAvKipcbiAgICogY29weSBmaWxlcyBmcm9tIHRoZSBob3N0IHdoZXJlIHRoaXMgaXMgZXhlY3V0ZWQgaW50byB0aGUgaW5wdXQgdm9sdW1lXG4gICAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gcGF0aCB0byBmb2xkZXIgd2hlcmUgZmlsZXMgc2hvdWxkIGJlIGNvcGllZCBmcm9tIC0gd2l0aG91dCB0cmFpbGluZyBzbGFzaFxuICAgKi9cbiAgcHJpdmF0ZSBjb3B5SW5wdXRGcm9tKHNvdXJjZVBhdGg6IHN0cmluZykge1xuICAgIGRvY2tlckV4ZWMoW1xuICAgICAgXCJjcFwiLFxuICAgICAgYCR7c291cmNlUGF0aH0vLmAsXG4gICAgICBgJHt0aGlzLmNvcHlDb250YWluZXJOYW1lfToke0Fzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVJ9YCxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb3B5IGZpbGVzIGZyb20gdGhlIHRoZSBvdXRwdXQgdm9sdW1lIHRvIHRoZSBob3N0IHdoZXJlIHRoaXMgaXMgZXhlY3V0ZWRcbiAgICogQHBhcmFtIG91dHB1dFBhdGggLSBwYXRoIHRvIGZvbGRlciB3aGVyZSBmaWxlcyBzaG91bGQgYmUgY29waWVkIHRvIC0gd2l0aG91dCB0cmFpbGluZyBzbGFzaFxuICAgKi9cbiAgcHJpdmF0ZSBjb3B5T3V0cHV0VG8ob3V0cHV0UGF0aDogc3RyaW5nKSB7XG4gICAgZG9ja2VyRXhlYyhbXG4gICAgICBcImNwXCIsXG4gICAgICBgJHt0aGlzLmNvcHlDb250YWluZXJOYW1lfToke0Fzc2V0U3RhZ2luZy5CVU5ETElOR19PVVRQVVRfRElSfS8uYCxcbiAgICAgIG91dHB1dFBhdGgsXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogQnVuZGxlIGZpbGVzIHdpdGggVk9MVU1FX0NPUFkgbWV0aG9kXG4gICAqL1xuICBwdWJsaWMgcnVuKCkge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmRldGVybWluZVVzZXIoKTtcbiAgICB0aGlzLnByZXBhcmVWb2x1bWVzKCk7XG4gICAgdGhpcy5zdGFydEhlbHBlckNvbnRhaW5lcih1c2VyKTsgLy8gVE9ETyBoYW5kbGUgdXNlciBwcm9wZXJseVxuICAgIHRoaXMuY29weUlucHV0RnJvbSh0aGlzLm9wdGlvbnMuc291cmNlUGF0aCk7XG5cbiAgICB0aGlzLm9wdGlvbnMuaW1hZ2UucnVuKHtcbiAgICAgIGNvbW1hbmQ6IHRoaXMub3B0aW9ucy5jb21tYW5kLFxuICAgICAgdXNlcjogdXNlcixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLm9wdGlvbnMuZW52aXJvbm1lbnQsXG4gICAgICBlbnRyeXBvaW50OiB0aGlzLm9wdGlvbnMuZW50cnlwb2ludCxcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6XG4gICAgICAgIHRoaXMub3B0aW9ucy53b3JraW5nRGlyZWN0b3J5ID8/IEFzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVIsXG4gICAgICBzZWN1cml0eU9wdDogdGhpcy5vcHRpb25zLnNlY3VyaXR5T3B0ID8/IFwiXCIsXG4gICAgICB2b2x1bWVzOiB0aGlzLm9wdGlvbnMudm9sdW1lcyxcbiAgICAgIHZvbHVtZXNGcm9tOiBbXG4gICAgICAgIHRoaXMuY29weUNvbnRhaW5lck5hbWUsXG4gICAgICAgIC4uLih0aGlzLm9wdGlvbnMudm9sdW1lc0Zyb20gPz8gW10pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29weU91dHB1dFRvKHRoaXMub3B0aW9ucy5idW5kbGVEaXIpO1xuICAgIHRoaXMuY2xlYW5IZWxwZXJDb250YWluZXIoKTtcbiAgICB0aGlzLmNsZWFuVm9sdW1lcygpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2NrZXJFeGVjKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zPzogU3Bhd25TeW5jT3B0aW9ucykge1xuICBjb25zdCBwcm9nID0gcHJvY2Vzcy5lbnYuQ0RLX0RPQ0tFUiA/PyBcImRvY2tlclwiO1xuICBjb25zdCBwcm9jID0gc3Bhd25TeW5jKFxuICAgIHByb2csXG4gICAgYXJncyxcbiAgICBvcHRpb25zID8/IHtcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1xuICAgICAgICAvLyBzaG93IERvY2tlciBvdXRwdXRcbiAgICAgICAgXCJpZ25vcmVcIiwgLy8gaWdub3JlIHN0ZGlvXG4gICAgICAgIC8vIEFXU0NESzogcHJvY2Vzcy5zdGRlcnIsIC8vIHJlZGlyZWN0IHN0ZG91dCB0byBzdGRlcnIgKGNhdXNlcyByYWRpeCBlcnJvciBpbiBidW4/KVxuICAgICAgICBcImluaGVyaXRcIixcbiAgICAgICAgXCJpbmhlcml0XCIsIC8vIGluaGVyaXQgc3RkZXJyXG4gICAgICBdLFxuICAgIH0sXG4gICk7XG5cbiAgaWYgKHByb2MuZXJyb3IpIHtcbiAgICB0aHJvdyBwcm9jLmVycm9yO1xuICB9XG5cbiAgaWYgKHByb2Muc3RhdHVzICE9PSAwKSB7XG4gICAgY29uc3QgcmVhc29uID1cbiAgICAgIHByb2Muc2lnbmFsICE9IG51bGwgPyBgc2lnbmFsICR7cHJvYy5zaWduYWx9YCA6IGBzdGF0dXMgJHtwcm9jLnN0YXR1c31gO1xuICAgIGNvbnN0IGNvbW1hbmQgPSBbXG4gICAgICBwcm9nLFxuICAgICAgLi4uYXJncy5tYXAoKGFyZykgPT5cbiAgICAgICAgL1teYS16MC05Xy1dL2kudGVzdChhcmcpID8gSlNPTi5zdHJpbmdpZnkoYXJnKSA6IGFyZyxcbiAgICAgICksXG4gICAgXS5qb2luKFwiIFwiKTtcblxuICAgIGZ1bmN0aW9uIHByZXBlbmRMaW5lcyhcbiAgICAgIGZpcnN0TGluZTogc3RyaW5nLFxuICAgICAgdGV4dDogQnVmZmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICk6IHN0cmluZ1tdIHtcbiAgICAgIGlmICghdGV4dCB8fCB0ZXh0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBjb25zdCBwYWRkaW5nID0gXCIgXCIucmVwZWF0KGZpcnN0TGluZS5sZW5ndGgpO1xuICAgICAgcmV0dXJuIHRleHRcbiAgICAgICAgLnRvU3RyaW5nKFwidXRmLThcIilcbiAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgIC5tYXAoKGxpbmUsIGlkeCkgPT4gYCR7aWR4ID09PSAwID8gZmlyc3RMaW5lIDogcGFkZGluZ30ke2xpbmV9YCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgW1xuICAgICAgICBgJHtwcm9nfSBleGl0ZWQgd2l0aCAke3JlYXNvbn1gLFxuICAgICAgICAuLi4ocHJlcGVuZExpbmVzKFwiLS0+IFNURE9VVDogIFwiLCBwcm9jLnN0ZG91dCkgPz8gW10pLFxuICAgICAgICAuLi4ocHJlcGVuZExpbmVzKFwiLS0+IFNUREVSUjogIFwiLCBwcm9jLnN0ZGVycikgPz8gW10pLFxuICAgICAgICBgLS0+IENvbW1hbmQ6ICR7Y29tbWFuZH1gLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gcHJvYztcbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ /**
2
+ * A simple cache class.
3
+ *
4
+ * Must be declared at the top of the file because we're going to use it statically in the
5
+ * AssetStaging class.
6
+ */
7
+ export declare class Cache<A> {
8
+ private cache;
9
+ /**
10
+ * Clears the cache
11
+ */
12
+ clear(): void;
13
+ /**
14
+ * Get a value from the cache or calculate it
15
+ */
16
+ obtain(cacheKey: string, calcFn: () => A): A;
17
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ // https://github.com/aws/aws-cdk/blob/v2.186.0/packages/aws-cdk-lib/core/lib/private/cache.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Cache = void 0;
5
+ /**
6
+ * A simple cache class.
7
+ *
8
+ * Must be declared at the top of the file because we're going to use it statically in the
9
+ * AssetStaging class.
10
+ */
11
+ class Cache {
12
+ constructor() {
13
+ this.cache = new Map();
14
+ }
15
+ /**
16
+ * Clears the cache
17
+ */
18
+ clear() {
19
+ this.cache.clear();
20
+ }
21
+ /**
22
+ * Get a value from the cache or calculate it
23
+ */
24
+ obtain(cacheKey, calcFn) {
25
+ let value = this.cache.get(cacheKey);
26
+ if (value) {
27
+ return value;
28
+ }
29
+ value = calcFn();
30
+ this.cache.set(cacheKey, value);
31
+ return value;
32
+ }
33
+ }
34
+ exports.Cache = Cache;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpdmF0ZS9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsOEZBQThGOzs7QUFFOUY7Ozs7O0dBS0c7QUFDSCxNQUFhLEtBQUs7SUFBbEI7UUFDVSxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWEsQ0FBQztJQXNCdkMsQ0FBQztJQXBCQzs7T0FFRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFnQixFQUFFLE1BQWU7UUFDN0MsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUF2QkQsc0JBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTg2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvcHJpdmF0ZS9jYWNoZS50c1xuXG4vKipcbiAqIEEgc2ltcGxlIGNhY2hlIGNsYXNzLlxuICpcbiAqIE11c3QgYmUgZGVjbGFyZWQgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIHVzZSBpdCBzdGF0aWNhbGx5IGluIHRoZVxuICogQXNzZXRTdGFnaW5nIGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgQ2FjaGU8QT4ge1xuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEE+KCk7XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgY2FjaGVcbiAgICovXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgdmFsdWUgZnJvbSB0aGUgY2FjaGUgb3IgY2FsY3VsYXRlIGl0XG4gICAqL1xuICBwdWJsaWMgb2J0YWluKGNhY2hlS2V5OiBzdHJpbmcsIGNhbGNGbjogKCkgPT4gQSk6IEEge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuY2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IGNhbGNGbigpO1xuICAgIHRoaXMuY2FjaGUuc2V0KGNhY2hlS2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export declare function quiet(): string | undefined;
2
+ export declare function reset(deprecated: string | undefined): void;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ // https://github.com/aws/aws-cdk/blob/v2.186.0/packages/aws-cdk-lib/core/lib/private/jsii-deprecated.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.quiet = quiet;
5
+ exports.reset = reset;
6
+ function quiet() {
7
+ const deprecated = process.env.JSII_DEPRECATED;
8
+ process.env.JSII_DEPRECATED = "quiet";
9
+ return deprecated;
10
+ }
11
+ function reset(deprecated) {
12
+ if (deprecated === undefined) {
13
+ delete process.env.JSII_DEPRECATED;
14
+ }
15
+ else {
16
+ process.env.JSII_DEPRECATED = deprecated;
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1kZXByZWNhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByaXZhdGUvanNpaS1kZXByZWNhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx3R0FBd0c7O0FBRXhHLHNCQUlDO0FBRUQsc0JBTUM7QUFaRCxTQUFnQixLQUFLO0lBQ25CLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO0lBQy9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztJQUN0QyxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsU0FBZ0IsS0FBSyxDQUFDLFVBQThCO0lBQ2xELElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7SUFDckMsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUM7SUFDM0MsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xODYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9jb3JlL2xpYi9wcml2YXRlL2pzaWktZGVwcmVjYXRlZC50c1xuXG5leHBvcnQgZnVuY3Rpb24gcXVpZXQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVwcmVjYXRlZCA9IHByb2Nlc3MuZW52LkpTSUlfREVQUkVDQVRFRDtcbiAgcHJvY2Vzcy5lbnYuSlNJSV9ERVBSRUNBVEVEID0gXCJxdWlldFwiO1xuICByZXR1cm4gZGVwcmVjYXRlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0KGRlcHJlY2F0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoZGVwcmVjYXRlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkpTSUlfREVQUkVDQVRFRDtcbiAgfSBlbHNlIHtcbiAgICBwcm9jZXNzLmVudi5KU0lJX0RFUFJFQ0FURUQgPSBkZXByZWNhdGVkO1xuICB9XG59XG4iXX0=