alchemy 2.0.0-beta.42 → 2.0.0-beta.44

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 (712) hide show
  1. package/bin/cli.js +18 -5
  2. package/bin/exec.js +317 -242
  3. package/bin/exec.js.map +1 -1
  4. package/lib/AWS/CloudWatch/DescribeAlarmContributors.d.ts +1 -1
  5. package/lib/AWS/CloudWatch/DescribeAlarmContributors.d.ts.map +1 -1
  6. package/lib/AWS/CloudWatch/DescribeAlarmHistory.d.ts +1 -1
  7. package/lib/AWS/CloudWatch/DescribeAlarmHistory.d.ts.map +1 -1
  8. package/lib/AWS/CloudWatch/DescribeAlarms.d.ts +1 -1
  9. package/lib/AWS/CloudWatch/DescribeAlarms.d.ts.map +1 -1
  10. package/lib/AWS/CloudWatch/DescribeAlarmsForMetric.d.ts +1 -1
  11. package/lib/AWS/CloudWatch/DescribeAlarmsForMetric.d.ts.map +1 -1
  12. package/lib/AWS/CloudWatch/DescribeAnomalyDetectors.d.ts +1 -1
  13. package/lib/AWS/CloudWatch/DescribeAnomalyDetectors.d.ts.map +1 -1
  14. package/lib/AWS/CloudWatch/DescribeInsightRules.d.ts +1 -1
  15. package/lib/AWS/CloudWatch/DescribeInsightRules.d.ts.map +1 -1
  16. package/lib/AWS/CloudWatch/DisableAlarmActions.d.ts +1 -1
  17. package/lib/AWS/CloudWatch/DisableAlarmActions.d.ts.map +1 -1
  18. package/lib/AWS/CloudWatch/DisableInsightRules.d.ts +1 -1
  19. package/lib/AWS/CloudWatch/DisableInsightRules.d.ts.map +1 -1
  20. package/lib/AWS/CloudWatch/EnableAlarmActions.d.ts +1 -1
  21. package/lib/AWS/CloudWatch/EnableAlarmActions.d.ts.map +1 -1
  22. package/lib/AWS/CloudWatch/GetAlarmMuteRule.d.ts +1 -1
  23. package/lib/AWS/CloudWatch/GetAlarmMuteRule.d.ts.map +1 -1
  24. package/lib/AWS/CloudWatch/GetDashboard.d.ts +1 -1
  25. package/lib/AWS/CloudWatch/GetDashboard.d.ts.map +1 -1
  26. package/lib/AWS/CloudWatch/GetInsightRuleReport.d.ts +1 -1
  27. package/lib/AWS/CloudWatch/GetInsightRuleReport.d.ts.map +1 -1
  28. package/lib/AWS/CloudWatch/GetMetricData.d.ts +1 -1
  29. package/lib/AWS/CloudWatch/GetMetricData.d.ts.map +1 -1
  30. package/lib/AWS/CloudWatch/GetMetricStatistics.d.ts +1 -1
  31. package/lib/AWS/CloudWatch/GetMetricStatistics.d.ts.map +1 -1
  32. package/lib/AWS/CloudWatch/GetMetricStream.d.ts +1 -1
  33. package/lib/AWS/CloudWatch/GetMetricStream.d.ts.map +1 -1
  34. package/lib/AWS/CloudWatch/GetMetricWidgetImage.d.ts +1 -1
  35. package/lib/AWS/CloudWatch/GetMetricWidgetImage.d.ts.map +1 -1
  36. package/lib/AWS/CloudWatch/ListAlarmMuteRules.d.ts +1 -1
  37. package/lib/AWS/CloudWatch/ListAlarmMuteRules.d.ts.map +1 -1
  38. package/lib/AWS/CloudWatch/ListDashboards.d.ts +1 -1
  39. package/lib/AWS/CloudWatch/ListDashboards.d.ts.map +1 -1
  40. package/lib/AWS/CloudWatch/ListManagedInsightRules.d.ts +1 -1
  41. package/lib/AWS/CloudWatch/ListManagedInsightRules.d.ts.map +1 -1
  42. package/lib/AWS/CloudWatch/ListMetricStreams.d.ts +1 -1
  43. package/lib/AWS/CloudWatch/ListMetricStreams.d.ts.map +1 -1
  44. package/lib/AWS/CloudWatch/ListMetrics.d.ts +1 -1
  45. package/lib/AWS/CloudWatch/ListMetrics.d.ts.map +1 -1
  46. package/lib/AWS/CloudWatch/ListTagsForResource.d.ts +1 -1
  47. package/lib/AWS/CloudWatch/ListTagsForResource.d.ts.map +1 -1
  48. package/lib/AWS/CloudWatch/PutMetricData.d.ts +1 -1
  49. package/lib/AWS/CloudWatch/PutMetricData.d.ts.map +1 -1
  50. package/lib/AWS/CloudWatch/SetAlarmState.d.ts +1 -1
  51. package/lib/AWS/CloudWatch/SetAlarmState.d.ts.map +1 -1
  52. package/lib/AWS/DynamoDB/BatchExecuteStatement.d.ts +1 -1
  53. package/lib/AWS/DynamoDB/BatchExecuteStatement.d.ts.map +1 -1
  54. package/lib/AWS/DynamoDB/BatchGetItem.d.ts +1 -1
  55. package/lib/AWS/DynamoDB/BatchGetItem.d.ts.map +1 -1
  56. package/lib/AWS/DynamoDB/BatchWriteItem.d.ts +1 -1
  57. package/lib/AWS/DynamoDB/BatchWriteItem.d.ts.map +1 -1
  58. package/lib/AWS/DynamoDB/DeleteItem.d.ts +1 -1
  59. package/lib/AWS/DynamoDB/DeleteItem.d.ts.map +1 -1
  60. package/lib/AWS/DynamoDB/DescribeTable.d.ts +1 -1
  61. package/lib/AWS/DynamoDB/DescribeTable.d.ts.map +1 -1
  62. package/lib/AWS/DynamoDB/DescribeTimeToLive.d.ts +1 -1
  63. package/lib/AWS/DynamoDB/DescribeTimeToLive.d.ts.map +1 -1
  64. package/lib/AWS/DynamoDB/ExecuteStatement.d.ts +1 -1
  65. package/lib/AWS/DynamoDB/ExecuteStatement.d.ts.map +1 -1
  66. package/lib/AWS/DynamoDB/ExecuteTransaction.d.ts +1 -1
  67. package/lib/AWS/DynamoDB/ExecuteTransaction.d.ts.map +1 -1
  68. package/lib/AWS/DynamoDB/GetItem.d.ts +1 -1
  69. package/lib/AWS/DynamoDB/GetItem.d.ts.map +1 -1
  70. package/lib/AWS/DynamoDB/ListTables.d.ts +1 -1
  71. package/lib/AWS/DynamoDB/ListTables.d.ts.map +1 -1
  72. package/lib/AWS/DynamoDB/ListTagsOfResource.d.ts +1 -1
  73. package/lib/AWS/DynamoDB/ListTagsOfResource.d.ts.map +1 -1
  74. package/lib/AWS/DynamoDB/PutItem.d.ts +1 -1
  75. package/lib/AWS/DynamoDB/PutItem.d.ts.map +1 -1
  76. package/lib/AWS/DynamoDB/Query.d.ts +1 -1
  77. package/lib/AWS/DynamoDB/Query.d.ts.map +1 -1
  78. package/lib/AWS/DynamoDB/RestoreTableToPointInTime.d.ts +1 -1
  79. package/lib/AWS/DynamoDB/RestoreTableToPointInTime.d.ts.map +1 -1
  80. package/lib/AWS/DynamoDB/Scan.d.ts +1 -1
  81. package/lib/AWS/DynamoDB/Scan.d.ts.map +1 -1
  82. package/lib/AWS/DynamoDB/TransactGetItems.d.ts +1 -1
  83. package/lib/AWS/DynamoDB/TransactGetItems.d.ts.map +1 -1
  84. package/lib/AWS/DynamoDB/TransactWriteItems.d.ts +1 -1
  85. package/lib/AWS/DynamoDB/TransactWriteItems.d.ts.map +1 -1
  86. package/lib/AWS/DynamoDB/UpdateItem.d.ts +1 -1
  87. package/lib/AWS/DynamoDB/UpdateItem.d.ts.map +1 -1
  88. package/lib/AWS/DynamoDB/UpdateTimeToLive.d.ts +1 -1
  89. package/lib/AWS/DynamoDB/UpdateTimeToLive.d.ts.map +1 -1
  90. package/lib/AWS/ECS/DescribeTasks.d.ts +1 -1
  91. package/lib/AWS/ECS/DescribeTasks.d.ts.map +1 -1
  92. package/lib/AWS/ECS/ListTasks.d.ts +1 -1
  93. package/lib/AWS/ECS/ListTasks.d.ts.map +1 -1
  94. package/lib/AWS/ECS/RunTask.d.ts +1 -1
  95. package/lib/AWS/ECS/RunTask.d.ts.map +1 -1
  96. package/lib/AWS/ECS/StopTask.d.ts +1 -1
  97. package/lib/AWS/ECS/StopTask.d.ts.map +1 -1
  98. package/lib/AWS/EventBridge/DescribeEventBus.d.ts +1 -1
  99. package/lib/AWS/EventBridge/DescribeEventBus.d.ts.map +1 -1
  100. package/lib/AWS/EventBridge/DescribeRule.d.ts +1 -1
  101. package/lib/AWS/EventBridge/DescribeRule.d.ts.map +1 -1
  102. package/lib/AWS/EventBridge/EventSource.d.ts +2 -2
  103. package/lib/AWS/EventBridge/ListEventBuses.d.ts +1 -1
  104. package/lib/AWS/EventBridge/ListEventBuses.d.ts.map +1 -1
  105. package/lib/AWS/EventBridge/ListRules.d.ts +1 -1
  106. package/lib/AWS/EventBridge/ListRules.d.ts.map +1 -1
  107. package/lib/AWS/EventBridge/ListTargetsByRule.d.ts +1 -1
  108. package/lib/AWS/EventBridge/ListTargetsByRule.d.ts.map +1 -1
  109. package/lib/AWS/EventBridge/PutEvents.d.ts +1 -1
  110. package/lib/AWS/EventBridge/PutEvents.d.ts.map +1 -1
  111. package/lib/AWS/EventBridge/TestEventPattern.d.ts +1 -1
  112. package/lib/AWS/EventBridge/TestEventPattern.d.ts.map +1 -1
  113. package/lib/AWS/EventBridge/ToLambda.d.ts +1 -1
  114. package/lib/AWS/EventBridge/ToLambda.d.ts.map +1 -1
  115. package/lib/AWS/EventBridge/ToQueue.d.ts +1 -1
  116. package/lib/AWS/EventBridge/ToQueue.d.ts.map +1 -1
  117. package/lib/AWS/Kinesis/DescribeAccountSettings.d.ts +1 -1
  118. package/lib/AWS/Kinesis/DescribeAccountSettings.d.ts.map +1 -1
  119. package/lib/AWS/Kinesis/DescribeLimits.d.ts +1 -1
  120. package/lib/AWS/Kinesis/DescribeLimits.d.ts.map +1 -1
  121. package/lib/AWS/Kinesis/DescribeStream.d.ts +1 -1
  122. package/lib/AWS/Kinesis/DescribeStream.d.ts.map +1 -1
  123. package/lib/AWS/Kinesis/DescribeStreamConsumer.d.ts +1 -1
  124. package/lib/AWS/Kinesis/DescribeStreamConsumer.d.ts.map +1 -1
  125. package/lib/AWS/Kinesis/DescribeStreamSummary.d.ts +1 -1
  126. package/lib/AWS/Kinesis/DescribeStreamSummary.d.ts.map +1 -1
  127. package/lib/AWS/Kinesis/GetRecords.d.ts +1 -1
  128. package/lib/AWS/Kinesis/GetRecords.d.ts.map +1 -1
  129. package/lib/AWS/Kinesis/GetResourcePolicy.d.ts +1 -1
  130. package/lib/AWS/Kinesis/GetResourcePolicy.d.ts.map +1 -1
  131. package/lib/AWS/Kinesis/GetShardIterator.d.ts +1 -1
  132. package/lib/AWS/Kinesis/GetShardIterator.d.ts.map +1 -1
  133. package/lib/AWS/Kinesis/ListShards.d.ts +1 -1
  134. package/lib/AWS/Kinesis/ListShards.d.ts.map +1 -1
  135. package/lib/AWS/Kinesis/ListStreamConsumers.d.ts +1 -1
  136. package/lib/AWS/Kinesis/ListStreamConsumers.d.ts.map +1 -1
  137. package/lib/AWS/Kinesis/ListStreams.d.ts +1 -1
  138. package/lib/AWS/Kinesis/ListStreams.d.ts.map +1 -1
  139. package/lib/AWS/Kinesis/ListTagsForResource.d.ts +1 -1
  140. package/lib/AWS/Kinesis/ListTagsForResource.d.ts.map +1 -1
  141. package/lib/AWS/Kinesis/PutRecord.d.ts +1 -1
  142. package/lib/AWS/Kinesis/PutRecord.d.ts.map +1 -1
  143. package/lib/AWS/Kinesis/PutRecords.d.ts +1 -1
  144. package/lib/AWS/Kinesis/PutRecords.d.ts.map +1 -1
  145. package/lib/AWS/Kinesis/StreamSink.d.ts +1 -1
  146. package/lib/AWS/Kinesis/StreamSink.d.ts.map +1 -1
  147. package/lib/AWS/Kinesis/SubscribeToShard.d.ts +1 -1
  148. package/lib/AWS/Kinesis/SubscribeToShard.d.ts.map +1 -1
  149. package/lib/AWS/Lambda/BucketEventSource.d.ts +2 -1
  150. package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
  151. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +2 -1
  152. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts.map +1 -1
  153. package/lib/AWS/Lambda/InvokeFunction.d.ts +1 -1
  154. package/lib/AWS/Lambda/InvokeFunction.d.ts.map +1 -1
  155. package/lib/AWS/Lambda/QueueEventSource.d.ts +2 -1
  156. package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
  157. package/lib/AWS/Lambda/StreamEventSource.d.ts +2 -1
  158. package/lib/AWS/Lambda/StreamEventSource.d.ts.map +1 -1
  159. package/lib/AWS/Lambda/TableEventSource.d.ts +2 -1
  160. package/lib/AWS/Lambda/TableEventSource.d.ts.map +1 -1
  161. package/lib/AWS/Lambda/TopicEventSource.d.ts +2 -1
  162. package/lib/AWS/Lambda/TopicEventSource.d.ts.map +1 -1
  163. package/lib/AWS/RDS/Connect.d.ts +1 -1
  164. package/lib/AWS/RDS/Connect.d.ts.map +1 -1
  165. package/lib/AWS/RDSData/BatchExecuteStatement.d.ts +1 -1
  166. package/lib/AWS/RDSData/BatchExecuteStatement.d.ts.map +1 -1
  167. package/lib/AWS/RDSData/BeginTransaction.d.ts +1 -1
  168. package/lib/AWS/RDSData/BeginTransaction.d.ts.map +1 -1
  169. package/lib/AWS/RDSData/CommitTransaction.d.ts +1 -1
  170. package/lib/AWS/RDSData/CommitTransaction.d.ts.map +1 -1
  171. package/lib/AWS/RDSData/ExecuteSql.d.ts +1 -1
  172. package/lib/AWS/RDSData/ExecuteSql.d.ts.map +1 -1
  173. package/lib/AWS/RDSData/ExecuteStatement.d.ts +1 -1
  174. package/lib/AWS/RDSData/ExecuteStatement.d.ts.map +1 -1
  175. package/lib/AWS/RDSData/RollbackTransaction.d.ts +1 -1
  176. package/lib/AWS/RDSData/RollbackTransaction.d.ts.map +1 -1
  177. package/lib/AWS/S3/AbortMultipartUpload.d.ts +1 -1
  178. package/lib/AWS/S3/AbortMultipartUpload.d.ts.map +1 -1
  179. package/lib/AWS/S3/CompleteMultipartUpload.d.ts +1 -1
  180. package/lib/AWS/S3/CompleteMultipartUpload.d.ts.map +1 -1
  181. package/lib/AWS/S3/CopyObject.d.ts +1 -1
  182. package/lib/AWS/S3/CopyObject.d.ts.map +1 -1
  183. package/lib/AWS/S3/CreateMultipartUpload.d.ts +1 -1
  184. package/lib/AWS/S3/CreateMultipartUpload.d.ts.map +1 -1
  185. package/lib/AWS/S3/DeleteObject.d.ts +1 -1
  186. package/lib/AWS/S3/DeleteObject.d.ts.map +1 -1
  187. package/lib/AWS/S3/GetObject.d.ts +1 -1
  188. package/lib/AWS/S3/GetObject.d.ts.map +1 -1
  189. package/lib/AWS/S3/HeadObject.d.ts +1 -1
  190. package/lib/AWS/S3/HeadObject.d.ts.map +1 -1
  191. package/lib/AWS/S3/ListObjectsV2.d.ts +1 -1
  192. package/lib/AWS/S3/ListObjectsV2.d.ts.map +1 -1
  193. package/lib/AWS/S3/PutObject.d.ts +1 -1
  194. package/lib/AWS/S3/PutObject.d.ts.map +1 -1
  195. package/lib/AWS/S3/UploadPart.d.ts +1 -1
  196. package/lib/AWS/S3/UploadPart.d.ts.map +1 -1
  197. package/lib/AWS/SNS/AddPermission.d.ts +1 -1
  198. package/lib/AWS/SNS/AddPermission.d.ts.map +1 -1
  199. package/lib/AWS/SNS/ConfirmSubscription.d.ts +1 -1
  200. package/lib/AWS/SNS/ConfirmSubscription.d.ts.map +1 -1
  201. package/lib/AWS/SNS/GetDataProtectionPolicy.d.ts +1 -1
  202. package/lib/AWS/SNS/GetDataProtectionPolicy.d.ts.map +1 -1
  203. package/lib/AWS/SNS/GetSubscriptionAttributes.d.ts +1 -1
  204. package/lib/AWS/SNS/GetSubscriptionAttributes.d.ts.map +1 -1
  205. package/lib/AWS/SNS/GetTopicAttributes.d.ts +1 -1
  206. package/lib/AWS/SNS/GetTopicAttributes.d.ts.map +1 -1
  207. package/lib/AWS/SNS/ListSubscriptions.d.ts +1 -1
  208. package/lib/AWS/SNS/ListSubscriptions.d.ts.map +1 -1
  209. package/lib/AWS/SNS/ListSubscriptionsByTopic.d.ts +1 -1
  210. package/lib/AWS/SNS/ListSubscriptionsByTopic.d.ts.map +1 -1
  211. package/lib/AWS/SNS/ListTagsForResource.d.ts +1 -1
  212. package/lib/AWS/SNS/ListTagsForResource.d.ts.map +1 -1
  213. package/lib/AWS/SNS/ListTopics.d.ts +1 -1
  214. package/lib/AWS/SNS/ListTopics.d.ts.map +1 -1
  215. package/lib/AWS/SNS/Publish.d.ts +1 -1
  216. package/lib/AWS/SNS/Publish.d.ts.map +1 -1
  217. package/lib/AWS/SNS/PublishBatch.d.ts +1 -1
  218. package/lib/AWS/SNS/PublishBatch.d.ts.map +1 -1
  219. package/lib/AWS/SNS/PutDataProtectionPolicy.d.ts +1 -1
  220. package/lib/AWS/SNS/PutDataProtectionPolicy.d.ts.map +1 -1
  221. package/lib/AWS/SNS/RemovePermission.d.ts +1 -1
  222. package/lib/AWS/SNS/RemovePermission.d.ts.map +1 -1
  223. package/lib/AWS/SNS/SetSubscriptionAttributes.d.ts +1 -1
  224. package/lib/AWS/SNS/SetSubscriptionAttributes.d.ts.map +1 -1
  225. package/lib/AWS/SNS/SetTopicAttributes.d.ts +1 -1
  226. package/lib/AWS/SNS/SetTopicAttributes.d.ts.map +1 -1
  227. package/lib/AWS/SNS/TagResource.d.ts +1 -1
  228. package/lib/AWS/SNS/TagResource.d.ts.map +1 -1
  229. package/lib/AWS/SNS/TopicSink.d.ts +1 -1
  230. package/lib/AWS/SNS/TopicSink.d.ts.map +1 -1
  231. package/lib/AWS/SNS/UntagResource.d.ts +1 -1
  232. package/lib/AWS/SNS/UntagResource.d.ts.map +1 -1
  233. package/lib/AWS/SQS/DeleteMessage.d.ts +1 -1
  234. package/lib/AWS/SQS/DeleteMessage.d.ts.map +1 -1
  235. package/lib/AWS/SQS/DeleteMessageBatch.d.ts +1 -1
  236. package/lib/AWS/SQS/DeleteMessageBatch.d.ts.map +1 -1
  237. package/lib/AWS/SQS/QueueSink.d.ts +1 -1
  238. package/lib/AWS/SQS/QueueSink.d.ts.map +1 -1
  239. package/lib/AWS/SQS/ReceiveMessage.d.ts +1 -1
  240. package/lib/AWS/SQS/ReceiveMessage.d.ts.map +1 -1
  241. package/lib/AWS/SQS/SendMessage.d.ts +1 -1
  242. package/lib/AWS/SQS/SendMessage.d.ts.map +1 -1
  243. package/lib/AWS/SQS/SendMessageBatch.d.ts +1 -1
  244. package/lib/AWS/SQS/SendMessageBatch.d.ts.map +1 -1
  245. package/lib/AWS/SecretsManager/DescribeSecret.d.ts +1 -1
  246. package/lib/AWS/SecretsManager/DescribeSecret.d.ts.map +1 -1
  247. package/lib/AWS/SecretsManager/GetRandomPassword.d.ts +1 -1
  248. package/lib/AWS/SecretsManager/GetRandomPassword.d.ts.map +1 -1
  249. package/lib/AWS/SecretsManager/GetSecretValue.d.ts +1 -1
  250. package/lib/AWS/SecretsManager/GetSecretValue.d.ts.map +1 -1
  251. package/lib/AWS/SecretsManager/ListSecrets.d.ts +1 -1
  252. package/lib/AWS/SecretsManager/ListSecrets.d.ts.map +1 -1
  253. package/lib/AWS/SecretsManager/PutSecretValue.d.ts +1 -1
  254. package/lib/AWS/SecretsManager/PutSecretValue.d.ts.map +1 -1
  255. package/lib/Auth/Lock.js +2 -2
  256. package/lib/Auth/Lock.js.map +1 -1
  257. package/lib/Binding.d.ts +1 -1
  258. package/lib/Binding.d.ts.map +1 -1
  259. package/lib/Bundle/Bundle.d.ts +11 -0
  260. package/lib/Bundle/Bundle.d.ts.map +1 -1
  261. package/lib/Bundle/Bundle.js +19 -12
  262. package/lib/Bundle/Bundle.js.map +1 -1
  263. package/lib/Bundle/BundleAnalyzerPlugin.d.ts +25 -0
  264. package/lib/Bundle/BundleAnalyzerPlugin.d.ts.map +1 -0
  265. package/lib/Bundle/BundleAnalyzerPlugin.js +16 -0
  266. package/lib/Bundle/BundleAnalyzerPlugin.js.map +1 -0
  267. package/lib/Bundle/Docker.d.ts.map +1 -1
  268. package/lib/Bundle/Docker.js +12 -13
  269. package/lib/Bundle/Docker.js.map +1 -1
  270. package/lib/Bundle/RawPlugin.d.ts +36 -0
  271. package/lib/Bundle/RawPlugin.d.ts.map +1 -0
  272. package/lib/Bundle/RawPlugin.js +80 -0
  273. package/lib/Bundle/RawPlugin.js.map +1 -0
  274. package/lib/Bundle/index.d.ts +2 -0
  275. package/lib/Bundle/index.d.ts.map +1 -1
  276. package/lib/Bundle/index.js +2 -0
  277. package/lib/Bundle/index.js.map +1 -1
  278. package/lib/Cli/commands/deploy.d.ts.map +1 -1
  279. package/lib/Cli/commands/deploy.js +1 -0
  280. package/lib/Cli/commands/deploy.js.map +1 -1
  281. package/lib/Cli/commands/dev.d.ts +3 -2
  282. package/lib/Cli/commands/dev.d.ts.map +1 -1
  283. package/lib/Cli/commands/dev.js +9 -1
  284. package/lib/Cli/commands/dev.js.map +1 -1
  285. package/lib/Cli/exec.d.ts.map +1 -1
  286. package/lib/Cli/exec.js +2 -1
  287. package/lib/Cli/exec.js.map +1 -1
  288. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts +8 -7
  289. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts.map +1 -1
  290. package/lib/Cloudflare/AiGateway/AiGatewayBinding.js +2 -6
  291. package/lib/Cloudflare/AiGateway/AiGatewayBinding.js.map +1 -1
  292. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.d.ts +4 -3
  293. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.d.ts.map +1 -1
  294. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js +2 -1
  295. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js.map +1 -1
  296. package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts +8 -7
  297. package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts.map +1 -1
  298. package/lib/Cloudflare/Artifacts/ArtifactsBinding.js +2 -2
  299. package/lib/Cloudflare/Artifacts/ArtifactsBinding.js.map +1 -1
  300. package/lib/Cloudflare/D1/D1Connection.d.ts +12 -10
  301. package/lib/Cloudflare/D1/D1Connection.d.ts.map +1 -1
  302. package/lib/Cloudflare/D1/D1Connection.js +2 -2
  303. package/lib/Cloudflare/D1/D1Connection.js.map +1 -1
  304. package/lib/Cloudflare/D1/D1Database.js +1 -1
  305. package/lib/Cloudflare/D1/D1Database.js.map +1 -1
  306. package/lib/Cloudflare/D1/D1Migrations.d.ts +2 -2
  307. package/lib/Cloudflare/D1/D1Migrations.d.ts.map +1 -1
  308. package/lib/Cloudflare/Email/SendEmailBinding.d.ts +5 -4
  309. package/lib/Cloudflare/Email/SendEmailBinding.d.ts.map +1 -1
  310. package/lib/Cloudflare/Email/SendEmailBinding.js +2 -1
  311. package/lib/Cloudflare/Email/SendEmailBinding.js.map +1 -1
  312. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts +10 -8
  313. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts.map +1 -1
  314. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.js +2 -2
  315. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.js.map +1 -1
  316. package/lib/Cloudflare/Images/ImagesBinding.d.ts +5 -4
  317. package/lib/Cloudflare/Images/ImagesBinding.d.ts.map +1 -1
  318. package/lib/Cloudflare/Images/ImagesBinding.js +4 -2
  319. package/lib/Cloudflare/Images/ImagesBinding.js.map +1 -1
  320. package/lib/Cloudflare/KV/KVNamespaceBinding.d.ts +33 -32
  321. package/lib/Cloudflare/KV/KVNamespaceBinding.d.ts.map +1 -1
  322. package/lib/Cloudflare/KV/KVNamespaceBinding.js +5 -2
  323. package/lib/Cloudflare/KV/KVNamespaceBinding.js.map +1 -1
  324. package/lib/Cloudflare/Local.d.ts +2 -0
  325. package/lib/Cloudflare/Local.d.ts.map +1 -0
  326. package/lib/Cloudflare/Local.js +9 -0
  327. package/lib/Cloudflare/Local.js.map +1 -0
  328. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  329. package/lib/Cloudflare/Providers.js +3 -1
  330. package/lib/Cloudflare/Providers.js.map +1 -1
  331. package/lib/Cloudflare/Queue/QueueBinding.d.ts +5 -4
  332. package/lib/Cloudflare/Queue/QueueBinding.d.ts.map +1 -1
  333. package/lib/Cloudflare/Queue/QueueBinding.js +2 -2
  334. package/lib/Cloudflare/Queue/QueueBinding.js.map +1 -1
  335. package/lib/Cloudflare/Queue/QueueEventSource.d.ts +1 -2
  336. package/lib/Cloudflare/Queue/QueueEventSource.d.ts.map +1 -1
  337. package/lib/Cloudflare/R2/R2BucketBinding.d.ts +13 -12
  338. package/lib/Cloudflare/R2/R2BucketBinding.d.ts.map +1 -1
  339. package/lib/Cloudflare/R2/R2BucketBinding.js +2 -2
  340. package/lib/Cloudflare/R2/R2BucketBinding.js.map +1 -1
  341. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts +5 -4
  342. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts.map +1 -1
  343. package/lib/Cloudflare/SecretsStore/SecretBinding.js +2 -2
  344. package/lib/Cloudflare/SecretsStore/SecretBinding.js.map +1 -1
  345. package/lib/Cloudflare/StateStore/Api.d.ts +1 -1
  346. package/lib/Cloudflare/Workers/CronEventSource.d.ts +1 -2
  347. package/lib/Cloudflare/Workers/CronEventSource.d.ts.map +1 -1
  348. package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
  349. package/lib/Cloudflare/Workers/DurableObjectBridge.js +0 -1
  350. package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
  351. package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts.map +1 -1
  352. package/lib/Cloudflare/Workers/DurableObjectNamespace.js +6 -3
  353. package/lib/Cloudflare/Workers/DurableObjectNamespace.js.map +1 -1
  354. package/lib/Cloudflare/Workers/DynamicWorkerLoader.d.ts.map +1 -1
  355. package/lib/Cloudflare/Workers/DynamicWorkerLoader.js +3 -3
  356. package/lib/Cloudflare/Workers/DynamicWorkerLoader.js.map +1 -1
  357. package/lib/Cloudflare/Workers/Fetch.d.ts +1 -1
  358. package/lib/Cloudflare/Workers/Fetch.d.ts.map +1 -1
  359. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +22 -3
  360. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  361. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +413 -21
  362. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  363. package/lib/Cloudflare/Workers/RpcAsync.d.ts +55 -0
  364. package/lib/Cloudflare/Workers/RpcAsync.d.ts.map +1 -1
  365. package/lib/Cloudflare/Workers/RpcAsync.js +55 -0
  366. package/lib/Cloudflare/Workers/RpcAsync.js.map +1 -1
  367. package/lib/Cloudflare/Workers/Worker.d.ts +9 -22
  368. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  369. package/lib/Cloudflare/Workers/Worker.js +3 -4
  370. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  371. package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
  372. package/lib/Cloudflare/Workers/WorkerBridge.js +3 -5
  373. package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
  374. package/lib/Cloudflare/Workers/WorkerBundle.d.ts +1 -2
  375. package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
  376. package/lib/Cloudflare/Workers/WorkerBundle.js +3 -6
  377. package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
  378. package/lib/Cloudflare/Workers/WorkerRuntimeContext.d.ts.map +1 -1
  379. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js +2 -0
  380. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js.map +1 -1
  381. package/lib/Cloudflare/Workers/Workflow.d.ts +4 -4
  382. package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
  383. package/lib/Cloudflare/Workers/Workflow.js +6 -3
  384. package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
  385. package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts +184 -0
  386. package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts.map +1 -0
  387. package/lib/Cloudflare/Zaraz/ZarazConfig.js +216 -0
  388. package/lib/Cloudflare/Zaraz/ZarazConfig.js.map +1 -0
  389. package/lib/Cloudflare/Zaraz/ZarazEventTypes.d.ts +188 -0
  390. package/lib/Cloudflare/Zaraz/ZarazEventTypes.d.ts.map +1 -0
  391. package/lib/Cloudflare/Zaraz/ZarazEventTypes.js +4 -0
  392. package/lib/Cloudflare/Zaraz/ZarazEventTypes.js.map +1 -0
  393. package/lib/Cloudflare/Zaraz/index.d.ts +3 -0
  394. package/lib/Cloudflare/Zaraz/index.d.ts.map +1 -0
  395. package/lib/Cloudflare/Zaraz/index.js +2 -0
  396. package/lib/Cloudflare/Zaraz/index.js.map +1 -0
  397. package/lib/Cloudflare/index.d.ts +1 -0
  398. package/lib/Cloudflare/index.d.ts.map +1 -1
  399. package/lib/Cloudflare/index.js +1 -0
  400. package/lib/Cloudflare/index.js.map +1 -1
  401. package/lib/Local/RpcProvider.d.ts +54 -0
  402. package/lib/Local/RpcProvider.d.ts.map +1 -0
  403. package/lib/Local/RpcProvider.js +57 -0
  404. package/lib/Local/RpcProvider.js.map +1 -0
  405. package/lib/Local/RpcProviderProxy.d.ts +19 -0
  406. package/lib/Local/RpcProviderProxy.d.ts.map +1 -0
  407. package/lib/Local/RpcProviderProxy.js +48 -0
  408. package/lib/Local/RpcProviderProxy.js.map +1 -0
  409. package/lib/Local/RpcSerialization.d.ts +34 -0
  410. package/lib/Local/RpcSerialization.d.ts.map +1 -0
  411. package/lib/Local/RpcSerialization.js +120 -0
  412. package/lib/Local/RpcSerialization.js.map +1 -0
  413. package/lib/Local/RpcServer.d.ts +63 -0
  414. package/lib/Local/RpcServer.d.ts.map +1 -0
  415. package/lib/Local/RpcServer.js +72 -0
  416. package/lib/Local/RpcServer.js.map +1 -0
  417. package/lib/Local/RpcServerBun.d.ts +3 -0
  418. package/lib/Local/RpcServerBun.d.ts.map +1 -0
  419. package/lib/Local/RpcServerBun.js +47 -0
  420. package/lib/Local/RpcServerBun.js.map +1 -0
  421. package/lib/Local/RpcServerEnvironment.d.ts +20 -0
  422. package/lib/Local/RpcServerEnvironment.d.ts.map +1 -0
  423. package/lib/Local/RpcServerEnvironment.js +22 -0
  424. package/lib/Local/RpcServerEnvironment.js.map +1 -0
  425. package/lib/Local/RpcServerNode.d.ts +3 -0
  426. package/lib/Local/RpcServerNode.d.ts.map +1 -0
  427. package/lib/Local/RpcServerNode.js +43 -0
  428. package/lib/Local/RpcServerNode.js.map +1 -0
  429. package/lib/Local/RpcServerSession.d.ts +27 -0
  430. package/lib/Local/RpcServerSession.d.ts.map +1 -0
  431. package/lib/Local/RpcServerSession.js +68 -0
  432. package/lib/Local/RpcServerSession.js.map +1 -0
  433. package/lib/Local/RpcSpawner.d.ts +21 -0
  434. package/lib/Local/RpcSpawner.d.ts.map +1 -0
  435. package/lib/Local/RpcSpawner.js +132 -0
  436. package/lib/Local/RpcSpawner.js.map +1 -0
  437. package/lib/Neon/Branch.js +1 -1
  438. package/lib/Neon/Branch.js.map +1 -1
  439. package/lib/Neon/Migrations.d.ts +1 -1
  440. package/lib/Neon/Migrations.d.ts.map +1 -1
  441. package/lib/Neon/Project.d.ts.map +1 -1
  442. package/lib/Neon/Project.js +1 -15
  443. package/lib/Neon/Project.js.map +1 -1
  444. package/lib/Phase.d.ts +2 -2
  445. package/lib/Phase.d.ts.map +1 -1
  446. package/lib/Phase.js +2 -1
  447. package/lib/Phase.js.map +1 -1
  448. package/lib/Planetscale/AuthProvider.d.ts +59 -0
  449. package/lib/Planetscale/AuthProvider.d.ts.map +1 -0
  450. package/lib/Planetscale/AuthProvider.js +131 -0
  451. package/lib/Planetscale/AuthProvider.js.map +1 -0
  452. package/lib/Planetscale/Branch.d.ts +113 -0
  453. package/lib/Planetscale/Branch.d.ts.map +1 -0
  454. package/lib/Planetscale/Branch.js +287 -0
  455. package/lib/Planetscale/Branch.js.map +1 -0
  456. package/lib/Planetscale/Credentials.d.ts +35 -0
  457. package/lib/Planetscale/Credentials.d.ts.map +1 -0
  458. package/lib/Planetscale/Credentials.js +56 -0
  459. package/lib/Planetscale/Credentials.js.map +1 -0
  460. package/lib/Planetscale/Database.d.ts +117 -0
  461. package/lib/Planetscale/Database.d.ts.map +1 -0
  462. package/lib/Planetscale/Database.js +1 -0
  463. package/lib/Planetscale/Database.js.map +1 -0
  464. package/lib/Planetscale/MySQL/MySQLBranch.d.ts +86 -0
  465. package/lib/Planetscale/MySQL/MySQLBranch.d.ts.map +1 -0
  466. package/lib/Planetscale/MySQL/MySQLBranch.js +14 -0
  467. package/lib/Planetscale/MySQL/MySQLBranch.js.map +1 -0
  468. package/lib/Planetscale/MySQL/MySQLClusterSize.d.ts +23 -0
  469. package/lib/Planetscale/MySQL/MySQLClusterSize.d.ts.map +1 -0
  470. package/lib/Planetscale/MySQL/MySQLClusterSize.js +44 -0
  471. package/lib/Planetscale/MySQL/MySQLClusterSize.js.map +1 -0
  472. package/lib/Planetscale/MySQL/MySQLDatabase.d.ts +119 -0
  473. package/lib/Planetscale/MySQL/MySQLDatabase.d.ts.map +1 -0
  474. package/lib/Planetscale/MySQL/MySQLDatabase.js +237 -0
  475. package/lib/Planetscale/MySQL/MySQLDatabase.js.map +1 -0
  476. package/lib/Planetscale/MySQL/MySQLMigrations.d.ts +18 -0
  477. package/lib/Planetscale/MySQL/MySQLMigrations.d.ts.map +1 -0
  478. package/lib/Planetscale/MySQL/MySQLMigrations.js +157 -0
  479. package/lib/Planetscale/MySQL/MySQLMigrations.js.map +1 -0
  480. package/lib/Planetscale/MySQL/MySQLOrigin.d.ts +15 -0
  481. package/lib/Planetscale/MySQL/MySQLOrigin.d.ts.map +1 -0
  482. package/lib/Planetscale/MySQL/MySQLOrigin.js +2 -0
  483. package/lib/Planetscale/MySQL/MySQLOrigin.js.map +1 -0
  484. package/lib/Planetscale/MySQL/MySQLPassword.d.ts +115 -0
  485. package/lib/Planetscale/MySQL/MySQLPassword.d.ts.map +1 -0
  486. package/lib/Planetscale/MySQL/MySQLPassword.js +197 -0
  487. package/lib/Planetscale/MySQL/MySQLPassword.js.map +1 -0
  488. package/lib/Planetscale/MySQL/index.d.ts +6 -0
  489. package/lib/Planetscale/MySQL/index.d.ts.map +1 -0
  490. package/lib/Planetscale/MySQL/index.js +6 -0
  491. package/lib/Planetscale/MySQL/index.js.map +1 -0
  492. package/lib/Planetscale/Postgres/PostgresBranch.d.ts +67 -0
  493. package/lib/Planetscale/Postgres/PostgresBranch.d.ts.map +1 -0
  494. package/lib/Planetscale/Postgres/PostgresBranch.js +14 -0
  495. package/lib/Planetscale/Postgres/PostgresBranch.js.map +1 -0
  496. package/lib/Planetscale/Postgres/PostgresClusterSize.d.ts +44 -0
  497. package/lib/Planetscale/Postgres/PostgresClusterSize.d.ts.map +1 -0
  498. package/lib/Planetscale/Postgres/PostgresClusterSize.js +72 -0
  499. package/lib/Planetscale/Postgres/PostgresClusterSize.js.map +1 -0
  500. package/lib/Planetscale/Postgres/PostgresDatabase.d.ts +73 -0
  501. package/lib/Planetscale/Postgres/PostgresDatabase.d.ts.map +1 -0
  502. package/lib/Planetscale/Postgres/PostgresDatabase.js +241 -0
  503. package/lib/Planetscale/Postgres/PostgresDatabase.js.map +1 -0
  504. package/lib/Planetscale/Postgres/PostgresDefaultRole.d.ts +85 -0
  505. package/lib/Planetscale/Postgres/PostgresDefaultRole.d.ts.map +1 -0
  506. package/lib/Planetscale/Postgres/PostgresDefaultRole.js +142 -0
  507. package/lib/Planetscale/Postgres/PostgresDefaultRole.js.map +1 -0
  508. package/lib/Planetscale/Postgres/PostgresMigrations.d.ts +18 -0
  509. package/lib/Planetscale/Postgres/PostgresMigrations.d.ts.map +1 -0
  510. package/lib/Planetscale/Postgres/PostgresMigrations.js +148 -0
  511. package/lib/Planetscale/Postgres/PostgresMigrations.js.map +1 -0
  512. package/lib/Planetscale/Postgres/PostgresOrigin.d.ts +15 -0
  513. package/lib/Planetscale/Postgres/PostgresOrigin.d.ts.map +1 -0
  514. package/lib/Planetscale/Postgres/PostgresOrigin.js +2 -0
  515. package/lib/Planetscale/Postgres/PostgresOrigin.js.map +1 -0
  516. package/lib/Planetscale/Postgres/PostgresRole.d.ts +121 -0
  517. package/lib/Planetscale/Postgres/PostgresRole.d.ts.map +1 -0
  518. package/lib/Planetscale/Postgres/PostgresRole.js +228 -0
  519. package/lib/Planetscale/Postgres/PostgresRole.js.map +1 -0
  520. package/lib/Planetscale/Postgres/index.d.ts +7 -0
  521. package/lib/Planetscale/Postgres/index.d.ts.map +1 -0
  522. package/lib/Planetscale/Postgres/index.js +7 -0
  523. package/lib/Planetscale/Postgres/index.js.map +1 -0
  524. package/lib/Planetscale/Providers.d.ts +25 -0
  525. package/lib/Planetscale/Providers.d.ts.map +1 -0
  526. package/lib/Planetscale/Providers.js +40 -0
  527. package/lib/Planetscale/Providers.js.map +1 -0
  528. package/lib/Planetscale/Util.d.ts +182 -0
  529. package/lib/Planetscale/Util.d.ts.map +1 -0
  530. package/lib/Planetscale/Util.js +98 -0
  531. package/lib/Planetscale/Util.js.map +1 -0
  532. package/lib/Planetscale/index.d.ts +9 -0
  533. package/lib/Planetscale/index.d.ts.map +1 -0
  534. package/lib/Planetscale/index.js +9 -0
  535. package/lib/Planetscale/index.js.map +1 -0
  536. package/lib/Platform.d.ts.map +1 -1
  537. package/lib/Platform.js +7 -2
  538. package/lib/Platform.js.map +1 -1
  539. package/lib/RuntimeContext.d.ts +7 -3
  540. package/lib/RuntimeContext.d.ts.map +1 -1
  541. package/lib/RuntimeContext.js +3 -2
  542. package/lib/RuntimeContext.js.map +1 -1
  543. package/lib/Server/S3BucketEventSource.d.ts +1 -1
  544. package/lib/Server/S3BucketEventSource.d.ts.map +1 -1
  545. package/lib/{Neon → Sql}/SqlFile.d.ts +2 -0
  546. package/lib/Sql/SqlFile.d.ts.map +1 -0
  547. package/lib/{Neon → Sql}/SqlFile.js +14 -0
  548. package/lib/Sql/SqlFile.js.map +1 -0
  549. package/lib/Sql/index.d.ts +2 -0
  550. package/lib/Sql/index.d.ts.map +1 -0
  551. package/lib/Sql/index.js +2 -0
  552. package/lib/Sql/index.js.map +1 -0
  553. package/lib/Util/PlatformServices.d.ts +7 -0
  554. package/lib/Util/PlatformServices.d.ts.map +1 -1
  555. package/lib/Util/PlatformServices.js +22 -11
  556. package/lib/Util/PlatformServices.js.map +1 -1
  557. package/lib/Util/camel.d.ts.map +1 -1
  558. package/lib/Util/camel.js +2 -3
  559. package/lib/Util/camel.js.map +1 -1
  560. package/lib/Util/data.d.ts +5 -0
  561. package/lib/Util/data.d.ts.map +1 -1
  562. package/lib/Util/data.js +29 -0
  563. package/lib/Util/data.js.map +1 -1
  564. package/lib/Util/stable.d.ts.map +1 -1
  565. package/lib/Util/stable.js +3 -6
  566. package/lib/Util/stable.js.map +1 -1
  567. package/lib/tsconfig.test.tsbuildinfo +1 -1
  568. package/package.json +25 -13
  569. package/src/Auth/Lock.ts +2 -2
  570. package/src/Binding.ts +1 -1
  571. package/src/Bundle/Bundle.ts +35 -13
  572. package/src/Bundle/BundleAnalyzerPlugin.ts +33 -0
  573. package/src/Bundle/Docker.ts +12 -15
  574. package/src/Bundle/RawPlugin.ts +82 -0
  575. package/src/Bundle/index.ts +2 -0
  576. package/src/Cli/commands/deploy.ts +1 -0
  577. package/src/Cli/commands/dev.ts +51 -37
  578. package/src/Cli/exec.ts +12 -7
  579. package/src/Cloudflare/AiGateway/AiGatewayBinding.ts +11 -16
  580. package/src/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.ts +7 -9
  581. package/src/Cloudflare/Artifacts/ArtifactsBinding.ts +11 -22
  582. package/src/Cloudflare/D1/D1Connection.ts +31 -18
  583. package/src/Cloudflare/D1/D1Database.ts +1 -1
  584. package/src/Cloudflare/D1/D1Migrations.ts +2 -2
  585. package/src/Cloudflare/Email/SendEmailBinding.ts +7 -5
  586. package/src/Cloudflare/Hyperdrive/HyperdriveBinding.ts +16 -12
  587. package/src/Cloudflare/Images/ImagesBinding.ts +8 -8
  588. package/src/Cloudflare/KV/KVNamespaceBinding.ts +38 -38
  589. package/src/Cloudflare/Local.ts +23 -0
  590. package/src/Cloudflare/Providers.ts +3 -0
  591. package/src/Cloudflare/Queue/QueueBinding.ts +7 -6
  592. package/src/Cloudflare/R2/R2BucketBinding.ts +16 -19
  593. package/src/Cloudflare/SecretsStore/SecretBinding.ts +11 -13
  594. package/src/Cloudflare/Workers/DurableObjectBridge.ts +0 -1
  595. package/src/Cloudflare/Workers/DurableObjectNamespace.ts +6 -6
  596. package/src/Cloudflare/Workers/DynamicWorkerLoader.ts +4 -5
  597. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +547 -21
  598. package/src/Cloudflare/Workers/RpcAsync.ts +55 -0
  599. package/src/Cloudflare/Workers/Worker.ts +18 -25
  600. package/src/Cloudflare/Workers/WorkerBridge.ts +3 -5
  601. package/src/Cloudflare/Workers/WorkerBundle.ts +4 -8
  602. package/src/Cloudflare/Workers/WorkerRuntimeContext.ts +2 -0
  603. package/src/Cloudflare/Workers/Workflow.ts +10 -11
  604. package/src/Cloudflare/Zaraz/ZarazConfig.ts +403 -0
  605. package/src/Cloudflare/Zaraz/ZarazEventTypes.ts +257 -0
  606. package/src/Cloudflare/Zaraz/index.ts +25 -0
  607. package/src/Cloudflare/index.ts +1 -0
  608. package/src/Local/RpcProvider.ts +102 -0
  609. package/src/Local/RpcProviderProxy.ts +86 -0
  610. package/src/Local/RpcSerialization.ts +225 -0
  611. package/src/Local/RpcServer.ts +138 -0
  612. package/src/Local/RpcServerBun.ts +59 -0
  613. package/src/Local/RpcServerEnvironment.ts +55 -0
  614. package/src/Local/RpcServerNode.ts +58 -0
  615. package/src/Local/RpcServerSession.ts +87 -0
  616. package/src/Local/RpcSpawner.ts +196 -0
  617. package/src/Neon/Branch.ts +1 -1
  618. package/src/Neon/Migrations.ts +1 -1
  619. package/src/Neon/Project.ts +6 -20
  620. package/src/Phase.ts +2 -0
  621. package/src/Planetscale/AuthProvider.ts +285 -0
  622. package/src/Planetscale/Branch.ts +508 -0
  623. package/src/Planetscale/Credentials.ts +96 -0
  624. package/src/Planetscale/Database.ts +129 -0
  625. package/src/Planetscale/MySQL/MySQLBranch.ts +112 -0
  626. package/src/Planetscale/MySQL/MySQLClusterSize.ts +102 -0
  627. package/src/Planetscale/MySQL/MySQLDatabase.ts +446 -0
  628. package/src/Planetscale/MySQL/MySQLMigrations.ts +271 -0
  629. package/src/Planetscale/MySQL/MySQLOrigin.ts +15 -0
  630. package/src/Planetscale/MySQL/MySQLPassword.ts +387 -0
  631. package/src/Planetscale/MySQL/index.ts +5 -0
  632. package/src/Planetscale/Postgres/PostgresBranch.ts +97 -0
  633. package/src/Planetscale/Postgres/PostgresClusterSize.ts +125 -0
  634. package/src/Planetscale/Postgres/PostgresDatabase.ts +404 -0
  635. package/src/Planetscale/Postgres/PostgresDefaultRole.ts +270 -0
  636. package/src/Planetscale/Postgres/PostgresMigrations.ts +256 -0
  637. package/src/Planetscale/Postgres/PostgresOrigin.ts +15 -0
  638. package/src/Planetscale/Postgres/PostgresRole.ts +469 -0
  639. package/src/Planetscale/Postgres/index.ts +6 -0
  640. package/src/Planetscale/Providers.ts +80 -0
  641. package/src/Planetscale/Util.ts +160 -0
  642. package/src/Planetscale/index.ts +18 -0
  643. package/src/Platform.ts +13 -1
  644. package/src/RuntimeContext.ts +7 -8
  645. package/src/{Neon → Sql}/SqlFile.ts +22 -0
  646. package/src/Sql/index.ts +1 -0
  647. package/src/Util/PlatformServices.ts +41 -27
  648. package/src/Util/camel.ts +3 -5
  649. package/src/Util/data.ts +38 -0
  650. package/src/Util/stable.ts +4 -10
  651. package/lib/Cloudflare/D1/D1SqlFile.d.ts +0 -20
  652. package/lib/Cloudflare/D1/D1SqlFile.d.ts.map +0 -1
  653. package/lib/Cloudflare/D1/D1SqlFile.js +0 -46
  654. package/lib/Cloudflare/D1/D1SqlFile.js.map +0 -1
  655. package/lib/Cloudflare/Local/Sidecar.d.ts +0 -63
  656. package/lib/Cloudflare/Local/Sidecar.d.ts.map +0 -1
  657. package/lib/Cloudflare/Local/Sidecar.js +0 -50
  658. package/lib/Cloudflare/Local/Sidecar.js.map +0 -1
  659. package/lib/Cloudflare/Local/SidecarHandlers.d.ts +0 -8
  660. package/lib/Cloudflare/Local/SidecarHandlers.d.ts.map +0 -1
  661. package/lib/Cloudflare/Local/SidecarHandlers.js +0 -381
  662. package/lib/Cloudflare/Local/SidecarHandlers.js.map +0 -1
  663. package/lib/Cloudflare/Local/SidecarServer.d.ts +0 -2
  664. package/lib/Cloudflare/Local/SidecarServer.d.ts.map +0 -1
  665. package/lib/Cloudflare/Local/SidecarServer.js +0 -34
  666. package/lib/Cloudflare/Local/SidecarServer.js.map +0 -1
  667. package/lib/Neon/SqlFile.d.ts.map +0 -1
  668. package/lib/Neon/SqlFile.js.map +0 -1
  669. package/lib/Sidecar/Lock.d.ts +0 -23
  670. package/lib/Sidecar/Lock.d.ts.map +0 -1
  671. package/lib/Sidecar/Lock.js +0 -39
  672. package/lib/Sidecar/Lock.js.map +0 -1
  673. package/lib/Sidecar/RpcClient.d.ts +0 -15
  674. package/lib/Sidecar/RpcClient.d.ts.map +0 -1
  675. package/lib/Sidecar/RpcClient.js +0 -78
  676. package/lib/Sidecar/RpcClient.js.map +0 -1
  677. package/lib/Sidecar/RpcHandler.d.ts +0 -51
  678. package/lib/Sidecar/RpcHandler.d.ts.map +0 -1
  679. package/lib/Sidecar/RpcHandler.js +0 -87
  680. package/lib/Sidecar/RpcHandler.js.map +0 -1
  681. package/lib/Sidecar/RpcPaths.d.ts +0 -19
  682. package/lib/Sidecar/RpcPaths.d.ts.map +0 -1
  683. package/lib/Sidecar/RpcPaths.js +0 -31
  684. package/lib/Sidecar/RpcPaths.js.map +0 -1
  685. package/lib/Sidecar/RpcServer.d.ts +0 -30
  686. package/lib/Sidecar/RpcServer.d.ts.map +0 -1
  687. package/lib/Sidecar/RpcServer.js +0 -105
  688. package/lib/Sidecar/RpcServer.js.map +0 -1
  689. package/lib/Sidecar/RpcServerBun.d.ts +0 -4
  690. package/lib/Sidecar/RpcServerBun.d.ts.map +0 -1
  691. package/lib/Sidecar/RpcServerBun.js +0 -28
  692. package/lib/Sidecar/RpcServerBun.js.map +0 -1
  693. package/lib/Sidecar/RpcServerNode.d.ts +0 -4
  694. package/lib/Sidecar/RpcServerNode.d.ts.map +0 -1
  695. package/lib/Sidecar/RpcServerNode.js +0 -39
  696. package/lib/Sidecar/RpcServerNode.js.map +0 -1
  697. package/lib/Sidecar/RpcServices.d.ts +0 -6
  698. package/lib/Sidecar/RpcServices.d.ts.map +0 -1
  699. package/lib/Sidecar/RpcServices.js +0 -29
  700. package/lib/Sidecar/RpcServices.js.map +0 -1
  701. package/src/Cloudflare/D1/D1SqlFile.ts +0 -55
  702. package/src/Cloudflare/Local/Sidecar.ts +0 -81
  703. package/src/Cloudflare/Local/SidecarHandlers.ts +0 -491
  704. package/src/Cloudflare/Local/SidecarServer.ts +0 -70
  705. package/src/Sidecar/Lock.ts +0 -66
  706. package/src/Sidecar/RpcClient.ts +0 -142
  707. package/src/Sidecar/RpcHandler.ts +0 -205
  708. package/src/Sidecar/RpcPaths.ts +0 -39
  709. package/src/Sidecar/RpcServer.ts +0 -153
  710. package/src/Sidecar/RpcServerBun.ts +0 -41
  711. package/src/Sidecar/RpcServerNode.ts +0 -51
  712. package/src/Sidecar/RpcServices.ts +0 -48
