terraconstructs 0.0.25 → 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 (420) 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/lib/asset-manager.d.ts +23 -0
  6. package/lib/asset-manager.js +3 -0
  7. package/lib/asset-staging.d.ts +178 -0
  8. package/lib/asset-staging.js +589 -0
  9. package/lib/assets.d.ts +359 -0
  10. package/lib/assets.js +55 -0
  11. package/lib/aws/arn.js +16 -15
  12. package/lib/aws/aws-asset-manager.d.ts +91 -0
  13. package/lib/aws/aws-asset-manager.js +244 -0
  14. package/lib/aws/aws-construct.js +1 -1
  15. package/lib/aws/aws-stack.d.ts +37 -0
  16. package/lib/aws/aws-stack.js +30 -9
  17. package/lib/aws/aws-tags.js +2 -2
  18. package/lib/aws/cloudwatch/actions/appscaling.d.ts +15 -0
  19. package/lib/aws/cloudwatch/actions/appscaling.js +24 -0
  20. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  21. package/lib/aws/cloudwatch/actions/index.d.ts +3 -0
  22. package/lib/aws/cloudwatch/actions/index.js +4 -4
  23. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  24. package/lib/aws/cloudwatch/actions/sns.d.ts +14 -0
  25. package/lib/aws/cloudwatch/actions/sns.js +23 -0
  26. package/lib/aws/cloudwatch/actions/ssm.d.ts +72 -0
  27. package/lib/aws/cloudwatch/actions/ssm.js +104 -0
  28. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  29. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  30. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  31. package/lib/aws/cloudwatch/alarm.js +1 -1
  32. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  33. package/lib/aws/cloudwatch/dashboard.js +1 -1
  34. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  35. package/lib/aws/cloudwatch/graph.js +8 -8
  36. package/lib/aws/cloudwatch/layout.js +3 -3
  37. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  38. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  39. package/lib/aws/cloudwatch/log-group.js +1 -1
  40. package/lib/aws/cloudwatch/log-query.js +1 -1
  41. package/lib/aws/cloudwatch/log-stream.js +1 -1
  42. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  43. package/lib/aws/cloudwatch/metric.js +2 -2
  44. package/lib/aws/cloudwatch/pattern.js +3 -3
  45. package/lib/aws/cloudwatch/policy.js +1 -1
  46. package/lib/aws/cloudwatch/query-definition.js +2 -2
  47. package/lib/aws/cloudwatch/stats.js +1 -1
  48. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  49. package/lib/aws/cloudwatch/text.js +1 -1
  50. package/lib/aws/cloudwatch/variable.js +3 -3
  51. package/lib/aws/cloudwatch/widget.js +1 -1
  52. package/lib/aws/compute/access-log.d.ts +478 -0
  53. package/lib/aws/compute/access-log.js +649 -0
  54. package/lib/aws/compute/activity.js +1 -1
  55. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  56. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  57. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  58. package/lib/aws/compute/alb/application-listener.js +1 -1
  59. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  60. package/lib/aws/compute/alb/application-target-group.js +1 -1
  61. package/lib/aws/compute/alb/conditions.js +1 -1
  62. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  63. package/lib/aws/compute/alb/trust-store.js +1 -1
  64. package/lib/aws/compute/api-definition.d.ts +106 -0
  65. package/lib/aws/compute/api-definition.js +200 -0
  66. package/lib/aws/compute/api-key.d.ts +184 -0
  67. package/lib/aws/compute/api-key.js +197 -0
  68. package/lib/aws/compute/apigateway-canned-metrics.generated.d.ts +169 -0
  69. package/lib/aws/compute/apigateway-canned-metrics.generated.js +63 -0
  70. package/lib/aws/compute/apigateway-util.d.ts +31 -0
  71. package/lib/aws/compute/apigateway-util.js +152 -0
  72. package/lib/aws/compute/architecture.js +1 -1
  73. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  74. package/lib/aws/compute/authorizer.d.ts +35 -0
  75. package/lib/aws/compute/authorizer.js +28 -0
  76. package/lib/aws/compute/authorizers/identity-source.d.ts +37 -0
  77. package/lib/aws/compute/authorizers/identity-source.js +61 -0
  78. package/lib/aws/compute/authorizers/index.d.ts +2 -0
  79. package/lib/aws/compute/authorizers/index.js +20 -0
  80. package/lib/aws/compute/authorizers/lambda.d.ts +140 -0
  81. package/lib/aws/compute/authorizers/lambda.js +208 -0
  82. package/lib/aws/compute/base-path-mapping.d.ts +49 -0
  83. package/lib/aws/compute/base-path-mapping.js +52 -0
  84. package/lib/aws/compute/base-scalable-attribute.js +3 -3
  85. package/lib/aws/compute/bastion-host.js +1 -1
  86. package/lib/aws/compute/chain.js +1 -1
  87. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  88. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  89. package/lib/aws/compute/client-vpn-route.js +2 -2
  90. package/lib/aws/compute/code.d.ts +415 -0
  91. package/lib/aws/compute/code.js +424 -0
  92. package/lib/aws/compute/condition.js +1 -1
  93. package/lib/aws/compute/connections.js +1 -1
  94. package/lib/aws/compute/cors.d.ts +102 -0
  95. package/lib/aws/compute/cors.js +33 -0
  96. package/lib/aws/compute/deployment.d.ts +83 -0
  97. package/lib/aws/compute/deployment.js +158 -0
  98. package/lib/aws/compute/domain-name.d.ts +153 -0
  99. package/lib/aws/compute/domain-name.js +158 -0
  100. package/lib/aws/compute/event-invoke-config.d.ts +2 -2
  101. package/lib/aws/compute/event-invoke-config.js +4 -4
  102. package/lib/aws/compute/event-source-filter.js +2 -2
  103. package/lib/aws/compute/event-source-mapping.d.ts +2 -2
  104. package/lib/aws/compute/event-source-mapping.js +9 -7
  105. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  106. package/lib/aws/compute/event-sources/s3.js +1 -1
  107. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  108. package/lib/aws/compute/event-sources/sqs.js +3 -2
  109. package/lib/aws/compute/fields.js +4 -4
  110. package/lib/aws/compute/function-alias.d.ts +1 -0
  111. package/lib/aws/compute/function-alias.js +8 -2
  112. package/lib/aws/compute/function-base.d.ts +15 -0
  113. package/lib/aws/compute/function-base.js +4 -4
  114. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  115. package/lib/aws/compute/function-destinations/function.js +1 -1
  116. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  117. package/lib/aws/compute/function-nodejs/bundling.d.ts +75 -0
  118. package/lib/aws/compute/function-nodejs/bundling.js +405 -0
  119. package/lib/aws/compute/function-nodejs/function.d.ts +99 -0
  120. package/lib/aws/compute/function-nodejs/function.js +175 -0
  121. package/lib/aws/compute/function-nodejs/index.d.ts +2 -0
  122. package/lib/aws/compute/function-nodejs/index.js +19 -0
  123. package/lib/aws/compute/function-nodejs/package-installation.d.ts +8 -0
  124. package/lib/aws/compute/function-nodejs/package-installation.js +36 -0
  125. package/lib/aws/compute/function-nodejs/package-manager.d.ts +33 -0
  126. package/lib/aws/compute/function-nodejs/package-manager.js +99 -0
  127. package/lib/aws/compute/function-nodejs/types.d.ts +410 -0
  128. package/lib/aws/compute/function-nodejs/types.js +81 -0
  129. package/lib/aws/compute/function-nodejs/util.d.ts +60 -0
  130. package/lib/aws/compute/function-nodejs/util.js +202 -0
  131. package/lib/aws/compute/function-url.d.ts +2 -2
  132. package/lib/aws/compute/function-url.js +4 -4
  133. package/lib/aws/compute/function.d.ts +34 -4
  134. package/lib/aws/compute/function.js +91 -17
  135. package/lib/aws/compute/gateway-response.d.ts +157 -0
  136. package/lib/aws/compute/gateway-response.js +156 -0
  137. package/lib/aws/compute/handler.d.ts +10 -0
  138. package/lib/aws/compute/handler.js +20 -0
  139. package/lib/aws/compute/index.d.ts +27 -0
  140. package/lib/aws/compute/index.js +29 -1
  141. package/lib/aws/compute/instance-types.js +1 -1
  142. package/lib/aws/compute/instance.js +1 -1
  143. package/lib/aws/compute/integration.d.ts +311 -0
  144. package/lib/aws/compute/integration.js +165 -0
  145. package/lib/aws/compute/integrations/aws.d.ts +72 -0
  146. package/lib/aws/compute/integrations/aws.js +55 -0
  147. package/lib/aws/compute/integrations/http.d.ts +37 -0
  148. package/lib/aws/compute/integrations/http.js +35 -0
  149. package/lib/aws/compute/integrations/index.d.ts +6 -0
  150. package/lib/aws/compute/integrations/index.js +24 -0
  151. package/lib/aws/compute/integrations/lambda.d.ts +40 -0
  152. package/lib/aws/compute/integrations/lambda.js +73 -0
  153. package/lib/aws/compute/integrations/mock.d.ts +16 -0
  154. package/lib/aws/compute/integrations/mock.js +30 -0
  155. package/lib/aws/compute/integrations/request-context.d.ts +144 -0
  156. package/lib/aws/compute/integrations/request-context.js +3 -0
  157. package/lib/aws/compute/integrations/stepfunctions.d.ts +102 -0
  158. package/lib/aws/compute/integrations/stepfunctions.js +268 -0
  159. package/lib/aws/compute/ip-addresses.js +2 -2
  160. package/lib/aws/compute/ipam.js +1 -1
  161. package/lib/aws/compute/json-schema.d.ts +75 -0
  162. package/lib/aws/compute/json-schema.js +23 -0
  163. package/lib/aws/compute/key-pair.js +1 -1
  164. package/lib/aws/compute/lambda-api.d.ts +46 -0
  165. package/lib/aws/compute/lambda-api.js +64 -0
  166. package/lib/aws/compute/launch-template.js +2 -2
  167. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  168. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  169. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  170. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  171. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  172. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  173. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  174. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  175. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  176. package/lib/aws/compute/load-balancer.js +3 -3
  177. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  178. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  179. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  180. package/lib/aws/compute/machine-image/common.js +1 -1
  181. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  182. package/lib/aws/compute/method.d.ts +219 -0
  183. package/lib/aws/compute/method.js +396 -0
  184. package/lib/aws/compute/methodresponse.d.ts +28 -0
  185. package/lib/aws/compute/methodresponse.js +3 -0
  186. package/lib/aws/compute/model.d.ts +143 -0
  187. package/lib/aws/compute/model.js +141 -0
  188. package/lib/aws/compute/nat.js +5 -5
  189. package/lib/aws/compute/network-acl-types.js +2 -2
  190. package/lib/aws/compute/network-acl.js +3 -3
  191. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  192. package/lib/aws/compute/nlb/network-listener.js +1 -1
  193. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  194. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  195. package/lib/aws/compute/peer.js +1 -1
  196. package/lib/aws/compute/placement-group.js +1 -1
  197. package/lib/aws/compute/port.js +1 -1
  198. package/lib/aws/compute/prefix-list.js +1 -1
  199. package/lib/aws/compute/requestvalidator.d.ts +50 -0
  200. package/lib/aws/compute/requestvalidator.js +59 -0
  201. package/lib/aws/compute/resource.d.ts +223 -0
  202. package/lib/aws/compute/resource.js +316 -0
  203. package/lib/aws/compute/restapi.d.ts +510 -0
  204. package/lib/aws/compute/restapi.js +626 -0
  205. package/lib/aws/compute/route.js +8 -8
  206. package/lib/aws/compute/runtime.d.ts +282 -0
  207. package/lib/aws/compute/runtime.js +337 -0
  208. package/lib/aws/compute/scalable-target.js +3 -3
  209. package/lib/aws/compute/schedule.js +3 -3
  210. package/lib/aws/compute/security-group.js +1 -1
  211. package/lib/aws/compute/stage.d.ts +350 -0
  212. package/lib/aws/compute/stage.js +304 -0
  213. package/lib/aws/compute/state-graph.js +1 -1
  214. package/lib/aws/compute/state-machine-fragment.js +1 -1
  215. package/lib/aws/compute/state-machine.js +4 -4
  216. package/lib/aws/compute/states/choice.js +1 -1
  217. package/lib/aws/compute/states/custom-state.js +1 -1
  218. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  219. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  220. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  221. package/lib/aws/compute/states/distributed-map.js +1 -1
  222. package/lib/aws/compute/states/fail.js +1 -1
  223. package/lib/aws/compute/states/map-base.js +1 -1
  224. package/lib/aws/compute/states/map.js +1 -1
  225. package/lib/aws/compute/states/parallel.js +1 -1
  226. package/lib/aws/compute/states/pass.js +2 -2
  227. package/lib/aws/compute/states/state.js +1 -1
  228. package/lib/aws/compute/states/succeed.js +1 -1
  229. package/lib/aws/compute/states/task-base.js +2 -2
  230. package/lib/aws/compute/states/task.js +1 -1
  231. package/lib/aws/compute/states/wait.js +2 -2
  232. package/lib/aws/compute/step-scaling-action.js +3 -3
  233. package/lib/aws/compute/step-scaling-policy.js +1 -1
  234. package/lib/aws/compute/stepfunctions-api.d.ts +103 -0
  235. package/lib/aws/compute/stepfunctions-api.js +39 -0
  236. package/lib/aws/compute/subnet-v2.js +2 -2
  237. package/lib/aws/compute/subnet.js +1 -1
  238. package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
  239. package/lib/aws/compute/task-credentials.js +1 -1
  240. package/lib/aws/compute/task-input.js +1 -1
  241. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  242. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  243. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  244. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  245. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  246. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  247. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  248. package/lib/aws/compute/types.js +1 -1
  249. package/lib/aws/compute/usage-plan.d.ts +194 -0
  250. package/lib/aws/compute/usage-plan.js +174 -0
  251. package/lib/aws/compute/user-data.js +3 -3
  252. package/lib/aws/compute/volume.js +2 -2
  253. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  254. package/lib/aws/compute/vpc-endpoint.js +6 -6
  255. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  256. package/lib/aws/compute/vpc-link.d.ts +104 -0
  257. package/lib/aws/compute/vpc-link.js +137 -0
  258. package/lib/aws/compute/vpc-v2-base.js +1 -1
  259. package/lib/aws/compute/vpc-v2.js +2 -2
  260. package/lib/aws/compute/vpc.js +4 -4
  261. package/lib/aws/compute/vpn.js +3 -3
  262. package/lib/aws/edge/certificate.js +1 -1
  263. package/lib/aws/edge/distribution.js +3 -3
  264. package/lib/aws/edge/dns-alias-record-targets.js +3 -3
  265. package/lib/aws/edge/dns-record.js +13 -13
  266. package/lib/aws/edge/dns-zone.js +1 -1
  267. package/lib/aws/edge/function.js +2 -2
  268. package/lib/aws/edge/key-value-store.js +4 -4
  269. package/lib/aws/edge/origin.js +3 -3
  270. package/lib/aws/edge/response-headers-policy.js +1 -1
  271. package/lib/aws/encryption/alias.js +1 -1
  272. package/lib/aws/encryption/key.js +1 -1
  273. package/lib/aws/encryption/via-service-principal.js +1 -1
  274. package/lib/aws/iam/grant.js +2 -2
  275. package/lib/aws/iam/group.js +1 -1
  276. package/lib/aws/iam/instance-profile.js +1 -1
  277. package/lib/aws/iam/managed-policy.js +1 -1
  278. package/lib/aws/iam/oidc-provider.js +1 -1
  279. package/lib/aws/iam/policy-document.js +1 -1
  280. package/lib/aws/iam/policy-statement.js +1 -1
  281. package/lib/aws/iam/policy.js +1 -1
  282. package/lib/aws/iam/principals.js +20 -20
  283. package/lib/aws/iam/role.js +1 -1
  284. package/lib/aws/iam/saml-provider.js +2 -2
  285. package/lib/aws/iam/unknown-principal.js +1 -1
  286. package/lib/aws/iam/user.js +5 -5
  287. package/lib/aws/index.d.ts +1 -0
  288. package/lib/aws/index.js +4 -1
  289. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  290. package/lib/aws/network/subnet-group.js +3 -3
  291. package/lib/aws/network/subnet.js +4 -4
  292. package/lib/aws/notify/archive.js +1 -1
  293. package/lib/aws/notify/connection.js +3 -3
  294. package/lib/aws/notify/event-bus.js +3 -3
  295. package/lib/aws/notify/event-pattern.js +1 -1
  296. package/lib/aws/notify/input.js +2 -2
  297. package/lib/aws/notify/kinesis-stream.js +1 -1
  298. package/lib/aws/notify/notification-rule.d.ts +1 -1
  299. package/lib/aws/notify/notification-rule.js +5 -5
  300. package/lib/aws/notify/policy.js +1 -1
  301. package/lib/aws/notify/queue-policy.js +1 -1
  302. package/lib/aws/notify/queue.js +1 -1
  303. package/lib/aws/notify/resource-policy.js +1 -1
  304. package/lib/aws/notify/rule.js +1 -1
  305. package/lib/aws/notify/schedule.js +1 -1
  306. package/lib/aws/notify/subscription-filter.js +1 -1
  307. package/lib/aws/notify/subscription.js +4 -4
  308. package/lib/aws/notify/subscriptions/email.js +1 -1
  309. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  310. package/lib/aws/notify/subscriptions/sms.js +1 -1
  311. package/lib/aws/notify/subscriptions/sqs.js +1 -1
  312. package/lib/aws/notify/subscriptions/url.js +1 -1
  313. package/lib/aws/notify/targets/event-bus.js +1 -1
  314. package/lib/aws/notify/targets/function.js +1 -1
  315. package/lib/aws/notify/targets/log-group.js +2 -2
  316. package/lib/aws/notify/targets/sqs.js +1 -1
  317. package/lib/aws/notify/targets/state-machine.js +1 -1
  318. package/lib/aws/notify/topic-base.js +1 -1
  319. package/lib/aws/notify/topic.js +6 -5
  320. package/lib/aws/partition.d.ts +21 -0
  321. package/lib/aws/partition.js +42 -0
  322. package/lib/aws/storage/assets/image-asset.d.ts +379 -0
  323. package/lib/aws/storage/assets/image-asset.js +247 -0
  324. package/lib/aws/storage/assets/index.d.ts +2 -0
  325. package/lib/aws/storage/assets/index.js +21 -0
  326. package/lib/aws/storage/assets/s3.d.ts +125 -0
  327. package/lib/aws/storage/assets/s3.js +80 -0
  328. package/lib/aws/storage/auth-token.d.ts +25 -0
  329. package/lib/aws/storage/auth-token.js +54 -0
  330. package/lib/aws/storage/billing.js +1 -1
  331. package/lib/aws/storage/bucket-notifications.js +1 -1
  332. package/lib/aws/storage/bucket-policy.js +1 -1
  333. package/lib/aws/storage/bucket-source.d.ts +1 -1
  334. package/lib/aws/storage/bucket-source.js +4 -4
  335. package/lib/aws/storage/bucket.d.ts +14 -6
  336. package/lib/aws/storage/bucket.js +48 -40
  337. package/lib/aws/storage/capacity.js +1 -1
  338. package/lib/aws/storage/ecr-lifecycle.d.ts +88 -0
  339. package/lib/aws/storage/ecr-lifecycle.js +23 -0
  340. package/lib/aws/storage/ecr-repository.d.ts +446 -0
  341. package/lib/aws/storage/ecr-repository.js +685 -0
  342. package/lib/aws/storage/encryption.js +1 -1
  343. package/lib/aws/storage/index.d.ts +5 -0
  344. package/lib/aws/storage/index.js +10 -3
  345. package/lib/aws/storage/location.d.ts +17 -0
  346. package/lib/aws/storage/location.js +4 -0
  347. package/lib/aws/storage/notification-targets/function.js +1 -1
  348. package/lib/aws/storage/notification-targets/queue.js +1 -1
  349. package/lib/aws/storage/origin-access-identity.js +1 -1
  350. package/lib/aws/storage/parameter.js +2 -2
  351. package/lib/aws/storage/table.js +3 -3
  352. package/lib/aws/storage/util.d.ts +8 -20
  353. package/lib/aws/storage/util.js +56 -34
  354. package/lib/aws/util.d.ts +1 -0
  355. package/lib/aws/util.js +6 -1
  356. package/lib/bundling.d.ts +434 -0
  357. package/lib/bundling.js +368 -0
  358. package/lib/construct-base.js +2 -2
  359. package/lib/duration.js +1 -1
  360. package/lib/expiration.js +1 -1
  361. package/lib/fs/copy.d.ts +2 -0
  362. package/lib/fs/copy.js +57 -0
  363. package/lib/fs/fingerprint.d.ts +21 -0
  364. package/lib/fs/fingerprint.js +165 -0
  365. package/lib/fs/ignore.d.ts +107 -0
  366. package/lib/fs/ignore.js +190 -0
  367. package/lib/fs/index.d.ts +47 -0
  368. package/lib/fs/index.js +88 -0
  369. package/lib/fs/options.d.ts +110 -0
  370. package/lib/fs/options.js +60 -0
  371. package/lib/fs/utils.d.ts +11 -0
  372. package/lib/fs/utils.js +34 -0
  373. package/lib/index.d.ts +5 -0
  374. package/lib/index.js +7 -1
  375. package/lib/private/asset-staging.d.ts +83 -0
  376. package/lib/private/asset-staging.js +205 -0
  377. package/lib/private/cache.d.ts +17 -0
  378. package/lib/private/cache.js +35 -0
  379. package/lib/private/jsii-deprecated.d.ts +2 -0
  380. package/lib/private/jsii-deprecated.js +19 -0
  381. package/lib/private/unique-resource-name.js +3 -2
  382. package/lib/size.js +1 -1
  383. package/lib/stack-base.js +1 -1
  384. package/lib/terra-func.js +2 -2
  385. package/lib/time-zone.js +1 -1
  386. package/node_modules/@balena/dockerignore/CHANGELOG.md +31 -0
  387. package/node_modules/@balena/dockerignore/LICENSE.md +206 -0
  388. package/node_modules/@balena/dockerignore/README.md +261 -0
  389. package/node_modules/@balena/dockerignore/ignore.js +363 -0
  390. package/node_modules/@balena/dockerignore/index.d.ts +45 -0
  391. package/node_modules/@balena/dockerignore/package.json +49 -0
  392. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  393. package/node_modules/balanced-match/LICENSE.md +21 -0
  394. package/node_modules/balanced-match/README.md +97 -0
  395. package/node_modules/balanced-match/index.js +62 -0
  396. package/node_modules/balanced-match/package.json +48 -0
  397. package/node_modules/concat-map/.travis.yml +4 -0
  398. package/node_modules/concat-map/LICENSE +18 -0
  399. package/node_modules/concat-map/README.markdown +62 -0
  400. package/node_modules/concat-map/example/map.js +6 -0
  401. package/node_modules/concat-map/index.js +13 -0
  402. package/node_modules/concat-map/package.json +43 -0
  403. package/node_modules/concat-map/test/map.js +39 -0
  404. package/node_modules/ignore/LICENSE-MIT +21 -0
  405. package/node_modules/ignore/README.md +412 -0
  406. package/node_modules/ignore/index.d.ts +61 -0
  407. package/node_modules/ignore/index.js +636 -0
  408. package/node_modules/ignore/legacy.js +559 -0
  409. package/node_modules/ignore/package.json +74 -0
  410. package/node_modules/minimatch/LICENSE +15 -0
  411. package/node_modules/minimatch/README.md +230 -0
  412. package/node_modules/minimatch/minimatch.js +947 -0
  413. package/node_modules/minimatch/node_modules/brace-expansion/LICENSE +21 -0
  414. package/node_modules/minimatch/node_modules/brace-expansion/README.md +129 -0
  415. package/node_modules/minimatch/node_modules/brace-expansion/index.js +201 -0
  416. package/node_modules/minimatch/node_modules/brace-expansion/package.json +47 -0
  417. package/node_modules/minimatch/package.json +33 -0
  418. package/package.json +14 -5
  419. package/lib/aws/compute/function-nodejs.d.ts +0 -55
  420. package/lib/aws/compute/function-nodejs.js +0 -70
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearLargeFileFingerprintCache = clearLargeFileFingerprintCache;
4
+ exports.fingerprint = fingerprint;
5
+ exports.contentFingerprint = contentFingerprint;
6
+ const crypto = require("crypto");
7
+ const fs = require("fs");
8
+ const path = require("path");
9
+ const ignore_1 = require("./ignore");
10
+ const options_1 = require("./options");
11
+ const utils_1 = require("./utils");
12
+ const cache_1 = require("../private/cache");
13
+ const BUFFER_SIZE = 8 * 1024;
14
+ const CTRL_SOH = "\x01";
15
+ const CTRL_SOT = "\x02";
16
+ const CTRL_ETX = "\x03";
17
+ const CR = "\r";
18
+ const LF = "\n";
19
+ const CRLF = `${CR}${LF}`;
20
+ const fingerprintCache = new cache_1.Cache();
21
+ /**
22
+ * Files are fingerprinted only the first time they are encountered, to save
23
+ * time hashing large files. This function clears this cache, should it be
24
+ * necessary for some reason.
25
+ */
26
+ function clearLargeFileFingerprintCache() {
27
+ fingerprintCache.clear();
28
+ }
29
+ /**
30
+ * Produces fingerprint based on the contents of a single file or an entire directory tree.
31
+ *
32
+ * Line endings are converted from CRLF to LF.
33
+ *
34
+ * The fingerprint will also include:
35
+ * 1. An extra string if defined in `options.extra`.
36
+ * 2. The symlink follow mode value.
37
+ *
38
+ * @param fileOrDirectory The directory or file to fingerprint
39
+ * @param options Fingerprinting options
40
+ */
41
+ function fingerprint(fileOrDirectory, options = {}) {
42
+ const hash = crypto.createHash("sha256");
43
+ _hashField(hash, "options.extra", options.extraHash || "");
44
+ const follow = options.follow || options_1.SymlinkFollowMode.EXTERNAL;
45
+ _hashField(hash, "options.follow", follow);
46
+ // Resolve symlinks in the initial path (for example, the root directory
47
+ // might be symlinked). It's important that we know the absolute path, so we
48
+ // can judge if further symlinks inside the target directory are within the
49
+ // target or not (if we don't resolve, we would test w.r.t. the wrong path).
50
+ fileOrDirectory = fs.realpathSync(fileOrDirectory);
51
+ const isDir = fs.statSync(fileOrDirectory).isDirectory();
52
+ const rootDirectory = isDir ? fileOrDirectory : path.dirname(fileOrDirectory);
53
+ const ignoreMode = options.ignoreMode || options_1.IgnoreMode.GLOB;
54
+ if (ignoreMode != options_1.IgnoreMode.GLOB) {
55
+ _hashField(hash, "options.ignoreMode", ignoreMode);
56
+ }
57
+ const ignoreStrategy = ignore_1.IgnoreStrategy.fromCopyOptions(options, fileOrDirectory);
58
+ _processFileOrDirectory(fileOrDirectory, isDir);
59
+ return hash.digest("hex");
60
+ function _processFileOrDirectory(symbolicPath, isRootDir = false, realPath = symbolicPath) {
61
+ if (!isRootDir && ignoreStrategy.ignores(symbolicPath)) {
62
+ return;
63
+ }
64
+ const stat = fs.lstatSync(realPath);
65
+ // Use relative path as hash component. Normalize it with forward slashes to ensure
66
+ // same hash on Windows and Linux.
67
+ const hashComponent = path
68
+ .relative(fileOrDirectory, symbolicPath)
69
+ .replace(/\\/g, "/");
70
+ if (stat.isSymbolicLink()) {
71
+ const linkTarget = fs.readlinkSync(realPath);
72
+ const resolvedLinkTarget = path.resolve(path.dirname(realPath), linkTarget);
73
+ if ((0, utils_1.shouldFollow)(follow, rootDirectory, resolvedLinkTarget)) {
74
+ _processFileOrDirectory(symbolicPath, false, resolvedLinkTarget);
75
+ }
76
+ else {
77
+ _hashField(hash, `link:${hashComponent}`, linkTarget);
78
+ }
79
+ }
80
+ else if (stat.isFile()) {
81
+ _hashField(hash, `file:${hashComponent}`, contentFingerprint(realPath));
82
+ }
83
+ else if (stat.isDirectory()) {
84
+ for (const item of fs.readdirSync(realPath).sort()) {
85
+ _processFileOrDirectory(path.join(symbolicPath, item), false, path.join(realPath, item));
86
+ }
87
+ }
88
+ else {
89
+ throw new Error(`Unable to hash ${symbolicPath}: it is neither a file nor a directory`);
90
+ }
91
+ }
92
+ }
93
+ function contentFingerprint(file) {
94
+ // On windows it's particularly important to pass bigint: true to ensure that
95
+ // floating-point inaccuracies don't result in false matches. ( see
96
+ // https://github.com/nodejs/node/issues/12115#issuecomment-438741212 )
97
+ //
98
+ // Note that even if we do get a inode collision somehow, it's unlikely that
99
+ // both mtime and size would have a false-positive as well.
100
+ // We also must suppress typescript typechecks as we are using a version of
101
+ // @types/node that only supports node 10 declarations.
102
+ const stats = fs.statSync(file, { bigint: true });
103
+ const cacheKey = JSON.stringify({
104
+ mtime_unix: stats.mtime.toUTCString(),
105
+ mtime_ms: stats.mtimeMs.toString(),
106
+ inode: stats.ino.toString(),
107
+ size: stats.size.toString(),
108
+ });
109
+ return fingerprintCache.obtain(cacheKey, () => contentFingerprintMiss(file));
110
+ }
111
+ function contentFingerprintMiss(file) {
112
+ const hash = crypto.createHash("sha256");
113
+ const buffer = Buffer.alloc(BUFFER_SIZE);
114
+ const fd = fs.openSync(file,
115
+ // eslint-disable-next-line no-bitwise
116
+ fs.constants.O_DSYNC | fs.constants.O_RDONLY | fs.constants.O_SYNC);
117
+ let size = 0;
118
+ let isBinary = false;
119
+ let lastStr = "";
120
+ let read = 0;
121
+ try {
122
+ while ((read = fs.readSync(fd, buffer, 0, BUFFER_SIZE, null)) !== 0) {
123
+ const slicedBuffer = buffer.slice(0, read);
124
+ // Detect if file is binary by checking the first 8k bytes for the
125
+ // null character (git like implementation)
126
+ if (size === 0) {
127
+ isBinary = slicedBuffer.indexOf(0) !== -1;
128
+ }
129
+ let dataBuffer = slicedBuffer;
130
+ if (!isBinary) {
131
+ // Line endings normalization (CRLF -> LF)
132
+ const str = buffer.slice(0, read).toString();
133
+ // We are going to normalize line endings to LF. So if the current
134
+ // buffer ends with CR, it could be that the next one starts with
135
+ // LF so we need to save it for later use.
136
+ if (new RegExp(`${CR}$`).test(str)) {
137
+ lastStr += str;
138
+ continue;
139
+ }
140
+ const data = lastStr + str;
141
+ const normalizedData = data.replace(new RegExp(CRLF, "g"), LF);
142
+ dataBuffer = Buffer.from(normalizedData);
143
+ lastStr = "";
144
+ }
145
+ size += dataBuffer.length;
146
+ hash.update(dataBuffer);
147
+ }
148
+ if (lastStr) {
149
+ hash.update(Buffer.from(lastStr));
150
+ }
151
+ }
152
+ finally {
153
+ fs.closeSync(fd);
154
+ }
155
+ return `${size}:${hash.digest("hex")}`;
156
+ }
157
+ function _hashField(hash, header, value) {
158
+ hash
159
+ .update(CTRL_SOH)
160
+ .update(header)
161
+ .update(CTRL_SOT)
162
+ .update(value)
163
+ .update(CTRL_ETX);
164
+ }
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZ2VycHJpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnMvZmluZ2VycHJpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1QkEsd0VBRUM7QUFjRCxrQ0EyRUM7QUFFRCxnREFtQkM7QUF2SUQsaUNBQWlDO0FBQ2pDLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IscUNBQTBDO0FBQzFDLHVDQUE4RTtBQUM5RSxtQ0FBdUM7QUFDdkMsNENBQXlDO0FBRXpDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBQ3hCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFDeEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2hCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQUNoQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUUxQixNQUFNLGdCQUFnQixHQUFHLElBQUksYUFBSyxFQUFVLENBQUM7QUFFN0M7Ozs7R0FJRztBQUNILFNBQWdCLDhCQUE4QjtJQUM1QyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixXQUFXLENBQ3pCLGVBQXVCLEVBQ3ZCLFVBQThCLEVBQUU7SUFFaEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxVQUFVLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksMkJBQWlCLENBQUMsUUFBUSxDQUFDO0lBQzVELFVBQVUsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFM0Msd0VBQXdFO0lBQ3hFLDRFQUE0RTtJQUM1RSwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLGVBQWUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRW5ELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFOUUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxvQkFBVSxDQUFDLElBQUksQ0FBQztJQUN6RCxJQUFJLFVBQVUsSUFBSSxvQkFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLHVCQUFjLENBQUMsZUFBZSxDQUNuRCxPQUFPLEVBQ1AsZUFBZSxDQUNoQixDQUFDO0lBQ0YsdUJBQXVCLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRWhELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUxQixTQUFTLHVCQUF1QixDQUM5QixZQUFvQixFQUNwQixZQUFxQixLQUFLLEVBQzFCLFFBQVEsR0FBRyxZQUFZO1FBRXZCLElBQUksQ0FBQyxTQUFTLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwQyxtRkFBbUY7UUFDbkYsa0NBQWtDO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUk7YUFDdkIsUUFBUSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7YUFDdkMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUN0QixVQUFVLENBQ1gsQ0FBQztZQUNGLElBQUksSUFBQSxvQkFBWSxFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUM1RCx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDbkUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxhQUFhLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLGFBQWEsRUFBRSxFQUFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDMUUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ25ELHVCQUF1QixDQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsRUFDN0IsS0FBSyxFQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUMxQixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FDYixrQkFBa0IsWUFBWSx3Q0FBd0MsQ0FDdkUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLElBQVk7SUFDN0MsNkVBQTZFO0lBQzdFLG1FQUFtRTtJQUNuRSx1RUFBdUU7SUFDdkUsRUFBRTtJQUNGLDRFQUE0RTtJQUM1RSwyREFBMkQ7SUFFM0QsMkVBQTJFO0lBQzNFLHVEQUF1RDtJQUN2RCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1FBQ3JDLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtRQUNsQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7UUFDM0IsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO0tBQzVCLENBQUMsQ0FBQztJQUVILE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVk7SUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQ3BCLElBQUk7SUFDSixzQ0FBc0M7SUFDdEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQ25FLENBQUM7SUFDRixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUUzQyxrRUFBa0U7WUFDbEUsMkNBQTJDO1lBQzNDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNmLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFFRCxJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUM7WUFDOUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLDBDQUEwQztnQkFDMUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRTdDLGtFQUFrRTtnQkFDbEUsaUVBQWlFO2dCQUNqRSwwQ0FBMEM7Z0JBQzFDLElBQUksSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNuQyxPQUFPLElBQUksR0FBRyxDQUFDO29CQUNmLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxNQUFNLElBQUksR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUMzQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0QsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDZixDQUFDO1lBRUQsSUFBSSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO1lBQVMsQ0FBQztRQUNULEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3pDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FDakIsSUFBaUIsRUFDakIsTUFBYyxFQUNkLEtBQWlDO0lBRWpDLElBQUk7U0FDRCxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDZCxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDYixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwiY3J5cHRvXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IElnbm9yZVN0cmF0ZWd5IH0gZnJvbSBcIi4vaWdub3JlXCI7XG5pbXBvcnQgeyBGaW5nZXJwcmludE9wdGlvbnMsIElnbm9yZU1vZGUsIFN5bWxpbmtGb2xsb3dNb2RlIH0gZnJvbSBcIi4vb3B0aW9uc1wiO1xuaW1wb3J0IHsgc2hvdWxkRm9sbG93IH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IENhY2hlIH0gZnJvbSBcIi4uL3ByaXZhdGUvY2FjaGVcIjtcblxuY29uc3QgQlVGRkVSX1NJWkUgPSA4ICogMTAyNDtcbmNvbnN0IENUUkxfU09IID0gXCJcXHgwMVwiO1xuY29uc3QgQ1RSTF9TT1QgPSBcIlxceDAyXCI7XG5jb25zdCBDVFJMX0VUWCA9IFwiXFx4MDNcIjtcbmNvbnN0IENSID0gXCJcXHJcIjtcbmNvbnN0IExGID0gXCJcXG5cIjtcbmNvbnN0IENSTEYgPSBgJHtDUn0ke0xGfWA7XG5cbmNvbnN0IGZpbmdlcnByaW50Q2FjaGUgPSBuZXcgQ2FjaGU8c3RyaW5nPigpO1xuXG4vKipcbiAqIEZpbGVzIGFyZSBmaW5nZXJwcmludGVkIG9ubHkgdGhlIGZpcnN0IHRpbWUgdGhleSBhcmUgZW5jb3VudGVyZWQsIHRvIHNhdmVcbiAqIHRpbWUgaGFzaGluZyBsYXJnZSBmaWxlcy4gVGhpcyBmdW5jdGlvbiBjbGVhcnMgdGhpcyBjYWNoZSwgc2hvdWxkIGl0IGJlXG4gKiBuZWNlc3NhcnkgZm9yIHNvbWUgcmVhc29uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJMYXJnZUZpbGVGaW5nZXJwcmludENhY2hlKCkge1xuICBmaW5nZXJwcmludENhY2hlLmNsZWFyKCk7XG59XG5cbi8qKlxuICogUHJvZHVjZXMgZmluZ2VycHJpbnQgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgc2luZ2xlIGZpbGUgb3IgYW4gZW50aXJlIGRpcmVjdG9yeSB0cmVlLlxuICpcbiAqIExpbmUgZW5kaW5ncyBhcmUgY29udmVydGVkIGZyb20gQ1JMRiB0byBMRi5cbiAqXG4gKiBUaGUgZmluZ2VycHJpbnQgd2lsbCBhbHNvIGluY2x1ZGU6XG4gKiAxLiBBbiBleHRyYSBzdHJpbmcgaWYgZGVmaW5lZCBpbiBgb3B0aW9ucy5leHRyYWAuXG4gKiAyLiBUaGUgc3ltbGluayBmb2xsb3cgbW9kZSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gZmlsZU9yRGlyZWN0b3J5IFRoZSBkaXJlY3Rvcnkgb3IgZmlsZSB0byBmaW5nZXJwcmludFxuICogQHBhcmFtIG9wdGlvbnMgRmluZ2VycHJpbnRpbmcgb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZ2VycHJpbnQoXG4gIGZpbGVPckRpcmVjdG9yeTogc3RyaW5nLFxuICBvcHRpb25zOiBGaW5nZXJwcmludE9wdGlvbnMgPSB7fSxcbikge1xuICBjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goXCJzaGEyNTZcIik7XG4gIF9oYXNoRmllbGQoaGFzaCwgXCJvcHRpb25zLmV4dHJhXCIsIG9wdGlvbnMuZXh0cmFIYXNoIHx8IFwiXCIpO1xuICBjb25zdCBmb2xsb3cgPSBvcHRpb25zLmZvbGxvdyB8fCBTeW1saW5rRm9sbG93TW9kZS5FWFRFUk5BTDtcbiAgX2hhc2hGaWVsZChoYXNoLCBcIm9wdGlvbnMuZm9sbG93XCIsIGZvbGxvdyk7XG5cbiAgLy8gUmVzb2x2ZSBzeW1saW5rcyBpbiB0aGUgaW5pdGlhbCBwYXRoIChmb3IgZXhhbXBsZSwgdGhlIHJvb3QgZGlyZWN0b3J5XG4gIC8vIG1pZ2h0IGJlIHN5bWxpbmtlZCkuIEl0J3MgaW1wb3J0YW50IHRoYXQgd2Uga25vdyB0aGUgYWJzb2x1dGUgcGF0aCwgc28gd2VcbiAgLy8gY2FuIGp1ZGdlIGlmIGZ1cnRoZXIgc3ltbGlua3MgaW5zaWRlIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFyZSB3aXRoaW4gdGhlXG4gIC8vIHRhcmdldCBvciBub3QgKGlmIHdlIGRvbid0IHJlc29sdmUsIHdlIHdvdWxkIHRlc3Qgdy5yLnQuIHRoZSB3cm9uZyBwYXRoKS5cbiAgZmlsZU9yRGlyZWN0b3J5ID0gZnMucmVhbHBhdGhTeW5jKGZpbGVPckRpcmVjdG9yeSk7XG5cbiAgY29uc3QgaXNEaXIgPSBmcy5zdGF0U3luYyhmaWxlT3JEaXJlY3RvcnkpLmlzRGlyZWN0b3J5KCk7XG4gIGNvbnN0IHJvb3REaXJlY3RvcnkgPSBpc0RpciA/IGZpbGVPckRpcmVjdG9yeSA6IHBhdGguZGlybmFtZShmaWxlT3JEaXJlY3RvcnkpO1xuXG4gIGNvbnN0IGlnbm9yZU1vZGUgPSBvcHRpb25zLmlnbm9yZU1vZGUgfHwgSWdub3JlTW9kZS5HTE9CO1xuICBpZiAoaWdub3JlTW9kZSAhPSBJZ25vcmVNb2RlLkdMT0IpIHtcbiAgICBfaGFzaEZpZWxkKGhhc2gsIFwib3B0aW9ucy5pZ25vcmVNb2RlXCIsIGlnbm9yZU1vZGUpO1xuICB9XG5cbiAgY29uc3QgaWdub3JlU3RyYXRlZ3kgPSBJZ25vcmVTdHJhdGVneS5mcm9tQ29weU9wdGlvbnMoXG4gICAgb3B0aW9ucyxcbiAgICBmaWxlT3JEaXJlY3RvcnksXG4gICk7XG4gIF9wcm9jZXNzRmlsZU9yRGlyZWN0b3J5KGZpbGVPckRpcmVjdG9yeSwgaXNEaXIpO1xuXG4gIHJldHVybiBoYXNoLmRpZ2VzdChcImhleFwiKTtcblxuICBmdW5jdGlvbiBfcHJvY2Vzc0ZpbGVPckRpcmVjdG9yeShcbiAgICBzeW1ib2xpY1BhdGg6IHN0cmluZyxcbiAgICBpc1Jvb3REaXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICByZWFsUGF0aCA9IHN5bWJvbGljUGF0aCxcbiAgKSB7XG4gICAgaWYgKCFpc1Jvb3REaXIgJiYgaWdub3JlU3RyYXRlZ3kuaWdub3JlcyhzeW1ib2xpY1BhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdCA9IGZzLmxzdGF0U3luYyhyZWFsUGF0aCk7XG5cbiAgICAvLyBVc2UgcmVsYXRpdmUgcGF0aCBhcyBoYXNoIGNvbXBvbmVudC4gTm9ybWFsaXplIGl0IHdpdGggZm9yd2FyZCBzbGFzaGVzIHRvIGVuc3VyZVxuICAgIC8vIHNhbWUgaGFzaCBvbiBXaW5kb3dzIGFuZCBMaW51eC5cbiAgICBjb25zdCBoYXNoQ29tcG9uZW50ID0gcGF0aFxuICAgICAgLnJlbGF0aXZlKGZpbGVPckRpcmVjdG9yeSwgc3ltYm9saWNQYXRoKVxuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuXG4gICAgaWYgKHN0YXQuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgY29uc3QgbGlua1RhcmdldCA9IGZzLnJlYWRsaW5rU3luYyhyZWFsUGF0aCk7XG4gICAgICBjb25zdCByZXNvbHZlZExpbmtUYXJnZXQgPSBwYXRoLnJlc29sdmUoXG4gICAgICAgIHBhdGguZGlybmFtZShyZWFsUGF0aCksXG4gICAgICAgIGxpbmtUYXJnZXQsXG4gICAgICApO1xuICAgICAgaWYgKHNob3VsZEZvbGxvdyhmb2xsb3csIHJvb3REaXJlY3RvcnksIHJlc29sdmVkTGlua1RhcmdldCkpIHtcbiAgICAgICAgX3Byb2Nlc3NGaWxlT3JEaXJlY3Rvcnkoc3ltYm9saWNQYXRoLCBmYWxzZSwgcmVzb2x2ZWRMaW5rVGFyZ2V0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9oYXNoRmllbGQoaGFzaCwgYGxpbms6JHtoYXNoQ29tcG9uZW50fWAsIGxpbmtUYXJnZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3RhdC5pc0ZpbGUoKSkge1xuICAgICAgX2hhc2hGaWVsZChoYXNoLCBgZmlsZToke2hhc2hDb21wb25lbnR9YCwgY29udGVudEZpbmdlcnByaW50KHJlYWxQYXRoKSk7XG4gICAgfSBlbHNlIGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBmcy5yZWFkZGlyU3luYyhyZWFsUGF0aCkuc29ydCgpKSB7XG4gICAgICAgIF9wcm9jZXNzRmlsZU9yRGlyZWN0b3J5KFxuICAgICAgICAgIHBhdGguam9pbihzeW1ib2xpY1BhdGgsIGl0ZW0pLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIHBhdGguam9pbihyZWFsUGF0aCwgaXRlbSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVuYWJsZSB0byBoYXNoICR7c3ltYm9saWNQYXRofTogaXQgaXMgbmVpdGhlciBhIGZpbGUgbm9yIGEgZGlyZWN0b3J5YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250ZW50RmluZ2VycHJpbnQoZmlsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gT24gd2luZG93cyBpdCdzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgdG8gcGFzcyBiaWdpbnQ6IHRydWUgdG8gZW5zdXJlIHRoYXRcbiAgLy8gZmxvYXRpbmctcG9pbnQgaW5hY2N1cmFjaWVzIGRvbid0IHJlc3VsdCBpbiBmYWxzZSBtYXRjaGVzLiAoIHNlZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzEyMTE1I2lzc3VlY29tbWVudC00Mzg3NDEyMTIgKVxuICAvL1xuICAvLyBOb3RlIHRoYXQgZXZlbiBpZiB3ZSBkbyBnZXQgYSBpbm9kZSBjb2xsaXNpb24gc29tZWhvdywgaXQncyB1bmxpa2VseSB0aGF0XG4gIC8vIGJvdGggbXRpbWUgYW5kIHNpemUgd291bGQgaGF2ZSBhIGZhbHNlLXBvc2l0aXZlIGFzIHdlbGwuXG5cbiAgLy8gV2UgYWxzbyBtdXN0IHN1cHByZXNzIHR5cGVzY3JpcHQgdHlwZWNoZWNrcyBhcyB3ZSBhcmUgdXNpbmcgYSB2ZXJzaW9uIG9mXG4gIC8vIEB0eXBlcy9ub2RlIHRoYXQgb25seSBzdXBwb3J0cyBub2RlIDEwIGRlY2xhcmF0aW9ucy5cbiAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhmaWxlLCB7IGJpZ2ludDogdHJ1ZSB9KTtcbiAgY29uc3QgY2FjaGVLZXkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgbXRpbWVfdW5peDogc3RhdHMubXRpbWUudG9VVENTdHJpbmcoKSxcbiAgICBtdGltZV9tczogc3RhdHMubXRpbWVNcy50b1N0cmluZygpLFxuICAgIGlub2RlOiBzdGF0cy5pbm8udG9TdHJpbmcoKSxcbiAgICBzaXplOiBzdGF0cy5zaXplLnRvU3RyaW5nKCksXG4gIH0pO1xuXG4gIHJldHVybiBmaW5nZXJwcmludENhY2hlLm9idGFpbihjYWNoZUtleSwgKCkgPT4gY29udGVudEZpbmdlcnByaW50TWlzcyhmaWxlKSk7XG59XG5cbmZ1bmN0aW9uIGNvbnRlbnRGaW5nZXJwcmludE1pc3MoZmlsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpO1xuICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoQlVGRkVSX1NJWkUpO1xuICBjb25zdCBmZCA9IGZzLm9wZW5TeW5jKFxuICAgIGZpbGUsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICBmcy5jb25zdGFudHMuT19EU1lOQyB8IGZzLmNvbnN0YW50cy5PX1JET05MWSB8IGZzLmNvbnN0YW50cy5PX1NZTkMsXG4gICk7XG4gIGxldCBzaXplID0gMDtcbiAgbGV0IGlzQmluYXJ5ID0gZmFsc2U7XG4gIGxldCBsYXN0U3RyID0gXCJcIjtcbiAgbGV0IHJlYWQgPSAwO1xuICB0cnkge1xuICAgIHdoaWxlICgocmVhZCA9IGZzLnJlYWRTeW5jKGZkLCBidWZmZXIsIDAsIEJVRkZFUl9TSVpFLCBudWxsKSkgIT09IDApIHtcbiAgICAgIGNvbnN0IHNsaWNlZEJ1ZmZlciA9IGJ1ZmZlci5zbGljZSgwLCByZWFkKTtcblxuICAgICAgLy8gRGV0ZWN0IGlmIGZpbGUgaXMgYmluYXJ5IGJ5IGNoZWNraW5nIHRoZSBmaXJzdCA4ayBieXRlcyBmb3IgdGhlXG4gICAgICAvLyBudWxsIGNoYXJhY3RlciAoZ2l0IGxpa2UgaW1wbGVtZW50YXRpb24pXG4gICAgICBpZiAoc2l6ZSA9PT0gMCkge1xuICAgICAgICBpc0JpbmFyeSA9IHNsaWNlZEJ1ZmZlci5pbmRleE9mKDApICE9PSAtMTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGFCdWZmZXIgPSBzbGljZWRCdWZmZXI7XG4gICAgICBpZiAoIWlzQmluYXJ5KSB7XG4gICAgICAgIC8vIExpbmUgZW5kaW5ncyBub3JtYWxpemF0aW9uIChDUkxGIC0+IExGKVxuICAgICAgICBjb25zdCBzdHIgPSBidWZmZXIuc2xpY2UoMCwgcmVhZCkudG9TdHJpbmcoKTtcblxuICAgICAgICAvLyBXZSBhcmUgZ29pbmcgdG8gbm9ybWFsaXplIGxpbmUgZW5kaW5ncyB0byBMRi4gU28gaWYgdGhlIGN1cnJlbnRcbiAgICAgICAgLy8gYnVmZmVyIGVuZHMgd2l0aCBDUiwgaXQgY291bGQgYmUgdGhhdCB0aGUgbmV4dCBvbmUgc3RhcnRzIHdpdGhcbiAgICAgICAgLy8gTEYgc28gd2UgbmVlZCB0byBzYXZlIGl0IGZvciBsYXRlciB1c2UuXG4gICAgICAgIGlmIChuZXcgUmVnRXhwKGAke0NSfSRgKS50ZXN0KHN0cikpIHtcbiAgICAgICAgICBsYXN0U3RyICs9IHN0cjtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBsYXN0U3RyICsgc3RyO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRGF0YSA9IGRhdGEucmVwbGFjZShuZXcgUmVnRXhwKENSTEYsIFwiZ1wiKSwgTEYpO1xuICAgICAgICBkYXRhQnVmZmVyID0gQnVmZmVyLmZyb20obm9ybWFsaXplZERhdGEpO1xuICAgICAgICBsYXN0U3RyID0gXCJcIjtcbiAgICAgIH1cblxuICAgICAgc2l6ZSArPSBkYXRhQnVmZmVyLmxlbmd0aDtcbiAgICAgIGhhc2gudXBkYXRlKGRhdGFCdWZmZXIpO1xuICAgIH1cblxuICAgIGlmIChsYXN0U3RyKSB7XG4gICAgICBoYXNoLnVwZGF0ZShCdWZmZXIuZnJvbShsYXN0U3RyKSk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGZzLmNsb3NlU3luYyhmZCk7XG4gIH1cbiAgcmV0dXJuIGAke3NpemV9OiR7aGFzaC5kaWdlc3QoXCJoZXhcIil9YDtcbn1cblxuZnVuY3Rpb24gX2hhc2hGaWVsZChcbiAgaGFzaDogY3J5cHRvLkhhc2gsXG4gIGhlYWRlcjogc3RyaW5nLFxuICB2YWx1ZTogc3RyaW5nIHwgQnVmZmVyIHwgRGF0YVZpZXcsXG4pIHtcbiAgaGFzaFxuICAgIC51cGRhdGUoQ1RSTF9TT0gpXG4gICAgLnVwZGF0ZShoZWFkZXIpXG4gICAgLnVwZGF0ZShDVFJMX1NPVClcbiAgICAudXBkYXRlKHZhbHVlKVxuICAgIC51cGRhdGUoQ1RSTF9FVFgpO1xufVxuIl19
@@ -0,0 +1,107 @@
1
+ import { CopyOptions } from "./options";
2
+ /**
3
+ * Represents file path ignoring behavior.
4
+ */
5
+ export declare abstract class IgnoreStrategy {
6
+ /**
7
+ * Ignores file paths based on simple glob patterns.
8
+ *
9
+ * @returns `GlobIgnorePattern` associated with the given patterns.
10
+ * @param absoluteRootPath the absolute path to the root directory of the paths to be considered
11
+ */
12
+ static glob(absoluteRootPath: string, patterns: string[]): GlobIgnoreStrategy;
13
+ /**
14
+ * Ignores file paths based on the [`.gitignore specification`](https://git-scm.com/docs/gitignore).
15
+ *
16
+ * @returns `GitIgnorePattern` associated with the given patterns.
17
+ * @param absoluteRootPath the absolute path to the root directory of the paths to be considered
18
+ */
19
+ static git(absoluteRootPath: string, patterns: string[]): GitIgnoreStrategy;
20
+ /**
21
+ * Ignores file paths based on the [`.dockerignore specification`](https://docs.docker.com/engine/reference/builder/#dockerignore-file).
22
+ *
23
+ * @returns `DockerIgnorePattern` associated with the given patterns.
24
+ * @param absoluteRootPath the absolute path to the root directory of the paths to be considered
25
+ */
26
+ static docker(absoluteRootPath: string, patterns: string[]): DockerIgnoreStrategy;
27
+ /**
28
+ * Creates an IgnoreStrategy based on the `ignoreMode` and `exclude` in a `CopyOptions`.
29
+ *
30
+ * @returns `IgnoreStrategy` based on the `CopyOptions`
31
+ * @param absoluteRootPath the absolute path to the root directory of the paths to be considered
32
+ * @param options the `CopyOptions` to create the `IgnoreStrategy` from
33
+ */
34
+ static fromCopyOptions(options: CopyOptions, absoluteRootPath: string): IgnoreStrategy;
35
+ /**
36
+ * Adds another pattern.
37
+ * @params pattern the pattern to add
38
+ */
39
+ abstract add(pattern: string): void;
40
+ /**
41
+ * Determines whether a given file path should be ignored or not.
42
+ *
43
+ * @param absoluteFilePath absolute file path to be assessed against the pattern
44
+ * @returns `true` if the file should be ignored
45
+ */
46
+ abstract ignores(absoluteFilePath: string): boolean;
47
+ }
48
+ /**
49
+ * Ignores file paths based on simple glob patterns.
50
+ */
51
+ export declare class GlobIgnoreStrategy extends IgnoreStrategy {
52
+ private readonly absoluteRootPath;
53
+ private readonly patterns;
54
+ constructor(absoluteRootPath: string, patterns: string[]);
55
+ /**
56
+ * Adds another pattern.
57
+ * @params pattern the pattern to add
58
+ */
59
+ add(pattern: string): void;
60
+ /**
61
+ * Determines whether a given file path should be ignored or not.
62
+ *
63
+ * @param absoluteFilePath absolute file path to be assessed against the pattern
64
+ * @returns `true` if the file should be ignored
65
+ */
66
+ ignores(absoluteFilePath: string): boolean;
67
+ }
68
+ /**
69
+ * Ignores file paths based on the [`.gitignore specification`](https://git-scm.com/docs/gitignore).
70
+ */
71
+ export declare class GitIgnoreStrategy extends IgnoreStrategy {
72
+ private readonly absoluteRootPath;
73
+ private readonly ignore;
74
+ constructor(absoluteRootPath: string, patterns: string[]);
75
+ /**
76
+ * Adds another pattern.
77
+ * @params pattern the pattern to add
78
+ */
79
+ add(pattern: string): void;
80
+ /**
81
+ * Determines whether a given file path should be ignored or not.
82
+ *
83
+ * @param absoluteFilePath absolute file path to be assessed against the pattern
84
+ * @returns `true` if the file should be ignored
85
+ */
86
+ ignores(absoluteFilePath: string): boolean;
87
+ }
88
+ /**
89
+ * Ignores file paths based on the [`.dockerignore specification`](https://docs.docker.com/engine/reference/builder/#dockerignore-file).
90
+ */
91
+ export declare class DockerIgnoreStrategy extends IgnoreStrategy {
92
+ private readonly absoluteRootPath;
93
+ private readonly ignore;
94
+ constructor(absoluteRootPath: string, patterns: string[]);
95
+ /**
96
+ * Adds another pattern.
97
+ * @params pattern the pattern to add
98
+ */
99
+ add(pattern: string): void;
100
+ /**
101
+ * Determines whether a given file path should be ignored or not.
102
+ *
103
+ * @param absoluteFilePath absolute file path to be assessed against the pattern
104
+ * @returns `true` if the file should be ignored
105
+ */
106
+ ignores(absoluteFilePath: string): boolean;
107
+ }
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ var _a, _b, _c, _d;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DockerIgnoreStrategy = exports.GitIgnoreStrategy = exports.GlobIgnoreStrategy = exports.IgnoreStrategy = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ // https://github.com/aws/aws-cdk/blob/v2.186.0/packages/aws-cdk-lib/core/lib/fs/ignore.ts
7
+ const path = require("path");
8
+ const dockerignore_1 = require("@balena/dockerignore");
9
+ const ignore_1 = require("ignore");
10
+ const options_1 = require("./options");
11
+ // Must be a 'require' to not run afoul of ESM module import rules
12
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
13
+ const minimatch = require("minimatch");
14
+ /**
15
+ * Represents file path ignoring behavior.
16
+ */
17
+ class IgnoreStrategy {
18
+ /**
19
+ * Ignores file paths based on simple glob patterns.
20
+ *
21
+ * @returns `GlobIgnorePattern` associated with the given patterns.
22
+ * @param absoluteRootPath the absolute path to the root directory of the paths to be considered
23
+ */
24
+ static glob(absoluteRootPath, patterns) {
25
+ return new GlobIgnoreStrategy(absoluteRootPath, patterns);
26
+ }
27
+ /**
28
+ * Ignores file paths based on the [`.gitignore specification`](https://git-scm.com/docs/gitignore).
29
+ *
30
+ * @returns `GitIgnorePattern` associated with the given patterns.
31
+ * @param absoluteRootPath the absolute path to the root directory of the paths to be considered
32
+ */
33
+ static git(absoluteRootPath, patterns) {
34
+ return new GitIgnoreStrategy(absoluteRootPath, patterns);
35
+ }
36
+ /**
37
+ * Ignores file paths based on the [`.dockerignore specification`](https://docs.docker.com/engine/reference/builder/#dockerignore-file).
38
+ *
39
+ * @returns `DockerIgnorePattern` associated with the given patterns.
40
+ * @param absoluteRootPath the absolute path to the root directory of the paths to be considered
41
+ */
42
+ static docker(absoluteRootPath, patterns) {
43
+ return new DockerIgnoreStrategy(absoluteRootPath, patterns);
44
+ }
45
+ /**
46
+ * Creates an IgnoreStrategy based on the `ignoreMode` and `exclude` in a `CopyOptions`.
47
+ *
48
+ * @returns `IgnoreStrategy` based on the `CopyOptions`
49
+ * @param absoluteRootPath the absolute path to the root directory of the paths to be considered
50
+ * @param options the `CopyOptions` to create the `IgnoreStrategy` from
51
+ */
52
+ static fromCopyOptions(options, absoluteRootPath) {
53
+ const ignoreMode = options.ignoreMode || options_1.IgnoreMode.GLOB;
54
+ const exclude = options.exclude || [];
55
+ switch (ignoreMode) {
56
+ case options_1.IgnoreMode.GLOB:
57
+ return this.glob(absoluteRootPath, exclude);
58
+ case options_1.IgnoreMode.GIT:
59
+ return this.git(absoluteRootPath, exclude);
60
+ case options_1.IgnoreMode.DOCKER:
61
+ return this.docker(absoluteRootPath, exclude);
62
+ }
63
+ }
64
+ }
65
+ exports.IgnoreStrategy = IgnoreStrategy;
66
+ _a = JSII_RTTI_SYMBOL_1;
67
+ IgnoreStrategy[_a] = { fqn: "terraconstructs.IgnoreStrategy", version: "0.1.0" };
68
+ /**
69
+ * Ignores file paths based on simple glob patterns.
70
+ */
71
+ class GlobIgnoreStrategy extends IgnoreStrategy {
72
+ constructor(absoluteRootPath, patterns) {
73
+ super();
74
+ if (!path.isAbsolute(absoluteRootPath)) {
75
+ throw new Error("GlobIgnoreStrategy expects an absolute file path");
76
+ }
77
+ this.absoluteRootPath = absoluteRootPath;
78
+ this.patterns = patterns;
79
+ }
80
+ /**
81
+ * Adds another pattern.
82
+ * @params pattern the pattern to add
83
+ */
84
+ add(pattern) {
85
+ this.patterns.push(pattern);
86
+ }
87
+ /**
88
+ * Determines whether a given file path should be ignored or not.
89
+ *
90
+ * @param absoluteFilePath absolute file path to be assessed against the pattern
91
+ * @returns `true` if the file should be ignored
92
+ */
93
+ ignores(absoluteFilePath) {
94
+ if (!path.isAbsolute(absoluteFilePath)) {
95
+ throw new Error("GlobIgnoreStrategy.ignores() expects an absolute path");
96
+ }
97
+ let relativePath = path.relative(this.absoluteRootPath, absoluteFilePath);
98
+ let excludeOutput = false;
99
+ for (const pattern of this.patterns) {
100
+ const negate = pattern.startsWith("!");
101
+ const match = minimatch(relativePath, pattern, {
102
+ matchBase: true,
103
+ flipNegate: true,
104
+ });
105
+ if (!negate && match) {
106
+ excludeOutput = true;
107
+ }
108
+ if (negate && match) {
109
+ excludeOutput = false;
110
+ }
111
+ }
112
+ return excludeOutput;
113
+ }
114
+ }
115
+ exports.GlobIgnoreStrategy = GlobIgnoreStrategy;
116
+ _b = JSII_RTTI_SYMBOL_1;
117
+ GlobIgnoreStrategy[_b] = { fqn: "terraconstructs.GlobIgnoreStrategy", version: "0.1.0" };
118
+ /**
119
+ * Ignores file paths based on the [`.gitignore specification`](https://git-scm.com/docs/gitignore).
120
+ */
121
+ class GitIgnoreStrategy extends IgnoreStrategy {
122
+ constructor(absoluteRootPath, patterns) {
123
+ super();
124
+ if (!path.isAbsolute(absoluteRootPath)) {
125
+ throw new Error("GitIgnoreStrategy expects an absolute file path");
126
+ }
127
+ this.absoluteRootPath = absoluteRootPath;
128
+ this.ignore = (0, ignore_1.default)().add(patterns);
129
+ }
130
+ /**
131
+ * Adds another pattern.
132
+ * @params pattern the pattern to add
133
+ */
134
+ add(pattern) {
135
+ this.ignore.add(pattern);
136
+ }
137
+ /**
138
+ * Determines whether a given file path should be ignored or not.
139
+ *
140
+ * @param absoluteFilePath absolute file path to be assessed against the pattern
141
+ * @returns `true` if the file should be ignored
142
+ */
143
+ ignores(absoluteFilePath) {
144
+ if (!path.isAbsolute(absoluteFilePath)) {
145
+ throw new Error("GitIgnoreStrategy.ignores() expects an absolute path");
146
+ }
147
+ let relativePath = path.relative(this.absoluteRootPath, absoluteFilePath);
148
+ return this.ignore.ignores(relativePath);
149
+ }
150
+ }
151
+ exports.GitIgnoreStrategy = GitIgnoreStrategy;
152
+ _c = JSII_RTTI_SYMBOL_1;
153
+ GitIgnoreStrategy[_c] = { fqn: "terraconstructs.GitIgnoreStrategy", version: "0.1.0" };
154
+ /**
155
+ * Ignores file paths based on the [`.dockerignore specification`](https://docs.docker.com/engine/reference/builder/#dockerignore-file).
156
+ */
157
+ class DockerIgnoreStrategy extends IgnoreStrategy {
158
+ constructor(absoluteRootPath, patterns) {
159
+ super();
160
+ if (!path.isAbsolute(absoluteRootPath)) {
161
+ throw new Error("DockerIgnoreStrategy expects an absolute file path");
162
+ }
163
+ this.absoluteRootPath = absoluteRootPath;
164
+ this.ignore = (0, dockerignore_1.default)().add(patterns);
165
+ }
166
+ /**
167
+ * Adds another pattern.
168
+ * @params pattern the pattern to add
169
+ */
170
+ add(pattern) {
171
+ this.ignore.add(pattern);
172
+ }
173
+ /**
174
+ * Determines whether a given file path should be ignored or not.
175
+ *
176
+ * @param absoluteFilePath absolute file path to be assessed against the pattern
177
+ * @returns `true` if the file should be ignored
178
+ */
179
+ ignores(absoluteFilePath) {
180
+ if (!path.isAbsolute(absoluteFilePath)) {
181
+ throw new Error("DockerIgnoreStrategy.ignores() expects an absolute path");
182
+ }
183
+ let relativePath = path.relative(this.absoluteRootPath, absoluteFilePath);
184
+ return this.ignore.ignores(relativePath);
185
+ }
186
+ }
187
+ exports.DockerIgnoreStrategy = DockerIgnoreStrategy;
188
+ _d = JSII_RTTI_SYMBOL_1;
189
+ DockerIgnoreStrategy[_d] = { fqn: "terraconstructs.DockerIgnoreStrategy", version: "0.1.0" };
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZzL2lnbm9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBGQUEwRjtBQUUxRiw2QkFBNkI7QUFDN0IsdURBQW1FO0FBQ25FLG1DQUErQztBQUMvQyx1Q0FBb0Q7QUFFcEQsa0VBQWtFO0FBQ2xFLGlFQUFpRTtBQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFdkM7O0dBRUc7QUFDSCxNQUFzQixjQUFjO0lBQ2xDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsZ0JBQXdCLEVBQ3hCLFFBQWtCO1FBRWxCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUNmLGdCQUF3QixFQUN4QixRQUFrQjtRQUVsQixPQUFPLElBQUksaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FDbEIsZ0JBQXdCLEVBQ3hCLFFBQWtCO1FBRWxCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FDM0IsT0FBb0IsRUFDcEIsZ0JBQXdCO1FBRXhCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksb0JBQVUsQ0FBQyxJQUFJLENBQUM7UUFDekQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFdEMsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNuQixLQUFLLG9CQUFVLENBQUMsSUFBSTtnQkFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTlDLEtBQUssb0JBQVUsQ0FBQyxHQUFHO2dCQUNqQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFN0MsS0FBSyxvQkFBVSxDQUFDLE1BQU07Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQzs7QUFoRUgsd0NBK0VDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsY0FBYztJQUlwRCxZQUFZLGdCQUF3QixFQUFFLFFBQWtCO1FBQ3RELEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxHQUFHLENBQUMsT0FBZTtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQUMsZ0JBQXdCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUVELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDMUUsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTFCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUU7Z0JBQzdDLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFVBQVUsRUFBRSxJQUFJO2FBQ2pCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3JCLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQztZQUVELElBQUksTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNwQixhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7QUF0REgsZ0RBdURDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsY0FBYztJQUluRCxZQUFZLGdCQUF3QixFQUFFLFFBQWtCO1FBQ3RELEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBQSxnQkFBUyxHQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxHQUFHLENBQUMsT0FBZTtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQUMsZ0JBQXdCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFFMUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDOztBQXJDSCw4Q0FzQ0M7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxjQUFjO0lBSXRELFlBQVksZ0JBQXdCLEVBQUUsUUFBa0I7UUFDdEQsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFBLHNCQUFZLEdBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEdBQUcsQ0FBQyxPQUFlO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxnQkFBd0I7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQ2IseURBQXlELENBQzFELENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUUxRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNDLENBQUM7O0FBdkNILG9EQXdDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE4Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL2ZzL2lnbm9yZS50c1xuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZG9ja2VySWdub3JlLCAqIGFzIERvY2tlcklnbm9yZSBmcm9tIFwiQGJhbGVuYS9kb2NrZXJpZ25vcmVcIjtcbmltcG9ydCBnaXRJZ25vcmUsICogYXMgR2l0SWdub3JlIGZyb20gXCJpZ25vcmVcIjtcbmltcG9ydCB7IENvcHlPcHRpb25zLCBJZ25vcmVNb2RlIH0gZnJvbSBcIi4vb3B0aW9uc1wiO1xuXG4vLyBNdXN0IGJlIGEgJ3JlcXVpcmUnIHRvIG5vdCBydW4gYWZvdWwgb2YgRVNNIG1vZHVsZSBpbXBvcnQgcnVsZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBtaW5pbWF0Y2ggPSByZXF1aXJlKFwibWluaW1hdGNoXCIpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgZmlsZSBwYXRoIGlnbm9yaW5nIGJlaGF2aW9yLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWdub3JlU3RyYXRlZ3kge1xuICAvKipcbiAgICogSWdub3JlcyBmaWxlIHBhdGhzIGJhc2VkIG9uIHNpbXBsZSBnbG9iIHBhdHRlcm5zLlxuICAgKlxuICAgKiBAcmV0dXJucyBgR2xvYklnbm9yZVBhdHRlcm5gIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gICAqIEBwYXJhbSBhYnNvbHV0ZVJvb3RQYXRoIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgcGF0aHMgdG8gYmUgY29uc2lkZXJlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnbG9iKFxuICAgIGFic29sdXRlUm9vdFBhdGg6IHN0cmluZyxcbiAgICBwYXR0ZXJuczogc3RyaW5nW10sXG4gICk6IEdsb2JJZ25vcmVTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBHbG9iSWdub3JlU3RyYXRlZ3koYWJzb2x1dGVSb290UGF0aCwgcGF0dGVybnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIElnbm9yZXMgZmlsZSBwYXRocyBiYXNlZCBvbiB0aGUgW2AuZ2l0aWdub3JlIHNwZWNpZmljYXRpb25gXShodHRwczovL2dpdC1zY20uY29tL2RvY3MvZ2l0aWdub3JlKS5cbiAgICpcbiAgICogQHJldHVybnMgYEdpdElnbm9yZVBhdHRlcm5gIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gICAqIEBwYXJhbSBhYnNvbHV0ZVJvb3RQYXRoIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgcGF0aHMgdG8gYmUgY29uc2lkZXJlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnaXQoXG4gICAgYWJzb2x1dGVSb290UGF0aDogc3RyaW5nLFxuICAgIHBhdHRlcm5zOiBzdHJpbmdbXSxcbiAgKTogR2l0SWdub3JlU3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgR2l0SWdub3JlU3RyYXRlZ3koYWJzb2x1dGVSb290UGF0aCwgcGF0dGVybnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIElnbm9yZXMgZmlsZSBwYXRocyBiYXNlZCBvbiB0aGUgW2AuZG9ja2VyaWdub3JlIHNwZWNpZmljYXRpb25gXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2J1aWxkZXIvI2RvY2tlcmlnbm9yZS1maWxlKS5cbiAgICpcbiAgICogQHJldHVybnMgYERvY2tlcklnbm9yZVBhdHRlcm5gIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gICAqIEBwYXJhbSBhYnNvbHV0ZVJvb3RQYXRoIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgcGF0aHMgdG8gYmUgY29uc2lkZXJlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkb2NrZXIoXG4gICAgYWJzb2x1dGVSb290UGF0aDogc3RyaW5nLFxuICAgIHBhdHRlcm5zOiBzdHJpbmdbXSxcbiAgKTogRG9ja2VySWdub3JlU3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgRG9ja2VySWdub3JlU3RyYXRlZ3koYWJzb2x1dGVSb290UGF0aCwgcGF0dGVybnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gSWdub3JlU3RyYXRlZ3kgYmFzZWQgb24gdGhlIGBpZ25vcmVNb2RlYCBhbmQgYGV4Y2x1ZGVgIGluIGEgYENvcHlPcHRpb25zYC5cbiAgICpcbiAgICogQHJldHVybnMgYElnbm9yZVN0cmF0ZWd5YCBiYXNlZCBvbiB0aGUgYENvcHlPcHRpb25zYFxuICAgKiBAcGFyYW0gYWJzb2x1dGVSb290UGF0aCB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHBhdGhzIHRvIGJlIGNvbnNpZGVyZWRcbiAgICogQHBhcmFtIG9wdGlvbnMgdGhlIGBDb3B5T3B0aW9uc2AgdG8gY3JlYXRlIHRoZSBgSWdub3JlU3RyYXRlZ3lgIGZyb21cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvcHlPcHRpb25zKFxuICAgIG9wdGlvbnM6IENvcHlPcHRpb25zLFxuICAgIGFic29sdXRlUm9vdFBhdGg6IHN0cmluZyxcbiAgKTogSWdub3JlU3RyYXRlZ3kge1xuICAgIGNvbnN0IGlnbm9yZU1vZGUgPSBvcHRpb25zLmlnbm9yZU1vZGUgfHwgSWdub3JlTW9kZS5HTE9CO1xuICAgIGNvbnN0IGV4Y2x1ZGUgPSBvcHRpb25zLmV4Y2x1ZGUgfHwgW107XG5cbiAgICBzd2l0Y2ggKGlnbm9yZU1vZGUpIHtcbiAgICAgIGNhc2UgSWdub3JlTW9kZS5HTE9COlxuICAgICAgICByZXR1cm4gdGhpcy5nbG9iKGFic29sdXRlUm9vdFBhdGgsIGV4Y2x1ZGUpO1xuXG4gICAgICBjYXNlIElnbm9yZU1vZGUuR0lUOlxuICAgICAgICByZXR1cm4gdGhpcy5naXQoYWJzb2x1dGVSb290UGF0aCwgZXhjbHVkZSk7XG5cbiAgICAgIGNhc2UgSWdub3JlTW9kZS5ET0NLRVI6XG4gICAgICAgIHJldHVybiB0aGlzLmRvY2tlcihhYnNvbHV0ZVJvb3RQYXRoLCBleGNsdWRlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbm90aGVyIHBhdHRlcm4uXG4gICAqIEBwYXJhbXMgcGF0dGVybiB0aGUgcGF0dGVybiB0byBhZGRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGQocGF0dGVybjogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gZmlsZSBwYXRoIHNob3VsZCBiZSBpZ25vcmVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIGFic29sdXRlRmlsZVBhdGggYWJzb2x1dGUgZmlsZSBwYXRoIHRvIGJlIGFzc2Vzc2VkIGFnYWluc3QgdGhlIHBhdHRlcm5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmaWxlIHNob3VsZCBiZSBpZ25vcmVkXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaWdub3JlcyhhYnNvbHV0ZUZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIElnbm9yZXMgZmlsZSBwYXRocyBiYXNlZCBvbiBzaW1wbGUgZ2xvYiBwYXR0ZXJucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdsb2JJZ25vcmVTdHJhdGVneSBleHRlbmRzIElnbm9yZVN0cmF0ZWd5IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhYnNvbHV0ZVJvb3RQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGF0dGVybnM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGFic29sdXRlUm9vdFBhdGg6IHN0cmluZywgcGF0dGVybnM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGFic29sdXRlUm9vdFBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHbG9iSWdub3JlU3RyYXRlZ3kgZXhwZWN0cyBhbiBhYnNvbHV0ZSBmaWxlIHBhdGhcIik7XG4gICAgfVxuXG4gICAgdGhpcy5hYnNvbHV0ZVJvb3RQYXRoID0gYWJzb2x1dGVSb290UGF0aDtcbiAgICB0aGlzLnBhdHRlcm5zID0gcGF0dGVybnM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbm90aGVyIHBhdHRlcm4uXG4gICAqIEBwYXJhbXMgcGF0dGVybiB0aGUgcGF0dGVybiB0byBhZGRcbiAgICovXG4gIHB1YmxpYyBhZGQocGF0dGVybjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wYXR0ZXJucy5wdXNoKHBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBhIGdpdmVuIGZpbGUgcGF0aCBzaG91bGQgYmUgaWdub3JlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSBhYnNvbHV0ZUZpbGVQYXRoIGFic29sdXRlIGZpbGUgcGF0aCB0byBiZSBhc3Nlc3NlZCBhZ2FpbnN0IHRoZSBwYXR0ZXJuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZmlsZSBzaG91bGQgYmUgaWdub3JlZFxuICAgKi9cbiAgcHVibGljIGlnbm9yZXMoYWJzb2x1dGVGaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFwYXRoLmlzQWJzb2x1dGUoYWJzb2x1dGVGaWxlUGF0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdsb2JJZ25vcmVTdHJhdGVneS5pZ25vcmVzKCkgZXhwZWN0cyBhbiBhYnNvbHV0ZSBwYXRoXCIpO1xuICAgIH1cblxuICAgIGxldCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKHRoaXMuYWJzb2x1dGVSb290UGF0aCwgYWJzb2x1dGVGaWxlUGF0aCk7XG4gICAgbGV0IGV4Y2x1ZGVPdXRwdXQgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiB0aGlzLnBhdHRlcm5zKSB7XG4gICAgICBjb25zdCBuZWdhdGUgPSBwYXR0ZXJuLnN0YXJ0c1dpdGgoXCIhXCIpO1xuICAgICAgY29uc3QgbWF0Y2ggPSBtaW5pbWF0Y2gocmVsYXRpdmVQYXRoLCBwYXR0ZXJuLCB7XG4gICAgICAgIG1hdGNoQmFzZTogdHJ1ZSxcbiAgICAgICAgZmxpcE5lZ2F0ZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIW5lZ2F0ZSAmJiBtYXRjaCkge1xuICAgICAgICBleGNsdWRlT3V0cHV0ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5lZ2F0ZSAmJiBtYXRjaCkge1xuICAgICAgICBleGNsdWRlT3V0cHV0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4Y2x1ZGVPdXRwdXQ7XG4gIH1cbn1cblxuLyoqXG4gKiBJZ25vcmVzIGZpbGUgcGF0aHMgYmFzZWQgb24gdGhlIFtgLmdpdGlnbm9yZSBzcGVjaWZpY2F0aW9uYF0oaHR0cHM6Ly9naXQtc2NtLmNvbS9kb2NzL2dpdGlnbm9yZSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBHaXRJZ25vcmVTdHJhdGVneSBleHRlbmRzIElnbm9yZVN0cmF0ZWd5IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhYnNvbHV0ZVJvb3RQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgaWdub3JlOiBHaXRJZ25vcmUuSWdub3JlO1xuXG4gIGNvbnN0cnVjdG9yKGFic29sdXRlUm9vdFBhdGg6IHN0cmluZywgcGF0dGVybnM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGFic29sdXRlUm9vdFBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHaXRJZ25vcmVTdHJhdGVneSBleHBlY3RzIGFuIGFic29sdXRlIGZpbGUgcGF0aFwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmFic29sdXRlUm9vdFBhdGggPSBhYnNvbHV0ZVJvb3RQYXRoO1xuICAgIHRoaXMuaWdub3JlID0gZ2l0SWdub3JlKCkuYWRkKHBhdHRlcm5zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFub3RoZXIgcGF0dGVybi5cbiAgICogQHBhcmFtcyBwYXR0ZXJuIHRoZSBwYXR0ZXJuIHRvIGFkZFxuICAgKi9cbiAgcHVibGljIGFkZChwYXR0ZXJuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZS5hZGQocGF0dGVybik7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gZmlsZSBwYXRoIHNob3VsZCBiZSBpZ25vcmVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIGFic29sdXRlRmlsZVBhdGggYWJzb2x1dGUgZmlsZSBwYXRoIHRvIGJlIGFzc2Vzc2VkIGFnYWluc3QgdGhlIHBhdHRlcm5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmaWxlIHNob3VsZCBiZSBpZ25vcmVkXG4gICAqL1xuICBwdWJsaWMgaWdub3JlcyhhYnNvbHV0ZUZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXBhdGguaXNBYnNvbHV0ZShhYnNvbHV0ZUZpbGVQYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2l0SWdub3JlU3RyYXRlZ3kuaWdub3JlcygpIGV4cGVjdHMgYW4gYWJzb2x1dGUgcGF0aFwiKTtcbiAgICB9XG5cbiAgICBsZXQgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZSh0aGlzLmFic29sdXRlUm9vdFBhdGgsIGFic29sdXRlRmlsZVBhdGgpO1xuXG4gICAgcmV0dXJuIHRoaXMuaWdub3JlLmlnbm9yZXMocmVsYXRpdmVQYXRoKTtcbiAgfVxufVxuXG4vKipcbiAqIElnbm9yZXMgZmlsZSBwYXRocyBiYXNlZCBvbiB0aGUgW2AuZG9ja2VyaWdub3JlIHNwZWNpZmljYXRpb25gXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2J1aWxkZXIvI2RvY2tlcmlnbm9yZS1maWxlKS5cbiAqL1xuZXhwb3J0IGNsYXNzIERvY2tlcklnbm9yZVN0cmF0ZWd5IGV4dGVuZHMgSWdub3JlU3RyYXRlZ3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGFic29sdXRlUm9vdFBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBpZ25vcmU6IERvY2tlcklnbm9yZS5JZ25vcmU7XG5cbiAgY29uc3RydWN0b3IoYWJzb2x1dGVSb290UGF0aDogc3RyaW5nLCBwYXR0ZXJuczogc3RyaW5nW10pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKCFwYXRoLmlzQWJzb2x1dGUoYWJzb2x1dGVSb290UGF0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRvY2tlcklnbm9yZVN0cmF0ZWd5IGV4cGVjdHMgYW4gYWJzb2x1dGUgZmlsZSBwYXRoXCIpO1xuICAgIH1cblxuICAgIHRoaXMuYWJzb2x1dGVSb290UGF0aCA9IGFic29sdXRlUm9vdFBhdGg7XG4gICAgdGhpcy5pZ25vcmUgPSBkb2NrZXJJZ25vcmUoKS5hZGQocGF0dGVybnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW5vdGhlciBwYXR0ZXJuLlxuICAgKiBAcGFyYW1zIHBhdHRlcm4gdGhlIHBhdHRlcm4gdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkKHBhdHRlcm46IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlLmFkZChwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBmaWxlIHBhdGggc2hvdWxkIGJlIGlnbm9yZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0gYWJzb2x1dGVGaWxlUGF0aCBhYnNvbHV0ZSBmaWxlIHBhdGggdG8gYmUgYXNzZXNzZWQgYWdhaW5zdCB0aGUgcGF0dGVyblxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZpbGUgc2hvdWxkIGJlIGlnbm9yZWRcbiAgICovXG4gIHB1YmxpYyBpZ25vcmVzKGFic29sdXRlRmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGFic29sdXRlRmlsZVBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRG9ja2VySWdub3JlU3RyYXRlZ3kuaWdub3JlcygpIGV4cGVjdHMgYW4gYWJzb2x1dGUgcGF0aFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZSh0aGlzLmFic29sdXRlUm9vdFBhdGgsIGFic29sdXRlRmlsZVBhdGgpO1xuXG4gICAgcmV0dXJuIHRoaXMuaWdub3JlLmlnbm9yZXMocmVsYXRpdmVQYXRoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,47 @@
1
+ import { CopyOptions, FingerprintOptions } from "./options";
2
+ export * from "./ignore";
3
+ export * from "./options";
4
+ /**
5
+ * File system utilities.
6
+ */
7
+ export declare class FileSystem {
8
+ /**
9
+ * Copies an entire directory structure.
10
+ * @param srcDir Source directory
11
+ * @param destDir Destination directory
12
+ * @param options options
13
+ * @param rootDir Root directory to calculate exclusions from
14
+ */
15
+ static copyDirectory(srcDir: string, destDir: string, options?: CopyOptions, rootDir?: string): void;
16
+ /**
17
+ * Produces fingerprint based on the contents of a single file or an entire directory tree.
18
+ *
19
+ * Line endings are converted from CRLF to LF.
20
+ *
21
+ * The fingerprint will also include:
22
+ * 1. An extra string if defined in `options.extra`.
23
+ * 2. The symlink follow mode value.
24
+ *
25
+ * @param fileOrDirectory The directory or file to fingerprint
26
+ * @param options Fingerprinting options
27
+ */
28
+ static fingerprint(fileOrDirectory: string, options?: FingerprintOptions): string;
29
+ /**
30
+ * Checks whether a directory is empty
31
+ *
32
+ * @param dir The directory to check
33
+ */
34
+ static isEmpty(dir: string): boolean;
35
+ /**
36
+ * The real path of the system temp directory
37
+ */
38
+ static get tmpdir(): string;
39
+ /**
40
+ * Creates a unique temporary directory in the **system temp directory**.
41
+ *
42
+ * @param prefix A prefix for the directory name. Six random characters
43
+ * will be generated and appended behind this prefix.
44
+ */
45
+ static mkdtemp(prefix: string): string;
46
+ private static _tmpdir?;
47
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var _a;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.FileSystem = void 0;
19
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
20
+ // https://github.com/aws/aws-cdk/blob/v2.186.0/packages/aws-cdk-lib/core/lib/fs/index.ts
21
+ const fs = require("fs");
22
+ const os = require("os");
23
+ const path = require("path");
24
+ const copy_1 = require("./copy");
25
+ const fingerprint_1 = require("./fingerprint");
26
+ __exportStar(require("./ignore"), exports);
27
+ __exportStar(require("./options"), exports);
28
+ /**
29
+ * File system utilities.
30
+ */
31
+ class FileSystem {
32
+ /**
33
+ * Copies an entire directory structure.
34
+ * @param srcDir Source directory
35
+ * @param destDir Destination directory
36
+ * @param options options
37
+ * @param rootDir Root directory to calculate exclusions from
38
+ */
39
+ static copyDirectory(srcDir, destDir, options = {}, rootDir) {
40
+ return (0, copy_1.copyDirectory)(srcDir, destDir, options, rootDir);
41
+ }
42
+ /**
43
+ * Produces fingerprint based on the contents of a single file or an entire directory tree.
44
+ *
45
+ * Line endings are converted from CRLF to LF.
46
+ *
47
+ * The fingerprint will also include:
48
+ * 1. An extra string if defined in `options.extra`.
49
+ * 2. The symlink follow mode value.
50
+ *
51
+ * @param fileOrDirectory The directory or file to fingerprint
52
+ * @param options Fingerprinting options
53
+ */
54
+ static fingerprint(fileOrDirectory, options = {}) {
55
+ return (0, fingerprint_1.fingerprint)(fileOrDirectory, options);
56
+ }
57
+ /**
58
+ * Checks whether a directory is empty
59
+ *
60
+ * @param dir The directory to check
61
+ */
62
+ static isEmpty(dir) {
63
+ return fs.readdirSync(dir).length === 0;
64
+ }
65
+ /**
66
+ * The real path of the system temp directory
67
+ */
68
+ static get tmpdir() {
69
+ if (FileSystem._tmpdir) {
70
+ return FileSystem._tmpdir;
71
+ }
72
+ FileSystem._tmpdir = fs.realpathSync(os.tmpdir());
73
+ return FileSystem._tmpdir;
74
+ }
75
+ /**
76
+ * Creates a unique temporary directory in the **system temp directory**.
77
+ *
78
+ * @param prefix A prefix for the directory name. Six random characters
79
+ * will be generated and appended behind this prefix.
80
+ */
81
+ static mkdtemp(prefix) {
82
+ return fs.mkdtempSync(path.join(FileSystem.tmpdir, prefix));
83
+ }
84
+ }
85
+ exports.FileSystem = FileSystem;
86
+ _a = JSII_RTTI_SYMBOL_1;
87
+ FileSystem[_a] = { fqn: "terraconstructs.FileSystem", version: "0.1.0" };
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlGQUF5RjtBQUV6Rix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBdUM7QUFDdkMsK0NBQTRDO0FBRzVDLDJDQUF5QjtBQUN6Qiw0Q0FBMEI7QUFFMUI7O0dBRUc7QUFDSCxNQUFhLFVBQVU7SUFDckI7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FDekIsTUFBYyxFQUNkLE9BQWUsRUFDZixVQUF1QixFQUFFLEVBQ3pCLE9BQWdCO1FBRWhCLE9BQU8sSUFBQSxvQkFBYSxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLGVBQXVCLEVBQ3ZCLFVBQThCLEVBQUU7UUFFaEMsT0FBTyxJQUFBLHlCQUFXLEVBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQy9CLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sS0FBSyxNQUFNO1FBQ3RCLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUM1QixDQUFDO1FBQ0QsVUFBVSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWM7UUFDbEMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7O0FBaEVILGdDQW1FQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE4Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL2ZzL2luZGV4LnRzXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBjb3B5RGlyZWN0b3J5IH0gZnJvbSBcIi4vY29weVwiO1xuaW1wb3J0IHsgZmluZ2VycHJpbnQgfSBmcm9tIFwiLi9maW5nZXJwcmludFwiO1xuaW1wb3J0IHsgQ29weU9wdGlvbnMsIEZpbmdlcnByaW50T3B0aW9ucyB9IGZyb20gXCIuL29wdGlvbnNcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vaWdub3JlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcHRpb25zXCI7XG5cbi8qKlxuICogRmlsZSBzeXN0ZW0gdXRpbGl0aWVzLlxuICovXG5leHBvcnQgY2xhc3MgRmlsZVN5c3RlbSB7XG4gIC8qKlxuICAgKiBDb3BpZXMgYW4gZW50aXJlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuXG4gICAqIEBwYXJhbSBzcmNEaXIgU291cmNlIGRpcmVjdG9yeVxuICAgKiBAcGFyYW0gZGVzdERpciBEZXN0aW5hdGlvbiBkaXJlY3RvcnlcbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9uc1xuICAgKiBAcGFyYW0gcm9vdERpciBSb290IGRpcmVjdG9yeSB0byBjYWxjdWxhdGUgZXhjbHVzaW9ucyBmcm9tXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvcHlEaXJlY3RvcnkoXG4gICAgc3JjRGlyOiBzdHJpbmcsXG4gICAgZGVzdERpcjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENvcHlPcHRpb25zID0ge30sXG4gICAgcm9vdERpcj86IHN0cmluZyxcbiAgKSB7XG4gICAgcmV0dXJuIGNvcHlEaXJlY3Rvcnkoc3JjRGlyLCBkZXN0RGlyLCBvcHRpb25zLCByb290RGlyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9kdWNlcyBmaW5nZXJwcmludCBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBzaW5nbGUgZmlsZSBvciBhbiBlbnRpcmUgZGlyZWN0b3J5IHRyZWUuXG4gICAqXG4gICAqIExpbmUgZW5kaW5ncyBhcmUgY29udmVydGVkIGZyb20gQ1JMRiB0byBMRi5cbiAgICpcbiAgICogVGhlIGZpbmdlcnByaW50IHdpbGwgYWxzbyBpbmNsdWRlOlxuICAgKiAxLiBBbiBleHRyYSBzdHJpbmcgaWYgZGVmaW5lZCBpbiBgb3B0aW9ucy5leHRyYWAuXG4gICAqIDIuIFRoZSBzeW1saW5rIGZvbGxvdyBtb2RlIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZU9yRGlyZWN0b3J5IFRoZSBkaXJlY3Rvcnkgb3IgZmlsZSB0byBmaW5nZXJwcmludFxuICAgKiBAcGFyYW0gb3B0aW9ucyBGaW5nZXJwcmludGluZyBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbmdlcnByaW50KFxuICAgIGZpbGVPckRpcmVjdG9yeTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEZpbmdlcnByaW50T3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICByZXR1cm4gZmluZ2VycHJpbnQoZmlsZU9yRGlyZWN0b3J5LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGRpcmVjdG9yeSBpcyBlbXB0eVxuICAgKlxuICAgKiBAcGFyYW0gZGlyIFRoZSBkaXJlY3RvcnkgdG8gY2hlY2tcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNFbXB0eShkaXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmcy5yZWFkZGlyU3luYyhkaXIpLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVhbCBwYXRoIG9mIHRoZSBzeXN0ZW0gdGVtcCBkaXJlY3RvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHRtcGRpcigpOiBzdHJpbmcge1xuICAgIGlmIChGaWxlU3lzdGVtLl90bXBkaXIpIHtcbiAgICAgIHJldHVybiBGaWxlU3lzdGVtLl90bXBkaXI7XG4gICAgfVxuICAgIEZpbGVTeXN0ZW0uX3RtcGRpciA9IGZzLnJlYWxwYXRoU3luYyhvcy50bXBkaXIoKSk7XG4gICAgcmV0dXJuIEZpbGVTeXN0ZW0uX3RtcGRpcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5pcXVlIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gdGhlICoqc3lzdGVtIHRlbXAgZGlyZWN0b3J5KiouXG4gICAqXG4gICAqIEBwYXJhbSBwcmVmaXggQSBwcmVmaXggZm9yIHRoZSBkaXJlY3RvcnkgbmFtZS4gU2l4IHJhbmRvbSBjaGFyYWN0ZXJzXG4gICAqIHdpbGwgYmUgZ2VuZXJhdGVkIGFuZCBhcHBlbmRlZCBiZWhpbmQgdGhpcyBwcmVmaXguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1rZHRlbXAocHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4oRmlsZVN5c3RlbS50bXBkaXIsIHByZWZpeCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3RtcGRpcj86IHN0cmluZztcbn1cbiJdfQ==