alchemy 2.0.0-beta.41 → 2.0.0-beta.43

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 (514) hide show
  1. package/bin/exec.js +2 -9
  2. package/bin/exec.js.map +1 -1
  3. package/lib/AWS/CloudWatch/DescribeAlarmContributors.d.ts +1 -1
  4. package/lib/AWS/CloudWatch/DescribeAlarmContributors.d.ts.map +1 -1
  5. package/lib/AWS/CloudWatch/DescribeAlarmHistory.d.ts +1 -1
  6. package/lib/AWS/CloudWatch/DescribeAlarmHistory.d.ts.map +1 -1
  7. package/lib/AWS/CloudWatch/DescribeAlarms.d.ts +1 -1
  8. package/lib/AWS/CloudWatch/DescribeAlarms.d.ts.map +1 -1
  9. package/lib/AWS/CloudWatch/DescribeAlarmsForMetric.d.ts +1 -1
  10. package/lib/AWS/CloudWatch/DescribeAlarmsForMetric.d.ts.map +1 -1
  11. package/lib/AWS/CloudWatch/DescribeAnomalyDetectors.d.ts +1 -1
  12. package/lib/AWS/CloudWatch/DescribeAnomalyDetectors.d.ts.map +1 -1
  13. package/lib/AWS/CloudWatch/DescribeInsightRules.d.ts +1 -1
  14. package/lib/AWS/CloudWatch/DescribeInsightRules.d.ts.map +1 -1
  15. package/lib/AWS/CloudWatch/DisableAlarmActions.d.ts +1 -1
  16. package/lib/AWS/CloudWatch/DisableAlarmActions.d.ts.map +1 -1
  17. package/lib/AWS/CloudWatch/DisableInsightRules.d.ts +1 -1
  18. package/lib/AWS/CloudWatch/DisableInsightRules.d.ts.map +1 -1
  19. package/lib/AWS/CloudWatch/EnableAlarmActions.d.ts +1 -1
  20. package/lib/AWS/CloudWatch/EnableAlarmActions.d.ts.map +1 -1
  21. package/lib/AWS/CloudWatch/GetAlarmMuteRule.d.ts +1 -1
  22. package/lib/AWS/CloudWatch/GetAlarmMuteRule.d.ts.map +1 -1
  23. package/lib/AWS/CloudWatch/GetDashboard.d.ts +1 -1
  24. package/lib/AWS/CloudWatch/GetDashboard.d.ts.map +1 -1
  25. package/lib/AWS/CloudWatch/GetInsightRuleReport.d.ts +1 -1
  26. package/lib/AWS/CloudWatch/GetInsightRuleReport.d.ts.map +1 -1
  27. package/lib/AWS/CloudWatch/GetMetricData.d.ts +1 -1
  28. package/lib/AWS/CloudWatch/GetMetricData.d.ts.map +1 -1
  29. package/lib/AWS/CloudWatch/GetMetricStatistics.d.ts +1 -1
  30. package/lib/AWS/CloudWatch/GetMetricStatistics.d.ts.map +1 -1
  31. package/lib/AWS/CloudWatch/GetMetricStream.d.ts +1 -1
  32. package/lib/AWS/CloudWatch/GetMetricStream.d.ts.map +1 -1
  33. package/lib/AWS/CloudWatch/GetMetricWidgetImage.d.ts +1 -1
  34. package/lib/AWS/CloudWatch/GetMetricWidgetImage.d.ts.map +1 -1
  35. package/lib/AWS/CloudWatch/ListAlarmMuteRules.d.ts +1 -1
  36. package/lib/AWS/CloudWatch/ListAlarmMuteRules.d.ts.map +1 -1
  37. package/lib/AWS/CloudWatch/ListDashboards.d.ts +1 -1
  38. package/lib/AWS/CloudWatch/ListDashboards.d.ts.map +1 -1
  39. package/lib/AWS/CloudWatch/ListManagedInsightRules.d.ts +1 -1
  40. package/lib/AWS/CloudWatch/ListManagedInsightRules.d.ts.map +1 -1
  41. package/lib/AWS/CloudWatch/ListMetricStreams.d.ts +1 -1
  42. package/lib/AWS/CloudWatch/ListMetricStreams.d.ts.map +1 -1
  43. package/lib/AWS/CloudWatch/ListMetrics.d.ts +1 -1
  44. package/lib/AWS/CloudWatch/ListMetrics.d.ts.map +1 -1
  45. package/lib/AWS/CloudWatch/ListTagsForResource.d.ts +1 -1
  46. package/lib/AWS/CloudWatch/ListTagsForResource.d.ts.map +1 -1
  47. package/lib/AWS/CloudWatch/PutMetricData.d.ts +1 -1
  48. package/lib/AWS/CloudWatch/PutMetricData.d.ts.map +1 -1
  49. package/lib/AWS/CloudWatch/SetAlarmState.d.ts +1 -1
  50. package/lib/AWS/CloudWatch/SetAlarmState.d.ts.map +1 -1
  51. package/lib/AWS/DynamoDB/BatchExecuteStatement.d.ts +1 -1
  52. package/lib/AWS/DynamoDB/BatchExecuteStatement.d.ts.map +1 -1
  53. package/lib/AWS/DynamoDB/BatchGetItem.d.ts +1 -1
  54. package/lib/AWS/DynamoDB/BatchGetItem.d.ts.map +1 -1
  55. package/lib/AWS/DynamoDB/BatchWriteItem.d.ts +1 -1
  56. package/lib/AWS/DynamoDB/BatchWriteItem.d.ts.map +1 -1
  57. package/lib/AWS/DynamoDB/DeleteItem.d.ts +1 -1
  58. package/lib/AWS/DynamoDB/DeleteItem.d.ts.map +1 -1
  59. package/lib/AWS/DynamoDB/DescribeTable.d.ts +1 -1
  60. package/lib/AWS/DynamoDB/DescribeTable.d.ts.map +1 -1
  61. package/lib/AWS/DynamoDB/DescribeTimeToLive.d.ts +1 -1
  62. package/lib/AWS/DynamoDB/DescribeTimeToLive.d.ts.map +1 -1
  63. package/lib/AWS/DynamoDB/ExecuteStatement.d.ts +1 -1
  64. package/lib/AWS/DynamoDB/ExecuteStatement.d.ts.map +1 -1
  65. package/lib/AWS/DynamoDB/ExecuteTransaction.d.ts +1 -1
  66. package/lib/AWS/DynamoDB/ExecuteTransaction.d.ts.map +1 -1
  67. package/lib/AWS/DynamoDB/GetItem.d.ts +1 -1
  68. package/lib/AWS/DynamoDB/GetItem.d.ts.map +1 -1
  69. package/lib/AWS/DynamoDB/ListTables.d.ts +1 -1
  70. package/lib/AWS/DynamoDB/ListTables.d.ts.map +1 -1
  71. package/lib/AWS/DynamoDB/ListTagsOfResource.d.ts +1 -1
  72. package/lib/AWS/DynamoDB/ListTagsOfResource.d.ts.map +1 -1
  73. package/lib/AWS/DynamoDB/PutItem.d.ts +1 -1
  74. package/lib/AWS/DynamoDB/PutItem.d.ts.map +1 -1
  75. package/lib/AWS/DynamoDB/Query.d.ts +1 -1
  76. package/lib/AWS/DynamoDB/Query.d.ts.map +1 -1
  77. package/lib/AWS/DynamoDB/RestoreTableToPointInTime.d.ts +1 -1
  78. package/lib/AWS/DynamoDB/RestoreTableToPointInTime.d.ts.map +1 -1
  79. package/lib/AWS/DynamoDB/Scan.d.ts +1 -1
  80. package/lib/AWS/DynamoDB/Scan.d.ts.map +1 -1
  81. package/lib/AWS/DynamoDB/TransactGetItems.d.ts +1 -1
  82. package/lib/AWS/DynamoDB/TransactGetItems.d.ts.map +1 -1
  83. package/lib/AWS/DynamoDB/TransactWriteItems.d.ts +1 -1
  84. package/lib/AWS/DynamoDB/TransactWriteItems.d.ts.map +1 -1
  85. package/lib/AWS/DynamoDB/UpdateItem.d.ts +1 -1
  86. package/lib/AWS/DynamoDB/UpdateItem.d.ts.map +1 -1
  87. package/lib/AWS/DynamoDB/UpdateTimeToLive.d.ts +1 -1
  88. package/lib/AWS/DynamoDB/UpdateTimeToLive.d.ts.map +1 -1
  89. package/lib/AWS/ECS/DescribeTasks.d.ts +1 -1
  90. package/lib/AWS/ECS/DescribeTasks.d.ts.map +1 -1
  91. package/lib/AWS/ECS/ListTasks.d.ts +1 -1
  92. package/lib/AWS/ECS/ListTasks.d.ts.map +1 -1
  93. package/lib/AWS/ECS/RunTask.d.ts +1 -1
  94. package/lib/AWS/ECS/RunTask.d.ts.map +1 -1
  95. package/lib/AWS/ECS/StopTask.d.ts +1 -1
  96. package/lib/AWS/ECS/StopTask.d.ts.map +1 -1
  97. package/lib/AWS/EventBridge/DescribeEventBus.d.ts +1 -1
  98. package/lib/AWS/EventBridge/DescribeEventBus.d.ts.map +1 -1
  99. package/lib/AWS/EventBridge/DescribeRule.d.ts +1 -1
  100. package/lib/AWS/EventBridge/DescribeRule.d.ts.map +1 -1
  101. package/lib/AWS/EventBridge/EventSource.d.ts +2 -2
  102. package/lib/AWS/EventBridge/ListEventBuses.d.ts +1 -1
  103. package/lib/AWS/EventBridge/ListEventBuses.d.ts.map +1 -1
  104. package/lib/AWS/EventBridge/ListRules.d.ts +1 -1
  105. package/lib/AWS/EventBridge/ListRules.d.ts.map +1 -1
  106. package/lib/AWS/EventBridge/ListTargetsByRule.d.ts +1 -1
  107. package/lib/AWS/EventBridge/ListTargetsByRule.d.ts.map +1 -1
  108. package/lib/AWS/EventBridge/PutEvents.d.ts +1 -1
  109. package/lib/AWS/EventBridge/PutEvents.d.ts.map +1 -1
  110. package/lib/AWS/EventBridge/TestEventPattern.d.ts +1 -1
  111. package/lib/AWS/EventBridge/TestEventPattern.d.ts.map +1 -1
  112. package/lib/AWS/EventBridge/ToLambda.d.ts +1 -1
  113. package/lib/AWS/EventBridge/ToLambda.d.ts.map +1 -1
  114. package/lib/AWS/EventBridge/ToQueue.d.ts +1 -1
  115. package/lib/AWS/EventBridge/ToQueue.d.ts.map +1 -1
  116. package/lib/AWS/Kinesis/DescribeAccountSettings.d.ts +1 -1
  117. package/lib/AWS/Kinesis/DescribeAccountSettings.d.ts.map +1 -1
  118. package/lib/AWS/Kinesis/DescribeLimits.d.ts +1 -1
  119. package/lib/AWS/Kinesis/DescribeLimits.d.ts.map +1 -1
  120. package/lib/AWS/Kinesis/DescribeStream.d.ts +1 -1
  121. package/lib/AWS/Kinesis/DescribeStream.d.ts.map +1 -1
  122. package/lib/AWS/Kinesis/DescribeStreamConsumer.d.ts +1 -1
  123. package/lib/AWS/Kinesis/DescribeStreamConsumer.d.ts.map +1 -1
  124. package/lib/AWS/Kinesis/DescribeStreamSummary.d.ts +1 -1
  125. package/lib/AWS/Kinesis/DescribeStreamSummary.d.ts.map +1 -1
  126. package/lib/AWS/Kinesis/GetRecords.d.ts +1 -1
  127. package/lib/AWS/Kinesis/GetRecords.d.ts.map +1 -1
  128. package/lib/AWS/Kinesis/GetResourcePolicy.d.ts +1 -1
  129. package/lib/AWS/Kinesis/GetResourcePolicy.d.ts.map +1 -1
  130. package/lib/AWS/Kinesis/GetShardIterator.d.ts +1 -1
  131. package/lib/AWS/Kinesis/GetShardIterator.d.ts.map +1 -1
  132. package/lib/AWS/Kinesis/ListShards.d.ts +1 -1
  133. package/lib/AWS/Kinesis/ListShards.d.ts.map +1 -1
  134. package/lib/AWS/Kinesis/ListStreamConsumers.d.ts +1 -1
  135. package/lib/AWS/Kinesis/ListStreamConsumers.d.ts.map +1 -1
  136. package/lib/AWS/Kinesis/ListStreams.d.ts +1 -1
  137. package/lib/AWS/Kinesis/ListStreams.d.ts.map +1 -1
  138. package/lib/AWS/Kinesis/ListTagsForResource.d.ts +1 -1
  139. package/lib/AWS/Kinesis/ListTagsForResource.d.ts.map +1 -1
  140. package/lib/AWS/Kinesis/PutRecord.d.ts +1 -1
  141. package/lib/AWS/Kinesis/PutRecord.d.ts.map +1 -1
  142. package/lib/AWS/Kinesis/PutRecords.d.ts +1 -1
  143. package/lib/AWS/Kinesis/PutRecords.d.ts.map +1 -1
  144. package/lib/AWS/Kinesis/StreamSink.d.ts +1 -1
  145. package/lib/AWS/Kinesis/StreamSink.d.ts.map +1 -1
  146. package/lib/AWS/Kinesis/SubscribeToShard.d.ts +1 -1
  147. package/lib/AWS/Kinesis/SubscribeToShard.d.ts.map +1 -1
  148. package/lib/AWS/Lambda/BucketEventSource.d.ts +2 -1
  149. package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
  150. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +2 -1
  151. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts.map +1 -1
  152. package/lib/AWS/Lambda/InvokeFunction.d.ts +1 -1
  153. package/lib/AWS/Lambda/InvokeFunction.d.ts.map +1 -1
  154. package/lib/AWS/Lambda/QueueEventSource.d.ts +2 -1
  155. package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
  156. package/lib/AWS/Lambda/StreamEventSource.d.ts +2 -1
  157. package/lib/AWS/Lambda/StreamEventSource.d.ts.map +1 -1
  158. package/lib/AWS/Lambda/TableEventSource.d.ts +2 -1
  159. package/lib/AWS/Lambda/TableEventSource.d.ts.map +1 -1
  160. package/lib/AWS/Lambda/TopicEventSource.d.ts +2 -1
  161. package/lib/AWS/Lambda/TopicEventSource.d.ts.map +1 -1
  162. package/lib/AWS/RDS/Connect.d.ts +1 -1
  163. package/lib/AWS/RDS/Connect.d.ts.map +1 -1
  164. package/lib/AWS/RDSData/BatchExecuteStatement.d.ts +1 -1
  165. package/lib/AWS/RDSData/BatchExecuteStatement.d.ts.map +1 -1
  166. package/lib/AWS/RDSData/BeginTransaction.d.ts +1 -1
  167. package/lib/AWS/RDSData/BeginTransaction.d.ts.map +1 -1
  168. package/lib/AWS/RDSData/CommitTransaction.d.ts +1 -1
  169. package/lib/AWS/RDSData/CommitTransaction.d.ts.map +1 -1
  170. package/lib/AWS/RDSData/ExecuteSql.d.ts +1 -1
  171. package/lib/AWS/RDSData/ExecuteSql.d.ts.map +1 -1
  172. package/lib/AWS/RDSData/ExecuteStatement.d.ts +1 -1
  173. package/lib/AWS/RDSData/ExecuteStatement.d.ts.map +1 -1
  174. package/lib/AWS/RDSData/RollbackTransaction.d.ts +1 -1
  175. package/lib/AWS/RDSData/RollbackTransaction.d.ts.map +1 -1
  176. package/lib/AWS/S3/AbortMultipartUpload.d.ts +1 -1
  177. package/lib/AWS/S3/AbortMultipartUpload.d.ts.map +1 -1
  178. package/lib/AWS/S3/CompleteMultipartUpload.d.ts +1 -1
  179. package/lib/AWS/S3/CompleteMultipartUpload.d.ts.map +1 -1
  180. package/lib/AWS/S3/CopyObject.d.ts +1 -1
  181. package/lib/AWS/S3/CopyObject.d.ts.map +1 -1
  182. package/lib/AWS/S3/CreateMultipartUpload.d.ts +1 -1
  183. package/lib/AWS/S3/CreateMultipartUpload.d.ts.map +1 -1
  184. package/lib/AWS/S3/DeleteObject.d.ts +1 -1
  185. package/lib/AWS/S3/DeleteObject.d.ts.map +1 -1
  186. package/lib/AWS/S3/GetObject.d.ts +1 -1
  187. package/lib/AWS/S3/GetObject.d.ts.map +1 -1
  188. package/lib/AWS/S3/HeadObject.d.ts +1 -1
  189. package/lib/AWS/S3/HeadObject.d.ts.map +1 -1
  190. package/lib/AWS/S3/ListObjectsV2.d.ts +1 -1
  191. package/lib/AWS/S3/ListObjectsV2.d.ts.map +1 -1
  192. package/lib/AWS/S3/PutObject.d.ts +1 -1
  193. package/lib/AWS/S3/PutObject.d.ts.map +1 -1
  194. package/lib/AWS/S3/UploadPart.d.ts +1 -1
  195. package/lib/AWS/S3/UploadPart.d.ts.map +1 -1
  196. package/lib/AWS/SNS/AddPermission.d.ts +1 -1
  197. package/lib/AWS/SNS/AddPermission.d.ts.map +1 -1
  198. package/lib/AWS/SNS/ConfirmSubscription.d.ts +1 -1
  199. package/lib/AWS/SNS/ConfirmSubscription.d.ts.map +1 -1
  200. package/lib/AWS/SNS/GetDataProtectionPolicy.d.ts +1 -1
  201. package/lib/AWS/SNS/GetDataProtectionPolicy.d.ts.map +1 -1
  202. package/lib/AWS/SNS/GetSubscriptionAttributes.d.ts +1 -1
  203. package/lib/AWS/SNS/GetSubscriptionAttributes.d.ts.map +1 -1
  204. package/lib/AWS/SNS/GetTopicAttributes.d.ts +1 -1
  205. package/lib/AWS/SNS/GetTopicAttributes.d.ts.map +1 -1
  206. package/lib/AWS/SNS/ListSubscriptions.d.ts +1 -1
  207. package/lib/AWS/SNS/ListSubscriptions.d.ts.map +1 -1
  208. package/lib/AWS/SNS/ListSubscriptionsByTopic.d.ts +1 -1
  209. package/lib/AWS/SNS/ListSubscriptionsByTopic.d.ts.map +1 -1
  210. package/lib/AWS/SNS/ListTagsForResource.d.ts +1 -1
  211. package/lib/AWS/SNS/ListTagsForResource.d.ts.map +1 -1
  212. package/lib/AWS/SNS/ListTopics.d.ts +1 -1
  213. package/lib/AWS/SNS/ListTopics.d.ts.map +1 -1
  214. package/lib/AWS/SNS/Publish.d.ts +1 -1
  215. package/lib/AWS/SNS/Publish.d.ts.map +1 -1
  216. package/lib/AWS/SNS/PublishBatch.d.ts +1 -1
  217. package/lib/AWS/SNS/PublishBatch.d.ts.map +1 -1
  218. package/lib/AWS/SNS/PutDataProtectionPolicy.d.ts +1 -1
  219. package/lib/AWS/SNS/PutDataProtectionPolicy.d.ts.map +1 -1
  220. package/lib/AWS/SNS/RemovePermission.d.ts +1 -1
  221. package/lib/AWS/SNS/RemovePermission.d.ts.map +1 -1
  222. package/lib/AWS/SNS/SetSubscriptionAttributes.d.ts +1 -1
  223. package/lib/AWS/SNS/SetSubscriptionAttributes.d.ts.map +1 -1
  224. package/lib/AWS/SNS/SetTopicAttributes.d.ts +1 -1
  225. package/lib/AWS/SNS/SetTopicAttributes.d.ts.map +1 -1
  226. package/lib/AWS/SNS/TagResource.d.ts +1 -1
  227. package/lib/AWS/SNS/TagResource.d.ts.map +1 -1
  228. package/lib/AWS/SNS/TopicSink.d.ts +1 -1
  229. package/lib/AWS/SNS/TopicSink.d.ts.map +1 -1
  230. package/lib/AWS/SNS/UntagResource.d.ts +1 -1
  231. package/lib/AWS/SNS/UntagResource.d.ts.map +1 -1
  232. package/lib/AWS/SQS/DeleteMessage.d.ts +1 -1
  233. package/lib/AWS/SQS/DeleteMessage.d.ts.map +1 -1
  234. package/lib/AWS/SQS/DeleteMessageBatch.d.ts +1 -1
  235. package/lib/AWS/SQS/DeleteMessageBatch.d.ts.map +1 -1
  236. package/lib/AWS/SQS/QueueSink.d.ts +1 -1
  237. package/lib/AWS/SQS/QueueSink.d.ts.map +1 -1
  238. package/lib/AWS/SQS/ReceiveMessage.d.ts +1 -1
  239. package/lib/AWS/SQS/ReceiveMessage.d.ts.map +1 -1
  240. package/lib/AWS/SQS/SendMessage.d.ts +1 -1
  241. package/lib/AWS/SQS/SendMessage.d.ts.map +1 -1
  242. package/lib/AWS/SQS/SendMessageBatch.d.ts +1 -1
  243. package/lib/AWS/SQS/SendMessageBatch.d.ts.map +1 -1
  244. package/lib/AWS/SecretsManager/DescribeSecret.d.ts +1 -1
  245. package/lib/AWS/SecretsManager/DescribeSecret.d.ts.map +1 -1
  246. package/lib/AWS/SecretsManager/GetRandomPassword.d.ts +1 -1
  247. package/lib/AWS/SecretsManager/GetRandomPassword.d.ts.map +1 -1
  248. package/lib/AWS/SecretsManager/GetSecretValue.d.ts +1 -1
  249. package/lib/AWS/SecretsManager/GetSecretValue.d.ts.map +1 -1
  250. package/lib/AWS/SecretsManager/ListSecrets.d.ts +1 -1
  251. package/lib/AWS/SecretsManager/ListSecrets.d.ts.map +1 -1
  252. package/lib/AWS/SecretsManager/PutSecretValue.d.ts +1 -1
  253. package/lib/AWS/SecretsManager/PutSecretValue.d.ts.map +1 -1
  254. package/lib/Binding.d.ts +1 -1
  255. package/lib/Binding.d.ts.map +1 -1
  256. package/lib/Bundle/Docker.d.ts.map +1 -1
  257. package/lib/Bundle/Docker.js +12 -13
  258. package/lib/Bundle/Docker.js.map +1 -1
  259. package/lib/Cli/commands/deploy.d.ts.map +1 -1
  260. package/lib/Cli/commands/deploy.js +1 -0
  261. package/lib/Cli/commands/deploy.js.map +1 -1
  262. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts +8 -7
  263. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts.map +1 -1
  264. package/lib/Cloudflare/AiGateway/AiGatewayBinding.js +2 -6
  265. package/lib/Cloudflare/AiGateway/AiGatewayBinding.js.map +1 -1
  266. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.d.ts +4 -3
  267. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.d.ts.map +1 -1
  268. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js +2 -1
  269. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js.map +1 -1
  270. package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts +8 -7
  271. package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts.map +1 -1
  272. package/lib/Cloudflare/Artifacts/ArtifactsBinding.js +2 -2
  273. package/lib/Cloudflare/Artifacts/ArtifactsBinding.js.map +1 -1
  274. package/lib/Cloudflare/D1/D1Connection.d.ts +12 -10
  275. package/lib/Cloudflare/D1/D1Connection.d.ts.map +1 -1
  276. package/lib/Cloudflare/D1/D1Connection.js +2 -2
  277. package/lib/Cloudflare/D1/D1Connection.js.map +1 -1
  278. package/lib/Cloudflare/D1/D1Database.js +1 -1
  279. package/lib/Cloudflare/D1/D1Database.js.map +1 -1
  280. package/lib/Cloudflare/D1/D1Migrations.d.ts +2 -2
  281. package/lib/Cloudflare/D1/D1Migrations.d.ts.map +1 -1
  282. package/lib/Cloudflare/Email/SendEmailBinding.d.ts +5 -4
  283. package/lib/Cloudflare/Email/SendEmailBinding.d.ts.map +1 -1
  284. package/lib/Cloudflare/Email/SendEmailBinding.js +2 -1
  285. package/lib/Cloudflare/Email/SendEmailBinding.js.map +1 -1
  286. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts +10 -8
  287. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts.map +1 -1
  288. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.js +2 -2
  289. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.js.map +1 -1
  290. package/lib/Cloudflare/Images/ImagesBinding.d.ts +5 -4
  291. package/lib/Cloudflare/Images/ImagesBinding.d.ts.map +1 -1
  292. package/lib/Cloudflare/Images/ImagesBinding.js +4 -2
  293. package/lib/Cloudflare/Images/ImagesBinding.js.map +1 -1
  294. package/lib/Cloudflare/KV/KVNamespaceBinding.d.ts +33 -32
  295. package/lib/Cloudflare/KV/KVNamespaceBinding.d.ts.map +1 -1
  296. package/lib/Cloudflare/KV/KVNamespaceBinding.js +5 -2
  297. package/lib/Cloudflare/KV/KVNamespaceBinding.js.map +1 -1
  298. package/lib/Cloudflare/Queue/QueueBinding.d.ts +5 -4
  299. package/lib/Cloudflare/Queue/QueueBinding.d.ts.map +1 -1
  300. package/lib/Cloudflare/Queue/QueueBinding.js +2 -2
  301. package/lib/Cloudflare/Queue/QueueBinding.js.map +1 -1
  302. package/lib/Cloudflare/Queue/QueueEventSource.d.ts +1 -2
  303. package/lib/Cloudflare/Queue/QueueEventSource.d.ts.map +1 -1
  304. package/lib/Cloudflare/R2/R2BucketBinding.d.ts +13 -12
  305. package/lib/Cloudflare/R2/R2BucketBinding.d.ts.map +1 -1
  306. package/lib/Cloudflare/R2/R2BucketBinding.js +2 -2
  307. package/lib/Cloudflare/R2/R2BucketBinding.js.map +1 -1
  308. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts +5 -4
  309. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts.map +1 -1
  310. package/lib/Cloudflare/SecretsStore/SecretBinding.js +2 -2
  311. package/lib/Cloudflare/SecretsStore/SecretBinding.js.map +1 -1
  312. package/lib/Cloudflare/StateStore/Api.d.ts +1 -1
  313. package/lib/Cloudflare/Workers/CronEventSource.d.ts +1 -2
  314. package/lib/Cloudflare/Workers/CronEventSource.d.ts.map +1 -1
  315. package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts.map +1 -1
  316. package/lib/Cloudflare/Workers/DurableObjectNamespace.js +6 -3
  317. package/lib/Cloudflare/Workers/DurableObjectNamespace.js.map +1 -1
  318. package/lib/Cloudflare/Workers/DynamicWorkerLoader.d.ts.map +1 -1
  319. package/lib/Cloudflare/Workers/DynamicWorkerLoader.js +3 -3
  320. package/lib/Cloudflare/Workers/DynamicWorkerLoader.js.map +1 -1
  321. package/lib/Cloudflare/Workers/Fetch.d.ts +1 -1
  322. package/lib/Cloudflare/Workers/Fetch.d.ts.map +1 -1
  323. package/lib/Cloudflare/Workers/RpcAsync.d.ts +55 -0
  324. package/lib/Cloudflare/Workers/RpcAsync.d.ts.map +1 -1
  325. package/lib/Cloudflare/Workers/RpcAsync.js +55 -0
  326. package/lib/Cloudflare/Workers/RpcAsync.js.map +1 -1
  327. package/lib/Cloudflare/Workers/Worker.d.ts +3 -3
  328. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  329. package/lib/Cloudflare/Workers/Worker.js +9 -2
  330. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  331. package/lib/Cloudflare/Workers/WorkerRuntimeContext.d.ts.map +1 -1
  332. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js +2 -0
  333. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js.map +1 -1
  334. package/lib/Cloudflare/Workers/Workflow.d.ts +4 -4
  335. package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
  336. package/lib/Cloudflare/Workers/Workflow.js +6 -3
  337. package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
  338. package/lib/Neon/Branch.js +1 -1
  339. package/lib/Neon/Branch.js.map +1 -1
  340. package/lib/Neon/Migrations.d.ts +1 -1
  341. package/lib/Neon/Migrations.d.ts.map +1 -1
  342. package/lib/Neon/Project.d.ts.map +1 -1
  343. package/lib/Neon/Project.js +1 -15
  344. package/lib/Neon/Project.js.map +1 -1
  345. package/lib/Phase.d.ts +2 -2
  346. package/lib/Phase.d.ts.map +1 -1
  347. package/lib/Phase.js +2 -1
  348. package/lib/Phase.js.map +1 -1
  349. package/lib/Planetscale/AuthProvider.d.ts +59 -0
  350. package/lib/Planetscale/AuthProvider.d.ts.map +1 -0
  351. package/lib/Planetscale/AuthProvider.js +131 -0
  352. package/lib/Planetscale/AuthProvider.js.map +1 -0
  353. package/lib/Planetscale/Branch.d.ts +113 -0
  354. package/lib/Planetscale/Branch.d.ts.map +1 -0
  355. package/lib/Planetscale/Branch.js +287 -0
  356. package/lib/Planetscale/Branch.js.map +1 -0
  357. package/lib/Planetscale/Credentials.d.ts +35 -0
  358. package/lib/Planetscale/Credentials.d.ts.map +1 -0
  359. package/lib/Planetscale/Credentials.js +56 -0
  360. package/lib/Planetscale/Credentials.js.map +1 -0
  361. package/lib/Planetscale/Database.d.ts +117 -0
  362. package/lib/Planetscale/Database.d.ts.map +1 -0
  363. package/lib/Planetscale/Database.js +1 -0
  364. package/lib/Planetscale/Database.js.map +1 -0
  365. package/lib/Planetscale/MySQL/MySQLBranch.d.ts +86 -0
  366. package/lib/Planetscale/MySQL/MySQLBranch.d.ts.map +1 -0
  367. package/lib/Planetscale/MySQL/MySQLBranch.js +14 -0
  368. package/lib/Planetscale/MySQL/MySQLBranch.js.map +1 -0
  369. package/lib/Planetscale/MySQL/MySQLClusterSize.d.ts +23 -0
  370. package/lib/Planetscale/MySQL/MySQLClusterSize.d.ts.map +1 -0
  371. package/lib/Planetscale/MySQL/MySQLClusterSize.js +44 -0
  372. package/lib/Planetscale/MySQL/MySQLClusterSize.js.map +1 -0
  373. package/lib/Planetscale/MySQL/MySQLDatabase.d.ts +119 -0
  374. package/lib/Planetscale/MySQL/MySQLDatabase.d.ts.map +1 -0
  375. package/lib/Planetscale/MySQL/MySQLDatabase.js +237 -0
  376. package/lib/Planetscale/MySQL/MySQLDatabase.js.map +1 -0
  377. package/lib/Planetscale/MySQL/MySQLMigrations.d.ts +18 -0
  378. package/lib/Planetscale/MySQL/MySQLMigrations.d.ts.map +1 -0
  379. package/lib/Planetscale/MySQL/MySQLMigrations.js +157 -0
  380. package/lib/Planetscale/MySQL/MySQLMigrations.js.map +1 -0
  381. package/lib/Planetscale/MySQL/MySQLOrigin.d.ts +15 -0
  382. package/lib/Planetscale/MySQL/MySQLOrigin.d.ts.map +1 -0
  383. package/lib/Planetscale/MySQL/MySQLOrigin.js +2 -0
  384. package/lib/Planetscale/MySQL/MySQLOrigin.js.map +1 -0
  385. package/lib/Planetscale/MySQL/MySQLPassword.d.ts +115 -0
  386. package/lib/Planetscale/MySQL/MySQLPassword.d.ts.map +1 -0
  387. package/lib/Planetscale/MySQL/MySQLPassword.js +197 -0
  388. package/lib/Planetscale/MySQL/MySQLPassword.js.map +1 -0
  389. package/lib/Planetscale/MySQL/index.d.ts +6 -0
  390. package/lib/Planetscale/MySQL/index.d.ts.map +1 -0
  391. package/lib/Planetscale/MySQL/index.js +6 -0
  392. package/lib/Planetscale/MySQL/index.js.map +1 -0
  393. package/lib/Planetscale/Postgres/PostgresBranch.d.ts +67 -0
  394. package/lib/Planetscale/Postgres/PostgresBranch.d.ts.map +1 -0
  395. package/lib/Planetscale/Postgres/PostgresBranch.js +14 -0
  396. package/lib/Planetscale/Postgres/PostgresBranch.js.map +1 -0
  397. package/lib/Planetscale/Postgres/PostgresClusterSize.d.ts +44 -0
  398. package/lib/Planetscale/Postgres/PostgresClusterSize.d.ts.map +1 -0
  399. package/lib/Planetscale/Postgres/PostgresClusterSize.js +72 -0
  400. package/lib/Planetscale/Postgres/PostgresClusterSize.js.map +1 -0
  401. package/lib/Planetscale/Postgres/PostgresDatabase.d.ts +73 -0
  402. package/lib/Planetscale/Postgres/PostgresDatabase.d.ts.map +1 -0
  403. package/lib/Planetscale/Postgres/PostgresDatabase.js +241 -0
  404. package/lib/Planetscale/Postgres/PostgresDatabase.js.map +1 -0
  405. package/lib/Planetscale/Postgres/PostgresDefaultRole.d.ts +85 -0
  406. package/lib/Planetscale/Postgres/PostgresDefaultRole.d.ts.map +1 -0
  407. package/lib/Planetscale/Postgres/PostgresDefaultRole.js +142 -0
  408. package/lib/Planetscale/Postgres/PostgresDefaultRole.js.map +1 -0
  409. package/lib/Planetscale/Postgres/PostgresMigrations.d.ts +18 -0
  410. package/lib/Planetscale/Postgres/PostgresMigrations.d.ts.map +1 -0
  411. package/lib/Planetscale/Postgres/PostgresMigrations.js +148 -0
  412. package/lib/Planetscale/Postgres/PostgresMigrations.js.map +1 -0
  413. package/lib/Planetscale/Postgres/PostgresOrigin.d.ts +15 -0
  414. package/lib/Planetscale/Postgres/PostgresOrigin.d.ts.map +1 -0
  415. package/lib/Planetscale/Postgres/PostgresOrigin.js +2 -0
  416. package/lib/Planetscale/Postgres/PostgresOrigin.js.map +1 -0
  417. package/lib/Planetscale/Postgres/PostgresRole.d.ts +121 -0
  418. package/lib/Planetscale/Postgres/PostgresRole.d.ts.map +1 -0
  419. package/lib/Planetscale/Postgres/PostgresRole.js +228 -0
  420. package/lib/Planetscale/Postgres/PostgresRole.js.map +1 -0
  421. package/lib/Planetscale/Postgres/index.d.ts +7 -0
  422. package/lib/Planetscale/Postgres/index.d.ts.map +1 -0
  423. package/lib/Planetscale/Postgres/index.js +7 -0
  424. package/lib/Planetscale/Postgres/index.js.map +1 -0
  425. package/lib/Planetscale/Providers.d.ts +25 -0
  426. package/lib/Planetscale/Providers.d.ts.map +1 -0
  427. package/lib/Planetscale/Providers.js +40 -0
  428. package/lib/Planetscale/Providers.js.map +1 -0
  429. package/lib/Planetscale/Util.d.ts +182 -0
  430. package/lib/Planetscale/Util.d.ts.map +1 -0
  431. package/lib/Planetscale/Util.js +98 -0
  432. package/lib/Planetscale/Util.js.map +1 -0
  433. package/lib/Planetscale/index.d.ts +9 -0
  434. package/lib/Planetscale/index.d.ts.map +1 -0
  435. package/lib/Planetscale/index.js +9 -0
  436. package/lib/Planetscale/index.js.map +1 -0
  437. package/lib/Platform.d.ts.map +1 -1
  438. package/lib/Platform.js +7 -2
  439. package/lib/Platform.js.map +1 -1
  440. package/lib/RuntimeContext.d.ts +7 -3
  441. package/lib/RuntimeContext.d.ts.map +1 -1
  442. package/lib/RuntimeContext.js +3 -2
  443. package/lib/RuntimeContext.js.map +1 -1
  444. package/lib/Server/S3BucketEventSource.d.ts +1 -1
  445. package/lib/Server/S3BucketEventSource.d.ts.map +1 -1
  446. package/lib/{Neon → Sql}/SqlFile.d.ts +2 -0
  447. package/lib/Sql/SqlFile.d.ts.map +1 -0
  448. package/lib/{Neon → Sql}/SqlFile.js +14 -0
  449. package/lib/Sql/SqlFile.js.map +1 -0
  450. package/lib/Sql/index.d.ts +2 -0
  451. package/lib/Sql/index.d.ts.map +1 -0
  452. package/lib/Sql/index.js +2 -0
  453. package/lib/Sql/index.js.map +1 -0
  454. package/lib/tsconfig.test.tsbuildinfo +1 -1
  455. package/package.json +20 -6
  456. package/src/Binding.ts +1 -1
  457. package/src/Bundle/Docker.ts +12 -15
  458. package/src/Cli/commands/deploy.ts +1 -0
  459. package/src/Cloudflare/AiGateway/AiGatewayBinding.ts +11 -16
  460. package/src/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.ts +7 -9
  461. package/src/Cloudflare/Artifacts/ArtifactsBinding.ts +11 -22
  462. package/src/Cloudflare/D1/D1Connection.ts +31 -18
  463. package/src/Cloudflare/D1/D1Database.ts +1 -1
  464. package/src/Cloudflare/D1/D1Migrations.ts +2 -2
  465. package/src/Cloudflare/Email/SendEmailBinding.ts +7 -5
  466. package/src/Cloudflare/Hyperdrive/HyperdriveBinding.ts +16 -12
  467. package/src/Cloudflare/Images/ImagesBinding.ts +8 -8
  468. package/src/Cloudflare/KV/KVNamespaceBinding.ts +38 -38
  469. package/src/Cloudflare/Queue/QueueBinding.ts +7 -6
  470. package/src/Cloudflare/R2/R2BucketBinding.ts +16 -19
  471. package/src/Cloudflare/SecretsStore/SecretBinding.ts +11 -13
  472. package/src/Cloudflare/Workers/DurableObjectNamespace.ts +6 -6
  473. package/src/Cloudflare/Workers/DynamicWorkerLoader.ts +4 -5
  474. package/src/Cloudflare/Workers/RpcAsync.ts +55 -0
  475. package/src/Cloudflare/Workers/Worker.ts +17 -5
  476. package/src/Cloudflare/Workers/WorkerRuntimeContext.ts +2 -0
  477. package/src/Cloudflare/Workers/Workflow.ts +10 -11
  478. package/src/Neon/Branch.ts +1 -1
  479. package/src/Neon/Migrations.ts +1 -1
  480. package/src/Neon/Project.ts +6 -20
  481. package/src/Phase.ts +2 -0
  482. package/src/Planetscale/AuthProvider.ts +285 -0
  483. package/src/Planetscale/Branch.ts +508 -0
  484. package/src/Planetscale/Credentials.ts +96 -0
  485. package/src/Planetscale/Database.ts +129 -0
  486. package/src/Planetscale/MySQL/MySQLBranch.ts +112 -0
  487. package/src/Planetscale/MySQL/MySQLClusterSize.ts +102 -0
  488. package/src/Planetscale/MySQL/MySQLDatabase.ts +446 -0
  489. package/src/Planetscale/MySQL/MySQLMigrations.ts +271 -0
  490. package/src/Planetscale/MySQL/MySQLOrigin.ts +15 -0
  491. package/src/Planetscale/MySQL/MySQLPassword.ts +387 -0
  492. package/src/Planetscale/MySQL/index.ts +5 -0
  493. package/src/Planetscale/Postgres/PostgresBranch.ts +97 -0
  494. package/src/Planetscale/Postgres/PostgresClusterSize.ts +125 -0
  495. package/src/Planetscale/Postgres/PostgresDatabase.ts +404 -0
  496. package/src/Planetscale/Postgres/PostgresDefaultRole.ts +270 -0
  497. package/src/Planetscale/Postgres/PostgresMigrations.ts +256 -0
  498. package/src/Planetscale/Postgres/PostgresOrigin.ts +15 -0
  499. package/src/Planetscale/Postgres/PostgresRole.ts +469 -0
  500. package/src/Planetscale/Postgres/index.ts +6 -0
  501. package/src/Planetscale/Providers.ts +80 -0
  502. package/src/Planetscale/Util.ts +160 -0
  503. package/src/Planetscale/index.ts +18 -0
  504. package/src/Platform.ts +13 -1
  505. package/src/RuntimeContext.ts +7 -8
  506. package/src/{Neon → Sql}/SqlFile.ts +22 -0
  507. package/src/Sql/index.ts +1 -0
  508. package/lib/Cloudflare/D1/D1SqlFile.d.ts +0 -20
  509. package/lib/Cloudflare/D1/D1SqlFile.d.ts.map +0 -1
  510. package/lib/Cloudflare/D1/D1SqlFile.js +0 -46
  511. package/lib/Cloudflare/D1/D1SqlFile.js.map +0 -1
  512. package/lib/Neon/SqlFile.d.ts.map +0 -1
  513. package/lib/Neon/SqlFile.js.map +0 -1
  514. package/src/Cloudflare/D1/D1SqlFile.ts +0 -55