@@ -0,0 +1,257 @@
1
+ import type { Simplify } from "effect/Types";
2
+
3
+ /**
4
+ * Type-only helpers for Cloudflare Zaraz events.
5
+ *
6
+ * These declarations are not an Alchemy EventSource resource and do not send
7
+ * events at runtime. They only model the browser-side `window.zaraz` API and
8
+ * Zaraz HTTP event payloads so application code can share an event contract
9
+ * with infrastructure code.
10
+ */
11
+
12
+ /**
13
+ * A map of Zaraz event names to the properties accepted by each event.
14
+ *
15
+ * Use `undefined` for events that do not accept custom properties.
16
+ */
17
+ export type ZarazEventMap = Record<string, object | undefined>;
18
+
19
+ type RequireAtLeastOne<T extends object> = {
20
+ readonly [K in keyof T]-?: Required<Pick<T, K>> & Partial<Omit<T, K>>;
21
+ }[keyof T];
22
+
23
+ /**
24
+ * Product properties supported by Cloudflare Zaraz ecommerce events.
25
+ */
26
+ export type ZarazEcommerceProduct = {
27
+ readonly product_id?: string;
28
+ readonly sku?: string;
29
+ readonly category?: string;
30
+ readonly name?: string;
31
+ readonly brand?: string;
32
+ readonly variant?: string;
33
+ readonly price?: number;
34
+ readonly currency?: string;
35
+ readonly value?: number;
36
+ readonly quantity?: number;
37
+ readonly coupon?: string;
38
+ readonly position?: number;
39
+ };
40
+
41
+ /**
42
+ * Order and checkout properties supported by Cloudflare Zaraz ecommerce events.
43
+ */
44
+ export type ZarazEcommerceOrder = {
45
+ readonly checkout_id?: string;
46
+ readonly order_id?: string;
47
+ readonly affiliation?: string;
48
+ readonly total?: number;
49
+ readonly revenue?: number;
50
+ readonly shipping?: number;
51
+ readonly tax?: number;
52
+ readonly discount?: number;
53
+ readonly coupon?: string;
54
+ readonly currency?: string;
55
+ readonly products?: readonly ZarazEcommerceProduct[];
56
+ };
57
+
58
+ export type ZarazEcommercePromotion = {
59
+ readonly creative?: string;
60
+ };
61
+
62
+ export type ZarazEcommerceSearch = {
63
+ readonly query?: string;
64
+ };
65
+
66
+ export type ZarazEcommerceCheckoutStep = {
67
+ readonly step?: number;
68
+ };
69
+
70
+ export type ZarazEcommercePayment = {
71
+ readonly payment_type?: string;
72
+ };
73
+
74
+ export type ZarazEcommerceRefund = {
75
+ readonly amount?: number;
76
+ readonly amount_refunded?: number;
77
+ readonly currency?: string;
78
+ readonly refund_reason?: string;
79
+ };
80
+
81
+ /**
82
+ * Standard ecommerce events supported by Cloudflare's `zaraz.ecommerce()` API.
83
+ */
84
+ export type ZarazEcommerceEvents = {
85
+ readonly "Product List Viewed": RequireAtLeastOne<
86
+ Pick<ZarazEcommerceOrder, "products">
87
+ >;
88
+ readonly "Products Searched": RequireAtLeastOne<ZarazEcommerceSearch>;
89
+ readonly "Product Clicked": RequireAtLeastOne<ZarazEcommerceProduct>;
90
+ readonly "Product Added": RequireAtLeastOne<ZarazEcommerceProduct>;
91
+ readonly "Product Added to Wishlist": RequireAtLeastOne<ZarazEcommerceProduct>;
92
+ readonly "Product Removed": RequireAtLeastOne<ZarazEcommerceProduct>;
93
+ readonly "Product Viewed": RequireAtLeastOne<ZarazEcommerceProduct>;
94
+ readonly "Cart Viewed": RequireAtLeastOne<ZarazEcommerceOrder>;
95
+ readonly "Checkout Started": RequireAtLeastOne<ZarazEcommerceOrder>;
96
+ readonly "Checkout Step Viewed": RequireAtLeastOne<ZarazEcommerceCheckoutStep>;
97
+ readonly "Checkout Step Completed": RequireAtLeastOne<ZarazEcommerceCheckoutStep>;
98
+ readonly "Payment Info Entered": RequireAtLeastOne<ZarazEcommercePayment>;
99
+ readonly "Order Completed": RequireAtLeastOne<ZarazEcommerceOrder>;
100
+ readonly "Order Updated": RequireAtLeastOne<ZarazEcommerceOrder>;
101
+ readonly "Order Refunded": RequireAtLeastOne<
102
+ ZarazEcommerceOrder & ZarazEcommerceRefund
103
+ >;
104
+ readonly "Order Cancelled": RequireAtLeastOne<ZarazEcommerceOrder>;
105
+ readonly "Clicked Promotion": RequireAtLeastOne<ZarazEcommercePromotion>;
106
+ readonly "Viewed Promotion": RequireAtLeastOne<ZarazEcommercePromotion>;
107
+ readonly "Shipping Info Entered": RequireAtLeastOne<ZarazEcommerceOrder>;
108
+ };
109
+
110
+ declare const ZarazEventContractTypeId: unique symbol;
111
+
112
+ /**
113
+ * Type-only contract for an application's Zaraz events.
114
+ *
115
+ * The runtime value is intentionally empty. Application browser code should
116
+ * import derived types and call Cloudflare's injected `window.zaraz` API rather
117
+ * than importing Alchemy runtime code into the client bundle.
118
+ */
119
+ export type ZarazEventContract<
120
+ Events extends ZarazEventMap,
121
+ EcommerceEvents extends ZarazEventMap = {},
122
+ > = {
123
+ readonly [ZarazEventContractTypeId]: {
124
+ readonly events: Events;
125
+ readonly ecommerceEvents: EcommerceEvents;
126
+ };
127
+ };
128
+
129
+ /**
130
+ * Define an application's Zaraz event contract.
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * const zaraz = Cloudflare.ZarazConfig.events<{
135
+ * Login: { method: "google" | "email" | "email-link" };
136
+ * "Button Clicked": { button_label: string; context?: string };
137
+ * }>();
138
+ *
139
+ * const zarazWithEcommerce = Cloudflare.ZarazConfig.events<{
140
+ * Login: { method: "google" | "email" | "email-link" };
141
+ * }>({ ecommerce: true });
142
+ *
143
+ * export type AppZarazEvents = Cloudflare.InferZarazEvents<typeof zaraz>;
144
+ * ```
145
+ */
146
+ export function defineZarazEvents<const Events extends ZarazEventMap>(options: {
147
+ readonly ecommerce: true;
148
+ }): ZarazEventContract<Events, ZarazEcommerceEvents>;
149
+ export function defineZarazEvents<
150
+ const Events extends ZarazEventMap,
151
+ >(options?: { readonly ecommerce?: false }): ZarazEventContract<Events, {}>;
152
+ export function defineZarazEvents<
153
+ const Events extends ZarazEventMap,
154
+ >(_options?: {
155
+ readonly ecommerce?: boolean;
156
+ }): ZarazEventContract<Events, ZarazEventMap> {
157
+ return {} as ZarazEventContract<Events, {}>;
158
+ }
159
+
160
+ export type InferZarazEvents<Contract> =
161
+ Contract extends ZarazEventContract<infer Events, ZarazEventMap>
162
+ ? Events
163
+ : never;
164
+
165
+ export type InferZarazEcommerceEvents<Contract> =
166
+ Contract extends ZarazEventContract<ZarazEventMap, infer EcommerceEvents>
167
+ ? EcommerceEvents
168
+ : never;
169
+
170
+ export type ZarazEventName<Events extends ZarazEventMap> = Extract<
171
+ keyof Events,
172
+ string
173
+ >;
174
+
175
+ export type ZarazEventProperties<
176
+ Events extends ZarazEventMap,
177
+ Name extends ZarazEventName<Events>,
178
+ > = Events[Name];
179
+
180
+ type ZarazEventPropertiesArgs<Properties> = [Properties] extends [undefined]
181
+ ? [properties?: undefined]
182
+ : undefined extends Properties
183
+ ? [properties?: Exclude<Properties, undefined>]
184
+ : [properties: Properties];
185
+
186
+ /**
187
+ * Type for Cloudflare's injected `window.zaraz.track` function.
188
+ */
189
+ export type ZarazTrack<Events extends ZarazEventMap> = <
190
+ const Name extends ZarazEventName<Events>,
191
+ >(
192
+ eventName: Name,
193
+ ...args: ZarazEventPropertiesArgs<Events[Name]>
194
+ ) => Promise<void>;
195
+
196
+ /**
197
+ * Type for Cloudflare's injected `window.zaraz.ecommerce` function.
198
+ */
199
+ export type ZarazEcommerce<Events extends ZarazEventMap> = ZarazTrack<Events>;
200
+
201
+ export type ZarazSetScope = "page" | "session" | "persist";
202
+
203
+ /**
204
+ * Type for Cloudflare's injected browser-side Zaraz API.
205
+ */
206
+ export type ZarazWebApi<
207
+ Events extends ZarazEventMap,
208
+ EcommerceEvents extends ZarazEventMap = {},
209
+ > = {
210
+ set: (
211
+ name: string,
212
+ value: unknown,
213
+ options?: { scope?: ZarazSetScope },
214
+ ) => void;
215
+ track: ZarazTrack<Events>;
216
+ ecommerce: ZarazEcommerce<EcommerceEvents>;
217
+ preview: (debugKey: string) => Promise<void>;
218
+ debug: (debugKey: string) => Promise<void>;
219
+ showConsentModal: () => Promise<void>;
220
+ pageVariables: Record<string, unknown>;
221
+ };
222
+
223
+ export type ZarazSystem = {
224
+ cookies?: Record<string, unknown>;
225
+ device?: {
226
+ ip?: string;
227
+ resolution?: string;
228
+ viewport?: string;
229
+ language?: string;
230
+ "user-agent"?: string;
231
+ };
232
+ page?: {
233
+ title?: string;
234
+ url?: string;
235
+ referrer?: string;
236
+ encoding?: string;
237
+ };
238
+ };
239
+
240
+ export type ZarazClientProperties<
241
+ Events extends ZarazEventMap,
242
+ Name extends ZarazEventName<Events> = ZarazEventName<Events>,
243
+ > =
244
+ Name extends ZarazEventName<Events>
245
+ ? Events[Name] extends undefined
246
+ ? { readonly __zarazTrack: Name }
247
+ : Simplify<Events[Name] & { readonly __zarazTrack: Name }>
248
+ : never;
249
+
250
+ export type ZarazHttpEvent<Events extends ZarazEventMap> = {
251
+ readonly client: ZarazClientProperties<Events>;
252
+ readonly system?: ZarazSystem;
253
+ };
254
+
255
+ export type ZarazHttpEventsPayload<Events extends ZarazEventMap> = {
256
+ readonly events: readonly ZarazHttpEvent<Events>[];
257
+ };
@@ -0,0 +1,25 @@
1
+ export * from "./ZarazConfig.ts";
2
+ export type {
3
+ InferZarazEcommerceEvents,
4
+ InferZarazEvents,
5
+ ZarazClientProperties,
6
+ ZarazEcommerce,
7
+ ZarazEcommerceCheckoutStep,
8
+ ZarazEcommerceEvents,
9
+ ZarazEcommerceOrder,
10
+ ZarazEcommercePayment,
11
+ ZarazEcommerceProduct,
12
+ ZarazEcommercePromotion,
13
+ ZarazEcommerceRefund,
14
+ ZarazEcommerceSearch,
15
+ ZarazEventContract,
16
+ ZarazEventMap,
17
+ ZarazEventName,
18
+ ZarazEventProperties,
19
+ ZarazHttpEvent,
20
+ ZarazHttpEventsPayload,
21
+ ZarazSetScope,
22
+ ZarazSystem,
23
+ ZarazTrack,
24
+ ZarazWebApi,
25
+ } from "./ZarazEventTypes.ts";
@@ -21,3 +21,4 @@ export * from "./VpcService/index.ts";
21
21
  export * from "./Website/index.ts";
