@reventlessdev/reventless-aws 3.0.0-alpha.343 → 3.0.0-alpha.345

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 (234) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +11 -11
  3. package/scripts/ProvisionIdentity.res +8 -3
  4. package/src/Platform.res +327 -328
  5. package/src/Platform.res.mjs +4 -2
  6. package/src/Platform_Casts.res +13 -4
  7. package/src/adapter/Api/AppSyncEventsSigner_Ops.res +8 -4
  8. package/src/adapter/Api/AppSync_EventsApi.res +12 -14
  9. package/src/adapter/Api/AppSync_Resolver_Native.res +3 -4
  10. package/src/adapter/Api/AppSync_Resolver_Retrying.res +78 -70
  11. package/src/adapter/Api/AppSync_SourceApiAssociation_Retrying.res +11 -8
  12. package/src/adapter/Api/Platform_AdminScan_Ops.res +15 -14
  13. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res +10 -2
  14. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda_Ops.res +40 -50
  15. package/src/adapter/Api/Platform_UIFragments_Lambda.res +39 -32
  16. package/src/adapter/Api/Platform_UIFragments_Lambda_Ops.res +5 -2
  17. package/src/adapter/Auth/Auth_ActiveRolePoolAttachment.res +0 -1
  18. package/src/adapter/Auth/Auth_ActiveRoleStore.res +1 -2
  19. package/src/adapter/Auth/Auth_ActiveRoleStore_Schema.res +1 -4
  20. package/src/adapter/Auth/Auth_ActiveRoleTrigger_Ops.res +5 -2
  21. package/src/adapter/Auth/Auth_Cognito.res +3 -9
  22. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync.res +1 -4
  23. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync_NoOp.res +3 -1
  24. package/src/adapter/CommandGenerator/InboundTranslationResolvers_AppSync.res +1 -4
  25. package/src/adapter/CommandTopic/CommandTopicChannel_SQS.res +7 -4
  26. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Async.res +6 -1
  27. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_FIFO.res +7 -4
  28. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Runtime.res +24 -18
  29. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Sync.res +9 -4
  30. package/src/adapter/CommandTopic/CommandTopicRegistry.res +1 -4
  31. package/src/adapter/Counter/CounterHandler_DynamoDbStream.res +15 -15
  32. package/src/adapter/DcbEventLog/DcbEventLogStorage_DynamoDb.res +9 -5
  33. package/src/adapter/DcbEventLog/DcbEventLogStorage_DynamoDb_Runtime.res +179 -213
  34. package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res +5 -5
  35. package/src/adapter/EventCollector/EventCollectorChannel_Helpers.res +6 -2
  36. package/src/adapter/EventCollector/EventCollectorChannel_SQS.res +14 -7
  37. package/src/adapter/EventCollector/EventCollectorChannel_SQS_FIFO.res +14 -7
  38. package/src/adapter/EventCollector/EventCollectorChannel_SQS_Runtime.res +6 -3
  39. package/src/adapter/EventLog/EventLogStorage_DynamoDbStream.res +6 -1
  40. package/src/adapter/EventLog/EventLogStorage_DynamoDb_Runtime.res +13 -17
  41. package/src/adapter/EventLog/EventLogStorage_Postgres.res +7 -4
  42. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync.res +12 -7
  43. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync_Ops.res +4 -2
  44. package/src/adapter/EventTopic/EventTopicPublisher_DynamoDbStream.res +3 -2
  45. package/src/adapter/EventTopic/EventTopicPublisher_SNS.res +20 -12
  46. package/src/adapter/EventTopic/EventTopicPublisher_SNS_FIFO.res +21 -9
  47. package/src/adapter/EventTopic/EventTopicPublisher_SNS_Runtime.res +5 -3
  48. package/src/adapter/Geocoder/Geocoder_AwsLocation_Resolver.res +6 -3
  49. package/src/adapter/Mcp/MCP_Lambda.res +31 -46
  50. package/src/adapter/Messaging/Messaging_Ses_Backend.res +11 -7
  51. package/src/adapter/Messaging/Messaging_Ses_Backend.res.mjs +2 -4
  52. package/src/adapter/Monitoring/Monitoring_CloudWatch.res +16 -16
  53. package/src/adapter/Postgres/PgChangeFeedRelay_Builder.res +5 -10
  54. package/src/adapter/Postgres/PgChangeFeedRelay_Runtime.res +4 -2
  55. package/src/adapter/Postgres/PgConnection.res +6 -5
  56. package/src/adapter/Postgres/PgMigration_Builder.res +4 -8
  57. package/src/adapter/Postgres/PgRuntime.res +4 -7
  58. package/src/adapter/QueryDb/PgQueryResolver_Builder.res +9 -11
  59. package/src/adapter/QueryDb/PgQueryResolver_Lambda.res +22 -21
  60. package/src/adapter/QueryDb/QueryDbResolvers_AppSync.res +114 -111
  61. package/src/adapter/QueryDb/QueryDbResolvers_Lambda.res +1 -7
  62. package/src/adapter/QueryDb/QueryDbStorage.res +4 -2
  63. package/src/adapter/QueryDb/QueryDbStorage_DynamoDb.res +23 -24
  64. package/src/adapter/QueryDb/QueryDbStorage_DynamoDbStream.res +8 -2
  65. package/src/adapter/QueryDb/QueryDbStorage_DynamoDb_Runtime.res +71 -73
  66. package/src/adapter/QueryDb/QueryDbStorage_Postgres.res +5 -2
  67. package/src/adapter/QueryDb/QueryInterceptor_Provisioning.res +1 -4
  68. package/src/adapter/QueryEngine/QueryEngine_DynamoDb.res +8 -2
  69. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res +73 -81
  70. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro_Async.res +72 -78
  71. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res +44 -67
  72. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate_Async.res +44 -67
  73. package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res +53 -82
  74. package/src/adapter/Runtime/AggregateRuntime_Builder_Single_Async.res +47 -77
  75. package/src/adapter/Runtime/AutomationSliceEntryPoint_Ops.res +18 -11
  76. package/src/adapter/Runtime/AutomationSliceRuntime_Builder_Single.res +80 -97
  77. package/src/adapter/Runtime/CounterEntryPoint_Ops.res +2 -7
  78. package/src/adapter/Runtime/DcbCommandTopicEntryPoint_Ops.res +16 -10
  79. package/src/adapter/Runtime/EventCollectorEntryPoint_Ops.res +24 -15
  80. package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res +17 -37
  81. package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res +31 -57
  82. package/src/adapter/Runtime/EventMapperEntryPoint_Ops.res +18 -24
  83. package/src/adapter/Runtime/ExtensionPointEntryPoint_Ops.res +1 -5
  84. package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res +4 -3
  85. package/src/adapter/Runtime/HeartbeatEntryPoint.res +0 -1
  86. package/src/adapter/Runtime/PgChangeFeedRelayEntryPoint.res +4 -2
  87. package/src/adapter/Runtime/PgMigrationEntryPoint.res +0 -1
  88. package/src/adapter/Runtime/PgQueryResolverEntryPoint_Ops.res +3 -2
  89. package/src/adapter/Runtime/PluginExtensionPointEntryPoint.res +1 -2
  90. package/src/adapter/Runtime/ProjectionEntryPoint_Ops.res +4 -5
  91. package/src/adapter/Runtime/RuntimeEnvironment_Lambda.res +22 -10
  92. package/src/adapter/Runtime/RuntimeExtensionEntryPoint_Ops.res +8 -2
  93. package/src/adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res +14 -31
  94. package/src/adapter/Runtime/StateChangeSliceRuntime_Builder_Single.res +16 -17
  95. package/src/adapter/Runtime/StateViewSliceEntryPoint_Ops.res +10 -9
  96. package/src/adapter/Runtime/StateViewSliceRuntime_Builder_Single.res +46 -52
  97. package/src/adapter/Runtime/StreamRoutedEntryPoint_Ops.res +36 -41
  98. package/src/adapter/Runtime/TaskBucketEntryPoint_Ops.res +31 -37
  99. package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res +6 -7
  100. package/src/adapter/ScheduledPublisher/ScheduledPublisher_CloudWatchEvents.res +4 -6
  101. package/src/adapter/ScheduledPublisher/ScheduledPublisher_CloudWatchEvents_Runtime.res +2 -6
  102. package/src/adapter/StateTopic/StateTopic_AppSync.res +21 -16
  103. package/src/adapter/StateTopic/StateTopic_AppSync_Ops.res +36 -32
  104. package/src/adapter/Task/TaskBucket_S3.res +6 -1
  105. package/src/adapter/Upload/Upload_Claim_S3.res +17 -20
  106. package/src/adapter/Upload/Upload_Claim_S3_Ops.res +5 -2
  107. package/src/adapter/Upload/Upload_Presign_S3.res +51 -49
  108. package/src/capability/Capability_Geocoding_AwsLocation.res +4 -1
  109. package/src/capability/Capability_Messaging.res +4 -5
  110. package/src/capability/Capability_Messaging_Ses.res +3 -1
  111. package/src/capability/Capability_ObjectStore_S3.res +1 -7
  112. package/src/components/Api/AppSync_Adapter.res +28 -41
  113. package/src/components/Api/AppSync_SdlDecorate.res +38 -30
  114. package/src/components/AutomationSlice_Builder.res +6 -4
  115. package/src/components/ExtensionPoint_Builder.res +9 -10
  116. package/src/components/InboundTranslationSlice_Builder.res +7 -8
  117. package/src/components/OutboundTranslationSlice_Builder.res +14 -8
  118. package/src/components/OutboundTranslationSlice_Builder.res.mjs +1 -1
  119. package/src/components/SideEffectHandler_Single.res +4 -4
  120. package/src/components/StateViewSlice_Builder.res +6 -4
  121. package/src/components/StateViewSlice_Builder_Stream.res +6 -4
  122. package/src/components/Task_Builder_PerBucket.res +10 -11
  123. package/src/plugin/cloner/ClonerRunner_Fargate.res +3 -10
  124. package/src/plugin/cloner/ClonerRunner_Fargate_Runtime.res +1 -4
  125. package/src/plugin/heartbeat/HeartbeatRunner_CloudWatchEvents.res +5 -5
  126. package/src/plugin/runtime/PluginExtensionPointRuntime_Builder.res +19 -21
  127. package/src/plugin/runtime/PluginRuntime_Builder.res +167 -188
  128. package/src/plugin/runtime/Util_PluginMessage_Runtime.res +6 -5
  129. package/src/plugin/stack/Plugin_Stack.res +104 -103
  130. package/src/util/Util_AlarmSpec.res +2 -1
  131. package/src/util/Util_AppSync.res +8 -2
  132. package/src/util/Util_AppSync_Caller.res +15 -14
  133. package/src/util/Util_Bundle.res +144 -67
  134. package/src/util/Util_Bundle.res.mjs +64 -13
  135. package/src/util/Util_CognitoGroupUser_Runtime.res +32 -34
  136. package/src/util/Util_Cognito_Runtime.res +11 -7
  137. package/src/util/Util_DeadLetterQueue.res +12 -2
  138. package/src/util/Util_DynamoDb.res +5 -3
  139. package/src/util/Util_DynamoDbStream.res +7 -3
  140. package/src/util/Util_DynamoDbStream_Runtime.res +1 -2
  141. package/src/util/Util_DynamoDb_Runtime.res +23 -41
  142. package/src/util/Util_HostUiDomain.res +6 -1
  143. package/src/util/Util_Kinesis_Runtime.res +10 -11
  144. package/src/util/Util_Lambda.res +12 -5
  145. package/src/util/Util_LambdaEnvBudget.res +5 -5
  146. package/src/util/Util_LambdaLogging.res +1 -2
  147. package/src/util/Util_LogGroup_Adopting.res +1 -4
  148. package/src/util/Util_ResourceNaming.res +1 -2
  149. package/src/util/Util_SNS.res +8 -3
  150. package/src/util/Util_SNS_FIFO.res +1 -1
  151. package/src/util/Util_SNS_Runtime.res +11 -10
  152. package/src/util/Util_SQS.res +4 -2
  153. package/src/util/Util_SQS_FIFO.res +5 -2
  154. package/src/util/Util_SQS_Runtime.res +37 -36
  155. package/src/util/Util_ShellConfig.res +3 -2
  156. package/src/util/Util_StaticBundle.res +1 -3
  157. package/src/util/Util_StoreLayout.res +4 -1
  158. package/tests/AWS_TagsTest.res +16 -5
  159. package/tests/AppSyncEventsSigner_OpsTest.res +11 -2
  160. package/tests/AppSync_AdapterTest.res +203 -224
  161. package/tests/AppSync_Resolver_RetryingTest.res +64 -44
  162. package/tests/AppSync_RetirementNarrowingTest.res +59 -46
  163. package/tests/AppSync_SdlDecorateTest.res +22 -20
  164. package/tests/AppSync_SourceApiAssociation_RetryingTest.res +40 -22
  165. package/tests/Auth_ActiveRolePoolAttachmentTest.res +114 -107
  166. package/tests/Auth_ActiveRoleStoreTest.res +12 -9
  167. package/tests/Auth_ActiveRoleStore_SchemaTest.res +2 -1
  168. package/tests/Auth_ActiveRoleTrigger_OpsTest.res +20 -16
  169. package/tests/Auth_CognitoTest.res +31 -46
  170. package/tests/AutomationSliceEntryPoint_OpsTest.res +69 -67
  171. package/tests/BakeConvergenceTest.res +22 -25
  172. package/tests/Capability_MessagingTest.res +28 -12
  173. package/tests/CommandTopicQueuePolicyTest.res +1 -2
  174. package/tests/CounterEntryPoint_OpsTest.res +3 -7
  175. package/tests/DcbEventLogStorage_DynamoDb_RuntimeTest.res +306 -210
  176. package/tests/EventCollectorConnectLambdaPreviewTest.res +14 -7
  177. package/tests/EventCollectorEntryPoint_OpsTest.res +12 -4
  178. package/tests/EventCollectorPluginDefinitionAssetTest.res +18 -11
  179. package/tests/EventCollectorReadyGateTest.res +5 -4
  180. package/tests/EventLogStorage_DynamoDb_RuntimeTest.res +1 -2
  181. package/tests/EventMapperEntryPoint_OpsTest.res +1 -3
  182. package/tests/ExtensionPointEntryPoint_OpsTest.res +1 -4
  183. package/tests/HandlerFactoryDispatchTest.res +97 -70
  184. package/tests/MCP_LambdaTest.res +16 -27
  185. package/tests/PgChangeFeedRelay_IntegrationTest.res +123 -93
  186. package/tests/PgChangeFeedRelay_RuntimeTest.res +13 -10
  187. package/tests/PgMigrationEntryPoint_IntegrationTest.res +0 -1
  188. package/tests/PgPipeline_IntegrationTest.res +80 -66
  189. package/tests/PgQueryDbUnion_IntegrationTest.res +1 -2
  190. package/tests/PgQueryResolverEntryPoint_OpsTest.res +2 -6
  191. package/tests/PgQueryResolver_LambdaTest.res +41 -24
  192. package/tests/Platform_AdminScan_OpsTest.res +4 -1
  193. package/tests/Platform_ComponentDefinitions_Lambda_OpsTest.res +137 -129
  194. package/tests/ProjectionEntryPoint_DisplayNameTest.res +7 -3
  195. package/tests/ProjectionEntryPoint_UnionStampTest.res +3 -2
  196. package/tests/ProvisionIdentityTest.res +2 -6
  197. package/tests/QueryDbOwnerIndexTableTest.res +6 -4
  198. package/tests/QueryDbResolvers_AppSyncTest.res +23 -16
  199. package/tests/QueryInterceptor_LambdaTest.res +11 -13
  200. package/tests/ReadModelEntryPoint_OpsTest.res +43 -41
  201. package/tests/RuntimeExtensionEntryPoint_OpsTest.res +4 -3
  202. package/tests/SideEffectEntryPoint_OpsTest.res +23 -18
  203. package/tests/StateChangeDescriptorParityTest.res +28 -26
  204. package/tests/StateTopicKeySchemaTest.res +18 -15
  205. package/tests/StateViewSliceEntryPoint_OpsTest.res +55 -44
  206. package/tests/TaskBucketEntryPoint_OpsTest.res +13 -13
  207. package/tests/Upload_ClaimTest.res +3 -3
  208. package/tests/Util_AwsErrorTest.res +4 -7
  209. package/tests/Util_BundleDependencyClosureTest.res +41 -3
  210. package/tests/Util_BundleDependencyClosureTest.res.mjs +11 -0
  211. package/tests/Util_BundleEsmLoaderTest.res +3 -3
  212. package/tests/Util_BundleResolveTest.res +4 -6
  213. package/tests/Util_BundleRuntimeExtensionTest.res +17 -18
  214. package/tests/Util_DcbMetricsTest.res +6 -6
  215. package/tests/Util_DynamoDbStreamTest.res +4 -5
  216. package/tests/Util_DynamoDbTest.res +3 -2
  217. package/tests/Util_LambdaEnvBudgetTest.res +22 -18
  218. package/tests/Util_LambdaLoggingTest.res +9 -8
  219. package/tests/Util_LogGroup_AdoptingTest.res +10 -5
  220. package/tests/Util_LogRetentionTest.res +6 -2
  221. package/tests/Util_OwnerScopeEnvTest.res +10 -8
  222. package/tests/Util_SQS_RuntimeTest.res +5 -7
  223. package/tests/Util_ShellConfigTest.res +7 -17
  224. package/tests/Util_StaticBundleTest.res +3 -8
  225. package/tests/Util_StoreLayoutTest.res +17 -12
  226. package/tests/integration/AggregateEntryPoint_IntegrationTest.res +1 -4
  227. package/tests/integration/DcbCommandTopicEntryPoint_IntegrationTest.res +15 -15
  228. package/tests/integration/DcbEventLogStorage_DynamoDb_IntegrationTest.res +296 -232
  229. package/tests/integration/DcbIntegrationHarness.res +8 -8
  230. package/tests/integration/EpCompositeSlice.res +16 -8
  231. package/tests/integration/QueryDbUnion_DynamoDb_IntegrationTest.res +8 -10
  232. package/tests/integration/StateViewSliceEntryPoint_IntegrationTest.res +10 -10
  233. package/tests/integration/SvsTestSlice_Projection.res +1 -3
  234. package/tests/util/Util_AlarmSpecTest.res +62 -49
