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,148 @@
1
+ import * as ops from "@distilled.cloud/planetscale/Operations";
2
+ import * as Data from "effect/Data";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Redacted from "effect/Redacted";
5
+ import * as Schedule from "effect/Schedule";
6
+ import { Client } from "pg";
7
+ import { listSqlFiles, readSqlFile } from "../../Sql/SqlFile.js";
8
+ const MIGRATION_ROLE_TTL_SECONDS = 600;
9
+ export class PostgresMigrationError extends Data.TaggedError("Planetscale::PostgresMigrationError") {
10
+ }
11
+ export const runPostgresMigrations = (target, migrationsDir, migrationsTable) => Effect.gen(function* () {
12
+ const files = yield* listSqlFiles(migrationsDir);
13
+ if (files.length > 0) {
14
+ yield* applyPostgresMigrations({
15
+ target,
16
+ migrationsTable,
17
+ migrationsFiles: files,
18
+ });
19
+ }
20
+ const hashes = {};
21
+ for (const file of files)
22
+ hashes[file.id] = file.hash;
23
+ return hashes;
24
+ });
25
+ export const runPostgresImports = (target, importFiles, rootDir, previous) => Effect.gen(function* () {
26
+ const hashes = { ...previous };
27
+ for (const filePath of importFiles) {
28
+ const file = yield* readSqlFile(rootDir, filePath);
29
+ if (previous[filePath] === file.hash) {
30
+ hashes[filePath] = file.hash;
31
+ continue;
32
+ }
33
+ yield* runPostgresSql(target, file.sql);
34
+ hashes[filePath] = file.hash;
35
+ }
36
+ const tracked = new Set(importFiles);
37
+ for (const key of Object.keys(hashes)) {
38
+ if (!tracked.has(key))
39
+ delete hashes[key];
40
+ }
41
+ return hashes;
42
+ });
43
+ const applyPostgresMigrations = (options) => withPostgresClient(options.target, (client) => Effect.gen(function* () {
44
+ const table = quotePgIdentifier(options.migrationsTable);
45
+ yield* pgExec(client, `CREATE TABLE IF NOT EXISTS ${table} (
46
+ id TEXT PRIMARY KEY,
47
+ name TEXT NOT NULL,
48
+ applied_at TIMESTAMPTZ NOT NULL DEFAULT now()
49
+ );`);
50
+ const applied = yield* pgRows(client, `SELECT name FROM ${table};`).pipe(Effect.map((rows) => new Set(rows.map((row) => row.name))));
51
+ let nextSeq = yield* getNextPgSeq(client, table);
52
+ for (const file of options.migrationsFiles) {
53
+ if (applied.has(file.id))
54
+ continue;
55
+ const migrationId = nextSeq.toString().padStart(5, "0");
56
+ nextSeq += 1;
57
+ yield* Effect.gen(function* () {
58
+ yield* pgExec(client, "BEGIN");
59
+ yield* pgExec(client, file.sql);
60
+ yield* pgExec(client, `INSERT INTO ${table} (id, name) VALUES ($1, $2);`, [migrationId, file.id]);
61
+ yield* pgExec(client, "COMMIT");
62
+ }).pipe(Effect.catch((error) => pgExec(client, "ROLLBACK").pipe(Effect.catch(() => Effect.void), Effect.andThen(Effect.fail(error)))));
63
+ }
64
+ }));
65
+ const runPostgresSql = (target, sql) => withPostgresClient(target, (client) => pgExec(client, sql));
66
+ const getNextPgSeq = (client, table) => pgRows(client, `SELECT id FROM ${table};`).pipe(Effect.map((rows) => {
67
+ let max = 0;
68
+ for (const { id } of rows) {
69
+ if (/^\d+$/.test(id)) {
70
+ max = Math.max(max, Number.parseInt(id, 10));
71
+ }
72
+ }
73
+ return max + 1;
74
+ }));
75
+ const withPostgresClient = (target, use) => withTemporaryPostgresRole(target, (role) => Effect.acquireUseRelease(Effect.gen(function* () {
76
+ const client = yield* Effect.sync(() => new Client({
77
+ connectionString: stripPgSslQueryParams(Redacted.value(role.connectionUrl)),
78
+ ssl: { rejectUnauthorized: true },
79
+ }));
80
+ yield* Effect.tryPromise({
81
+ try: () => client.connect(),
82
+ catch: toMigrationError,
83
+ });
84
+ return client;
85
+ }), use, (client) => Effect.tryPromise({
86
+ try: () => client.end(),
87
+ catch: toMigrationError,
88
+ }).pipe(Effect.catch(() => Effect.void))));
89
+ const withTemporaryPostgresRole = (target, use) => Effect.acquireUseRelease(Effect.gen(function* () {
90
+ const created = yield* ops.createRole({
91
+ organization: target.organization,
92
+ database: target.database,
93
+ branch: target.branch,
94
+ ttl: MIGRATION_ROLE_TTL_SECONDS,
95
+ inherited_roles: ["postgres"],
96
+ });
97
+ const password = created.password;
98
+ const value = Redacted.value(password);
99
+ const connectionUrl = yield* Effect.sync(() => `postgresql://${encodeURIComponent(created.username)}:${encodeURIComponent(value)}@${created.access_host_url}:5432/${created.database_name}?sslmode=verify-full`);
100
+ return {
101
+ id: created.id,
102
+ connectionUrl: Redacted.make(connectionUrl),
103
+ };
104
+ }), use, (role) => ops
105
+ .deleteRole({
106
+ organization: target.organization,
107
+ database: target.database,
108
+ branch: target.branch,
109
+ id: role.id,
110
+ successor: "postgres",
111
+ })
112
+ .pipe(
113
+ // Already-deleted roles are a success: nothing to clean up.
114
+ Effect.catchTag("NotFound", () => Effect.void), Effect.retry({
115
+ schedule: Schedule.exponential("500 millis").pipe(Schedule.both(Schedule.recurs(5))),
116
+ }),
117
+ // Migrations succeeded; don't fail the parent over a release-step
118
+ // hiccup. The role's TTL bounds the orphan window; log loudly so
119
+ // an operator can clean it up manually if needed.
120
+ Effect.catch((cause) => Effect.logWarning(`Failed to delete temporary Planetscale migration role after retries. ` +
121
+ `It will expire via TTL (~${MIGRATION_ROLE_TTL_SECONDS}s). ` +
122
+ `organization=${target.organization} database=${target.database} ` +
123
+ `branch=${target.branch} id=${role.id}`, cause))));
124
+ const pgExec = (client, sql, values) => Effect.tryPromise({
125
+ try: () => client.query(sql, values).then(() => undefined),
126
+ catch: toMigrationError,
127
+ });
128
+ const pgRows = (client, sql) => Effect.tryPromise({
129
+ try: () => client.query(sql).then((result) => result.rows),
130
+ catch: toMigrationError,
131
+ });
132
+ const toMigrationError = (cause) => new PostgresMigrationError({
133
+ message: cause instanceof Error ? cause.message : String(cause),
134
+ cause,
135
+ });
136
+ const quotePgIdentifier = (identifier) => `"${identifier.replaceAll('"', '""')}"`;
137
+ const stripPgSslQueryParams = (uri) => {
138
+ try {
139
+ const url = new URL(uri);
140
+ url.searchParams.delete("sslmode");
141
+ url.searchParams.delete("channel_binding");
142
+ return url.toString();
143
+ }
144
+ catch {
145
+ return uri;
146
+ }
147
+ };
148
+ //# sourceMappingURL=PostgresMigrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgresMigrations.js","sourceRoot":"","sources":["../../../src/Planetscale/Postgres/PostgresMigrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import * as Redacted from "effect/Redacted";
2
+ /**
3
+ * The shape `Cloudflare.Hyperdrive` and other Postgres consumers accept as an
4
+ * origin. Materialized on `Planetscale.PostgresRole` so callers can wire role
5
+ * credentials into Hyperdrive directly.
6
+ */
7
+ export type PostgresOrigin = {
8
+ scheme: "postgres" | "postgresql";
9
+ host: string;
10
+ port: number;
11
+ database: string;
12
+ user: string;
13
+ password: Redacted.Redacted<string>;
14
+ };
15
+ //# sourceMappingURL=PostgresOrigin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgresOrigin.d.ts","sourceRoot":"","sources":["../../../src/Planetscale/Postgres/PostgresOrigin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import * as Redacted from "effect/Redacted";
2
+ //# sourceMappingURL=PostgresOrigin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgresOrigin.js","sourceRoot":"","sources":["../../../src/Planetscale/Postgres/PostgresOrigin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,121 @@
1
+ import { Credentials } from "@distilled.cloud/planetscale/Credentials";
2
+ import * as Redacted from "effect/Redacted";
3
+ import * as Provider from "../../Provider.ts";
4
+ import { Resource } from "../../Resource.ts";
5
+ import type { Providers } from "../Providers.ts";
6
+ import type { PostgresBranch } from "./PostgresBranch.ts";
7
+ import type { PostgresDatabase } from "./PostgresDatabase.ts";
8
+ import type { PostgresOrigin } from "./PostgresOrigin.ts";
9
+ /**
10
+ * Built-in PostgreSQL roles that can be inherited from. Custom role names
11
+ * (referencing other Role resources) are also accepted.
12
+ */
13
+ export type InheritedRole = "pscale_managed" | "pg_checkpoint" | "pg_create_subscription" | "pg_maintain" | "pg_monitor" | "pg_read_all_data" | "pg_read_all_settings" | "pg_read_all_stats" | "pg_signal_backend" | "pg_stat_scan_tables" | "pg_use_reserved_connections" | "pg_write_all_data" | "postgres" | (string & {});
14
+ /**
15
+ * Properties for creating or updating a PlanetScale PostgreSQL role.
16
+ *
17
+ * Roles are only meant for PostgreSQL databases. For MySQL,
18
+ * use {@link MySQLPassword} instead.
19
+ */
20
+ export interface PostgresRoleProps {
21
+ /**
22
+ * Role name. If not provided, a physical name will be generated.
23
+ */
24
+ name?: string;
25
+ /**
26
+ * PostgreSQL database — string name or {@link PostgresDatabase} resource.
27
+ */
28
+ database: string | PostgresDatabase;
29
+ /**
30
+ * Branch — string name or {@link PostgresBranch} resource.
31
+ * @default "main"
32
+ */
33
+ branch?: string | PostgresBranch;
34
+ /**
35
+ * Time to live in seconds.
36
+ */
37
+ ttl?: number;
38
+ /**
39
+ * Roles to inherit from. Either a list of built-in role names, or
40
+ * another {@link PostgresRole} resource (whose `inheritedRoles` are reused).
41
+ */
42
+ inheritedRoles: InheritedRole[] | PostgresRole;
43
+ /**
44
+ * Successor role to reassign ownership to before dropping. Used during
45
+ * delete.
46
+ * @default "postgres"
47
+ */
48
+ successor?: string | PostgresRole;
49
+ }
50
+ /**
51
+ * Output attributes of a deployed PlanetScale role.
52
+ */
53
+ export interface PostgresRoleAttributes {
54
+ /** Unique identifier for the role (stable). */
55
+ id: string;
56
+ /** The Postgres role name (assigned by PlanetScale). */
57
+ name: string;
58
+ /** ISO 8601 timestamp at which the role expires. */
59
+ expiresAt: string | null;
60
+ /** Hostname for the database connection. */
61
+ host: string;
62
+ /** Username for database authentication. */
63
+ username: string;
64
+ /** Password for database authentication (Redacted). */
65
+ password: Redacted.Redacted<string>;
66
+ /** The database name. */
67
+ database: string;
68
+ /** The Postgres database name inside the branch. */
69
+ databaseName: string;
70
+ /** Parsed connection components ready to feed into Cloudflare Hyperdrive. */
71
+ origin: PostgresOrigin;
72
+ /** Direct connection URL for the database (Redacted). */
73
+ connectionUrl: Redacted.Redacted<string>;
74
+ /** Pooled connection URL via PSBouncer (port 6432, Redacted). */
75
+ connectionUrlPooled: Redacted.Redacted<string>;
76
+ /** Inherited roles. */
77
+ inheritedRoles: InheritedRole[];
78
+ /** The successor role used during delete. */
79
+ successor: string;
80
+ /** Resolved organization slug. */
81
+ organization: string;
82
+ /** Resolved branch name. */
83
+ branch: string;
84
+ /** Time-to-live for the role in seconds. */
85
+ ttl: number | null;
86
+ }
87
+ /**
88
+ * A PlanetScale role for accessing a PostgreSQL database branch.
89
+ *
90
+ * For MySQL databases, use {@link MySQLPassword} instead.
91
+ *
92
+ * @section Creating a Role
93
+ * @example Postgres admin role
94
+ * ```typescript
95
+ * const admin = yield* Planetscale.PostgresRole("Admin", {
96
+ * database: "my-db",
97
+ * inheritedRoles: ["postgres"],
98
+ * });
99
+ * ```
100
+ *
101
+ * @example Read-only role
102
+ * ```typescript
103
+ * const reader = yield* Planetscale.PostgresRole("Reader", {
104
+ * database: "my-db",
105
+ * inheritedRoles: ["pg_read_all_data", "pg_read_all_settings"],
106
+ * });
107
+ * ```
108
+ *
109
+ * @example Role with TTL
110
+ * ```typescript
111
+ * const tempReader = yield* Planetscale.PostgresRole("TempReader", {
112
+ * database: "my-db",
113
+ * inheritedRoles: ["pg_read_all_data"],
114
+ * ttl: 3600,
115
+ * });
116
+ * ```
117
+ */
118
+ export type PostgresRole = Resource<"Planetscale.PostgresRole", PostgresRoleProps, PostgresRoleAttributes, never, Providers>;
119
+ export declare const PostgresRole: import("../../Resource.ts").ResourceClass<PostgresRole>;
120
+ export declare const PostgresRoleProvider: () => import("effect/Layer").Layer<Provider.Provider<PostgresRole>, never, import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | Credentials>;
121
+ //# sourceMappingURL=PostgresRole.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgresRole.d.ts","sourceRoot":"","sources":["../../../src/Planetscale/Postgres/PostgresRole.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAGvE,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D;;;GAGG;AACH,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,eAAe,GACf,wBAAwB,GACxB,aAAa,GACb,YAAY,GACZ,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,6BAA6B,GAC7B,mBAAmB,GACnB,UAAU,GACV,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAiBlB;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAEpC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAEjC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,cAAc,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC;IAE/C;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,MAAM,EAAE,cAAc,CAAC;IACvB,yDAAyD;IACzD,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,iEAAiE;IACjE,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/C,uBAAuB;IACvB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CACjC,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,EACL,SAAS,CACV,CAAC;AAEF,eAAO,MAAM,YAAY,yDAAqD,CAAC;AA0G/E,eAAO,MAAM,oBAAoB,2JA+L9B,CAAC"}
@@ -0,0 +1,228 @@
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.js";
6
+ import * as Provider from "../../Provider.js";
7
+ import { Resource } from "../../Resource.js";
8
+ import { isKnownError, PlanetscaleConflict, waitForBranchReady, } from "../Util.js";
9
+ import { createPhysicalName } from "../../PhysicalName.js";
10
+ export const PostgresRole = Resource("Planetscale.PostgresRole");
11
+ const resolveDatabaseName = (database) => {
12
+ const ref = database;
13
+ return typeof ref === "string" ? ref : ref.name;
14
+ };
15
+ const resolveDatabaseOrg = (database) => {
16
+ const ref = database;
17
+ return typeof ref === "string" ? undefined : ref.organization;
18
+ };
19
+ const resolveBranchName = (branch) => {
20
+ const ref = branch;
21
+ return !ref ? "main" : typeof ref === "string" ? ref : ref.name;
22
+ };
23
+ const resolveSuccessorName = (successor) => {
24
+ const ref = successor;
25
+ return !ref ? "postgres" : typeof ref === "string" ? ref : ref.name;
26
+ };
27
+ const resolveInheritedRoles = (inheritedRoles) => {
28
+ if (Array.isArray(inheritedRoles)) {
29
+ return inheritedRoles;
30
+ }
31
+ // At runtime, a Role passed in is its resolved attributes (with
32
+ // `inheritedRoles` as a plain array); statically `Role.inheritedRoles`
33
+ // is `Output<InheritedRole[]>`.
34
+ return inheritedRoles.inheritedRoles;
35
+ };
36
+ const resolveName = (id, name) => Effect.gen(function* () {
37
+ return (name ??
38
+ (yield* createPhysicalName({ id, lowercase: true, maxLength: 63 })));
39
+ });
40
+ const buildAttributes = (role, password, context) => {
41
+ const passwordValue = Redacted.value(password);
42
+ const connectionUrl = `postgresql://${role.username}:${passwordValue}@${role.access_host_url}:5432/${role.database_name}?sslmode=verify-full`;
43
+ const connectionUrlPooled = `postgresql://${role.username}:${passwordValue}@${role.access_host_url}:6432/${role.database_name}?sslmode=verify-full`;
44
+ return {
45
+ id: role.id,
46
+ name: role.name,
47
+ expiresAt: role.expires_at,
48
+ host: role.access_host_url,
49
+ username: role.username,
50
+ password,
51
+ connectionUrl: Redacted.make(connectionUrl),
52
+ connectionUrlPooled: Redacted.make(connectionUrlPooled),
53
+ inheritedRoles: context.inheritedRoles,
54
+ successor: context.successor,
55
+ organization: context.organization,
56
+ database: context.database,
57
+ databaseName: role.database_name,
58
+ origin: {
59
+ scheme: "postgres",
60
+ host: role.access_host_url,
61
+ port: 5432,
62
+ database: role.database_name,
63
+ user: role.username,
64
+ password,
65
+ },
66
+ branch: context.branch,
67
+ ttl: role.ttl,
68
+ };
69
+ };
70
+ export const PostgresRoleProvider = () => Provider.effect(PostgresRole, Effect.gen(function* () {
71
+ const createRole = yield* ops.createRole;
72
+ const deleteRole = yield* ops.deleteRole;
73
+ const updateRole = yield* ops.updateRole;
74
+ const getRole = yield* ops.getRole;
75
+ const getBranch = yield* ops.getBranch;
76
+ return {
77
+ stables: ["id"],
78
+ diff: Effect.fn(function* ({ id, news, olds, output }) {
79
+ if (!isResolved(news))
80
+ return undefined;
81
+ // Successor is the only updatable property — everything else
82
+ // requires replacement.
83
+ if (news.ttl !== olds.ttl) {
84
+ return { action: "replace" };
85
+ }
86
+ const newDb = resolveDatabaseName(news.database);
87
+ const oldDb = olds.database
88
+ ? resolveDatabaseName(olds.database)
89
+ : undefined;
90
+ if (oldDb && newDb !== oldDb) {
91
+ return { action: "replace" };
92
+ }
93
+ const newBranch = resolveBranchName(news.branch);
94
+ const oldBranch = resolveBranchName(olds.branch);
95
+ if (newBranch !== oldBranch) {
96
+ return { action: "replace" };
97
+ }
98
+ const newRoles = resolveInheritedRoles(news.inheritedRoles);
99
+ const oldRoles = output?.inheritedRoles ?? [];
100
+ if (!deepEqual(newRoles, oldRoles)) {
101
+ return { action: "replace" };
102
+ }
103
+ const oldName = output?.name ?? (yield* resolveName(id, olds?.name));
104
+ const newName = yield* resolveName(id, news.name);
105
+ if (newName !== oldName) {
106
+ return { action: "update" };
107
+ }
108
+ return undefined;
109
+ }),
110
+ read: Effect.fn(function* ({ output }) {
111
+ if (!output?.id)
112
+ return undefined;
113
+ return yield* getRole({
114
+ branch: output.branch,
115
+ database: output.database,
116
+ organization: output.organization,
117
+ id: output.id,
118
+ }).pipe(Effect.map((token) => buildAttributes(token, output.password, {
119
+ inheritedRoles: token.inherited_roles,
120
+ successor: output.successor,
121
+ organization: output.organization,
122
+ database: output.database,
123
+ branch: token.branch.name,
124
+ })), Effect.catchTag("Forbidden", () => Effect.succeed(undefined)), Effect.catchTag("NotFound", () => Effect.succeed(undefined)));
125
+ }),
126
+ reconcile: Effect.fn(function* ({ id, news, output }) {
127
+ const { organization: envOrg } = yield* Credentials;
128
+ const organization = resolveDatabaseOrg(news.database) ?? envOrg;
129
+ const databaseName = resolveDatabaseName(news.database);
130
+ const branchName = resolveBranchName(news.branch);
131
+ const inheritedRoles = resolveInheritedRoles(news.inheritedRoles);
132
+ const successor = resolveSuccessorName(news.successor);
133
+ const desiredName = yield* resolveName(id, news.name);
134
+ // 1. Observe — fetch live state if we know the role id. Roles
135
+ // can only be looked up by id; without a cached id there is
136
+ // no way to find the live role, so we fall through to ensure.
137
+ const observed = output?.id
138
+ ? yield* getRole({
139
+ id: output.id,
140
+ branch: branchName,
141
+ organization,
142
+ database: databaseName,
143
+ }).pipe(Effect.catchTag("NotFound", () => Effect.succeed(undefined)))
144
+ : undefined;
145
+ // 2. Ensure — create if missing. Single branch covers both
146
+ // greenfield (no output) and out-of-band-deletion (output
147
+ // cached but cloud lost it). The latter is structurally a
148
+ // rotation: the new role has fresh id/host/username/plaintext
149
+ // that propagate downstream through the dependency graph.
150
+ // There is no path to recover the original plaintext, so
151
+ // recreating is the only way to converge.
152
+ //
153
+ // Planetscale returns the plaintext password value exactly
154
+ // once on create; on an observe-hit we re-use the cached
155
+ // plaintext from output (which is why adoption requires
156
+ // pre-existing state — see `read`).
157
+ let live;
158
+ let plaintext;
159
+ if (observed) {
160
+ live = observed;
161
+ plaintext = output.password;
162
+ }
163
+ else {
164
+ const branchInfo = yield* getBranch({
165
+ organization,
166
+ database: databaseName,
167
+ branch: branchName,
168
+ });
169
+ if (branchInfo.kind !== "postgresql") {
170
+ return yield* Effect.fail(new PlanetscaleConflict({
171
+ message: `Cannot create a Role on MySQL database "${databaseName}". Roles are only supported on PostgreSQL. Use Password for MySQL.`,
172
+ }));
173
+ }
174
+ if (!branchInfo.ready) {
175
+ yield* waitForBranchReady(organization, databaseName, branchName);
176
+ }
177
+ const created = yield* createRole({
178
+ name: desiredName,
179
+ branch: branchName,
180
+ organization,
181
+ database: databaseName,
182
+ ttl: news.ttl,
183
+ inherited_roles: inheritedRoles,
184
+ });
185
+ if (!created.password) {
186
+ return yield* Effect.die(`Planetscale did not return a password for Role "${desiredName}".`);
187
+ }
188
+ plaintext = created.password;
189
+ live = created;
190
+ }
191
+ // 3. Sync — only `name` is mutable in place; diff observed
192
+ // against desired and skip the API call when nothing
193
+ // changed. Everything else triggers a replace via diff().
194
+ if (live.name !== desiredName) {
195
+ live = yield* updateRole({
196
+ id: live.id,
197
+ branch: branchName,
198
+ organization,
199
+ database: databaseName,
200
+ name: desiredName,
201
+ });
202
+ }
203
+ // 4. Return — fresh attrs sourced from observed cloud state,
204
+ // with cached or freshly-issued plaintext.
205
+ return buildAttributes(live, plaintext, {
206
+ inheritedRoles: live.inherited_roles,
207
+ successor,
208
+ organization,
209
+ database: databaseName,
210
+ branch: branchName,
211
+ });
212
+ }),
213
+ delete: Effect.fn(function* ({ output }) {
214
+ yield* deleteRole({
215
+ organization: output.organization,
216
+ database: output.database,
217
+ branch: output.branch,
218
+ id: output.id,
219
+ successor: output.successor,
220
+ }).pipe(Effect.catchTag("NotFound", () => Effect.void),
221
+ // 422 (UnprocessableEntity): role is still referenced. Log a
222
+ // warning rather than failing — the role will be cleaned up
223
+ // when the database/branch is deleted.
224
+ Effect.catchIf(isKnownError("UnprocessableEntity", "Role is still referenced and cannot be dropped."), () => Effect.void));
225
+ }),
226
+ };
227
+ }));
228
+ //# sourceMappingURL=PostgresRole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgresRole.js","sourceRoot":"","sources":["../../../src/Planetscale/Postgres/PostgresRole.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
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";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Planetscale/Postgres/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./PostgresClusterSize.js";
2
+ export * from "./PostgresBranch.js";
3
+ export * from "./PostgresDatabase.js";
4
+ export * from "./PostgresDefaultRole.js";
5
+ export * from "./PostgresOrigin.js";
6
+ export * from "./PostgresRole.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Planetscale/Postgres/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import * as Layer from "effect/Layer";
2
+ import * as Provider from "../Provider.ts";
3
+ import type { StackServices } from "../Stack.ts";
4
+ import * as Credentials from "./Credentials.ts";
5
+ declare const Providers_base: Provider.ProviderCollection<Providers, "Planetscale">;
6
+ /**
7
+ * Service tag bundling all PlanetScale providers + auth + credentials. Use
8
+ * `Planetscale.providers()` to materialize the full layer.
9
+ */
10
+ export declare class Providers extends Providers_base {
11
+ }
12
+ export type ProviderRequirements = Layer.Services<ReturnType<typeof providers>>;
13
+ /**
14
+ * Build the complete PlanetScale providers Layer. Provide this on a Stack
15
+ * (or via `Effect.provide` at test time) to enable all PlanetScale
16
+ * resources, the AuthProvider registration, and credential resolution.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * Effect.provide(Planetscale.providers())
21
+ * ```
22
+ */
23
+ export declare const providers: () => Layer.Layer<Providers | Credentials.Credentials, never, StackServices>;
24
+ export {};
25
+ //# sourceMappingURL=Providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../src/Planetscale/Providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;;AAkBhD;;;GAGG;AACH,qBAAa,SAAU,SAAQ,cAE9B;CAAG;AAEJ,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAEhF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,QAAO,KAAK,CAAC,KAAK,CACtC,SAAS,GAAG,WAAW,CAAC,WAAW,EACnC,KAAK,EACL,aAAa,CA+B8D,CAAC"}