22
22
  export * from "./Workers/index.ts";
23
23
  export * from "./Workers/RpcAsync.ts";
24
+ export * from "./Zaraz/index.ts";
@@ -0,0 +1,102 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import type { Scope } from "effect/Scope";
4
+ import type { Platform } from "../Platform.ts";
5
+ import * as Provider from "../Provider.ts";
6
+ import type { ResourceClass, ResourceLike } from "../Resource.ts";
7
+ import { RpcProviderProxy } from "./RpcProviderProxy.ts";
8
+
9
+ /**
10
+ * Constructs an RpcProvider for a given resource.
11
+ *
12
+ * An RpcProvider is a resource provider that can run in a separate process.
13
+ * This is used for local development so that the resource provider and its state can outlive the user's code when it is hot-reloaded.
14
+ * If the {@link RpcProviderProxy} is provided, the provider is run in a separate process, which we communicate with here using a websocket.
15
+ * Otherwise, the given effect is used to construct the provider directly.
16
+ *
17
+ * @note If the provider is running in a separate process, you may not need to construct all of its layers in this process.
18
+ * You can use {@link providerServices} or {@link providerServicesEffect} to construct such layers only when they are needed.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * export const MyProvider = RpcProvider.effect(
23
+ * MyResource,
24
+ * import.meta.resolve("./my-rpc-provider-server.ts"),
25
+ * Effect.gen(function* () {
26
+ * return {
27
+ * diff: ...,
28
+ * reconcile: ...,
29
+ * delete: ...,
30
+ * }
31
+ * })
32
+ * )
33
+ * ```
34
+ *
35
+ * @param cls - The tag of the resource class to construct a provider for.
36
+ * @param serverEntryUrl - The main file for the server entry point, if the provider is to be run in a separate process. This is typically obtained using `import.meta.url` or `import.meta.resolve`.
37
+ * @param eff - The Effect to use to construct the provider.
38
+ * @returns A layer containing the RpcProvider.
39
+ */
40
+ export const effect = <
41
+ R extends ResourceLike,
42
+ Req = never,
43
+ ReadReq = never,
44
+ DiffReq = never,
45
+ PrecreateReq = never,
46
+ ReconcileReq = never,
47
+ DeleteReq = never,
48
+ TailReq = never,
49
+ LogsReq = never,
50
+ >(
51
+ cls: ResourceClass<R> | Platform<R, any, any, any, any>,
52
+ serverEntryUrl: string,
53
+ eff: Effect.Effect<
54
+ Provider.ProviderService<
55
+ R,
56
+ ReadReq,
57
+ DiffReq,
58
+ PrecreateReq,
59
+ ReconcileReq,
60
+ DeleteReq,
61
+ TailReq,
62
+ LogsReq
63
+ >,
64
+ never,
65
+ Req
66
+ >,
67
+ ) =>
68
+ Provider.effect(
69
+ cls,
70
+ Effect.gen(function* () {
71
+ const client = yield* Effect.serviceOption(RpcProviderProxy);
72
+ if (client._tag === "None") return yield* eff;
73
+ return yield* client.value.get(serverEntryUrl, cls.Type);
74
+ }),
75
+ );
76
+
77
+ /**
78
+ * Conditionally constructs a layer for use by an RpcProvider.
79
+ * If the {@link RpcProviderProxy} is present in context, the layer is empty because it will not be used in this process.
80
+ * Otherwise, the given layer is returned.
81
+ * @param self - The layer that is used by the RpcProvider.
82
+ * @returns A layer that is empty if the {@link RpcProviderProxy} is present in context, otherwise the given layer.
83
+ */
84
+ export const providerServices = <ROut, E, RIn>(
85
+ self: Layer.Layer<ROut, E, RIn>,
86
+ ): Layer.Layer<ROut, E, RIn> => providerServicesEffect(Effect.succeed(self));
87
+
88
+ /**
89
+ * Conditionally constructs a layer for use by an RpcProvider.
90
+ * If the {@link RpcProviderProxy} is present in context, the layer is empty because it will not be used in this process.
91
+ * Otherwise, the given layer is returned.
92
+ * @param self - An effect which returns a layer that is used by the RpcProvider.
93
+ */
94
+ export const providerServicesEffect = <A, E1, R1, E, R>(
95
+ self: Effect.Effect<Layer.Layer<A, E1, R1>, E, R>,
96
+ ): Layer.Layer<A, E | E1, R1 | Exclude<R, Scope>> =>
97
+ Effect.serviceOption(RpcProviderProxy).pipe(
98
+ Effect.flatMap((client) =>
99
+ client._tag === "None" ? self : (Effect.succeed(Layer.empty) as never),
100
+ ),
101
+ Layer.unwrap,
102
+ );
@@ -0,0 +1,86 @@
1
+ import { newWebSocketRpcSession, type RpcStub } from "capnweb";
2
+ import * as Cache from "effect/Cache";
3
+ import * as Config from "effect/Config";
4
+ import * as Context from "effect/Context";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Layer from "effect/Layer";
7
+ import * as HttpBody from "effect/unstable/http/HttpBody";
8
+ import * as HttpClient from "effect/unstable/http/HttpClient";
9
+ import { AlchemyContext } from "../AlchemyContext.ts";
10
+ import type { ProviderService } from "../Provider.ts";
11
+ import type { ResourceLike } from "../Resource.ts";
12
+ import { Stack } from "../Stack.ts";
13
+ import { unwrapRpcHandlers } from "./RpcSerialization.ts";
14
+ import type { RpcProxyApi } from "./RpcServer.ts";
15
+ import type { RpcSpawnPayload } from "./RpcSpawner.ts";
16
+
17
+ export class RpcProviderProxy extends Context.Service<
18
+ RpcProviderProxy,
19
+ {
20
+ readonly get: <R extends ResourceLike>(
21
+ serverEntryUrl: string,
22
+ providerName: R["Type"],
23
+ ) => Effect.Effect<ProviderService<R>, never, AlchemyContext | Stack>;
24
+ }
25
+ >()("alchemy/Local/RpcProviderProxy") {}
26
+
27
+ export const SPAWNER_URL_ENV_KEY = "ALCHEMY_RPC_SPAWNER_URL" as const;
28
+
29
+ const make = Effect.fnUntraced(function* (spawnerUrl: string) {
30
+ const client = yield* HttpClient.HttpClient;
31
+
32
+ const getSession = Effect.fnUntraced(
33
+ function* (serverEntryUrl: string) {
34
+ const alchemyContext = yield* AlchemyContext;
35
+ const stack = yield* Stack;
36
+ const payload: RpcSpawnPayload = {
37
+ serverEntryUrl,
38
+ alchemyContext,
39
+ stack: { name: stack.name, stage: stack.stage },
40
+ };
41
+ const response = yield* client.post(spawnerUrl, {
42
+ body: yield* HttpBody.json(payload),
43
+ });
44
+ const websocketUrl = yield* response.text;
45
+ return newWebSocketRpcSession(websocketUrl) as RpcStub<RpcProxyApi>;
46
+ },
47
+ (effect, serverEntryUrl) =>
48
+ Effect.catch(effect, (error) =>
49
+ Effect.die(
50
+ new Error(
51
+ `Failed to create provider RPC session for "${serverEntryUrl}"`,
52
+ {
53
+ cause: error,
54
+ },
55
+ ),
56
+ ),
57
+ ),
58
+ );
59
+
60
+ const cache = yield* Cache.make({
61
+ lookup: getSession,
62
+ capacity: Infinity,
63
+ requireServicesAt: "lookup",
64
+ });
65
+
66
+ return RpcProviderProxy.of({
67
+ get: Effect.fnUntraced(function* (mainUrl, providerName) {
68
+ const session = yield* cache.lookup(mainUrl);
69
+ const provider = yield* Effect.promise(
70
+ () =>
71
+ session.getProvider(providerName) as ReturnType<
72
+ RpcProxyApi["getProvider"]
73
+ >,
74
+ );
75
+ return unwrapRpcHandlers(provider, ["tail"]);
76
+ }),
77
+ });
78
+ });
79
+
80
+ export const layer = (url: string) => Layer.effect(RpcProviderProxy, make(url));
81
+
82
+ export const fromEnv = () =>
83
+ Layer.effect(
84
+ RpcProviderProxy,
85
+ Config.string(SPAWNER_URL_ENV_KEY).pipe(Effect.flatMap(make)),
86
+ );
@@ -0,0 +1,225 @@
1
+ import * as Cause from "effect/Cause";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Exit from "effect/Exit";
4
+ import { flow } from "effect/Function";
5
+ import * as Redacted from "effect/Redacted";
6
+ import * as Schema from "effect/Schema";
7
+ import * as Stream from "effect/Stream";
8
+ import * as NodeUtil from "node:util";
9
+ import * as Output from "../Output.ts";
10
+
11
+ type RpcEffectHandler<Args extends Array<any>, Success, Error> = (
12
+ ...args: Args
13
+ ) => Effect.Effect<Success, Error>;
14
+
15
+ type RpcWrappedEffectHandler<Args extends Array<any>, Success, Error> = (
16
+ args: Args,
17
+ ) => Promise<RpcSerializedExit<Success, Error>>;
18
+
19
+ type RpcStreamHandler<Args extends Array<any>, Success, Error> = (
20
+ ...args: Args
21
+ ) => Stream.Stream<Success, Error>;
22
+
23
+ type RpcWrappedStreamHandler<Args extends Array<any>, Success, Error> = (
24
+ args: Args,
25
+ ) => RpcSerializedStream<Success, Error>;
26
+
27
+ type RpcSerializedStream<Success, _Error> = ReadableStream<Success>;
28
+
29
+ type RpcSerializedExit<Success, Error> =
30
+ | { _tag: "Success"; value: Success }
31
+ | { _tag: "Failure"; cause: Array<RpcSerializedCause<Error>> };
32
+
33
+ type RpcSerializedCause<Error> =
34
+ | { _tag: "Fail"; error: Error }
35
+ | { _tag: "Die"; defect: unknown }
36
+ | { _tag: "Interrupt"; fiberId: number | undefined };
37
+
38
+ export type RpcWrapped<T> =
39
+ T extends RpcEffectHandler<infer Args, infer Success, infer Error>
40
+ ? RpcWrappedEffectHandler<Args, Success, Error>
41
+ : T extends RpcStreamHandler<infer Args, infer Success, infer Error>
42
+ ? RpcWrappedStreamHandler<Args, Success, Error>
43
+ : T extends Record<string, any>
44
+ ? { [K in keyof T]: RpcWrapped<T[K]> }
45
+ : T;
46
+
47
+ export type RpcUnwrapped<T> =
48
+ T extends RpcWrappedEffectHandler<infer Args, infer Success, infer Error>
49
+ ? RpcEffectHandler<Args, Success, Error>
50
+ : T extends RpcWrappedStreamHandler<infer Args, infer Success, infer Error>
51
+ ? RpcStreamHandler<Args, Success, Error>
52
+ : T extends Record<string, any>
53
+ ? { [K in keyof T]: RpcUnwrapped<T[K]> }
54
+ : T;
55
+
56
+ export const wrapRpcHandlers = <T extends Record<string, any>>(
57
+ handlers: T,
58
+ streamKeys?: Array<keyof T>,
59
+ ): RpcWrapped<T> => {
60
+ return Object.fromEntries(
61
+ Object.entries(handlers).map(([key, value]) => [
62
+ key,
63
+ typeof value === "function"
64
+ ? streamKeys?.includes(key)
65
+ ? wrapRpcStreamHandler(value)
66
+ : wrapRpcEffectHandler(value)
67
+ : typeof value === "object" && value !== null
68
+ ? wrapRpcHandlers(value)
69
+ : value,
70
+ ]),
71
+ ) as RpcWrapped<T>;
72
+ };
73
+
74
+ export const unwrapRpcHandlers = <T extends Record<string, any>>(
75
+ handlers: RpcWrapped<T>,
76
+ streamKeys?: Array<keyof T>,
77
+ ): RpcUnwrapped<T> => {
78
+ return Object.fromEntries(
79
+ Object.entries(handlers).map(([key, value]) => [
80
+ key,
81
+ typeof value === "function"
82
+ ? streamKeys?.includes(key)
83
+ ? unwrapRpcStreamHandler(value)
84
+ : unwrapRpcEffectHandler(value)
85
+ : typeof value === "object" && value !== null
86
+ ? unwrapRpcHandlers(value)
87
+ : value,
88
+ ]),
89
+ ) as RpcUnwrapped<T>;
90
+ };
91
+
92
+ const serializeError = Schema.encodeSync(Schema.Defect);
93
+
94
+ const wrapRpcEffectHandler = <Args extends Array<any>, Success, Error>(
95
+ handler: RpcEffectHandler<Args, Success, Error>,
96
+ ): RpcWrappedEffectHandler<Args, Success, Error> =>
97
+ flow(
98
+ (args) => deserializeRpcArgs(args) as Args,
99
+ (args) => handler(...args),
100
+ Effect.exit,
101
+ Effect.map((exit): RpcSerializedExit<Success, Error> => {
102
+ if (exit._tag === "Success") {
103
+ return { _tag: "Success", value: exit.value };
104
+ }
105
+ return {
106
+ _tag: "Failure",
107
+ cause: exit.cause.reasons.map((reason): RpcSerializedCause<Error> => {
108
+ switch (reason._tag) {
109
+ case "Fail":
110
+ return { _tag: "Fail", error: serializeError(reason.error) };
111
+ case "Die":
112
+ return { _tag: "Die", defect: serializeError(reason.defect) };
113
+ case "Interrupt":
114
+ return { _tag: "Interrupt", fiberId: reason.fiberId };
115
+ }
116
+ }),
117
+ };
118
+ }),
119
+ Effect.runPromise,
120
+ );
121
+
122
+ const wrapRpcStreamHandler = <Args extends Array<any>, Success, Error>(
123
+ handler: RpcStreamHandler<Args, Success, Error>,
124
+ ): RpcWrappedStreamHandler<Args, Success, Error> =>
125
+ flow(
126
+ (args) => deserializeRpcArgs(args) as Args,
127
+ (args) => handler(...args),
128
+ (stream) => Stream.toReadableStream(stream),
129
+ );
130
+
131
+ const unwrapRpcEffectHandler = <Args extends Array<any>, Success, Error>(
132
+ handler: RpcWrappedEffectHandler<Args, Success, Error>,
133
+ ): RpcEffectHandler<Args, Success, Error> =>
134
+ flow(
135
+ (...args) => serializeRpcArgs(args) as Args,
136
+ (args) => Effect.promise(() => handler(args)),
137
+ Effect.flatMap((exit): Exit.Exit<Success, Error> => {
138
+ if (exit._tag === "Success") {
139
+ return Exit.succeed(exit.value);
140
+ }
141
+ return Exit.failCause(
142
+ Cause.fromReasons(
143
+ exit.cause.map((reason): Cause.Reason<Error> => {
144
+ switch (reason._tag) {
145
+ case "Fail":
146
+ return Cause.makeFailReason(reason.error);
147
+ case "Die":
148
+ return Cause.makeDieReason(reason.defect);
149
+ case "Interrupt":
150
+ return Cause.makeInterruptReason(reason.fiberId);
151
+ }
152
+ }),
153
+ ),
154
+ );
155
+ }),
156
+ );
157
+
158
+ const unwrapRpcStreamHandler = <Args extends Array<any>, Success, Error>(
159
+ handler: RpcWrappedStreamHandler<Args, Success, Error>,
160
+ ): RpcStreamHandler<Args, Success, Error> =>
161
+ flow(
162
+ (...args) => serializeRpcArgs(args) as Args,
163
+ (args) => handler(args),
164
+ (stream) =>
165
+ Stream.fromReadableStream({
166
+ evaluate: () => stream,
167
+ onError: (error) => error as Error,
168
+ }),
169
+ );
170
+
171
+ const serializeRpcArgs = (value: unknown): unknown => {
172
+ if (Redacted.isRedacted(value)) {
173
+ return { _tag: "Redacted", value: Redacted.value(value) };
174
+ }
175
+ if (Output.isOutput(value)) {
176
+ return {
177
+ _tag: "Output",
178
+ description: NodeUtil.inspect(value),
179
+ };
180
+ }
181
+ if (typeof value === "function") {
182
+ return null;
183
+ }
184
+ if (Array.isArray(value)) {
185
+ return value.map(serializeRpcArgs);
186
+ }
187
+ if (value && typeof value === "object" && !("toJSON" in value)) {
188
+ return Object.fromEntries(
189
+ Object.entries(value).map(([key, child]) => [
190
+ key,
191
+ serializeRpcArgs(child),
192
+ ]),
193
+ );
194
+ }
195
+ return value;
196
+ };
197
+
198
+ const deserializeRpcArgs = (value: unknown): unknown => {
199
+ if (Array.isArray(value)) {
200
+ return value.map(deserializeRpcArgs);
201
+ } else if (typeof value === "object" && value !== null) {
202
+ // These values are serialized as `{_tag: "Redacted", value: ...}` and `{_tag: "Output", description: ...}`,
203
+ // so we need to detect them manually - Redacted.isRedacted and Output.isOutput do not work.
204
+ if ("_tag" in value && value._tag === "Redacted" && "value" in value) {
205
+ return Redacted.make(value.value);
206
+ } else if (
207
+ "_tag" in value &&
208
+ value._tag === "Output" &&
209
+ "description" in value &&
210
+ typeof value.description === "string"
211
+ ) {
212
+ return new Output.NamedExpr(
213
+ new Output.EffectExpr(Output.VoidExpr, () => Effect.never),
214
+ value.description,
215
+ );
216
+ }
217
+ return Object.fromEntries(
218
+ Object.entries(value).map(([key, child]) => [
219
+ key,
220
+ deserializeRpcArgs(child),
221
+ ]),
222
+ );
223
+ }
224
+ return value;
225
+ };