alchemy 2.0.0-beta.10 → 2.0.0-beta.13

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/bin/alchemy.js +1122 -450
  2. package/bin/alchemy.js.map +1 -1
  3. package/bin/alchemy.sh +15 -0
  4. package/bin/alchemy.ts +22 -727
  5. package/bin/commands/_shared.ts +237 -0
  6. package/bin/commands/bootstrap.ts +117 -0
  7. package/bin/commands/deploy.ts +144 -0
  8. package/bin/commands/login.ts +93 -0
  9. package/bin/commands/logs.ts +157 -0
  10. package/bin/commands/tail.ts +138 -0
  11. package/lib/AWS/AuthProvider.d.ts +7 -71
  12. package/lib/AWS/AuthProvider.d.ts.map +1 -1
  13. package/lib/AWS/AuthProvider.js +27 -22
  14. package/lib/AWS/AuthProvider.js.map +1 -1
  15. package/lib/AWS/AutoScaling/LaunchTemplate.d.ts +3 -3
  16. package/lib/AWS/AutoScaling/LaunchTemplate.d.ts.map +1 -1
  17. package/lib/AWS/AutoScaling/LaunchTemplate.js +2 -2
  18. package/lib/AWS/AutoScaling/LaunchTemplate.js.map +1 -1
  19. package/lib/AWS/Bootstrap.d.ts +2 -1
  20. package/lib/AWS/Bootstrap.d.ts.map +1 -1
  21. package/lib/AWS/Bootstrap.js +27 -29
  22. package/lib/AWS/Bootstrap.js.map +1 -1
  23. package/lib/AWS/CloudWatch/Alarm.d.ts +2 -2
  24. package/lib/AWS/CloudWatch/Alarm.d.ts.map +1 -1
  25. package/lib/AWS/CloudWatch/Alarm.js +2 -2
  26. package/lib/AWS/CloudWatch/Alarm.js.map +1 -1
  27. package/lib/AWS/CloudWatch/AlarmMuteRule.d.ts +2 -2
  28. package/lib/AWS/CloudWatch/AlarmMuteRule.d.ts.map +1 -1
  29. package/lib/AWS/CloudWatch/AlarmMuteRule.js +2 -2
  30. package/lib/AWS/CloudWatch/AlarmMuteRule.js.map +1 -1
  31. package/lib/AWS/CloudWatch/CompositeAlarm.d.ts +2 -2
  32. package/lib/AWS/CloudWatch/CompositeAlarm.d.ts.map +1 -1
  33. package/lib/AWS/CloudWatch/CompositeAlarm.js +2 -2
  34. package/lib/AWS/CloudWatch/CompositeAlarm.js.map +1 -1
  35. package/lib/AWS/CloudWatch/Dashboard.d.ts +2 -2
  36. package/lib/AWS/CloudWatch/Dashboard.d.ts.map +1 -1
  37. package/lib/AWS/CloudWatch/Dashboard.js +2 -2
  38. package/lib/AWS/CloudWatch/Dashboard.js.map +1 -1
  39. package/lib/AWS/CloudWatch/InsightRule.d.ts +2 -2
  40. package/lib/AWS/CloudWatch/InsightRule.d.ts.map +1 -1
  41. package/lib/AWS/CloudWatch/InsightRule.js +2 -2
  42. package/lib/AWS/CloudWatch/InsightRule.js.map +1 -1
  43. package/lib/AWS/CloudWatch/MetricStream.d.ts +2 -2
  44. package/lib/AWS/CloudWatch/MetricStream.d.ts.map +1 -1
  45. package/lib/AWS/CloudWatch/MetricStream.js +2 -2
  46. package/lib/AWS/CloudWatch/MetricStream.js.map +1 -1
  47. package/lib/AWS/Credentials.d.ts +5 -10
  48. package/lib/AWS/Credentials.d.ts.map +1 -1
  49. package/lib/AWS/Credentials.js +6 -30
  50. package/lib/AWS/Credentials.js.map +1 -1
  51. package/lib/AWS/DynamoDB/Table.d.ts +1 -1
  52. package/lib/AWS/DynamoDB/Table.d.ts.map +1 -1
  53. package/lib/AWS/EC2/EIP.d.ts +3 -3
  54. package/lib/AWS/EC2/EIP.d.ts.map +1 -1
  55. package/lib/AWS/EC2/EIP.js +2 -2
  56. package/lib/AWS/EC2/EIP.js.map +1 -1
  57. package/lib/AWS/EC2/EgressOnlyInternetGateway.d.ts +3 -3
  58. package/lib/AWS/EC2/EgressOnlyInternetGateway.d.ts.map +1 -1
  59. package/lib/AWS/EC2/EgressOnlyInternetGateway.js +2 -2
  60. package/lib/AWS/EC2/EgressOnlyInternetGateway.js.map +1 -1
  61. package/lib/AWS/EC2/Instance.d.ts +3 -3
  62. package/lib/AWS/EC2/Instance.d.ts.map +1 -1
  63. package/lib/AWS/EC2/Instance.js +2 -2
  64. package/lib/AWS/EC2/Instance.js.map +1 -1
  65. package/lib/AWS/EC2/InternetGateway.d.ts +3 -3
  66. package/lib/AWS/EC2/InternetGateway.d.ts.map +1 -1
  67. package/lib/AWS/EC2/InternetGateway.js +2 -2
  68. package/lib/AWS/EC2/InternetGateway.js.map +1 -1
  69. package/lib/AWS/EC2/NatGateway.d.ts +3 -3
  70. package/lib/AWS/EC2/NatGateway.d.ts.map +1 -1
  71. package/lib/AWS/EC2/NatGateway.js +2 -2
  72. package/lib/AWS/EC2/NatGateway.js.map +1 -1
  73. package/lib/AWS/EC2/Network.d.ts +1 -1
  74. package/lib/AWS/EC2/NetworkAcl.d.ts +3 -3
  75. package/lib/AWS/EC2/NetworkAcl.d.ts.map +1 -1
  76. package/lib/AWS/EC2/NetworkAcl.js +2 -2
  77. package/lib/AWS/EC2/NetworkAcl.js.map +1 -1
  78. package/lib/AWS/EC2/RouteTable.d.ts +3 -3
  79. package/lib/AWS/EC2/RouteTable.d.ts.map +1 -1
  80. package/lib/AWS/EC2/RouteTable.js +2 -2
  81. package/lib/AWS/EC2/RouteTable.js.map +1 -1
  82. package/lib/AWS/EC2/SecurityGroup.d.ts +3 -3
  83. package/lib/AWS/EC2/SecurityGroup.d.ts.map +1 -1
  84. package/lib/AWS/EC2/SecurityGroup.js +2 -2
  85. package/lib/AWS/EC2/SecurityGroup.js.map +1 -1
  86. package/lib/AWS/EC2/Subnet.d.ts +1 -1
  87. package/lib/AWS/EC2/Subnet.d.ts.map +1 -1
  88. package/lib/AWS/EC2/Vpc.d.ts +3 -3
  89. package/lib/AWS/EC2/Vpc.d.ts.map +1 -1
  90. package/lib/AWS/EC2/Vpc.js +2 -2
  91. package/lib/AWS/EC2/Vpc.js.map +1 -1
  92. package/lib/AWS/EC2/VpcEndpoint.d.ts +3 -3
  93. package/lib/AWS/EC2/VpcEndpoint.d.ts.map +1 -1
  94. package/lib/AWS/EC2/VpcEndpoint.js +2 -2
  95. package/lib/AWS/EC2/VpcEndpoint.js.map +1 -1
  96. package/lib/AWS/ECR/Repository.d.ts +1 -1
  97. package/lib/AWS/ECR/Repository.d.ts.map +1 -1
  98. package/lib/AWS/ECR/Repository.js +0 -1
  99. package/lib/AWS/ECR/Repository.js.map +1 -1
  100. package/lib/AWS/ECS/Cluster.d.ts +2 -2
  101. package/lib/AWS/ECS/Cluster.d.ts.map +1 -1
  102. package/lib/AWS/ECS/Cluster.js +2 -2
  103. package/lib/AWS/ECS/Cluster.js.map +1 -1
  104. package/lib/AWS/ECS/Service.d.ts +1 -1
  105. package/lib/AWS/ECS/Service.d.ts.map +1 -1
  106. package/lib/AWS/ECS/Task.d.ts +2 -2
  107. package/lib/AWS/ECS/Task.d.ts.map +1 -1
  108. package/lib/AWS/ECS/Task.js +2 -2
  109. package/lib/AWS/ECS/Task.js.map +1 -1
  110. package/lib/AWS/EKS/Cluster.d.ts +1 -1
  111. package/lib/AWS/EKS/Cluster.d.ts.map +1 -1
  112. package/lib/AWS/ELBv2/Listener.d.ts +1 -1
  113. package/lib/AWS/ELBv2/Listener.d.ts.map +1 -1
  114. package/lib/AWS/ELBv2/LoadBalancer.d.ts +1 -1
  115. package/lib/AWS/ELBv2/LoadBalancer.d.ts.map +1 -1
  116. package/lib/AWS/ELBv2/TargetGroup.d.ts +1 -1
  117. package/lib/AWS/ELBv2/TargetGroup.d.ts.map +1 -1
  118. package/lib/AWS/Endpoint.d.ts +7 -2
  119. package/lib/AWS/Endpoint.d.ts.map +1 -1
  120. package/lib/AWS/Endpoint.js +7 -2
  121. package/lib/AWS/Endpoint.js.map +1 -1
  122. package/lib/AWS/Environment.d.ts +68 -0
  123. package/lib/AWS/Environment.d.ts.map +1 -0
  124. package/lib/AWS/Environment.js +53 -0
  125. package/lib/AWS/Environment.js.map +1 -0
  126. package/lib/AWS/EventBridge/EventBus.d.ts +2 -2
  127. package/lib/AWS/EventBridge/EventBus.d.ts.map +1 -1
  128. package/lib/AWS/EventBridge/EventBus.js +2 -2
  129. package/lib/AWS/EventBridge/EventBus.js.map +1 -1
  130. package/lib/AWS/EventBridge/ListRules.d.ts +2 -2
  131. package/lib/AWS/EventBridge/ListRules.d.ts.map +1 -1
  132. package/lib/AWS/EventBridge/ListRules.js +2 -2
  133. package/lib/AWS/EventBridge/ListRules.js.map +1 -1
  134. package/lib/AWS/EventBridge/PutEvents.d.ts +2 -2
  135. package/lib/AWS/EventBridge/PutEvents.d.ts.map +1 -1
  136. package/lib/AWS/EventBridge/PutEvents.js +2 -2
  137. package/lib/AWS/EventBridge/PutEvents.js.map +1 -1
  138. package/lib/AWS/EventBridge/Rule.d.ts +2 -2
  139. package/lib/AWS/EventBridge/Rule.d.ts.map +1 -1
  140. package/lib/AWS/EventBridge/Rule.js +2 -2
  141. package/lib/AWS/EventBridge/Rule.js.map +1 -1
  142. package/lib/AWS/IAM/OpenIDConnectProvider.d.ts +2 -2
  143. package/lib/AWS/IAM/OpenIDConnectProvider.d.ts.map +1 -1
  144. package/lib/AWS/IAM/OpenIDConnectProvider.js +2 -2
  145. package/lib/AWS/IAM/OpenIDConnectProvider.js.map +1 -1
  146. package/lib/AWS/IAM/Policy.d.ts +3 -3
  147. package/lib/AWS/IAM/Policy.d.ts.map +1 -1
  148. package/lib/AWS/IAM/Policy.js +2 -2
  149. package/lib/AWS/IAM/Policy.js.map +1 -1
  150. package/lib/AWS/IAM/Role.d.ts +3 -3
  151. package/lib/AWS/IAM/Role.d.ts.map +1 -1
  152. package/lib/AWS/IAM/Role.js +3 -3
  153. package/lib/AWS/IAM/Role.js.map +1 -1
  154. package/lib/AWS/Kinesis/Stream.d.ts +2 -2
  155. package/lib/AWS/Kinesis/Stream.d.ts.map +1 -1
  156. package/lib/AWS/Kinesis/Stream.js +2 -2
  157. package/lib/AWS/Kinesis/Stream.js.map +1 -1
  158. package/lib/AWS/Lambda/BucketEventSource.d.ts +1 -1
  159. package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
  160. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +1 -1
  161. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts.map +1 -1
  162. package/lib/AWS/Lambda/EventSourceMapping.d.ts +2 -2
  163. package/lib/AWS/Lambda/EventSourceMapping.d.ts.map +1 -1
  164. package/lib/AWS/Lambda/EventSourceMapping.js +2 -2
  165. package/lib/AWS/Lambda/EventSourceMapping.js.map +1 -1
  166. package/lib/AWS/Lambda/Function.d.ts +2 -2
  167. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  168. package/lib/AWS/Lambda/Function.js +2 -2
  169. package/lib/AWS/Lambda/Function.js.map +1 -1
  170. package/lib/AWS/Lambda/Permission.d.ts +1 -1
  171. package/lib/AWS/Lambda/Permission.js +1 -1
  172. package/lib/AWS/Lambda/QueueEventSource.d.ts +1 -1
  173. package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
  174. package/lib/AWS/Lambda/StreamEventSource.d.ts +1 -1
  175. package/lib/AWS/Lambda/StreamEventSource.d.ts.map +1 -1
  176. package/lib/AWS/Lambda/TableEventSource.d.ts +1 -1
  177. package/lib/AWS/Lambda/TableEventSource.d.ts.map +1 -1
  178. package/lib/AWS/Lambda/TopicEventSource.d.ts +1 -1
  179. package/lib/AWS/Lambda/TopicEventSource.d.ts.map +1 -1
  180. package/lib/AWS/Logs/LogGroup.d.ts +3 -3
  181. package/lib/AWS/Logs/LogGroup.d.ts.map +1 -1
  182. package/lib/AWS/Logs/LogGroup.js +2 -2
  183. package/lib/AWS/Logs/LogGroup.js.map +1 -1
  184. package/lib/AWS/Providers.d.ts +1 -2
  185. package/lib/AWS/Providers.d.ts.map +1 -1
  186. package/lib/AWS/Providers.js +3 -3
  187. package/lib/AWS/Providers.js.map +1 -1
  188. package/lib/AWS/Region.d.ts +6 -22
  189. package/lib/AWS/Region.d.ts.map +1 -1
  190. package/lib/AWS/Region.js +6 -39
  191. package/lib/AWS/Region.js.map +1 -1
  192. package/lib/AWS/S3/Bucket.d.ts +2 -2
  193. package/lib/AWS/S3/Bucket.d.ts.map +1 -1
  194. package/lib/AWS/S3/Bucket.js +2 -2
  195. package/lib/AWS/S3/Bucket.js.map +1 -1
  196. package/lib/AWS/SNS/Topic.d.ts +1 -1
  197. package/lib/AWS/SNS/Topic.d.ts.map +1 -1
  198. package/lib/AWS/SQS/Queue.d.ts +3 -3
  199. package/lib/AWS/SQS/Queue.d.ts.map +1 -1
  200. package/lib/AWS/SQS/Queue.js +2 -2
  201. package/lib/AWS/SQS/Queue.js.map +1 -1
  202. package/lib/AWS/index.d.ts +1 -3
  203. package/lib/AWS/index.d.ts.map +1 -1
  204. package/lib/AWS/index.js +1 -3
  205. package/lib/AWS/index.js.map +1 -1
  206. package/lib/Apply.d.ts.map +1 -1
  207. package/lib/Apply.js +2 -2
  208. package/lib/Apply.js.map +1 -1
  209. package/lib/Auth/AuthProvider.d.ts +51 -7
  210. package/lib/Auth/AuthProvider.d.ts.map +1 -1
  211. package/lib/Auth/AuthProvider.js +37 -0
  212. package/lib/Auth/AuthProvider.js.map +1 -1
  213. package/lib/Auth/Profile.d.ts +71 -10
  214. package/lib/Auth/Profile.d.ts.map +1 -1
  215. package/lib/Auth/Profile.js +47 -30
  216. package/lib/Auth/Profile.js.map +1 -1
  217. package/lib/Auth/index.d.ts +1 -1
  218. package/lib/Auth/index.d.ts.map +1 -1
  219. package/lib/Cloudflare/Auth/AuthProvider.d.ts +14 -31
  220. package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
  221. package/lib/Cloudflare/Auth/AuthProvider.js +59 -38
  222. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  223. package/lib/Cloudflare/CloudflareEnvironment.d.ts +11 -0
  224. package/lib/Cloudflare/CloudflareEnvironment.d.ts.map +1 -0
  225. package/lib/Cloudflare/CloudflareEnvironment.js +26 -0
  226. package/lib/Cloudflare/CloudflareEnvironment.js.map +1 -0
  227. package/lib/Cloudflare/Container/ContainerApplication.d.ts +70 -42
  228. package/lib/Cloudflare/Container/ContainerApplication.d.ts.map +1 -1
  229. package/lib/Cloudflare/Container/ContainerApplication.js +49 -24
  230. package/lib/Cloudflare/Container/ContainerApplication.js.map +1 -1
  231. package/lib/Cloudflare/Credentials.d.ts +11 -0
  232. package/lib/Cloudflare/Credentials.d.ts.map +1 -0
  233. package/lib/Cloudflare/Credentials.js +34 -0
  234. package/lib/Cloudflare/Credentials.js.map +1 -0
  235. package/lib/Cloudflare/D1/D1Database.d.ts +2 -2
  236. package/lib/Cloudflare/D1/D1Database.d.ts.map +1 -1
  237. package/lib/Cloudflare/D1/D1Database.js +2 -2
  238. package/lib/Cloudflare/D1/D1Database.js.map +1 -1
  239. package/lib/Cloudflare/KV/KVNamespace.d.ts +2 -2
  240. package/lib/Cloudflare/KV/KVNamespace.d.ts.map +1 -1
  241. package/lib/Cloudflare/KV/KVNamespace.js +2 -2
  242. package/lib/Cloudflare/KV/KVNamespace.js.map +1 -1
  243. package/lib/Cloudflare/Providers.d.ts +2 -3
  244. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  245. package/lib/Cloudflare/Providers.js +12 -4
  246. package/lib/Cloudflare/Providers.js.map +1 -1
  247. package/lib/Cloudflare/Queue/Queue.d.ts +52 -0
  248. package/lib/Cloudflare/Queue/Queue.d.ts.map +1 -0
  249. package/lib/Cloudflare/Queue/Queue.js +136 -0
  250. package/lib/Cloudflare/Queue/Queue.js.map +1 -0
  251. package/lib/Cloudflare/Queue/QueueBinding.d.ts +35 -0
  252. package/lib/Cloudflare/Queue/QueueBinding.d.ts.map +1 -0
  253. package/lib/Cloudflare/Queue/QueueBinding.js +51 -0
  254. package/lib/Cloudflare/Queue/QueueBinding.js.map +1 -0
  255. package/lib/Cloudflare/Queue/QueueConsumer.d.ts +86 -0
  256. package/lib/Cloudflare/Queue/QueueConsumer.d.ts.map +1 -0
  257. package/lib/Cloudflare/Queue/QueueConsumer.js +138 -0
  258. package/lib/Cloudflare/Queue/QueueConsumer.js.map +1 -0
  259. package/lib/Cloudflare/Queue/index.d.ts +4 -0
  260. package/lib/Cloudflare/Queue/index.d.ts.map +1 -0
  261. package/lib/Cloudflare/Queue/index.js +4 -0
  262. package/lib/Cloudflare/Queue/index.js.map +1 -0
  263. package/lib/Cloudflare/R2/R2Bucket.d.ts +2 -2
  264. package/lib/Cloudflare/R2/R2Bucket.d.ts.map +1 -1
  265. package/lib/Cloudflare/R2/R2Bucket.js +2 -2
  266. package/lib/Cloudflare/R2/R2Bucket.js.map +1 -1
  267. package/lib/Cloudflare/SecretsStore/Secret.d.ts +74 -0
  268. package/lib/Cloudflare/SecretsStore/Secret.d.ts.map +1 -0
  269. package/lib/Cloudflare/SecretsStore/Secret.js +161 -0
  270. package/lib/Cloudflare/SecretsStore/Secret.js.map +1 -0
  271. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts +42 -0
  272. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts.map +1 -0
  273. package/lib/Cloudflare/SecretsStore/SecretBinding.js +49 -0
  274. package/lib/Cloudflare/SecretsStore/SecretBinding.js.map +1 -0
  275. package/lib/Cloudflare/SecretsStore/SecretsStore.d.ts +37 -0
  276. package/lib/Cloudflare/SecretsStore/SecretsStore.d.ts.map +1 -0
  277. package/lib/Cloudflare/SecretsStore/SecretsStore.js +88 -0
  278. package/lib/Cloudflare/SecretsStore/SecretsStore.js.map +1 -0
  279. package/lib/Cloudflare/SecretsStore/index.d.ts +4 -0
  280. package/lib/Cloudflare/SecretsStore/index.d.ts.map +1 -0
  281. package/lib/Cloudflare/SecretsStore/index.js +4 -0
  282. package/lib/Cloudflare/SecretsStore/index.js.map +1 -0
  283. package/lib/Cloudflare/Workers/InferEnv.d.ts +1 -1
  284. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  285. package/lib/Cloudflare/Workers/Worker.d.ts +5 -3
  286. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  287. package/lib/Cloudflare/Workers/Worker.js +61 -7
  288. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  289. package/lib/Cloudflare/Workers/Workflow.d.ts +10 -4
  290. package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
  291. package/lib/Cloudflare/Workers/Workflow.js +3 -3
  292. package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
  293. package/lib/Cloudflare/index.d.ts +3 -1
  294. package/lib/Cloudflare/index.d.ts.map +1 -1
  295. package/lib/Cloudflare/index.js +3 -1
  296. package/lib/Cloudflare/index.js.map +1 -1
  297. package/lib/Stack.d.ts +3 -2
  298. package/lib/Stack.d.ts.map +1 -1
  299. package/lib/Stack.js +10 -7
  300. package/lib/Stack.js.map +1 -1
  301. package/lib/State/LocalState.d.ts.map +1 -1
  302. package/lib/State/LocalState.js +40 -12
  303. package/lib/State/LocalState.js.map +1 -1
  304. package/lib/Test/Bun.d.ts.map +1 -1
  305. package/lib/Test/Bun.js +3 -2
  306. package/lib/Test/Bun.js.map +1 -1
  307. package/lib/Test/Vitest.d.ts +3 -1
  308. package/lib/Test/Vitest.d.ts.map +1 -1
  309. package/lib/Test/Vitest.js +19 -16
  310. package/lib/Test/Vitest.js.map +1 -1
  311. package/lib/Util/PlatformServices.d.ts +14 -3
  312. package/lib/Util/PlatformServices.d.ts.map +1 -1
  313. package/lib/Util/PlatformServices.js +21 -3
  314. package/lib/Util/PlatformServices.js.map +1 -1
  315. package/package.json +5 -5
  316. package/src/AWS/AuthProvider.ts +67 -67
  317. package/src/AWS/AutoScaling/LaunchTemplate.ts +3 -3
  318. package/src/AWS/Bootstrap.ts +32 -37
  319. package/src/AWS/CloudWatch/Alarm.ts +2 -2
  320. package/src/AWS/CloudWatch/AlarmMuteRule.ts +2 -2
  321. package/src/AWS/CloudWatch/CompositeAlarm.ts +2 -2
  322. package/src/AWS/CloudWatch/Dashboard.ts +2 -2
  323. package/src/AWS/CloudWatch/InsightRule.ts +2 -2
  324. package/src/AWS/CloudWatch/MetricStream.ts +2 -2
  325. package/src/AWS/Credentials.ts +9 -44
  326. package/src/AWS/DynamoDB/Table.ts +1 -1
  327. package/src/AWS/EC2/EIP.ts +3 -3
  328. package/src/AWS/EC2/EgressOnlyInternetGateway.ts +3 -3
  329. package/src/AWS/EC2/Instance.ts +3 -3
  330. package/src/AWS/EC2/InternetGateway.ts +3 -3
  331. package/src/AWS/EC2/NatGateway.ts +3 -3
  332. package/src/AWS/EC2/NetworkAcl.ts +3 -3
  333. package/src/AWS/EC2/RouteTable.ts +3 -3
  334. package/src/AWS/EC2/SecurityGroup.ts +3 -3
  335. package/src/AWS/EC2/Subnet.ts +1 -1
  336. package/src/AWS/EC2/Vpc.ts +3 -3
  337. package/src/AWS/EC2/VpcEndpoint.ts +3 -3
  338. package/src/AWS/ECR/Repository.ts +1 -1
  339. package/src/AWS/ECS/Cluster.ts +2 -2
  340. package/src/AWS/ECS/Service.ts +1 -1
  341. package/src/AWS/ECS/Task.ts +2 -2
  342. package/src/AWS/EKS/Cluster.ts +1 -1
  343. package/src/AWS/ELBv2/Listener.ts +1 -1
  344. package/src/AWS/ELBv2/LoadBalancer.ts +1 -1
  345. package/src/AWS/ELBv2/TargetGroup.ts +1 -1
  346. package/src/AWS/Endpoint.ts +12 -8
  347. package/src/AWS/Environment.ts +123 -0
  348. package/src/AWS/EventBridge/EventBus.ts +2 -2
  349. package/src/AWS/EventBridge/ListRules.ts +2 -2
  350. package/src/AWS/EventBridge/PutEvents.ts +2 -2
  351. package/src/AWS/EventBridge/Rule.ts +2 -2
  352. package/src/AWS/IAM/OpenIDConnectProvider.ts +2 -2
  353. package/src/AWS/IAM/Policy.ts +3 -3
  354. package/src/AWS/IAM/Role.ts +4 -4
  355. package/src/AWS/Kinesis/Stream.ts +2 -2
  356. package/src/AWS/Lambda/EventSourceMapping.ts +2 -2
  357. package/src/AWS/Lambda/Function.ts +2 -2
  358. package/src/AWS/Lambda/Permission.ts +1 -1
  359. package/src/AWS/Logs/LogGroup.ts +3 -3
  360. package/src/AWS/Providers.ts +7 -7
  361. package/src/AWS/Region.ts +9 -66
  362. package/src/AWS/S3/Bucket.ts +2 -2
  363. package/src/AWS/SNS/Topic.ts +1 -1
  364. package/src/AWS/SQS/Queue.ts +3 -3
  365. package/src/AWS/index.ts +1 -3
  366. package/src/Apply.ts +55 -57
  367. package/src/Auth/AuthProvider.ts +188 -8
  368. package/src/Auth/Profile.ts +117 -54
  369. package/src/Auth/index.ts +1 -1
  370. package/src/Cloudflare/Auth/AuthProvider.ts +127 -98
  371. package/src/Cloudflare/CloudflareEnvironment.ts +49 -0
  372. package/src/Cloudflare/Container/ContainerApplication.ts +172 -94
  373. package/src/Cloudflare/Credentials.ts +75 -0
  374. package/src/Cloudflare/D1/D1Database.ts +2 -2
  375. package/src/Cloudflare/KV/KVNamespace.ts +2 -2
  376. package/src/Cloudflare/Providers.ts +20 -10
  377. package/src/Cloudflare/Queue/Queue.ts +174 -0
  378. package/src/Cloudflare/Queue/QueueBinding.ts +110 -0
  379. package/src/Cloudflare/Queue/QueueConsumer.ts +219 -0
  380. package/src/Cloudflare/Queue/index.ts +3 -0
  381. package/src/Cloudflare/R2/R2Bucket.ts +2 -2
  382. package/src/Cloudflare/SecretsStore/Secret.ts +229 -0
  383. package/src/Cloudflare/SecretsStore/SecretBinding.ts +107 -0
  384. package/src/Cloudflare/SecretsStore/SecretsStore.ts +106 -0
  385. package/src/Cloudflare/SecretsStore/index.ts +3 -0
  386. package/src/Cloudflare/Workers/InferEnv.ts +5 -3
  387. package/src/Cloudflare/Workers/Worker.ts +63 -7
  388. package/src/Cloudflare/Workers/Workflow.ts +19 -9
  389. package/src/Cloudflare/index.ts +3 -1
  390. package/src/Stack.ts +40 -29
  391. package/src/State/LocalState.ts +43 -16
  392. package/src/Test/Bun.ts +3 -0
  393. package/src/Test/Vitest.ts +31 -23
  394. package/src/Util/PlatformServices.ts +54 -13
  395. package/bin/process-manager.ts +0 -10
  396. package/lib/AWS/Account.d.ts +0 -26
  397. package/lib/AWS/Account.d.ts.map +0 -1
  398. package/lib/AWS/Account.js +0 -32
  399. package/lib/AWS/Account.js.map +0 -1
  400. package/lib/AWS/Profile.d.ts +0 -6
  401. package/lib/AWS/Profile.d.ts.map +0 -1
  402. package/lib/AWS/Profile.js +0 -4
  403. package/lib/AWS/Profile.js.map +0 -1
  404. package/lib/AWS/StageConfig.d.ts +0 -25
  405. package/lib/AWS/StageConfig.d.ts.map +0 -1
  406. package/lib/AWS/StageConfig.js +0 -23
  407. package/lib/AWS/StageConfig.js.map +0 -1
  408. package/lib/Cloudflare/Account.d.ts +0 -10
  409. package/lib/Cloudflare/Account.d.ts.map +0 -1
  410. package/lib/Cloudflare/Account.js +0 -24
  411. package/lib/Cloudflare/Account.js.map +0 -1
  412. package/lib/Cloudflare/StageConfig.d.ts +0 -8
  413. package/lib/Cloudflare/StageConfig.d.ts.map +0 -1
  414. package/lib/Cloudflare/StageConfig.js +0 -4
  415. package/lib/Cloudflare/StageConfig.js.map +0 -1
  416. package/src/AWS/Account.ts +0 -56
  417. package/src/AWS/Profile.ts +0 -5
  418. package/src/AWS/StageConfig.ts +0 -44
  419. package/src/Cloudflare/Account.ts +0 -38
  420. package/src/Cloudflare/StageConfig.ts +0 -8
