@reventlessdev/reventless-aws 3.0.0-alpha.167

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 (394) hide show
  1. package/CHANGELOG.md +1564 -0
  2. package/README.md +62 -0
  3. package/__mocks__/emptyModule.js +1 -0
  4. package/all-licenses.csv +565 -0
  5. package/docker-compose.dynamodb-local.yml +12 -0
  6. package/jest.setup.cjs +5 -0
  7. package/licenses-analysis.ods +0 -0
  8. package/package.json +73 -0
  9. package/rescript.json +39 -0
  10. package/reventless-licenses-analysis.xls +0 -0
  11. package/scripts/run-integration-tests.sh +43 -0
  12. package/src/Platform.res +1940 -0
  13. package/src/Platform.res.mjs +2281 -0
  14. package/src/Platform_Casts.res +106 -0
  15. package/src/Platform_Casts.res.mjs +13 -0
  16. package/src/Platform_Stack.res +153 -0
  17. package/src/Platform_Stack.res.mjs +121 -0
  18. package/src/Types.res +39 -0
  19. package/src/Types.res.mjs +21 -0
  20. package/src/adapter/AWS.res +96 -0
  21. package/src/adapter/AWS.res.mjs +186 -0
  22. package/src/adapter/AWS_Tags.res +16 -0
  23. package/src/adapter/AWS_Tags.res.mjs +48 -0
  24. package/src/adapter/Adapter_Helpers.res +19 -0
  25. package/src/adapter/Adapter_Helpers.res.mjs +37 -0
  26. package/src/adapter/Api/AppSync_EventsApi.res +172 -0
  27. package/src/adapter/Api/AppSync_EventsApi.res.mjs +96 -0
  28. package/src/adapter/Api/AppSync_Resolver_Native.res +93 -0
  29. package/src/adapter/Api/AppSync_Resolver_Native.res.mjs +67 -0
  30. package/src/adapter/Api/AppSync_Resolver_Retrying.res +653 -0
  31. package/src/adapter/Api/AppSync_Resolver_Retrying.res.mjs +462 -0
  32. package/src/adapter/Api/CommandSubscriptionResolvers_AppSync.res +29 -0
  33. package/src/adapter/Api/CommandSubscriptionResolvers_AppSync.res.mjs +15 -0
  34. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res +238 -0
  35. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res.mjs +179 -0
  36. package/src/adapter/Api/Platform_UIFragments_Lambda.res +229 -0
  37. package/src/adapter/Api/Platform_UIFragments_Lambda.res.mjs +245 -0
  38. package/src/adapter/Auth/Auth_Cognito.res +209 -0
  39. package/src/adapter/Auth/Auth_Cognito.res.mjs +135 -0
  40. package/src/adapter/CommandGenerator/CommandGeneratorResolvers.res +2 -0
  41. package/src/adapter/CommandGenerator/CommandGeneratorResolvers.res.mjs +12 -0
  42. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync.res +251 -0
  43. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync.res.mjs +126 -0
  44. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync_NoOp.res +20 -0
  45. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync_NoOp.res.mjs +23 -0
  46. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync_Runtime.res +1 -0
  47. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync_Runtime.res.mjs +11 -0
  48. package/src/adapter/CommandGenerator/InboundTranslationResolvers_AppSync.res +95 -0
  49. package/src/adapter/CommandGenerator/InboundTranslationResolvers_AppSync.res.mjs +50 -0
  50. package/src/adapter/CommandTopic/CommandTopicChannel.res +6 -0
  51. package/src/adapter/CommandTopic/CommandTopicChannel.res.mjs +21 -0
  52. package/src/adapter/CommandTopic/CommandTopicChannel_Helpers.res +196 -0
  53. package/src/adapter/CommandTopic/CommandTopicChannel_Helpers.res.mjs +145 -0
  54. package/src/adapter/CommandTopic/CommandTopicChannel_SQS.res +91 -0
  55. package/src/adapter/CommandTopic/CommandTopicChannel_SQS.res.mjs +74 -0
  56. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Async.res +69 -0
  57. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Async.res.mjs +62 -0
  58. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_FIFO.res +60 -0
  59. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_FIFO.res.mjs +56 -0
  60. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Runtime.res +73 -0
  61. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Runtime.res.mjs +65 -0
  62. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Sync.res +88 -0
  63. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Sync.res.mjs +76 -0
  64. package/src/adapter/CommandTopic/CommandTopicRemoteChannel.res +1 -0
  65. package/src/adapter/CommandTopic/CommandTopicRemoteChannel.res.mjs +9 -0
  66. package/src/adapter/CommandTopic/CommandTopicRemoteChannel_SQS.res +7 -0
  67. package/src/adapter/CommandTopic/CommandTopicRemoteChannel_SQS.res.mjs +17 -0
  68. package/src/adapter/Counter/CounterHandler_DynamoDbStream.res +103 -0
  69. package/src/adapter/Counter/CounterHandler_DynamoDbStream.res.mjs +68 -0
  70. package/src/adapter/Counter/CounterHandler_DynamoDbStream_Runtime.res +107 -0
  71. package/src/adapter/Counter/CounterHandler_DynamoDbStream_Runtime.res.mjs +145 -0
  72. package/src/adapter/DcbEventLog/DcbEventLogStorage.res +1 -0
  73. package/src/adapter/DcbEventLog/DcbEventLogStorage.res.mjs +9 -0
  74. package/src/adapter/DcbEventLog/DcbEventLogStorage_DynamoDb.res +84 -0
  75. package/src/adapter/DcbEventLog/DcbEventLogStorage_DynamoDb.res.mjs +52 -0
  76. package/src/adapter/DcbEventLog/DcbEventLogStorage_DynamoDb_Runtime.res +1436 -0
  77. package/src/adapter/DcbEventLog/DcbEventLogStorage_DynamoDb_Runtime.res.mjs +1143 -0
  78. package/src/adapter/EventCollector/EventCollectorChannel.res +6 -0
  79. package/src/adapter/EventCollector/EventCollectorChannel.res.mjs +21 -0
  80. package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res +63 -0
  81. package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res.mjs +56 -0
  82. package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream_Runtime.res +20 -0
  83. package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream_Runtime.res.mjs +32 -0
  84. package/src/adapter/EventCollector/EventCollectorChannel_Helpers.res +266 -0
  85. package/src/adapter/EventCollector/EventCollectorChannel_Helpers.res.mjs +166 -0
  86. package/src/adapter/EventCollector/EventCollectorChannel_SQS.res +81 -0
  87. package/src/adapter/EventCollector/EventCollectorChannel_SQS.res.mjs +54 -0
  88. package/src/adapter/EventCollector/EventCollectorChannel_SQS_FIFO.res +59 -0
  89. package/src/adapter/EventCollector/EventCollectorChannel_SQS_FIFO.res.mjs +45 -0
  90. package/src/adapter/EventCollector/EventCollectorChannel_SQS_Runtime.res +91 -0
  91. package/src/adapter/EventCollector/EventCollectorChannel_SQS_Runtime.res.mjs +89 -0
  92. package/src/adapter/EventLog/EventLogStorage.res +3 -0
  93. package/src/adapter/EventLog/EventLogStorage.res.mjs +15 -0
  94. package/src/adapter/EventLog/EventLogStorage_DynamoDb.res +25 -0
  95. package/src/adapter/EventLog/EventLogStorage_DynamoDb.res.mjs +34 -0
  96. package/src/adapter/EventLog/EventLogStorage_DynamoDbStream.res +26 -0
  97. package/src/adapter/EventLog/EventLogStorage_DynamoDbStream.res.mjs +35 -0
  98. package/src/adapter/EventLog/EventLogStorage_DynamoDb_Runtime.res +121 -0
  99. package/src/adapter/EventLog/EventLogStorage_DynamoDb_Runtime.res.mjs +137 -0
  100. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync.res +265 -0
  101. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync.res.mjs +185 -0
  102. package/src/adapter/EventTopic/EventTopicPublisher.res +6 -0
  103. package/src/adapter/EventTopic/EventTopicPublisher.res.mjs +21 -0
  104. package/src/adapter/EventTopic/EventTopicPublisher_DynamoDbStream.res +25 -0
  105. package/src/adapter/EventTopic/EventTopicPublisher_DynamoDbStream.res.mjs +28 -0
  106. package/src/adapter/EventTopic/EventTopicPublisher_SNS.res +40 -0
  107. package/src/adapter/EventTopic/EventTopicPublisher_SNS.res.mjs +39 -0
  108. package/src/adapter/EventTopic/EventTopicPublisher_SNS_FIFO.res +39 -0
  109. package/src/adapter/EventTopic/EventTopicPublisher_SNS_FIFO.res.mjs +38 -0
  110. package/src/adapter/EventTopic/EventTopicPublisher_SNS_Runtime.res +5 -0
  111. package/src/adapter/EventTopic/EventTopicPublisher_SNS_Runtime.res.mjs +18 -0
  112. package/src/adapter/Mcp/MCP_Lambda.res +502 -0
  113. package/src/adapter/Mcp/MCP_Lambda.res.mjs +289 -0
  114. package/src/adapter/QueryDb/NodeResolver_AppSync.res +71 -0
  115. package/src/adapter/QueryDb/NodeResolver_AppSync.res.mjs +44 -0
  116. package/src/adapter/QueryDb/QueryDbResolvers.res +2 -0
  117. package/src/adapter/QueryDb/QueryDbResolvers.res.mjs +12 -0
  118. package/src/adapter/QueryDb/QueryDbResolvers_AppSync.res +434 -0
  119. package/src/adapter/QueryDb/QueryDbResolvers_AppSync.res.mjs +243 -0
  120. package/src/adapter/QueryDb/QueryDbResolvers_AppSync_NoOp.res +21 -0
  121. package/src/adapter/QueryDb/QueryDbResolvers_AppSync_NoOp.res.mjs +14 -0
  122. package/src/adapter/QueryDb/QueryDbResolvers_NoOp.res +21 -0
  123. package/src/adapter/QueryDb/QueryDbResolvers_NoOp.res.mjs +14 -0
  124. package/src/adapter/QueryDb/QueryDbStorage.res +5 -0
  125. package/src/adapter/QueryDb/QueryDbStorage.res.mjs +18 -0
  126. package/src/adapter/QueryDb/QueryDbStorage_DynamoDb.res +115 -0
  127. package/src/adapter/QueryDb/QueryDbStorage_DynamoDb.res.mjs +100 -0
  128. package/src/adapter/QueryDb/QueryDbStorage_DynamoDbStream.res +52 -0
  129. package/src/adapter/QueryDb/QueryDbStorage_DynamoDbStream.res.mjs +38 -0
  130. package/src/adapter/QueryDb/QueryDbStorage_DynamoDb_Runtime.res +271 -0
  131. package/src/adapter/QueryDb/QueryDbStorage_DynamoDb_Runtime.res.mjs +306 -0
  132. package/src/adapter/QueryDb/QueryInterceptor_Lambda.res +20 -0
  133. package/src/adapter/QueryDb/QueryInterceptor_Lambda.res.mjs +22 -0
  134. package/src/adapter/QueryEngine/QueryEngine.res +3 -0
  135. package/src/adapter/QueryEngine/QueryEngine.res.mjs +12 -0
  136. package/src/adapter/QueryEngine/QueryEngine_DynamoDb.res +184 -0
  137. package/src/adapter/QueryEngine/QueryEngine_DynamoDb.res.mjs +221 -0
  138. package/src/adapter/Runtime/AdminEventCollectorEntryPoint.mjs +879 -0
  139. package/src/adapter/Runtime/AggregateEntryPoint.mjs +313 -0
  140. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res +327 -0
  141. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res.mjs +239 -0
  142. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro_Async.res +331 -0
  143. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro_Async.res.mjs +240 -0
  144. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res +247 -0
  145. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res.mjs +185 -0
  146. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate_Async.res +244 -0
  147. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate_Async.res.mjs +185 -0
  148. package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res +347 -0
  149. package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res.mjs +244 -0
  150. package/src/adapter/Runtime/AggregateRuntime_Builder_Single_Async.res +285 -0
  151. package/src/adapter/Runtime/AggregateRuntime_Builder_Single_Async.res.mjs +212 -0
  152. package/src/adapter/Runtime/AutomationSliceEntryPoint.mjs +124 -0
  153. package/src/adapter/Runtime/AutomationSliceRuntime_Builder_Single.res +187 -0
  154. package/src/adapter/Runtime/AutomationSliceRuntime_Builder_Single.res.mjs +147 -0
  155. package/src/adapter/Runtime/CounterEntryPoint.mjs +91 -0
  156. package/src/adapter/Runtime/DcbCommandTopicEntryPoint.mjs +265 -0
  157. package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res +122 -0
  158. package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res.mjs +89 -0
  159. package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res +193 -0
  160. package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs +137 -0
  161. package/src/adapter/Runtime/EventMapperEntryPoint.mjs +97 -0
  162. package/src/adapter/Runtime/ExtensionPointEntryPoint.mjs +101 -0
  163. package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res +83 -0
  164. package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res.mjs +59 -0
  165. package/src/adapter/Runtime/HandlerFactoryHelpers.mjs +142 -0
  166. package/src/adapter/Runtime/HeartbeatEntryPoint.mjs +38 -0
  167. package/src/adapter/Runtime/PluginExtensionPointEntryPoint.mjs +137 -0
  168. package/src/adapter/Runtime/ReadModelEntryPoint.mjs +143 -0
  169. package/src/adapter/Runtime/RuntimeEnvironment.res +1 -0
  170. package/src/adapter/Runtime/RuntimeEnvironment.res.mjs +9 -0
  171. package/src/adapter/Runtime/RuntimeEnvironment_Lambda.res +254 -0
  172. package/src/adapter/Runtime/RuntimeEnvironment_Lambda.res.mjs +169 -0
  173. package/src/adapter/Runtime/SideEffectEntryPoint.mjs +81 -0
  174. package/src/adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res +178 -0
  175. package/src/adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res.mjs +129 -0
  176. package/src/adapter/Runtime/StateChangeSliceRuntime_Builder_Single.res +166 -0
  177. package/src/adapter/Runtime/StateChangeSliceRuntime_Builder_Single.res.mjs +87 -0
  178. package/src/adapter/Runtime/StateViewSliceEntryPoint.mjs +136 -0
  179. package/src/adapter/Runtime/StateViewSliceRuntime_Builder_Single.res +344 -0
  180. package/src/adapter/Runtime/StateViewSliceRuntime_Builder_Single.res.mjs +242 -0
  181. package/src/adapter/Runtime/TaskBucketEntryPoint.mjs +150 -0
  182. package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res +123 -0
  183. package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res.mjs +74 -0
  184. package/src/adapter/ScheduledPublisher/ScheduledPublisher.res +2 -0
  185. package/src/adapter/ScheduledPublisher/ScheduledPublisher.res.mjs +12 -0
  186. package/src/adapter/ScheduledPublisher/ScheduledPublisher_CloudWatchEvents.res +54 -0
  187. package/src/adapter/ScheduledPublisher/ScheduledPublisher_CloudWatchEvents.res.mjs +41 -0
  188. package/src/adapter/ScheduledPublisher/ScheduledPublisher_CloudWatchEvents_Runtime.res +97 -0
  189. package/src/adapter/ScheduledPublisher/ScheduledPublisher_CloudWatchEvents_Runtime.res.mjs +85 -0
  190. package/src/adapter/StateTopic/StateTopic_AppSync.res +418 -0
  191. package/src/adapter/StateTopic/StateTopic_AppSync.res.mjs +295 -0
  192. package/src/adapter/Task/TaskBucket.res +1 -0
  193. package/src/adapter/Task/TaskBucket.res.mjs +9 -0
  194. package/src/adapter/Task/TaskBucket_S3.res +157 -0
  195. package/src/adapter/Task/TaskBucket_S3.res.mjs +108 -0
  196. package/src/adapter/Task/TaskBucket_S3_Runtime.res +11 -0
  197. package/src/adapter/Task/TaskBucket_S3_Runtime.res.mjs +15 -0
  198. package/src/components/Aggregate_Builder.res +1 -0
  199. package/src/components/Aggregate_Builder.res.mjs +25 -0
  200. package/src/components/Aggregate_Builder_Micro.res +63 -0
  201. package/src/components/Aggregate_Builder_Micro.res.mjs +80 -0
  202. package/src/components/Aggregate_Builder_NoResolver.res +61 -0
  203. package/src/components/Aggregate_Builder_NoResolver.res.mjs +80 -0
  204. package/src/components/Aggregate_Builder_PerAggregate.res +57 -0
  205. package/src/components/Aggregate_Builder_PerAggregate.res.mjs +80 -0
  206. package/src/components/Aggregate_Builder_Single.res +59 -0
  207. package/src/components/Aggregate_Builder_Single.res.mjs +80 -0
  208. package/src/components/Aggregate_Builder_Single_Async.res +59 -0
  209. package/src/components/Aggregate_Builder_Single_Async.res.mjs +80 -0
  210. package/src/components/Api/AppSync_Adapter.res +500 -0
  211. package/src/components/Api/AppSync_Adapter.res.mjs +396 -0
  212. package/src/components/AutomationSlice_Builder.res +52 -0
  213. package/src/components/AutomationSlice_Builder.res.mjs +72 -0
  214. package/src/components/AutomationSlice_Builder_Bundled.res.mjs +70 -0
  215. package/src/components/Counter_Builder.res +10 -0
  216. package/src/components/Counter_Builder.res.mjs +16 -0
  217. package/src/components/DataCleaner.res +170 -0
  218. package/src/components/DataCleaner.res.mjs +2 -0
  219. package/src/components/DcbEventLog_Builder.res +8 -0
  220. package/src/components/DcbEventLog_Builder.res.mjs +14 -0
  221. package/src/components/ExtensionPoint_Builder.res +16 -0
  222. package/src/components/ExtensionPoint_Builder.res.mjs +37 -0
  223. package/src/components/ForeignReadModel_Builder.res +19 -0
  224. package/src/components/ForeignReadModel_Builder.res.mjs +48 -0
  225. package/src/components/InboundTranslationSlice_Builder.res +25 -0
  226. package/src/components/InboundTranslationSlice_Builder.res.mjs +31 -0
  227. package/src/components/OutboundTranslationSlice_Builder.res +60 -0
  228. package/src/components/OutboundTranslationSlice_Builder.res.mjs +76 -0
  229. package/src/components/OutboundTranslationSlice_Builder_Bundled.res.mjs +75 -0
  230. package/src/components/Plugin.res +29 -0
  231. package/src/components/Plugin.res.mjs +63 -0
  232. package/src/components/ReadModel_Builder.res +1 -0
  233. package/src/components/ReadModel_Builder.res.mjs +19 -0
  234. package/src/components/ReadModel_Builder_NoResolver.res +55 -0
  235. package/src/components/ReadModel_Builder_NoResolver.res.mjs +64 -0
  236. package/src/components/ReadModel_Builder_NoResolver_Stream.res +60 -0
  237. package/src/components/ReadModel_Builder_NoResolver_Stream.res.mjs +64 -0
  238. package/src/components/ReadModel_Builder_PerReadModel.res +53 -0
  239. package/src/components/ReadModel_Builder_PerReadModel.res.mjs +66 -0
  240. package/src/components/ReadModel_Builder_Single.res +52 -0
  241. package/src/components/ReadModel_Builder_Single.res.mjs +66 -0
  242. package/src/components/ReadModel_Builder_Single_Stream.res +60 -0
  243. package/src/components/ReadModel_Builder_Single_Stream.res.mjs +66 -0
  244. package/src/components/Scheduler.res +1 -0
  245. package/src/components/Scheduler.res.mjs +13 -0
  246. package/src/components/SideEffectHandler.res +1 -0
  247. package/src/components/SideEffectHandler.res.mjs +19 -0
  248. package/src/components/SideEffectHandler_PerSideEffectHandler.res +13 -0
  249. package/src/components/SideEffectHandler_PerSideEffectHandler.res.mjs +52 -0
  250. package/src/components/SideEffectHandler_Single.res +54 -0
  251. package/src/components/SideEffectHandler_Single.res.mjs +60 -0
  252. package/src/components/StateChangeSlice_Builder.res +17 -0
  253. package/src/components/StateChangeSlice_Builder.res.mjs +23 -0
  254. package/src/components/StateViewSlice_Builder.res +46 -0
  255. package/src/components/StateViewSlice_Builder.res.mjs +68 -0
  256. package/src/components/StateViewSlice_Builder_Bundled.res.mjs +69 -0
  257. package/src/components/StateViewSlice_Builder_Stream.res +50 -0
  258. package/src/components/StateViewSlice_Builder_Stream.res.mjs +68 -0
  259. package/src/components/Task_Builder.res +1 -0
  260. package/src/components/Task_Builder.res.mjs +28 -0
  261. package/src/components/Task_Builder_PerBucket.res +22 -0
  262. package/src/components/Task_Builder_PerBucket.res.mjs +63 -0
  263. package/src/components/Vpc.res +214 -0
  264. package/src/components/Vpc.res.mjs +117 -0
  265. package/src/components/Vpc.resi +22 -0
  266. package/src/errors/AppSync_Error.res +36 -0
  267. package/src/errors/AppSync_Error.res.mjs +38 -0
  268. package/src/errors/Cognito_Error.res +36 -0
  269. package/src/errors/Cognito_Error.res.mjs +38 -0
  270. package/src/errors/DynamoDb_Error.res +75 -0
  271. package/src/errors/DynamoDb_Error.res.mjs +86 -0
  272. package/src/errors/Kinesis_Error.res +36 -0
  273. package/src/errors/Kinesis_Error.res.mjs +38 -0
  274. package/src/errors/SNS_Error.res +34 -0
  275. package/src/errors/SNS_Error.res.mjs +38 -0
  276. package/src/errors/SQS_Error.res +40 -0
  277. package/src/errors/SQS_Error.res.mjs +41 -0
  278. package/src/plugin/cloner/ClonerRunner.res +1 -0
  279. package/src/plugin/cloner/ClonerRunner.res.mjs +9 -0
  280. package/src/plugin/cloner/ClonerRunner_Fargate.res +362 -0
  281. package/src/plugin/cloner/ClonerRunner_Fargate.res.mjs +246 -0
  282. package/src/plugin/cloner/ClonerRunner_Fargate_Runtime.res +42 -0
  283. package/src/plugin/cloner/ClonerRunner_Fargate_Runtime.res.mjs +45 -0
  284. package/src/plugin/heartbeat/HeartbeatRunner.res +1 -0
  285. package/src/plugin/heartbeat/HeartbeatRunner.res.mjs +9 -0
  286. package/src/plugin/heartbeat/HeartbeatRunner_CloudWatchEvents.res +96 -0
  287. package/src/plugin/heartbeat/HeartbeatRunner_CloudWatchEvents.res.mjs +69 -0
  288. package/src/plugin/runtime/PluginExtensionPointRuntime_Builder.res +115 -0
  289. package/src/plugin/runtime/PluginExtensionPointRuntime_Builder.res.mjs +88 -0
  290. package/src/plugin/runtime/PluginRuntimeOperations.res +5 -0
  291. package/src/plugin/runtime/PluginRuntimeOperations.res.mjs +14 -0
  292. package/src/plugin/runtime/PluginRuntime_Builder.res +769 -0
  293. package/src/plugin/runtime/PluginRuntime_Builder.res.mjs +464 -0
  294. package/src/plugin/runtime/Util_PluginMessage_Runtime.res +13 -0
  295. package/src/plugin/runtime/Util_PluginMessage_Runtime.res.mjs +19 -0
  296. package/src/plugin/stack/Plugin_ExtensionPoint_Builder.res +28 -0
  297. package/src/plugin/stack/Plugin_ExtensionPoint_Builder.res.mjs +67 -0
  298. package/src/plugin/stack/Plugin_Stack.res +439 -0
  299. package/src/plugin/stack/Plugin_Stack.res.mjs +263 -0
  300. package/src/util/Util.res +29 -0
  301. package/src/util/Util.res.mjs +93 -0
  302. package/src/util/Util_AppSync.res +36 -0
  303. package/src/util/Util_AppSync.res.mjs +35 -0
  304. package/src/util/Util_AppSync_Caller.res +213 -0
  305. package/src/util/Util_AppSync_Caller.res.mjs +170 -0
  306. package/src/util/Util_Bundle.res +255 -0
  307. package/src/util/Util_Bundle.res.mjs +179 -0
  308. package/src/util/Util_Cloudwatch.res +14 -0
  309. package/src/util/Util_Cloudwatch.res.mjs +19 -0
  310. package/src/util/Util_CognitoGroupUser.res +39 -0
  311. package/src/util/Util_CognitoGroupUser.res.mjs +32 -0
  312. package/src/util/Util_CognitoGroupUser_Runtime.res +65 -0
  313. package/src/util/Util_CognitoGroupUser_Runtime.res.mjs +50 -0
  314. package/src/util/Util_Cognito_Runtime.res +52 -0
  315. package/src/util/Util_Cognito_Runtime.res.mjs +35 -0
  316. package/src/util/Util_DeadLetterQueue.res +154 -0
  317. package/src/util/Util_DeadLetterQueue.res.mjs +158 -0
  318. package/src/util/Util_DynamoDb.res +210 -0
  319. package/src/util/Util_DynamoDb.res.mjs +218 -0
  320. package/src/util/Util_DynamoDbStream.res +138 -0
  321. package/src/util/Util_DynamoDbStream.res.mjs +134 -0
  322. package/src/util/Util_DynamoDbStream_Runtime.res +94 -0
  323. package/src/util/Util_DynamoDbStream_Runtime.res.mjs +131 -0
  324. package/src/util/Util_DynamoDb_Runtime.res +216 -0
  325. package/src/util/Util_DynamoDb_Runtime.res.mjs +257 -0
  326. package/src/util/Util_DynamoDb_TableManager.res +23 -0
  327. package/src/util/Util_DynamoDb_TableManager.res.mjs +35 -0
  328. package/src/util/Util_DynamoDb_TableManager.resi +3 -0
  329. package/src/util/Util_Env.res +5 -0
  330. package/src/util/Util_Env.res.mjs +2 -0
  331. package/src/util/Util_EventSourceMapping.res +49 -0
  332. package/src/util/Util_EventSourceMapping.res.mjs +32 -0
  333. package/src/util/Util_HostUiDomain.res +28 -0
  334. package/src/util/Util_HostUiDomain.res.mjs +26 -0
  335. package/src/util/Util_IAM_Role.res +14 -0
  336. package/src/util/Util_IAM_Role.res.mjs +28 -0
  337. package/src/util/Util_Kinesis_Runtime.res +20 -0
  338. package/src/util/Util_Kinesis_Runtime.res.mjs +24 -0
  339. package/src/util/Util_Lambda.res +39 -0
  340. package/src/util/Util_Lambda.res.mjs +45 -0
  341. package/src/util/Util_LocalConfig.res +119 -0
  342. package/src/util/Util_LocalConfig.res.mjs +112 -0
  343. package/src/util/Util_ResourceNaming.res +15 -0
  344. package/src/util/Util_ResourceNaming.res.mjs +26 -0
  345. package/src/util/Util_S3.res +17 -0
  346. package/src/util/Util_S3.res.mjs +30 -0
  347. package/src/util/Util_S3_Runtime.res +11 -0
  348. package/src/util/Util_S3_Runtime.res.mjs +15 -0
  349. package/src/util/Util_SNS.res +33 -0
  350. package/src/util/Util_SNS.res.mjs +50 -0
  351. package/src/util/Util_SNS_FIFO.res +21 -0
  352. package/src/util/Util_SNS_FIFO.res.mjs +27 -0
  353. package/src/util/Util_SNS_Runtime.res +33 -0
  354. package/src/util/Util_SNS_Runtime.res.mjs +27 -0
  355. package/src/util/Util_SQS.res +70 -0
  356. package/src/util/Util_SQS.res.mjs +83 -0
  357. package/src/util/Util_SQS_FIFO.res +16 -0
  358. package/src/util/Util_SQS_FIFO.res.mjs +28 -0
  359. package/src/util/Util_SQS_Runtime.res +169 -0
  360. package/src/util/Util_SQS_Runtime.res.mjs +150 -0
  361. package/src/util/Util_SesPolicy_Runtime.res +54 -0
  362. package/src/util/Util_SesPolicy_Runtime.res.mjs +55 -0
  363. package/src/util/Util_StaticBundle.res +124 -0
  364. package/src/util/Util_StaticBundle.res.mjs +132 -0
  365. package/src/util/Util_Vpc.res +22 -0
  366. package/src/util/Util_Vpc.res.mjs +27 -0
  367. package/tests/AppSync_AdapterTest.res +396 -0
  368. package/tests/AppSync_AdapterTest.res.mjs +326 -0
  369. package/tests/AppSync_Resolver_RetryingTest.res +59 -0
  370. package/tests/AppSync_Resolver_RetryingTest.res.mjs +66 -0
  371. package/tests/Auth_CognitoTest.res +203 -0
  372. package/tests/Auth_CognitoTest.res.mjs +248 -0
  373. package/tests/DcbEventLogStorage_DynamoDb_RuntimeTest.res +602 -0
  374. package/tests/DcbEventLogStorage_DynamoDb_RuntimeTest.res.mjs +742 -0
  375. package/tests/EventLogStorage_DynamoDb_RuntimeTest.res +57 -0
  376. package/tests/EventLogStorage_DynamoDb_RuntimeTest.res.mjs +68 -0
  377. package/tests/MCP_LambdaTest.res +101 -0
  378. package/tests/MCP_LambdaTest.res.mjs +56 -0
  379. package/tests/Util_HostUiDomainTest.res +90 -0
  380. package/tests/Util_HostUiDomainTest.res.mjs +50 -0
  381. package/tests/Util_SQS_RuntimeTest.res +46 -0
  382. package/tests/Util_SQS_RuntimeTest.res.mjs +45 -0
  383. package/tests/Util_StaticBundleTest.res +136 -0
  384. package/tests/Util_StaticBundleTest.res.mjs +149 -0
  385. package/tests/integration/DcbCommandTopicEntryPoint_IntegrationTest.res +101 -0
  386. package/tests/integration/DcbCommandTopicEntryPoint_IntegrationTest.res.mjs +91 -0
  387. package/tests/integration/DcbEventLogStorage_DynamoDb_IntegrationTest.res +315 -0
  388. package/tests/integration/DcbEventLogStorage_DynamoDb_IntegrationTest.res.mjs +435 -0
  389. package/tests/integration/DcbIntegrationHarness.res +102 -0
  390. package/tests/integration/DcbIntegrationHarness.res.mjs +163 -0
  391. package/tests/integration/EpTestSlice.res +28 -0
  392. package/tests/integration/EpTestSlice.res.mjs +43 -0
  393. package/tests/integration/EpTestSliceBehavior.res +18 -0
  394. package/tests/integration/EpTestSliceBehavior.res.mjs +35 -0