@@ -5,29 +5,30 @@ type resolvedTopic = {
5
5
  }
6
6
 
7
7
  let publish = (topic, message) =>
8
- Effect.tryPromise(
9
- ~catch=SNS_Error.classify,
10
- () => AwsSdk.SNS_Helpers.publish(~topicArn=topic.arn, message),
8
+ Effect.tryPromise(~catch=SNS_Error.classify, () =>
9
+ AwsSdk.SNS_Helpers.publish(~topicArn=topic.arn, message)
11
10
  )
12
11
  ->Effect.map(_ => ())
13
12
  ->Effect.retry(SNS_Error.retrySchedule)
14
13
  ->Effect.catchAll(err => {
15
14
  let msg = SNS_Error.message(err)
16
- ReventlessCore.EffectLogger.logError(~comp=__MODULE__, "publish: " ++ msg)
17
- ->Effect.flatMap(_ => Effect.fail(msg))
15
+ ReventlessCore.EffectLogger.logError(~comp=__MODULE__, "publish: " ++ msg)->Effect.flatMap(_ =>
16
+ Effect.fail(msg)
17
+ )
18
18
  })
19
19
  ->Effect.runPromise
20
20
 
21
21
  let publishFifo = (topic, ~messageGroupId, ~message) =>
22
- Effect.tryPromise(
23
- ~catch=SNS_Error.classify,
24
- () => AwsSdk.SNS_Helpers.publish(~topicArn=topic.arn, ~messageGroupId, message),
22
+ Effect.tryPromise(~catch=SNS_Error.classify, () =>
23
+ AwsSdk.SNS_Helpers.publish(~topicArn=topic.arn, ~messageGroupId, message)
25
24
  )
26
25
  ->Effect.map(_ => ())
27
26
  ->Effect.retry(SNS_Error.retrySchedule)
28
27
  ->Effect.catchAll(err => {
29
28
  let msg = SNS_Error.message(err)
30
- ReventlessCore.EffectLogger.logError(~comp=__MODULE__, "publishFifo: " ++ msg)
31
- ->Effect.flatMap(_ => Effect.fail(msg))
29
+ ReventlessCore.EffectLogger.logError(
30
+ ~comp=__MODULE__,
31
+ "publishFifo: " ++ msg,
32
+ )->Effect.flatMap(_ => Effect.fail(msg))
32
33
  })
33
34
  ->Effect.runPromise
@@ -18,7 +18,7 @@ let toResource = (~tags=?, queue: PulumiAws.SQS.Queue.t): ReventlessInfra.Adapte
18
18
  ~urn=queue.arn,
19
19
  ~service=queue.name->Pulumi.Output.apply(_ => AWS.SQS.service),
20
20
  ~resourceType="aws:sqs:Queue"->Pulumi.Output.make,
21
- ~tags=?tags,
21
+ ~tags?,
22
22
  )
23
23
 
24
24
  let fromResource = ({id, name}: ReventlessInfra.Adapter.resource) => {
@@ -59,7 +59,9 @@ let findResolvedResource = resources =>
59
59
  resources->ReventlessCore.Util.AdapterRuntime.findResolvedResource(AWS.SQS.service)
60
60
 
61
61
  module Subscription = {
62
- let toResource = ({eventSourceMapping: {id, arn}}: PulumiAws.SQS.Queue.eventSubscription): ReventlessInfra.Adapter.resource =>
62
+ let toResource = (
63
+ {eventSourceMapping: {id, arn}}: PulumiAws.SQS.Queue.eventSubscription,
64
+ ): ReventlessInfra.Adapter.resource =>
63
65
  ReventlessInfra.Adapter.make(
64
66
  ~name=id,
65
67
  ~id,
@@ -1,11 +1,14 @@
1
- let toResource = (~tags=?, {id, name, arn}: PulumiAws.SQS_Queue.t): ReventlessInfra.Adapter.resource =>
1
+ let toResource = (
2
+ ~tags=?,
3
+ {id, name, arn}: PulumiAws.SQS_Queue.t,
4
+ ): ReventlessInfra.Adapter.resource =>
2
5
  ReventlessInfra.Adapter.make(
3
6
  ~name,
4
7
  ~id,
5
8
  ~urn=arn,
6
9
  ~service=name->Pulumi.Output.apply(_ => AWS.SQS_FIFO.service),
7
10
  ~resourceType="aws:sqs:Queue"->Pulumi.Output.make,
8
- ~tags=?tags,
11
+ ~tags?,
9
12
  )
10
13
 
11
14
  let fromResource = ({id, name}: ReventlessInfra.Adapter.resource) => {
@@ -31,25 +31,24 @@ let sendFifoMessage = (queue, ~delay=?, ~messageGroupId, messageBody) =>
31
31
 
32
32
  let send = (queue, queueService, commandJson) => {
33
33
  let messageBody = commandJson->toMessageBody
34
- Effect.tryPromise(
35
- ~catch=SQS_Error.classify,
36
- () =>
37
- if queueService == AWS.SQS_FIFO {
38
- queue->sendFifoMessage(
39
- ~messageGroupId=safeGroupId(commandJson.id),
40
- ~delay=?commandJson.delay,
41
- messageBody,
42
- )
43
- } else {
44
- queue->sendMessage(~delay=?commandJson.delay, messageBody)
45
- },
34
+ Effect.tryPromise(~catch=SQS_Error.classify, () =>
35
+ if queueService == AWS.SQS_FIFO {
36
+ queue->sendFifoMessage(
37
+ ~messageGroupId=safeGroupId(commandJson.id),
38
+ ~delay=?commandJson.delay,
39
+ messageBody,
40
+ )
41
+ } else {
42
+ queue->sendMessage(~delay=?commandJson.delay, messageBody)
43
+ }
46
44
  )
47
45
  ->Effect.map(_ => ())
48
46
  ->Effect.retry(SQS_Error.sendRetrySchedule)
49
47
  ->Effect.catchAll(err => {
50
48
  let msg = SQS_Error.message(err)
51
- ReventlessCore.EffectLogger.logError(~comp=__MODULE__, "send: " ++ msg)
52
- ->Effect.flatMap(_ => Effect.fail(msg))
49
+ ReventlessCore.EffectLogger.logError(~comp=__MODULE__, "send: " ++ msg)->Effect.flatMap(_ =>
50
+ Effect.fail(msg)
51
+ )
53
52
  })
54
53
  }
55
54
 
@@ -58,7 +57,12 @@ let makeEntry = (queueService, commandJson) => {
58
57
  let messageBody = commandJson->toMessageBody
59
58
 
60
59
  if queueService == AWS.SQS_FIFO {
61
- SQS_Helpers.makeBatchEntryFifo(~groupId=safeGroupId(id), ~messageId, ~messageBody, ~delay=?commandJson.delay)
60
+ SQS_Helpers.makeBatchEntryFifo(
61
+ ~groupId=safeGroupId(id),
62
+ ~messageId,
63
+ ~messageBody,
64
+ ~delay=?commandJson.delay,
65
+ )
62
66
  } else {
63
67
  SQS_Helpers.makeBatchEntry(~messageId, ~messageBody, ~delay=?commandJson.delay)
64
68
  }
@@ -68,12 +72,10 @@ let sendMessagesMaxRetries = 5
68
72
 
69
73
  let sendMessages = (queue, queueService, commandJsons) => {
70
74
  let rec attempt = (retry, toSend) =>
71
- Effect.tryPromise(
72
- ~catch=SQS_Error.classify,
73
- () =>
74
- toSend
75
- ->Array.map(commandJson => makeEntry(queueService, commandJson))
76
- ->SQS_Helpers.sendMessagesParallel(~queueId=queue.id),
75
+ Effect.tryPromise(~catch=SQS_Error.classify, () =>
76
+ toSend
77
+ ->Array.map(commandJson => makeEntry(queueService, commandJson))
78
+ ->SQS_Helpers.sendMessagesParallel(~queueId=queue.id)
77
79
  )
78
80
  ->Effect.retry(SQS_Error.retrySchedule)
79
81
  ->Effect.flatMap(result =>
@@ -88,19 +90,19 @@ let sendMessages = (queue, queueService, commandJsons) => {
88
90
  ReventlessCore.EffectLogger.logInfo(
89
91
  ~comp=__MODULE__,
90
92
  `sendMessages: ${failedIds->Array.length->Int.toString} failed ids, retrying subset`,
91
- )
92
- ->Effect.flatMap(_ => attempt(retry + 1, commandJsonsToRetry))
93
+ )->Effect.flatMap(_ => attempt(retry + 1, commandJsonsToRetry))
93
94
  } else {
94
95
  let ids = failedIds->Array.joinUnsafe(", ")
95
96
  Effect.fail(SQS_Error.Permanent(`sendMessages failed for ids: ${ids}`))
96
97
  }
97
98
  }
98
99
  )
99
- attempt(0, commandJsons)
100
- ->Effect.catchAll(err => {
100
+ attempt(0, commandJsons)->Effect.catchAll(err => {
101
101
  let msg = SQS_Error.message(err)
102
- ReventlessCore.EffectLogger.logError(~comp=__MODULE__, `sendMessages: ${msg}`)
103
- ->Effect.flatMap(_ => Effect.fail(msg))
102
+ ReventlessCore.EffectLogger.logError(
103
+ ~comp=__MODULE__,
104
+ `sendMessages: ${msg}`,
105
+ )->Effect.flatMap(_ => Effect.fail(msg))
104
106
  })
105
107
  }
106
108
 
@@ -117,9 +119,8 @@ let deleteMessagesMaxRetries = 5
117
119
 
118
120
  let deleteMessages = (entries, queue) => {
119
121
  let rec attempt = (retry, toDelete) =>
120
- Effect.tryPromise(
121
- ~catch=SQS_Error.classify,
122
- () => SQS_Helpers.deleteMessagesParallel(~queueId=queue.id, toDelete),
122
+ Effect.tryPromise(~catch=SQS_Error.classify, () =>
123
+ SQS_Helpers.deleteMessagesParallel(~queueId=queue.id, toDelete)
123
124
  )
124
125
  ->Effect.retry(SQS_Error.retrySchedule)
125
126
  ->Effect.flatMap(result =>
@@ -140,19 +141,19 @@ let deleteMessages = (entries, queue) => {
140
141
  ReventlessCore.EffectLogger.logInfo(
141
142
  ~comp=__MODULE__,
142
143
  `deleteMessages: ${failedIds->Array.length->Int.toString} failed ids, retrying subset`,
143
- )
144
- ->Effect.flatMap(_ => attempt(retry + 1, entriesToRetry))
144
+ )->Effect.flatMap(_ => attempt(retry + 1, entriesToRetry))
145
145
  } else {
146
146
  let ids = failedIds->Array.joinUnsafe(", ")
147
147
  Effect.fail(SQS_Error.Permanent(`deleteMessages failed for ids: ${ids}`))
148
148
  }
149
149
  }
150
150
  )
151
- attempt(0, entries)
152
- ->Effect.catchAll(err => {
151
+ attempt(0, entries)->Effect.catchAll(err => {
153
152
  let msg = SQS_Error.message(err)
154
- ReventlessCore.EffectLogger.logError(~comp=__MODULE__, `deleteMessages: ${msg}`)
155
- ->Effect.flatMap(_ => Effect.fail(msg))
153
+ ReventlessCore.EffectLogger.logError(
154
+ ~comp=__MODULE__,
155
+ `deleteMessages: ${msg}`,
156
+ )->Effect.flatMap(_ => Effect.fail(msg))
156
157
  })
157
158
  }
158
159
 
@@ -156,8 +156,9 @@ let fields = (
156
156
  if collisions->Array.length > 0 {
157
157
  failwith(
158
158
  "host UI config.json: shellConfig sets key(s) the deploy already computes — " ++
159
- collisions->Array.join(", ") ++
160
- ". Remove them from shellConfig; a passthrough cannot redirect a computed key.",
159
+ collisions->Array.join(
160
+ ", ",
161
+ ) ++ ". Remove them from shellConfig; a passthrough cannot redirect a computed key.",
161
162
  )
162
163
  }
163
164
  extra->Dict.forEachWithKey((v, k) => out->Dict.set(k, v))
@@ -44,9 +44,7 @@ let rec walkInto = (~dir: string, ~prefix: string, acc: array<fileEntry>): unit
44
44
  */
45
45
  let walk = (assetsDir: string): array<fileEntry> => {
46
46
  if !NodeFs.existsSync(assetsDir) {
47
- JsError.throwWithMessage(
48
- `Util_StaticBundle.walk: assetsDir does not exist: ${assetsDir}`,
49
- )
47
+ JsError.throwWithMessage(`Util_StaticBundle.walk: assetsDir does not exist: ${assetsDir}`)
50
48
  }
51
49
  let acc: array<fileEntry> = []
52
50
  walkInto(~dir=assetsDir, ~prefix="", acc)
@@ -88,7 +88,10 @@ Destroy semantics follow disposability, **not** layout.
88
88
  field rename may destroy a bucket by accident. Only stacks that are routinely
89
89
  torn down are unprotected.
90
90
  */
91
- let protectionFor = (~stack: string, ~ephemeralPrefixes: array<string>=defaultEphemeralPrefixes): protection =>
91
+ let protectionFor = (
92
+ ~stack: string,
93
+ ~ephemeralPrefixes: array<string>=defaultEphemeralPrefixes,
94
+ ): protection =>
92
95
  ephemeralPrefixes->Array.some(p => stack->String.startsWith(p)) ? Unprotected : Protected
93
96
 
94
97
  /**
@@ -18,8 +18,7 @@ let tagsFor = (
18
18
  ~component=?,
19
19
  ~plugin=?,
20
20
  ~platform=?,
21
- ) =>
22
- AWS_Tags.make(~name, ~kind, ~role, ~scope, ~component?, ~plugin?, ~platform?)->toDict
21
+ ) => AWS_Tags.make(~name, ~kind, ~role, ~scope, ~component?, ~plugin?, ~platform?)->toDict
23
22
 
24
23
  describe("AWS_Tags — key set", () => {
25
24
  testSync("emits every reventless: fact exactly once, plus the bare Name", () => {
@@ -50,7 +49,11 @@ describe("AWS_Tags — key set", () => {
50
49
  // `Environment` was a framework fact wearing an un-namespaced name. One
51
50
  // authoritative name per fact — `Name` is the sole bare key, because the AWS
52
51
  // console reads that literal spelling for its resource-name column.
53
- let tags = tagsFor(~name="Products", ~kind=ReventlessCore.ComponentType.ReadModel, ~role=QueryDb)
52
+ let tags = tagsFor(
53
+ ~name="Products",
54
+ ~kind=ReventlessCore.ComponentType.ReadModel,
55
+ ~role=QueryDb,
56
+ )
54
57
  expect(tags->Dict.get("Type"))->toEqual(None)
55
58
  expect(tags->Dict.get("Plugin"))->toEqual(None)
56
59
  expect(tags->Dict.get("Environment"))->toEqual(None)
@@ -166,7 +169,11 @@ describe("AWS_Tags — owner overrides the piece adapter's own kind", () => {
166
169
 
167
170
  describe("AWS_Tags — scope", () => {
168
171
  testSync("component scope names the component, defaulting to the resource name", () => {
169
- let tags = tagsFor(~name="Products", ~kind=ReventlessCore.ComponentType.ReadModel, ~role=QueryDb)
172
+ let tags = tagsFor(
173
+ ~name="Products",
174
+ ~kind=ReventlessCore.ComponentType.ReadModel,
175
+ ~role=QueryDb,
176
+ )
170
177
  expect(tags->Dict.get("reventless:scope"))->toEqual(Some("component"))
171
178
  expect(tags->Dict.get("reventless:component"))->toEqual(Some("Products"))
172
179
  })
@@ -216,7 +223,11 @@ describe("AWS_Tags — plugin attribution", () => {
216
223
  // Adapters sit far below the builder that knows the plugin name, so the
217
224
  // ambient context is how a DynamoDB table learns it belongs to Ordering.
218
225
  let previous = Attribution.enter(~platform="online-shop", ~plugin="Ordering")
219
- let tags = tagsFor(~name="OrderEventLog", ~kind=ReventlessCore.ComponentType.Aggregate, ~role=EventLog)
226
+ let tags = tagsFor(
227
+ ~name="OrderEventLog",
228
+ ~kind=ReventlessCore.ComponentType.Aggregate,
229
+ ~role=EventLog,
230
+ )
220
231
  Attribution.restore(previous)
221
232
  expect(tags->Dict.get("reventless:plugin"))->toEqual(Some("Ordering"))
222
233
  expect(tags->Dict.get("reventless:platform"))->toEqual(Some("online-shop"))
@@ -23,10 +23,19 @@ external signedHeadersJs: (
23
23
  let get = (d, k) => d->Dict.get(k)->Option.getOr("<missing>")
24
24
 
25
25
  // Compare the ReScript signer to the JS reference for one input tuple.
26
- let assertParity = (~host, ~path, ~body, ~region, ~isoNow, ~accessKeyId, ~secretAccessKey, ~sessionToken) => {
26
+ let assertParity = (
27
+ ~host,
28
+ ~path,
29
+ ~body,
30
+ ~region,
31
+ ~isoNow,
32
+ ~accessKeyId,
33
+ ~secretAccessKey,
34
+ ~sessionToken,
35
+ ) => {
27
36
  let creds: AppSyncEventsSigner_Ops.creds = {accessKeyId, secretAccessKey, sessionToken}
28
37
  let mine = AppSyncEventsSigner_Ops.signedHeaders(~host, ~path, ~body, ~region, ~isoNow, ~creds)
29
- let jsCreds: jsCreds = {accessKeyId, secretAccessKey, sessionToken: ?sessionToken}
38
+ let jsCreds: jsCreds = {accessKeyId, secretAccessKey, ?sessionToken}
30
39
  let ref = signedHeadersJs(~host, ~path, ~body, ~region, ~isoNow, ~creds=jsCreds)
31
40
  expect(mine->get("Authorization"))->toBe(ref->get("Authorization"))
32
41
  expect(mine->get("x-amz-date"))->toBe(ref->get("x-amz-date"))