package/src/Stack.ts CHANGED
@@ -7,6 +7,7 @@ import { Path } from "effect/Path";
7
7
  import type { Scope } from "effect/Scope";
8
8
  import type { HttpClient } from "effect/unstable/http/HttpClient";
9
9
  import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
10
+ import type { AuthProviders } from "./Auth/AuthProvider.ts";
10
11
  import { DotAlchemy } from "./Config.ts";
11
12
  import type { Input, InputProps } from "./Input.ts";
12
13
  import * as Output from "./Output.ts";
@@ -23,7 +24,8 @@ export type StackServices =
23
24
  | Path
24
25
  | DotAlchemy
25
26
  | HttpClient
26
- | ChildProcessSpawner;
27
+ | ChildProcessSpawner
28
+ | AuthProviders;
27
29
 
28
30
  export type Stack = Context.ServiceClass.Shape<
29
31
  "Stack",
@@ -138,36 +140,45 @@ export const make =
138
140
  <A, Err = never, Req extends ROut | StackServices = never>(
139
141
  effect: Effect.Effect<A, Err, Req>,
140
142
  ) =>
141
- Effect.all([
142
- effect,
143
- Stack.asEffect(),
144
- Effect.context<ROut | StackServices>(),
145
- ]).pipe(
146
- Effect.map(
147
- ([output, stack, services]) =>
148
- ({
149
- ...stack,
150
- output,
151
- services,
152
- }) satisfies CompiledStack<A, ROut | StackServices> as CompiledStack<
153
- A,
154
- ROut | StackServices
155
- >,
156
- ),
157
- Effect.provide(providers),
158
- Effect.provideServiceEffect(
159
- Stack,
160
- Stage.asEffect().pipe(
143
+ Effect.scope.pipe(
144
+ Effect.flatMap((scope) => {
145
+ const stackLayer = Layer.effect(
146
+ Stack,
147
+ Stage.asEffect().pipe(
148
+ Effect.map(
149
+ (stage) =>
150
+ stack ?? {
151
+ name,
152
+ stage,
153
+ resources: {},
154
+ bindings: {},
155
+ },
156
+ ),
157
+ Effect.tap(Effect.logInfo),
158
+ ),
159
+ );
160
+ return providers.pipe(
161
+ Layer.provideMerge(stackLayer),
162
+ Layer.buildWithScope(scope),
163
+ );
164
+ }),
165
+ Effect.flatMap((context) =>
166
+ Effect.all([
167
+ effect,
168
+ Stack.asEffect(),
169
+ Effect.context<ROut | StackServices>(),
170
+ ]).pipe(
161
171
  Effect.map(
162
- (stage) =>
163
- (stack ?? {
164
- name,
165
- stage,
166
- resources: {},
167
- bindings: {},
168
- }) satisfies Stack["Service"],
172
+ ([output, stack, services]): CompiledStack<
173
+ A,
174
+ ROut | StackServices
175
+ > => ({
176
+ ...stack,
177
+ output,
178
+ services,
179
+ }),
169
180
  ),
170
- Effect.tap(Effect.logInfo),
181
+ Effect.provideContext(context),
171
182
  ),
172
183
  ),
173
184
  );
@@ -3,10 +3,51 @@ import * as FileSystem from "effect/FileSystem";
3
3
  import * as Layer from "effect/Layer";
4
4
  import * as Path from "effect/Path";
5
5
  import type { PlatformError } from "effect/PlatformError";
6
+ import * as Redacted from "effect/Redacted";
6
7
  import { decodeFqn, encodeFqn } from "../FQN.ts";
7
8
  import { isResource } from "../Resource.ts";
8
9
  import { State, StateStoreError, type StateService } from "./State.ts";
9
10
 
11
+ const REDACTED_MARKER = "__redacted__";
12
+
13
+ const encodeState = (value: unknown): unknown => {
14
+ if (value === null || value === undefined) return value;
15
+ if (Redacted.isRedacted(value)) {
16
+ return {
17
+ [REDACTED_MARKER]: encodeState(Redacted.value(value)),
18
+ };
19
+ }
20
+ if (isResource(value)) {
21
+ return {
22
+ id: value.LogicalId,
23
+ type: value.Type,
24
+ props: encodeState(value.Props),
25
+ attr: encodeState(value.Attributes),
26
+ };
27
+ }
28
+ if (Array.isArray(value)) return value.map(encodeState);
29
+ if (typeof value === "object") {
30
+ const result: Record<string, unknown> = {};
31
+ for (const [k, v] of Object.entries(value)) {
32
+ result[k] = encodeState(v);
33
+ }
34
+ return result;
35
+ }
36
+ return value;
37
+ };
38
+
39
+ const reviveState = (_key: string, value: unknown): unknown => {
40
+ if (
41
+ value !== null &&
42
+ typeof value === "object" &&
43
+ !Array.isArray(value) &&
44
+ REDACTED_MARKER in value
45
+ ) {
46
+ return Redacted.make((value as Record<string, unknown>)[REDACTED_MARKER]);
47
+ }
48
+ return value;
49
+ };
50
+
10
51
  export const LocalState = Layer.effect(
11
52
  State,
12
53
  Effect.gen(function* () {
@@ -65,7 +106,7 @@ export const LocalState = Layer.effect(
65
106
  ),
66
107
  get: (request) =>
67
108
  fs.readFile(resource(request)).pipe(
68
- Effect.map((file) => JSON.parse(file.toString())),
109
+ Effect.map((file) => JSON.parse(file.toString(), reviveState)),
69
110
  recover,
70
111
  ),
71
112
  getReplacedResources: Effect.fnUntraced(function* (request) {
@@ -84,21 +125,7 @@ export const LocalState = Layer.effect(
84
125
  Effect.flatMap(() =>
85
126
  fs.writeFileString(
86
127
  resource(request),
87
- JSON.stringify(
88
- request.value,
89
- (k, v) => {
90
- if (isResource(v)) {
91
- return {
92
- id: v.LogicalId,
93
- type: v.Type,
94
- props: v.Props,
95
- attr: v.Attributes,
96
- };
97
- }
98
- return v;
99
- },
100
- 2,
101
- ),
128
+ JSON.stringify(encodeState(request.value), null, 2),
102
129
  ),
103
130
  ),
104
131
  recover,
package/src/Test/Bun.ts CHANGED
@@ -11,6 +11,7 @@ import type { HttpClient } from "effect/unstable/http/HttpClient";
11
11
  import type { HookOptions } from "node:test";
12
12
  import * as Apply from "../Apply.ts";
13
13
  import { provideFreshArtifactStore } from "../Artifacts.ts";
14
+ import { AuthProviders } from "../Auth/AuthProvider.ts";
14
15
  import { DotAlchemy, dotAlchemy } from "../Config.ts";
15
16
  import type { Input } from "../Input.ts";
16
17
  import * as Plan from "../Plan.ts";
@@ -49,6 +50,7 @@ const run = <A>(effect: TestEffect<A>) =>
49
50
  Effect.provide(Layer.succeed(ConfigProvider, configProvider)),
50
51
  );
51
52
  }).pipe(
53
+ Effect.provideService(AuthProviders, {}),
52
54
  Effect.provide(Layer.provideMerge(alchemy, platform)),
53
55
  Effect.scoped,
54
56
  Effect.runPromise,
@@ -211,6 +213,7 @@ const exec = <A, B>(
211
213
  Effect.provide(Layer.succeed(ConfigProvider, configProvider)),
212
214
  );
213
215
  }).pipe(
216
+ Effect.provideService(AuthProviders, {}),
214
217
  Effect.provide(Layer.succeed(Stage, options?.stage ?? "test")),
215
218
  Effect.provide(TestCli),
216
219
  Effect.provide(Layer.provideMerge(alchemy, platform)),
@@ -24,8 +24,10 @@ import * as Cloudflare from "../Cloudflare/index.ts";
24
24
  import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
25
25
  import { apply } from "../Apply.ts";
26
26
  import { Artifacts, provideFreshArtifactStore } from "../Artifacts.ts";
27
- import * as Credentials from "../AWS/Credentials.ts";
28
- import * as Region from "../AWS/Region.ts";
27
+ import { AuthProviders } from "../Auth/AuthProvider.ts";
28
+ import * as AWSCredentials from "../AWS/Credentials.ts";
29
+ import * as AWSEnvironment from "../AWS/Environment.ts";
30
+ import * as AWSRegion from "../AWS/Region.ts";
29
31
  import type { Command } from "../Build/Command.ts";
30
32
  import type { Cli } from "../Cli/index.ts";
31
33
  import {
@@ -79,12 +81,13 @@ type Provided =
79
81
  | Server.ProcessContext
80
82
  | Server.ServerHost
81
83
  | Serverless.FunctionContext
82
- | AWS.StageConfig
84
+ | AWSEnvironment.AWSEnvironment
83
85
  | Artifacts
84
86
  | Provider<Command>
85
87
  | AWS.Providers
86
88
  | Cloudflare.Providers
87
- | ChildProcessSpawner;
89
+ | ChildProcessSpawner
90
+ | AuthProviders;
88
91
 
89
92
  const quietLogger = Logger.make(() => {
90
93
  // console.log(options.message);
@@ -96,39 +99,43 @@ const platform = Layer.mergeAll(
96
99
  Logger.layer([process.env.VERBOSE ? Logger.consolePretty() : quietLogger]),
97
100
  );
98
101
 
99
- const awsStageConfig = Layer.effect(
100
- AWS.StageConfig,
102
+ const awsEnvironment = Layer.unwrap(
101
103
  Effect.gen(function* () {
102
- const AWS_PROFILE = yield* Config.string("AWS_PROFILE").pipe(
104
+ const profileName = yield* Config.string("AWS_PROFILE").pipe(
103
105
  Config.withDefault("default"),
104
106
  );
105
-
106
107
  const LOCAL = yield* Config.boolean("LOCAL").pipe(
107
108
  Config.withDefault(false),
108
109
  );
109
-
110
110
  const LOCALSTACK_ENDPOINT = yield* Config.string(
111
111
  "LOCALSTACK_ENDPOINT",
112
112
  ).pipe(Config.withDefault("http://localhost.localstack.cloud:4566"));
113
113
 
114
- return AWS.StageConfig.of({
115
- profile: LOCAL ? undefined : AWS_PROFILE,
116
- region: LOCAL ? "us-east-1" : undefined,
117
- credentials: LOCAL
118
- ? {
119
- accessKeyId: "test",
120
- secretAccessKey: "test",
121
- sessionToken: "test",
122
- }
123
- : undefined,
124
- endpoint: LOCAL ? LOCALSTACK_ENDPOINT : undefined,
125
- });
114
+ if (LOCAL) {
115
+ return AWSEnvironment.makeEnvironment({
116
+ accountId: "000000000000",
117
+ region: "us-east-1",
118
+ credentials: {
119
+ accessKeyId: "test",
120
+ secretAccessKey: "test",
121
+ sessionToken: "test",
122
+ },
123
+ endpoint: LOCALSTACK_ENDPOINT,
124
+ });
125
+ }
126
+ return Layer.effect(
127
+ AWSEnvironment.AWSEnvironment,
128
+ AWSEnvironment.loadDefault(),
129
+ ).pipe(Layer.orDie);
126
130
  }),
127
131
  );
128
132
 
129
133
  const awsProviders = Layer.provideMerge(
130
134
  AWS.providers(),
131
- Layer.mergeAll(Credentials.fromStageConfig(), Region.fromStageConfig()),
135
+ Layer.provideMerge(
136
+ Layer.mergeAll(AWSRegion.fromEnvironment, AWSCredentials.fromEnvironment),
137
+ awsEnvironment,
138
+ ),
132
139
  );
133
140
 
134
141
  const cfProviders = Layer.provideMerge(
@@ -170,7 +177,7 @@ const runWithContext = <A, Err>(
170
177
 
171
178
  const alchemy = Layer.provideMerge(
172
179
  Layer.mergeAll(options.state ?? State.LocalState, TestCli),
173
- Layer.mergeAll(awsStageConfig, stack, dotAlchemy),
180
+ Layer.mergeAll(stack, dotAlchemy),
174
181
  );
175
182
 
176
183
  const context = {
@@ -205,6 +212,7 @@ const runWithContext = <A, Err>(
205
212
  ),
206
213
  ),
207
214
  Effect.provideService(Stage.Stage, "test"),
215
+ Effect.provideService(AuthProviders, {}),
208
216
  Effect.provideService(ExecutionContext, context as any),
209
217
  Effect.provideService(Server.ServerHost, {
210
218
  run: (_effect) => Effect.void,
@@ -1,21 +1,62 @@
1
- import type { BunServices } from "@effect/platform-bun/BunServices";
2
- import type { NodeServices } from "@effect/platform-node/NodeServices";
3
1
  import * as Effect from "effect/Effect";
2
+ import type { FileSystem } from "effect/FileSystem";
4
3
  import * as Layer from "effect/Layer";
4
+ import type { Path } from "effect/Path";
5
+ import type { Teardown } from "effect/Runtime";
6
+ import type { Stdio } from "effect/Stdio";
7
+ import type { Terminal } from "effect/Terminal";
8
+ import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
9
+ import type { WebSocketConstructor } from "effect/unstable/socket/Socket";
5
10
 
6
11
  const isBun = typeof Bun !== "undefined";
7
12
 
8
- export const PlatformServices: Layer.Layer<
9
- NodeServices | BunServices,
10
- never,
11
- never
12
- > = Effect.promise(() => {
13
+ export type PlatformServices =
14
+ | ChildProcessSpawner
15
+ | FileSystem
16
+ | Path
17
+ | Stdio
18
+ | Terminal
19
+ // WebSocketConstructor is not included in NodeServices/BunServices, but required for Workers tail
20
+ | WebSocketConstructor;
21
+
22
+ export const PlatformServices: Layer.Layer<PlatformServices> = Effect.promise(
23
+ async () => {
24
+ if (isBun) {
25
+ const [BunServices, BunSocket] = await Promise.all([
26
+ import("@effect/platform-bun/BunServices"),
27
+ import("@effect/platform-bun/BunSocket"),
28
+ ]);
29
+ return Layer.merge(
30
+ BunServices.layer,
31
+ BunSocket.layerWebSocketConstructor,
32
+ );
33
+ } else {
34
+ const [NodeServices, NodeSocket] = await Promise.all([
35
+ import("@effect/platform-node/NodeServices"),
36
+ import("@effect/platform-node/NodeSocket"),
37
+ ]);
38
+ return Layer.merge(
39
+ NodeServices.layer,
40
+ NodeSocket.layerWebSocketConstructor,
41
+ );
42
+ }
43
+ },
44
+ ).pipe(Layer.unwrap);
45
+
46
+ export const runMain = <E, A>(
47
+ effect: Effect.Effect<A, E>,
48
+ options?: {
49
+ readonly disableErrorReporting?: boolean | undefined;
50
+ readonly teardown?: Teardown | undefined;
51
+ },
52
+ ): void => {
13
53
  if (isBun) {
14
- return import("@effect/platform-bun").then(
15
- (platform) => platform.BunServices.layer,
54
+ void import("@effect/platform-bun/BunRuntime").then((BunRuntime) =>
55
+ BunRuntime.runMain(effect, options),
56
+ );
57
+ } else {
58
+ void import("@effect/platform-node/NodeRuntime").then((NodeRuntime) =>
59
+ NodeRuntime.runMain(effect, options),
16
60
  );
17
61
  }
18
- return import("@effect/platform-node").then(
19
- (platform) => platform.NodeServices.layer,
20
- );
21
- }).pipe(Layer.unwrap);
62
+ };
@@ -1,10 +0,0 @@
1
- import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
2
- import * as Effect from "effect/Effect";
3
- import { BunSQLite, main, NodeServices } from "../src/Daemon/RpcServer.ts";
4
-
5
- main.pipe(
6
- Effect.provide(NodeServices.layer),
7
- Effect.provide(BunSQLite),
8
- Effect.catchTag("DaemonAlreadyRunning", (err) => Effect.logInfo(err.message)),
9
- NodeRuntime.runMain,
10
- );
@@ -1,26 +0,0 @@
1
- import * as Context from "effect/Context";
2
- import * as Layer from "effect/Layer";
3
- import { StageConfig } from "./StageConfig.ts";
4
- declare const FailedToGetAccount_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
5
- readonly _tag: "AWS::Account::FailedToGetAccount";
6
- } & Readonly<A>;
7
- export declare class FailedToGetAccount extends FailedToGetAccount_base<{
8
- message: string;
9
- cause: Error;
10
- }> {
11
- }
12
- export type AccountID = string;
13
- declare const Account_base: Context.ServiceClass<Account, "AWS::AccountID", string>;
14
- export declare class Account extends Account_base {
15
- }
16
- declare const AWSStageConfigAccountMissing_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
17
- readonly _tag: "AWSStageConfigAccountMissing";
18
- } & Readonly<A>;
19
- export declare class AWSStageConfigAccountMissing extends AWSStageConfigAccountMissing_base<{
20
- message: string;
21
- stage: string;
22
- }> {
23
- }
24
- export declare const fromStageConfig: () => Layer.Layer<Account, import("@distilled.cloud/aws/Credentials").CredentialsError | FailedToGetAccount, import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("effect/unstable/http/HttpClient").HttpClient | import("@distilled.cloud/aws/Region").Region | StageConfig | import("@distilled.cloud/aws/Credentials").Credentials>;
25
- export {};
26
- //# sourceMappingURL=Account.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Account.d.ts","sourceRoot":"","sources":["../../src/AWS/Account.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAG1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;;;;AAE/C,qBAAa,kBAAmB,SAAQ,wBAEtC;IACA,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;CAAG;AAEL,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;;AAE/B,qBAAa,OAAQ,SAAQ,YAE5B;CAAG;;;;AAEJ,qBAAa,4BAA6B,SAAQ,kCAEhD;IACA,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;CAAG;AAEL,eAAO,MAAM,eAAe,gWA2BzB,CAAC"}
@@ -1,32 +0,0 @@
1
- import * as Auth from "@distilled.cloud/aws/Auth";
2
- import * as STS from "@distilled.cloud/aws/sts";
3
- import * as Context from "effect/Context";
4
- import * as Data from "effect/Data";
5
- import * as Effect from "effect/Effect";
6
- import * as Layer from "effect/Layer";
7
- import { StageConfig } from "./StageConfig.js";
8
- export class FailedToGetAccount extends Data.TaggedError("AWS::Account::FailedToGetAccount") {
9
- }
10
- export class Account extends Context.Service()("AWS::AccountID") {
11
- }
12
- export class AWSStageConfigAccountMissing extends Data.TaggedError("AWSStageConfigAccountMissing") {
13
- }
14
- export const fromStageConfig = () => Layer.effect(Account, Effect.gen(function* () {
15
- const config = yield* StageConfig;
16
- if (config.account) {
17
- return config.account;
18
- }
19
- const profileName = config.profile;
20
- if (profileName) {
21
- const profile = yield* Auth.loadProfile(profileName);
22
- if (profile.sso_account_id) {
23
- return profile.sso_account_id;
24
- }
25
- }
26
- const identity = yield* STS.getCallerIdentity({}).pipe(Effect.catch((err) => Effect.fail(new FailedToGetAccount({
27
- message: "Failed to look up account ID",
28
- cause: err,
29
- }))));
30
- return identity.Account;
31
- }));
32
- //# sourceMappingURL=Account.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Account.js","sourceRoot":"","sources":["../../src/AWS/Account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CACtD,kCAAkC,CAIlC;CAAG;AAIL,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,OAAO,EAAsB,CAChE,gBAAgB,CACjB;CAAG;AAEJ,MAAM,OAAO,4BAA6B,SAAQ,IAAI,CAAC,WAAW,CAChE,8BAA8B,CAI9B;CAAG;AAEL,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE,CAClC,KAAK,CAAC,MAAM,CACV,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IACnC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,cAAc,CAAC;QAChC,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,CACpD,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACnB,MAAM,CAAC,IAAI,CACT,IAAI,kBAAkB,CAAC;QACrB,OAAO,EAAE,8BAA8B;QACvC,KAAK,EAAE,GAAG;KACX,CAAC,CACH,CACF,CACF,CAAC;IACF,OAAO,QAAQ,CAAC,OAAQ,CAAC;AAC3B,CAAC,CAAC,CACH,CAAC"}
@@ -1,6 +0,0 @@
1
- import * as Context from "effect/Context";
2
- declare const Profile_base: Context.ServiceClass<Profile, "AWS::Profile", string>;
3
- export declare class Profile extends Profile_base {
4
- }
5
- export {};
6
- //# sourceMappingURL=Profile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../../src/AWS/Profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;;AAE1C,qBAAa,OAAQ,SAAQ,YAE5B;CAAG"}
@@ -1,4 +0,0 @@
1
- import * as Context from "effect/Context";
2
- export class Profile extends Context.Service()("AWS::Profile") {
3
- }
4
- //# sourceMappingURL=Profile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Profile.js","sourceRoot":"","sources":["../../src/AWS/Profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,OAAO,EAAmB,CAC7D,cAAc,CACf;CAAG"}
@@ -1,25 +0,0 @@
1
- import type { AwsCredentialIdentity } from "@smithy/types";
2
- import * as Config from "effect/Config";
3
- import * as Context from "effect/Context";
4
- import * as Effect from "effect/Effect";
5
- import * as Layer from "effect/Layer";
6
- import type { AccountID } from "./Account.ts";
7
- import { type RegionID } from "./Region.ts";
8
- export declare const AWS_PROFILE: Config.Config<string>;
9
- declare const StageConfig_base: Context.ServiceClass<StageConfig, "AWS::StageConfig", {
10
- account?: AccountID;
11
- region?: RegionID;
12
- profile?: string;
13
- credentials?: AwsCredentialIdentity;
14
- endpoint?: string;
15
- }>;
16
- export declare class StageConfig extends StageConfig_base {
17
- }
18
- export declare const DefaultStageConfig: Layer.Layer<StageConfig, never, import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("effect/unstable/http/HttpClient").HttpClient>;
19
- export declare const loadDefaultStageConfig: () => Effect.Effect<{
20
- profile: string;
21
- account: string;
22
- region: string;
23
- }, Config.ConfigError | import("@distilled.cloud/aws/Credentials").CredentialsError, import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("effect/unstable/http/HttpClient").HttpClient>;
24
- export {};
25
- //# sourceMappingURL=StageConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StageConfig.d.ts","sourceRoot":"","sources":["../../src/AWS/StageConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,WAAW,uBAEvB,CAAC;;cAKY,SAAS;aACV,QAAQ;cACP,MAAM;kBACF,qBAAqB;eACxB,MAAM;;AAPrB,qBAAa,WAAY,SAAQ,gBASV;CAAG;AAE1B,eAAO,MAAM,kBAAkB,6JAGZ,CAAC;AAEpB,eAAO,MAAM,sBAAsB;;;;gNAc/B,CAAC"}
@@ -1,23 +0,0 @@
1
- import * as Auth from "@distilled.cloud/aws/Auth";
2
- import * as Config from "effect/Config";
3
- import * as Context from "effect/Context";
4
- import * as Effect from "effect/Effect";
5
- import * as Layer from "effect/Layer";
6
- import { AWS_REGION } from "./Region.js";
7
- export const AWS_PROFILE = Config.string("AWS_PROFILE").pipe(Config.withDefault("default"));
8
- export class StageConfig extends Context.Service()("AWS::StageConfig") {
9
- }
10
- export const DefaultStageConfig = Layer.effect(StageConfig, Effect.suspend(() => loadDefaultStageConfig())).pipe(Layer.orDie);
11
- export const loadDefaultStageConfig = () => Effect.gen(function* () {
12
- const profileName = yield* AWS_PROFILE;
13
- const profile = yield* Auth.loadProfile(profileName);
14
- if (!profile.sso_account_id) {
15
- return yield* Effect.die(`AWS SSO Profile '${profileName}' is missing sso_account_id configuration`);
16
- }
17
- return {
18
- profile: profileName,
19
- account: profile.sso_account_id,
20
- region: profile.region ?? (yield* AWS_REGION),
21
- };
22
- });
23
- //# sourceMappingURL=StageConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StageConfig.js","sourceRoot":"","sources":["../../src/AWS/StageConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAC;AAElD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAiB,MAAM,aAAa,CAAC;AAExD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAC1D,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAC9B,CAAC;AAEF,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAS7C,CAAC,kBAAkB,CAAC;CAAG;AAE1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAC5C,WAAW,EACX,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAC/C,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAEpB,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,oBAAoB,WAAW,2CAA2C,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,OAAO,CAAC,cAAc;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;KAC9C,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,10 +0,0 @@
1
- import * as Config from "effect/Config";
2
- import * as Context from "effect/Context";
3
- import * as Layer from "effect/Layer";
4
- declare const Account_base: Context.ServiceClass<Account, "cloudflare/account-id", string>;
5
- export declare class Account extends Account_base {
6
- }
7
- export declare const fromEnv: () => Layer.Layer<Account, Config.ConfigError, never>;
8
- export declare const fromStageConfig: () => Layer.Layer<Account, Config.ConfigError, never>;
9
- export {};
10
- //# sourceMappingURL=Account.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Account.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/Account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;;AAItC,qBAAa,OAAQ,SAAQ,YAE5B;CAAG;AAEJ,eAAO,MAAM,OAAO,uDAUjB,CAAC;AAEJ,eAAO,MAAM,eAAe,uDAczB,CAAC"}
@@ -1,24 +0,0 @@
1
- import * as Config from "effect/Config";
2
- import * as Context from "effect/Context";
3
- import * as Effect from "effect/Effect";
4
- import * as Layer from "effect/Layer";
5
- import * as Option from "effect/Option";
6
- import { StageConfig } from "./StageConfig.js";
7
- export class Account extends Context.Service()("cloudflare/account-id") {
8
- }
9
- export const fromEnv = () => Layer.effect(Account, Effect.gen(function* () {
10
- const accountId = yield* Config.string("CLOUDFLARE_ACCOUNT_ID");
11
- if (!accountId) {
12
- return yield* Effect.die("CLOUDFLARE_ACCOUNT_ID is not set");
13
- }
14
- return accountId;
15
- }));
16
- export const fromStageConfig = () => Layer.effect(Account, Effect.gen(function* () {
17
- const stageConfig = yield* Effect.serviceOption(StageConfig).pipe(Effect.map(Option.getOrUndefined));
18
- const account = stageConfig?.account ?? (yield* Config.string("CLOUDFLARE_ACCOUNT_ID"));
19
- if (!account) {
20
- return yield* Effect.die("CLOUDFLARE_ACCOUNT_ID is not set");
21
- }
22
- return account;
23
- }));
24
- //# sourceMappingURL=Account.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Account.js","sourceRoot":"","sources":["../../src/Cloudflare/Account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,OAAO,EAAmB,CAC7D,uBAAuB,CACxB;CAAG;AAEJ,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE,CAC1B,KAAK,CAAC,MAAM,CACV,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAChE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE,CAClC,KAAK,CAAC,MAAM,CACV,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAC/D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAClC,CAAC;IACF,MAAM,OAAO,GACX,WAAW,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CACH,CAAC"}
@@ -1,8 +0,0 @@
1
- import * as Context from "effect/Context";
2
- declare const StageConfig_base: Context.ServiceClass<StageConfig, "Cloudflare::StageConfig", {
3
- account?: string;
4
- }>;
5
- export declare class StageConfig extends StageConfig_base {
6
- }
7
- export {};
8
- //# sourceMappingURL=StageConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StageConfig.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/StageConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;;cAK5B,MAAM;;AAHpB,qBAAa,WAAY,SAAQ,gBAKH;CAAG"}
@@ -1,4 +0,0 @@
1
- import * as Context from "effect/Context";
2
- export class StageConfig extends Context.Service()("Cloudflare::StageConfig") {
3
- }
4
- //# sourceMappingURL=StageConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StageConfig.js","sourceRoot":"","sources":["../../src/Cloudflare/StageConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAK7C,CAAC,yBAAyB,CAAC;CAAG"}