@@ -0,0 +1,469 @@
1
+ import { Credentials } from "@distilled.cloud/planetscale/Credentials";
2
+ import * as ops from "@distilled.cloud/planetscale/Operations";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Redacted from "effect/Redacted";
5
+ import { deepEqual, isResolved } from "../../Diff.ts";
6
+ import * as Provider from "../../Provider.ts";
7
+ import { Resource } from "../../Resource.ts";
8
+ import type { Providers } from "../Providers.ts";
9
+ import {
10
+ isKnownError,
11
+ PlanetscaleConflict,
12
+ waitForBranchReady,
13
+ } from "../Util.ts";
14
+ import type { PostgresBranch } from "./PostgresBranch.ts";
15
+ import type { PostgresDatabase } from "./PostgresDatabase.ts";
16
+ import type { PostgresOrigin } from "./PostgresOrigin.ts";
17
+ import { createPhysicalName } from "../../PhysicalName.ts";
18
+
19
+ /**
20
+ * Built-in PostgreSQL roles that can be inherited from. Custom role names
21
+ * (referencing other Role resources) are also accepted.
22
+ */
23
+ export type InheritedRole =
24
+ | "pscale_managed"
25
+ | "pg_checkpoint"
26
+ | "pg_create_subscription"
27
+ | "pg_maintain"
28
+ | "pg_monitor"
29
+ | "pg_read_all_data"
30
+ | "pg_read_all_settings"
31
+ | "pg_read_all_stats"
32
+ | "pg_signal_backend"
33
+ | "pg_stat_scan_tables"
34
+ | "pg_use_reserved_connections"
35
+ | "pg_write_all_data"
36
+ | "postgres"
37
+ | (string & {});
38
+
39
+ type SDKInheritedRole =
40
+ | "pscale_managed"
41
+ | "pg_checkpoint"
42
+ | "pg_create_subscription"
43
+ | "pg_maintain"
44
+ | "pg_monitor"
45
+ | "pg_read_all_data"
46
+ | "pg_read_all_settings"
47
+ | "pg_read_all_stats"
48
+ | "pg_signal_backend"
49
+ | "pg_stat_scan_tables"
50
+ | "pg_use_reserved_connections"
51
+ | "pg_write_all_data"
52
+ | "postgres";
53
+
54
+ /**
55
+ * Properties for creating or updating a PlanetScale PostgreSQL role.
56
+ *
57
+ * Roles are only meant for PostgreSQL databases. For MySQL,
58
+ * use {@link MySQLPassword} instead.
59
+ */
60
+ export interface PostgresRoleProps {
61
+ /**
62
+ * Role name. If not provided, a physical name will be generated.
63
+ */
64
+ name?: string;
65
+ /**
66
+ * PostgreSQL database — string name or {@link PostgresDatabase} resource.
67
+ */
68
+ database: string | PostgresDatabase;
69
+
70
+ /**
71
+ * Branch — string name or {@link PostgresBranch} resource.
72
+ * @default "main"
73
+ */
74
+ branch?: string | PostgresBranch;
75
+
76
+ /**
77
+ * Time to live in seconds.
78
+ */
79
+ ttl?: number;
80
+
81
+ /**
82
+ * Roles to inherit from. Either a list of built-in role names, or
83
+ * another {@link PostgresRole} resource (whose `inheritedRoles` are reused).
84
+ */
85
+ inheritedRoles: InheritedRole[] | PostgresRole;
86
+
87
+ /**
88
+ * Successor role to reassign ownership to before dropping. Used during
89
+ * delete.
90
+ * @default "postgres"
91
+ */
92
+ successor?: string | PostgresRole;
93
+ }
94
+
95
+ /**
96
+ * Output attributes of a deployed PlanetScale role.
97
+ */
98
+ export interface PostgresRoleAttributes {
99
+ /** Unique identifier for the role (stable). */
100
+ id: string;
101
+ /** The Postgres role name (assigned by PlanetScale). */
102
+ name: string;
103
+ /** ISO 8601 timestamp at which the role expires. */
104
+ expiresAt: string | null;
105
+ /** Hostname for the database connection. */
106
+ host: string;
107
+ /** Username for database authentication. */
108
+ username: string;
109
+ /** Password for database authentication (Redacted). */
110
+ password: Redacted.Redacted<string>;
111
+ /** The database name. */
112
+ database: string;
113
+ /** The Postgres database name inside the branch. */
114
+ databaseName: string;
115
+ /** Parsed connection components ready to feed into Cloudflare Hyperdrive. */
116
+ origin: PostgresOrigin;
117
+ /** Direct connection URL for the database (Redacted). */
118
+ connectionUrl: Redacted.Redacted<string>;
119
+ /** Pooled connection URL via PSBouncer (port 6432, Redacted). */
120
+ connectionUrlPooled: Redacted.Redacted<string>;
121
+ /** Inherited roles. */
122
+ inheritedRoles: InheritedRole[];
123
+ /** The successor role used during delete. */
124
+ successor: string;
125
+ /** Resolved organization slug. */
126
+ organization: string;
127
+ /** Resolved branch name. */
128
+ branch: string;
129
+ /** Time-to-live for the role in seconds. */
130
+ ttl: number | null;
131
+ }
132
+
133
+ /**
134
+ * A PlanetScale role for accessing a PostgreSQL database branch.
135
+ *
136
+ * For MySQL databases, use {@link MySQLPassword} instead.
137
+ *
138
+ * @section Creating a Role
139
+ * @example Postgres admin role
140
+ * ```typescript
141
+ * const admin = yield* Planetscale.PostgresRole("Admin", {
142
+ * database: "my-db",
143
+ * inheritedRoles: ["postgres"],
144
+ * });
145
+ * ```
146
+ *
147
+ * @example Read-only role
148
+ * ```typescript
149
+ * const reader = yield* Planetscale.PostgresRole("Reader", {
150
+ * database: "my-db",
151
+ * inheritedRoles: ["pg_read_all_data", "pg_read_all_settings"],
152
+ * });
153
+ * ```
154
+ *
155
+ * @example Role with TTL
156
+ * ```typescript
157
+ * const tempReader = yield* Planetscale.PostgresRole("TempReader", {
158
+ * database: "my-db",
159
+ * inheritedRoles: ["pg_read_all_data"],
160
+ * ttl: 3600,
161
+ * });
162
+ * ```
163
+ */
164
+ export type PostgresRole = Resource<
165
+ "Planetscale.PostgresRole",
166
+ PostgresRoleProps,
167
+ PostgresRoleAttributes,
168
+ never,
169
+ Providers
170
+ >;
171
+
172
+ export const PostgresRole = Resource<PostgresRole>("Planetscale.PostgresRole");
173
+
174
+ // Structural shapes for runtime-resolved Resource references — see notes
175
+ // in Password.ts.
176
+ type DatabaseRef = string | { name: string; organization?: string };
177
+ type BranchRef = string | { name: string };
178
+ type RoleRef = string | { name: string; inheritedRoles: InheritedRole[] };
179
+
180
+ const resolveDatabaseName = (database: string | PostgresDatabase): string => {
181
+ const ref = database as unknown as DatabaseRef;
182
+ return typeof ref === "string" ? ref : ref.name;
183
+ };
184
+
185
+ const resolveDatabaseOrg = (
186
+ database: string | PostgresDatabase,
187
+ ): string | undefined => {
188
+ const ref = database as unknown as DatabaseRef;
189
+ return typeof ref === "string" ? undefined : ref.organization;
190
+ };
191
+
192
+ const resolveBranchName = (
193
+ branch: string | PostgresBranch | undefined,
194
+ ): string => {
195
+ const ref = branch as unknown as BranchRef | undefined;
196
+ return !ref ? "main" : typeof ref === "string" ? ref : ref.name;
197
+ };
198
+
199
+ const resolveSuccessorName = (
200
+ successor: string | PostgresRole | undefined,
201
+ ): string => {
202
+ const ref = successor as unknown as RoleRef | undefined;
203
+ return !ref ? "postgres" : typeof ref === "string" ? ref : ref.name;
204
+ };
205
+
206
+ const resolveInheritedRoles = (
207
+ inheritedRoles: InheritedRole[] | PostgresRole,
208
+ ): InheritedRole[] => {
209
+ if (Array.isArray(inheritedRoles)) {
210
+ return inheritedRoles;
211
+ }
212
+ // At runtime, a Role passed in is its resolved attributes (with
213
+ // `inheritedRoles` as a plain array); statically `Role.inheritedRoles`
214
+ // is `Output<InheritedRole[]>`.
215
+ return (
216
+ inheritedRoles as unknown as RoleRef as { inheritedRoles: InheritedRole[] }
217
+ ).inheritedRoles;
218
+ };
219
+
220
+ const resolveName = (id: string, name: string | undefined) =>
221
+ Effect.gen(function* () {
222
+ return (
223
+ name ??
224
+ (yield* createPhysicalName({ id, lowercase: true, maxLength: 63 }))
225
+ );
226
+ });
227
+
228
+ const buildAttributes = (
229
+ role: {
230
+ id: string;
231
+ name: string;
232
+ expires_at: string | null;
233
+ access_host_url: string;
234
+ username: string;
235
+ database_name: string;
236
+ ttl: number | null;
237
+ },
238
+ password: Redacted.Redacted<string>,
239
+ context: {
240
+ inheritedRoles: InheritedRole[];
241
+ successor: string;
242
+ organization: string;
243
+ database: string;
244
+ branch: string;
245
+ },
246
+ ): PostgresRoleAttributes => {
247
+ const passwordValue = Redacted.value(password);
248
+ const connectionUrl = `postgresql://${role.username}:${passwordValue}@${role.access_host_url}:5432/${role.database_name}?sslmode=verify-full`;
249
+ const connectionUrlPooled = `postgresql://${role.username}:${passwordValue}@${role.access_host_url}:6432/${role.database_name}?sslmode=verify-full`;
250
+
251
+ return {
252
+ id: role.id,
253
+ name: role.name,
254
+ expiresAt: role.expires_at,
255
+ host: role.access_host_url,
256
+ username: role.username,
257
+ password,
258
+ connectionUrl: Redacted.make(connectionUrl),
259
+ connectionUrlPooled: Redacted.make(connectionUrlPooled),
260
+ inheritedRoles: context.inheritedRoles,
261
+ successor: context.successor,
262
+ organization: context.organization,
263
+ database: context.database,
264
+ databaseName: role.database_name,
265
+ origin: {
266
+ scheme: "postgres",
267
+ host: role.access_host_url,
268
+ port: 5432,
269
+ database: role.database_name,
270
+ user: role.username,
271
+ password,
272
+ },
273
+ branch: context.branch,
274
+ ttl: role.ttl,
275
+ };
276
+ };
277
+
278
+ export const PostgresRoleProvider = () =>
279
+ Provider.effect(
280
+ PostgresRole,
281
+ Effect.gen(function* () {
282
+ const createRole = yield* ops.createRole;
283
+ const deleteRole = yield* ops.deleteRole;
284
+ const updateRole = yield* ops.updateRole;
285
+ const getRole = yield* ops.getRole;
286
+ const getBranch = yield* ops.getBranch;
287
+
288
+ return {
289
+ stables: ["id"],
290
+
291
+ diff: Effect.fn(function* ({ id, news, olds, output }) {
292
+ if (!isResolved(news)) return undefined;
293
+
294
+ // Successor is the only updatable property — everything else
295
+ // requires replacement.
296
+ if (news.ttl !== olds.ttl) {
297
+ return { action: "replace" } as const;
298
+ }
299
+ const newDb = resolveDatabaseName(news.database);
300
+ const oldDb = olds.database
301
+ ? resolveDatabaseName(olds.database)
302
+ : undefined;
303
+ if (oldDb && newDb !== oldDb) {
304
+ return { action: "replace" } as const;
305
+ }
306
+ const newBranch = resolveBranchName(news.branch);
307
+ const oldBranch = resolveBranchName(olds.branch);
308
+ if (newBranch !== oldBranch) {
309
+ return { action: "replace" } as const;
310
+ }
311
+ const newRoles = resolveInheritedRoles(news.inheritedRoles);
312
+ const oldRoles = output?.inheritedRoles ?? [];
313
+ if (!deepEqual(newRoles, oldRoles)) {
314
+ return { action: "replace" } as const;
315
+ }
316
+ const oldName = output?.name ?? (yield* resolveName(id, olds?.name));
317
+ const newName = yield* resolveName(id, news.name);
318
+
319
+ if (newName !== oldName) {
320
+ return { action: "update" } as const;
321
+ }
322
+
323
+ return undefined;
324
+ }),
325
+
326
+ read: Effect.fn(function* ({ output }) {
327
+ if (!output?.id) return undefined;
328
+
329
+ return yield* getRole({
330
+ branch: output.branch,
331
+ database: output.database,
332
+ organization: output.organization,
333
+ id: output.id,
334
+ }).pipe(
335
+ Effect.map((token) =>
336
+ buildAttributes(token, output.password, {
337
+ inheritedRoles: token.inherited_roles as InheritedRole[],
338
+ successor: output.successor,
339
+ organization: output.organization,
340
+ database: output.database,
341
+ branch: token.branch.name,
342
+ }),
343
+ ),
344
+ Effect.catchTag("Forbidden", () => Effect.succeed(undefined)),
345
+ Effect.catchTag("NotFound", () => Effect.succeed(undefined)),
346
+ );
347
+ }),
348
+
349
+ reconcile: Effect.fn(function* ({ id, news, output }) {
350
+ const { organization: envOrg } = yield* Credentials;
351
+ const organization = resolveDatabaseOrg(news.database) ?? envOrg;
352
+ const databaseName = resolveDatabaseName(news.database);
353
+ const branchName = resolveBranchName(news.branch);
354
+ const inheritedRoles = resolveInheritedRoles(news.inheritedRoles);
355
+ const successor = resolveSuccessorName(news.successor);
356
+ const desiredName = yield* resolveName(id, news.name);
357
+
358
+ // 1. Observe — fetch live state if we know the role id. Roles
359
+ // can only be looked up by id; without a cached id there is
360
+ // no way to find the live role, so we fall through to ensure.
361
+ const observed = output?.id
362
+ ? yield* getRole({
363
+ id: output.id,
364
+ branch: branchName,
365
+ organization,
366
+ database: databaseName,
367
+ }).pipe(
368
+ Effect.catchTag("NotFound", () => Effect.succeed(undefined)),
369
+ )
370
+ : undefined;
371
+
372
+ // 2. Ensure — create if missing. Single branch covers both
373
+ // greenfield (no output) and out-of-band-deletion (output
374
+ // cached but cloud lost it). The latter is structurally a
375
+ // rotation: the new role has fresh id/host/username/plaintext
376
+ // that propagate downstream through the dependency graph.
377
+ // There is no path to recover the original plaintext, so
378
+ // recreating is the only way to converge.
379
+ //
380
+ // Planetscale returns the plaintext password value exactly
381
+ // once on create; on an observe-hit we re-use the cached
382
+ // plaintext from output (which is why adoption requires
383
+ // pre-existing state — see `read`).
384
+ let live: ops.GetRoleOutput | ops.CreateRoleOutput;
385
+ let plaintext: Redacted.Redacted<string>;
386
+ if (observed) {
387
+ live = observed;
388
+ plaintext = output!.password;
389
+ } else {
390
+ const branchInfo = yield* getBranch({
391
+ organization,
392
+ database: databaseName,
393
+ branch: branchName,
394
+ });
395
+ if (branchInfo.kind !== "postgresql") {
396
+ return yield* Effect.fail(
397
+ new PlanetscaleConflict({
398
+ message: `Cannot create a Role on MySQL database "${databaseName}". Roles are only supported on PostgreSQL. Use Password for MySQL.`,
399
+ }),
400
+ );
401
+ }
402
+ if (!branchInfo.ready) {
403
+ yield* waitForBranchReady(organization, databaseName, branchName);
404
+ }
405
+ const created = yield* createRole({
406
+ name: desiredName,
407
+ branch: branchName,
408
+ organization,
409
+ database: databaseName,
410
+ ttl: news.ttl,
411
+ inherited_roles: inheritedRoles as SDKInheritedRole[],
412
+ });
413
+ if (!created.password) {
414
+ return yield* Effect.die(
415
+ `Planetscale did not return a password for Role "${desiredName}".`,
416
+ );
417
+ }
418
+ plaintext = created.password;
419
+ live = created;
420
+ }
421
+
422
+ // 3. Sync — only `name` is mutable in place; diff observed
423
+ // against desired and skip the API call when nothing
424
+ // changed. Everything else triggers a replace via diff().
425
+ if (live.name !== desiredName) {
426
+ live = yield* updateRole({
427
+ id: live.id,
428
+ branch: branchName,
429
+ organization,
430
+ database: databaseName,
431
+ name: desiredName,
432
+ });
433
+ }
434
+
435
+ // 4. Return — fresh attrs sourced from observed cloud state,
436
+ // with cached or freshly-issued plaintext.
437
+ return buildAttributes(live, plaintext, {
438
+ inheritedRoles: live.inherited_roles as InheritedRole[],
439
+ successor,
440
+ organization,
441
+ database: databaseName,
442
+ branch: branchName,
443
+ });
444
+ }),
445
+
446
+ delete: Effect.fn(function* ({ output }) {
447
+ yield* deleteRole({
448
+ organization: output.organization,
449
+ database: output.database,
450
+ branch: output.branch,
451
+ id: output.id,
452
+ successor: output.successor,
453
+ }).pipe(
454
+ Effect.catchTag("NotFound", () => Effect.void),
455
+ // 422 (UnprocessableEntity): role is still referenced. Log a
456
+ // warning rather than failing — the role will be cleaned up
457
+ // when the database/branch is deleted.
458
+ Effect.catchIf(
459
+ isKnownError(
460
+ "UnprocessableEntity",
461
+ "Role is still referenced and cannot be dropped.",
462
+ ),
463
+ () => Effect.void,
464
+ ),
465
+ );
466
+ }),
467
+ };
468
+ }),
469
+ );
@@ -0,0 +1,6 @@
1
+ export * from "./PostgresClusterSize.ts";
2
+ export * from "./PostgresBranch.ts";
3
+ export * from "./PostgresDatabase.ts";
4
+ export * from "./PostgresDefaultRole.ts";
5
+ export * from "./PostgresOrigin.ts";
6
+ export * from "./PostgresRole.ts";
@@ -0,0 +1,80 @@
1
+ import * as Layer from "effect/Layer";
2
+ import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
3
+ import { CredentialsStoreLive } from "../Auth/Credentials.ts";
4
+ import { ProfileLive } from "../Auth/Profile.ts";
5
+ import * as Provider from "../Provider.ts";
6
+ import type { StackServices } from "../Stack.ts";
7
+ import { PlanetscaleAuth } from "./AuthProvider.ts";
8
+ import * as Credentials from "./Credentials.ts";
9
+ import { MySQLBranch, MySQLBranchProvider } from "./MySQL/MySQLBranch.ts";
10
+ import { MySQLDatabase, MySQLDatabaseProvider } from "./MySQL/MySQLDatabase.ts";
11
+ import { MySQLPassword, MySQLPasswordProvider } from "./MySQL/MySQLPassword.ts";
12
+ import {
13
+ PostgresBranch,
14
+ PostgresBranchProvider,
15
+ } from "./Postgres/PostgresBranch.ts";
16
+ import {
17
+ PostgresDatabase,
18
+ PostgresDatabaseProvider,
19
+ } from "./Postgres/PostgresDatabase.ts";
20
+ import {
21
+ PostgresDefaultRole,
22
+ PostgresDefaultRoleProvider,
23
+ } from "./Postgres/PostgresDefaultRole.ts";
24
+ import { PostgresRole, PostgresRoleProvider } from "./Postgres/PostgresRole.ts";
25
+
26
+ /**
27
+ * Service tag bundling all PlanetScale providers + auth + credentials. Use
28
+ * `Planetscale.providers()` to materialize the full layer.
29
+ */
30
+ export class Providers extends Provider.ProviderCollection<Providers>()(
31
+ "Planetscale",
32
+ ) {}
33
+
34
+ export type ProviderRequirements = Layer.Services<ReturnType<typeof providers>>;
35
+
36
+ /**
37
+ * Build the complete PlanetScale providers Layer. Provide this on a Stack
38
+ * (or via `Effect.provide` at test time) to enable all PlanetScale
39
+ * resources, the AuthProvider registration, and credential resolution.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * Effect.provide(Planetscale.providers())
44
+ * ```
45
+ */
46
+ export const providers = (): Layer.Layer<
47
+ Providers | Credentials.Credentials,
48
+ never,
49
+ StackServices
50
+ > =>
51
+ Layer.effect(
52
+ Providers,
53
+ Provider.collection([
54
+ MySQLDatabase,
55
+ PostgresDatabase,
56
+ MySQLBranch,
57
+ PostgresBranch,
58
+ MySQLPassword,
59
+ PostgresRole,
60
+ PostgresDefaultRole,
61
+ ]),
62
+ ).pipe(
63
+ Layer.provide(
64
+ Layer.mergeAll(
65
+ MySQLDatabaseProvider(),
66
+ PostgresDatabaseProvider(),
67
+ MySQLBranchProvider(),
68
+ PostgresBranchProvider(),
69
+ MySQLPasswordProvider(),
70
+ PostgresRoleProvider(),
71
+ PostgresDefaultRoleProvider(),
72
+ ),
73
+ ),
74
+ Layer.provideMerge(Credentials.fromAuthProvider()),
75
+ Layer.provideMerge(FetchHttpClient.layer),
76
+ Layer.provideMerge(PlanetscaleAuth),
77
+ Layer.provideMerge(ProfileLive),
78
+ Layer.provideMerge(CredentialsStoreLive),
79
+ Layer.orDie,
80
+ ) as Layer.Layer<Providers | Credentials.Credentials, never, StackServices>;