@@ -0,0 +1,23 @@
1
+ let dependencies: ref<array<promise<Pulumi.Resource.t>>> = ref([])
2
+
3
+ type registerResource = Pulumi.Resource.t => unit
4
+
5
+ let getDependencies = () => {
6
+ let currentLen = dependencies.contents->Array.length
7
+ let (start, end) = switch currentLen / 4 {
8
+ | 0 => (0, 0)
9
+ | idx => ((idx - 1) * 4, idx * 4)
10
+ }
11
+ let deps =
12
+ dependencies.contents
13
+ ->Array.slice(~start, ~end)
14
+ ->Promise.all
15
+ ->Pulumi.Output.fromPromise
16
+
17
+ let registerResource = ref(_ => ())
18
+ let promise = Promise.make((resolve, _) => registerResource := resolve)
19
+
20
+ dependencies := dependencies.contents->Array.concat([promise])
21
+
22
+ (deps, registerResource.contents)
23
+ }
@@ -0,0 +1,35 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+
4
+ let dependencies = {
5
+ contents: []
6
+ };
7
+
8
+ function getDependencies() {
9
+ let currentLen = dependencies.contents.length;
10
+ let idx = currentLen / 4 | 0;
11
+ let match = idx !== 0 ? [
12
+ ((idx - 1 | 0) << 2),
13
+ (idx << 2)
14
+ ] : [
15
+ 0,
16
+ 0
17
+ ];
18
+ let deps = Promise.all(dependencies.contents.slice(match[0], match[1]));
19
+ let registerResource = {
20
+ contents: param => {}
21
+ };
22
+ let promise = new Promise((resolve, param) => {
23
+ registerResource.contents = resolve;
24
+ });
25
+ dependencies.contents = dependencies.contents.concat([promise]);
26
+ return [
27
+ deps,
28
+ registerResource.contents
29
+ ];
30
+ }
31
+
32
+ export {
33
+ getDependencies,
34
+ }
35
+ /* No side effect */
@@ -0,0 +1,3 @@
1
+ type registerResource = Pulumi.Resource.t => unit
2
+
3
+ let getDependencies: unit => (Pulumi.Output.t<array<Pulumi.Resource.t>>, registerResource)
@@ -0,0 +1,5 @@
1
+ @val
2
+ external awsAccountId: option<string> = "process.env.AWS_ACCOUNT_ID"
3
+
4
+ @val
5
+ external awsRegion: option<string> = "process.env.AWS_REGION"
@@ -0,0 +1,2 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+ /* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
@@ -0,0 +1,49 @@
1
+ open PulumiAws
2
+
3
+ let subscribe = (
4
+ ~batchSize=?,
5
+ ~lambda: Pulumi.Output.t<PulumiAws.Lambda.Function.t>,
6
+ ~targetName,
7
+ ~sourceName,
8
+ ~source: ReventlessInfra.Adapter.resource,
9
+ ~opts,
10
+ ) =>
11
+ EventSourceMapping.make(
12
+ ~name=sourceName->ReventlessCore.Util.baseName ++ ("2" ++ targetName),
13
+ ~args={
14
+ EventSourceMapping.functionName: lambda
15
+ ->Pulumi.Output.flatMap(lambda => lambda.arn)
16
+ ->Pulumi.Output.asInput,
17
+ eventSourceArn: source.urn->Pulumi.Output.asInput,
18
+ startingPosition: LATEST,
19
+ ?batchSize,
20
+ },
21
+ ~opts=Some(opts),
22
+ )
23
+
24
+ let subscribeSqs = (
25
+ ~lambda: Pulumi.Output.t<PulumiAws.Lambda.Function.t>,
26
+ ~name,
27
+ ~queue: PulumiAws.SQS.Queue.t,
28
+ ~batchSize=?,
29
+ ~opts,
30
+ ) => {
31
+ let esm = EventSourceMapping.make(
32
+ ~name,
33
+ ~args={
34
+ EventSourceMapping.functionName: lambda
35
+ ->Pulumi.Output.flatMap(lambda => lambda.arn)
36
+ ->Pulumi.Output.asInput,
37
+ eventSourceArn: queue.arn->Pulumi.Output.asInput,
38
+ ?batchSize,
39
+ },
40
+ ~opts=Some(opts),
41
+ )
42
+ ReventlessInfra.Adapter.make(
43
+ ~name=esm.id,
44
+ ~id=esm.id,
45
+ ~urn=esm.arn,
46
+ ~service=esm.id->Pulumi.Output.apply(_ => AWS.SQS.service),
47
+ ~resourceType="aws:lambda:EventSourceMapping"->Pulumi.Output.make,
48
+ )
49
+ }
@@ -0,0 +1,32 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Aws from "@pulumi/aws";
4
+ import * as Output$Pulumi from "@reventlessdev/rescript-pulumi-pulumi/src/Output.res.mjs";
5
+ import * as Pulumi from "@pulumi/pulumi";
6
+ import * as AWS$ReventlessAws from "../adapter/AWS.res.mjs";
7
+ import * as Util$ReventlessCore from "@reventlessdev/reventless-core/src/util/Util.res.mjs";
8
+ import * as Adapter$ReventlessInfra from "@reventlessdev/reventless-infra/src/adapter/Adapter.res.mjs";
9
+
10
+ function subscribe(batchSize, lambda, targetName, sourceName, source, opts) {
11
+ return new (Aws.lambda.EventSourceMapping)(Util$ReventlessCore.baseName(sourceName) + ("2" + targetName), {
12
+ functionName: Output$Pulumi.flatMap(lambda, lambda => lambda.arn),
13
+ batchSize: batchSize,
14
+ eventSourceArn: source.urn,
15
+ startingPosition: "LATEST"
16
+ }, opts);
17
+ }
18
+
19
+ function subscribeSqs(lambda, name, queue, batchSize, opts) {
20
+ let esm = new (Aws.lambda.EventSourceMapping)(name, {
21
+ functionName: Output$Pulumi.flatMap(lambda, lambda => lambda.arn),
22
+ batchSize: batchSize,
23
+ eventSourceArn: queue.arn
24
+ }, opts);
25
+ return Adapter$ReventlessInfra.make(esm.id, esm.id, esm.arn, esm.id.apply(param => AWS$ReventlessAws.SQS.service), undefined, undefined, undefined, Pulumi.output("aws:lambda:EventSourceMapping"), undefined, undefined);
26
+ }
27
+
28
+ export {
29
+ subscribe,
30
+ subscribeSqs,
31
+ }
32
+ /* @pulumi/aws Not a pure module */
@@ -0,0 +1,28 @@
1
+ // FQDN derivation for the host-UI shell's custom domain. Pure function so it
2
+ // can be unit-tested without touching Pulumi / `Util_LocalConfig`. Convention:
3
+ //
4
+ // stack ∈ prodStacks → "${baseName}.${baseDomain}"
5
+ // otherwise → "${baseName}-${stack}.${baseDomain}"
6
+ //
7
+ // `prodStacks` defaults to `["prod", "main"]` and is overridable via the
8
+ // `hostUiProdStacks` config key (CSV) for teams using `production`, `live`,
9
+ // etc. The `baseName` defaults to `Pulumi.getProjectName()` and can be
10
+ // overridden per-stack via `hostUiBaseName` — useful when the Pulumi project
11
+ // name is longer than what looks good in a URL.
12
+
13
+ let defaultProdStacks = ["prod", "main"]
14
+
15
+ /** Pure FQDN derivation. */
16
+ let deriveFqdn = (~baseName: string, ~stack: string, ~baseDomain: string, ~prodStacks: array<string>): string =>
17
+ prodStacks->Array.includes(stack)
18
+ ? `${baseName}.${baseDomain}`
19
+ : `${baseName}-${stack}.${baseDomain}`
20
+
21
+ /** Parse a CSV-encoded prod-stacks override. Empty entries are dropped so a
22
+ trailing comma or leading/trailing whitespace doesn't smuggle in a phantom
23
+ stack name. */
24
+ let parseProdStacks = (csv: string): array<string> =>
25
+ csv
26
+ ->String.split(",")
27
+ ->Array.map(String.trim)
28
+ ->Array.filter(s => s !== "")
@@ -0,0 +1,26 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+
4
+ let defaultProdStacks = [
5
+ "prod",
6
+ "main"
7
+ ];
8
+
9
+ function deriveFqdn(baseName, stack, baseDomain, prodStacks) {
10
+ if (prodStacks.includes(stack)) {
11
+ return baseName + `.` + baseDomain;
12
+ } else {
13
+ return baseName + `-` + stack + `.` + baseDomain;
14
+ }
15
+ }
16
+
17
+ function parseProdStacks(csv) {
18
+ return csv.split(",").map(prim => prim.trim()).filter(s => s !== "");
19
+ }
20
+
21
+ export {
22
+ defaultProdStacks,
23
+ deriveFqdn,
24
+ parseProdStacks,
25
+ }
26
+ /* No side effect */
@@ -0,0 +1,14 @@
1
+ let findResource = resources => resources->ReventlessCore.Util.Adapter.findResource(AWS.IAM.service)
2
+
3
+ let toResource: PulumiAws.IAM.Role.t => ReventlessInfra.Adapter.resource = ({id, name, arn}) =>
4
+ ReventlessInfra.Adapter.make(
5
+ ~name,
6
+ ~id,
7
+ ~urn=arn,
8
+ ~service=name->Pulumi.Output.apply(_ => AWS.IAM.service),
9
+ ~resourceType="aws:iam:Role"->Pulumi.Output.make,
10
+ )
11
+
12
+ let fromResource = ({id, name}: ReventlessInfra.Adapter.resource) => {
13
+ name->Pulumi.Output.apply(name => PulumiAws.IAM.Role.get(~name, ~id=id->Pulumi.Output.asInput))
14
+ }
@@ -0,0 +1,28 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Aws from "@pulumi/aws";
4
+ import * as Pulumi from "@pulumi/pulumi";
5
+ import * as AWS$ReventlessAws from "../adapter/AWS.res.mjs";
6
+ import * as Adapter$ReventlessInfra from "@reventlessdev/reventless-infra/src/adapter/Adapter.res.mjs";
7
+ import * as Util_Adapter$ReventlessCore from "@reventlessdev/reventless-core/src/util/Util_Adapter.res.mjs";
8
+
9
+ function findResource(resources) {
10
+ return Util_Adapter$ReventlessCore.findResource(resources, AWS$ReventlessAws.IAM.service);
11
+ }
12
+
13
+ function toResource(param) {
14
+ let name = param.name;
15
+ return Adapter$ReventlessInfra.make(name, param.id, param.arn, name.apply(param => AWS$ReventlessAws.IAM.service), undefined, undefined, undefined, Pulumi.output("aws:iam:Role"), undefined, undefined);
16
+ }
17
+
18
+ function fromResource(param) {
19
+ let id = param.id;
20
+ return param.name.apply(name => Aws.iam.Role.get(name, id));
21
+ }
22
+
23
+ export {
24
+ findResource,
25
+ toResource,
26
+ fromResource,
27
+ }
28
+ /* @pulumi/aws Not a pure module */
@@ -0,0 +1,20 @@
1
+ let putRecord = (stream, ~data) =>
2
+ Effect.tryPromise(
3
+ ~catch=Kinesis_Error.classify,
4
+ () =>
5
+ AwsSdk.Kinesis.PutRecordCommand.make({
6
+ data,
7
+ //FIXME: remove JST after merge of rescript-v11 upgrade
8
+ streamName: stream["name"]->Pulumi.Output.get,
9
+ partitionKey: "",
10
+ })->AwsSdk.Kinesis.PutRecordCommand.send,
11
+ )
12
+ ->Effect.map(_ => ())
13
+ ->Effect.retry(Kinesis_Error.retrySchedule)
14
+ ->Effect.catchAll(err => {
15
+ let msg = Kinesis_Error.message(err)
16
+ ReventlessCore.EffectLogger.logError(~comp=__MODULE__, `putRecord: ${msg}`)
17
+ ->Effect.flatMap(_ => Effect.fail(msg))
18
+ })
19
+ ->Effect.runPromise
20
+ /* TODO partitionKey */
@@ -0,0 +1,24 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Effect from "@reventlessdev/rescript-effect/src/Effect.res.mjs";
4
+ import * as Effect$1 from "effect/Effect";
5
+ import * as Kinesis$AwsSdk from "@reventlessdev/rescript-aws-sdk/src/Kinesis.res.mjs";
6
+ import * as ClientKinesis from "@aws-sdk/client-kinesis";
7
+ import * as EffectLogger$ReventlessCore from "@reventlessdev/reventless-core/src/util/EffectLogger.res.mjs";
8
+ import * as Kinesis_Error$ReventlessAws from "../errors/Kinesis_Error.res.mjs";
9
+
10
+ function putRecord(stream, data) {
11
+ return Effect$1.runPromise(Effect$1.catchAll(Effect$1.retry(Effect$1.map(Effect.tryPromise(Kinesis_Error$ReventlessAws.classify, () => Kinesis$AwsSdk.PutRecordCommand.send(new ClientKinesis.PutRecordCommand({
12
+ Data: data,
13
+ StreamName: stream.name.get(),
14
+ PartitionKey: ""
15
+ }))), param => {}), Kinesis_Error$ReventlessAws.retrySchedule), err => {
16
+ let msg = Kinesis_Error$ReventlessAws.message(err);
17
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_Kinesis_Runtime-ReventlessAws", undefined, `putRecord: ` + msg), () => Effect$1.fail(msg));
18
+ }));
19
+ }
20
+
21
+ export {
22
+ putRecord,
23
+ }
24
+ /* Effect Not a pure module */
@@ -0,0 +1,39 @@
1
+ type runtimeParts = {
2
+ lambda: Pulumi.Output.t<PulumiAws.Lambda.Function.t>,
3
+ lambdaRole: PulumiAws.IAM.Role.t,
4
+ }
5
+
6
+ let findResource = resources => resources->ReventlessCore.Util.Adapter.findResource(AWS.Lambda.service)
7
+
8
+ let toResource = (~tags=?, {id, name, arn}: PulumiAws.Lambda.Function.t): ReventlessInfra.Adapter.resource =>
9
+ ReventlessInfra.Adapter.make(
10
+ ~name,
11
+ ~id,
12
+ ~urn=arn,
13
+ ~service=name->Pulumi.Output.apply(_ => AWS.Lambda.service),
14
+ ~resourceType="aws:lambda:Function"->Pulumi.Output.make,
15
+ ~tags=?tags,
16
+ )
17
+
18
+ let fromResource = ({id, name}: ReventlessInfra.Adapter.resource) => {
19
+ name->Pulumi.Output.apply(name =>
20
+ PulumiAws.Lambda.Function.get(~name, ~id=id->Pulumi.Output.asInput)
21
+ )
22
+ }
23
+
24
+ let fromOutput = (output: Pulumi.Output.t<PulumiAws.Lambda.Function.t>) => {
25
+ PulumiAws.Lambda.Function.arn: output->Pulumi.Output.flatMap(({arn}) => arn),
26
+ id: output->Pulumi.Output.flatMap(({id}) => id),
27
+ name: output->Pulumi.Output.flatMap(({name}) => name),
28
+ invokeArn: output->Pulumi.Output.flatMap(({invokeArn}) => invokeArn),
29
+ }
30
+
31
+ let functionToResource = (~tags=?, {id, name, arn}: PulumiAws.Lambda.Function.t): ReventlessInfra.Adapter.resource =>
32
+ ReventlessInfra.Adapter.make(
33
+ ~name,
34
+ ~id,
35
+ ~urn=arn,
36
+ ~service=name->Pulumi.Output.apply(_ => AWS.Lambda.service),
37
+ ~resourceType="aws:lambda:Function"->Pulumi.Output.make,
38
+ ~tags=?tags,
39
+ )
@@ -0,0 +1,45 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Aws from "@pulumi/aws";
4
+ import * as Output$Pulumi from "@reventlessdev/rescript-pulumi-pulumi/src/Output.res.mjs";
5
+ import * as Pulumi from "@pulumi/pulumi";
6
+ import * as AWS$ReventlessAws from "../adapter/AWS.res.mjs";
7
+ import * as Adapter$ReventlessInfra from "@reventlessdev/reventless-infra/src/adapter/Adapter.res.mjs";
8
+ import * as Util_Adapter$ReventlessCore from "@reventlessdev/reventless-core/src/util/Util_Adapter.res.mjs";
9
+
10
+ function findResource(resources) {
11
+ return Util_Adapter$ReventlessCore.findResource(resources, AWS$ReventlessAws.Lambda.service);
12
+ }
13
+
14
+ function toResource(tags, param) {
15
+ let name = param.name;
16
+ return Adapter$ReventlessInfra.make(name, param.id, param.arn, name.apply(param => AWS$ReventlessAws.Lambda.service), undefined, undefined, undefined, Pulumi.output("aws:lambda:Function"), undefined, tags);
17
+ }
18
+
19
+ function fromResource(param) {
20
+ let id = param.id;
21
+ return param.name.apply(name => Aws.lambda.Function.get(name, id));
22
+ }
23
+
24
+ function fromOutput(output) {
25
+ return {
26
+ arn: Output$Pulumi.flatMap(output, param => param.arn),
27
+ id: Output$Pulumi.flatMap(output, param => param.id),
28
+ name: Output$Pulumi.flatMap(output, param => param.name),
29
+ invokeArn: Output$Pulumi.flatMap(output, param => param.invokeArn)
30
+ };
31
+ }
32
+
33
+ function functionToResource(tags, param) {
34
+ let name = param.name;
35
+ return Adapter$ReventlessInfra.make(name, param.id, param.arn, name.apply(param => AWS$ReventlessAws.Lambda.service), undefined, undefined, undefined, Pulumi.output("aws:lambda:Function"), undefined, tags);
36
+ }
37
+
38
+ export {
39
+ findResource,
40
+ toResource,
41
+ fromResource,
42
+ fromOutput,
43
+ functionToResource,
44
+ }
45
+ /* @pulumi/aws Not a pure module */
@@ -0,0 +1,119 @@
1
+ // Deploy-time per-instance overrides for Pulumi-config-shaped keys. Two
2
+ // sources, layered (highest precedence first):
3
+ //
4
+ // 1. **Environment variable** named `REVENTLESS_<KEY_IN_SCREAMING_SNAKE>`.
5
+ // Wins over everything. Intended for CI runners where the value comes
6
+ // from a repository / environment secret. An empty string is treated
7
+ // as "not set" so a stray empty export does not mask the sidecar.
8
+ // 2. **`Pulumi.local.yaml`** sidecar in the Pulumi project directory
9
+ // (`process.cwd()`). Gitignored — intended for dev-local overrides.
10
+ //
11
+ // Callers fall back to Pulumi stack config (or auto-provision) when `get`
12
+ // returns `None`.
13
+ //
14
+ // Env-var naming: camelCase key → `REVENTLESS_<SCREAMING_SNAKE>`.
15
+ // Example: `cognitoUserPoolId` → `REVENTLESS_COGNITO_USER_POOL_ID`.
16
+ //
17
+ // Sidecar format: minimal `key: value` lines. Bare strings; optional
18
+ // `"…"` quoting; `#` introduces line / trailing comments; blank lines
19
+ // ignored. Not a full YAML parser — only this subset is supported by
20
+ // design (no nesting, no arrays, no multi-line scalars).
21
+
22
+ @module("fs") external existsSync: string => bool = "existsSync"
23
+ @module("fs") external readFileSync: (string, string) => string = "readFileSync"
24
+ @module("path") external pathJoin: (string, string) => string = "join"
25
+ @module("path") external pathDirname: string => string = "dirname"
26
+ @val @scope("process") external processCwd: unit => string = "cwd"
27
+ @val external processEnv: Dict.t<string> = "process.env"
28
+
29
+ let _filename = "Pulumi.local.yaml"
30
+ let _projectFile = "Pulumi.yaml"
31
+ let _cache: ref<option<Dict.t<string>>> = ref(None)
32
+
33
+ // Pulumi sets the Node program's cwd to the directory containing the `main`
34
+ // entry (typically `src/`), not the project directory. Walk up from cwd to
35
+ // find Pulumi.yaml, then read Pulumi.local.yaml next to it.
36
+ let _findSidecar = (): option<string> => {
37
+ let rec find = dir => {
38
+ if existsSync(pathJoin(dir, _projectFile)) {
39
+ let candidate = pathJoin(dir, _filename)
40
+ existsSync(candidate) ? Some(candidate) : None
41
+ } else {
42
+ let parent = pathDirname(dir)
43
+ parent == dir ? None : find(parent)
44
+ }
45
+ }
46
+ find(processCwd())
47
+ }
48
+
49
+ let _stripQuotes = (s: string): string => {
50
+ let n = String.length(s)
51
+ if n >= 2 && String.startsWith(s, "\"") && String.endsWith(s, "\"") {
52
+ String.substring(s, ~start=1, ~end=n - 1)
53
+ } else {
54
+ s
55
+ }
56
+ }
57
+
58
+ let _parse = (content: string): Dict.t<string> => {
59
+ let d = Dict.make()
60
+ content
61
+ ->String.split("\n")
62
+ ->Array.forEach(rawLine => {
63
+ let line = String.trim(rawLine)
64
+ if line === "" || String.startsWith(line, "#") {
65
+ ()
66
+ } else {
67
+ switch String.indexOf(line, ":") {
68
+ | -1 => ()
69
+ | idx =>
70
+ let key = String.substring(line, ~start=0, ~end=idx)->String.trim
71
+ let after = String.slice(line, ~start=idx + 1, ~end=String.length(line))
72
+ let valuePart = switch String.indexOf(after, "#") {
73
+ | -1 => after
74
+ | hashIdx => String.substring(after, ~start=0, ~end=hashIdx)
75
+ }
76
+ let value = valuePart->String.trim->_stripQuotes
77
+ if key !== "" {
78
+ Dict.set(d, key, value)
79
+ }
80
+ }
81
+ }
82
+ })
83
+ d
84
+ }
85
+
86
+ let _load = (): Dict.t<string> =>
87
+ switch _cache.contents {
88
+ | Some(d) => d
89
+ | None =>
90
+ let d = switch _findSidecar() {
91
+ | Some(path) => _parse(readFileSync(path, "utf-8"))
92
+ | None => Dict.make()
93
+ }
94
+ _cache := Some(d)
95
+ d
96
+ }
97
+
98
+ let _envVarName = (key: string): string => {
99
+ let buf = ref("REVENTLESS")
100
+ let n = String.length(key)
101
+ for i in 0 to n - 1 {
102
+ let ch = String.charAt(key, i)
103
+ let upper = String.toUpperCase(ch)
104
+ let isLetter = upper !== String.toLowerCase(ch)
105
+ let isUpper = isLetter && ch === upper
106
+ if i === 0 || isUpper {
107
+ buf := buf.contents ++ "_" ++ upper
108
+ } else {
109
+ buf := buf.contents ++ upper
110
+ }
111
+ }
112
+ buf.contents
113
+ }
114
+
115
+ let get = (key: string): option<string> =>
116
+ switch Dict.get(processEnv, _envVarName(key)) {
117
+ | Some(v) if v !== "" => Some(v)
118
+ | _ => Dict.get(_load(), key)
119
+ }
@@ -0,0 +1,112 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Fs from "fs";
4
+ import * as Path from "path";
5
+
6
+ let _filename = "Pulumi.local.yaml";
7
+
8
+ let _projectFile = "Pulumi.yaml";
9
+
10
+ let _cache = {
11
+ contents: undefined
12
+ };
13
+
14
+ function _findSidecar() {
15
+ let _dir = process.cwd();
16
+ while (true) {
17
+ let dir = _dir;
18
+ if (Fs.existsSync(Path.join(dir, _projectFile))) {
19
+ let candidate = Path.join(dir, _filename);
20
+ if (Fs.existsSync(candidate)) {
21
+ return candidate;
22
+ } else {
23
+ return;
24
+ }
25
+ }
26
+ let parent = Path.dirname(dir);
27
+ if (parent === dir) {
28
+ return;
29
+ }
30
+ _dir = parent;
31
+ continue;
32
+ };
33
+ }
34
+
35
+ function _stripQuotes(s) {
36
+ let n = s.length;
37
+ if (n >= 2 && s.startsWith("\"") && s.endsWith("\"")) {
38
+ return s.substring(1, n - 1 | 0);
39
+ } else {
40
+ return s;
41
+ }
42
+ }
43
+
44
+ function _parse(content) {
45
+ let d = {};
46
+ content.split("\n").forEach(rawLine => {
47
+ let line = rawLine.trim();
48
+ if (line === "" || line.startsWith("#")) {
49
+ return;
50
+ }
51
+ let idx = line.indexOf(":");
52
+ if (idx === -1) {
53
+ return;
54
+ }
55
+ let key = line.substring(0, idx).trim();
56
+ let after = line.slice(idx + 1 | 0, line.length);
57
+ let hashIdx = after.indexOf("#");
58
+ let valuePart = hashIdx !== -1 ? after.substring(0, hashIdx) : after;
59
+ let value = _stripQuotes(valuePart.trim());
60
+ if (key !== "") {
61
+ d[key] = value;
62
+ return;
63
+ }
64
+ });
65
+ return d;
66
+ }
67
+
68
+ function _load() {
69
+ let d = _cache.contents;
70
+ if (d !== undefined) {
71
+ return d;
72
+ }
73
+ let path = _findSidecar();
74
+ let d$1 = path !== undefined ? _parse(Fs.readFileSync(path, "utf-8")) : ({});
75
+ _cache.contents = d$1;
76
+ return d$1;
77
+ }
78
+
79
+ function _envVarName(key) {
80
+ let buf = "REVENTLESS";
81
+ let n = key.length;
82
+ for (let i = 0; i < n; ++i) {
83
+ let ch = key.charAt(i);
84
+ let upper = ch.toUpperCase();
85
+ let isLetter = upper !== ch.toLowerCase();
86
+ let isUpper = isLetter && ch === upper;
87
+ buf = i === 0 || isUpper ? buf + "_" + upper : buf + upper;
88
+ }
89
+ return buf;
90
+ }
91
+
92
+ function get(key) {
93
+ let v = process.env[_envVarName(key)];
94
+ if (v !== undefined && v !== "") {
95
+ return v;
96
+ } else {
97
+ return _load()[key];
98
+ }
99
+ }
100
+
101
+ export {
102
+ _filename,
103
+ _projectFile,
104
+ _cache,
105
+ _findSidecar,
106
+ _stripQuotes,
107
+ _parse,
108
+ _load,
109
+ _envVarName,
110
+ get,
111
+ }
112
+ /* fs Not a pure module */
@@ -0,0 +1,15 @@
1
+ // AWS-specific resource naming operations
2
+
3
+ let invalidNameChars = /[^.\-_a-zA-Z0-9]/g
4
+
5
+ let validateName = String.replaceRegExp(_, invalidNameChars, "_")
6
+
7
+ // Example ARN: arn:aws:sqs:eu-west-1:xxxxxx:MarketplaceServiceExtensionPointCommandTopic-0101023
8
+ let urnName: string => string = arn =>
9
+ arn->String.split(":")->Array.get(5)->Option.getOr("unknown")
10
+
11
+ // Export as operations interface
12
+ let operations: ReventlessInfra.ResourceNaming.operations = {
13
+ validateName,
14
+ urnName,
15
+ }
@@ -0,0 +1,26 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
4
+
5
+ let invalidNameChars = /[^.\-_a-zA-Z0-9]/g;
6
+
7
+ function validateName(__x) {
8
+ return __x.replace(invalidNameChars, "_");
9
+ }
10
+
11
+ function urnName(arn) {
12
+ return Stdlib_Option.getOr(arn.split(":")[5], "unknown");
13
+ }
14
+
15
+ let operations = {
16
+ validateName: validateName,
17
+ urnName: urnName
18
+ };
19
+
20
+ export {
21
+ invalidNameChars,
22
+ validateName,
23
+ urnName,
24
+ operations,
25
+ }
26
+ /* No side effect */