@reventlessdev/reventless-aws 3.0.0-alpha.219 → 3.0.0-alpha.221

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 (164) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/package.json +8 -8
  3. package/src/Platform.res.mjs +4 -0
  4. package/src/Platform_Stack.res +6 -0
  5. package/src/Platform_Stack.res.mjs +3 -1
  6. package/src/adapter/AWS_Tags.res +127 -12
  7. package/src/adapter/AWS_Tags.res.mjs +58 -17
  8. package/src/adapter/Api/AppSync_SourceApiAssociation_Retrying.res +26 -1
  9. package/src/adapter/Api/AppSync_SourceApiAssociation_Retrying.res.mjs +12 -1
  10. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res +13 -1
  11. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res.mjs +3 -4
  12. package/src/adapter/Api/Platform_UIFragments_Lambda.res +13 -1
  13. package/src/adapter/Api/Platform_UIFragments_Lambda.res.mjs +3 -4
  14. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync.res +12 -0
  15. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync.res.mjs +4 -2
  16. package/src/adapter/CommandGenerator/InboundTranslationResolvers_AppSync.res +6 -0
  17. package/src/adapter/CommandGenerator/InboundTranslationResolvers_AppSync.res.mjs +2 -1
  18. package/src/adapter/CommandTopic/CommandTopicChannel_SQS.res +2 -2
  19. package/src/adapter/CommandTopic/CommandTopicChannel_SQS.res.mjs +2 -2
  20. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Async.res +2 -2
  21. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Async.res.mjs +2 -2
  22. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_FIFO.res +2 -2
  23. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_FIFO.res.mjs +2 -2
  24. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Sync.res +2 -2
  25. package/src/adapter/CommandTopic/CommandTopicChannel_SQS_Sync.res.mjs +2 -2
  26. package/src/adapter/Counter/CounterHandler_DynamoDbStream.res +1 -0
  27. package/src/adapter/Counter/CounterHandler_DynamoDbStream.res.mjs +1 -1
  28. package/src/adapter/DcbEventLog/DcbEventLogStorage_DynamoDb.res +1 -1
  29. package/src/adapter/DcbEventLog/DcbEventLogStorage_DynamoDb.res.mjs +1 -2
  30. package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res +1 -1
  31. package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res.mjs +1 -1
  32. package/src/adapter/EventCollector/EventCollectorChannel_SQS.res +2 -2
  33. package/src/adapter/EventCollector/EventCollectorChannel_SQS.res.mjs +2 -2
  34. package/src/adapter/EventCollector/EventCollectorChannel_SQS_FIFO.res +2 -2
  35. package/src/adapter/EventCollector/EventCollectorChannel_SQS_FIFO.res.mjs +2 -2
  36. package/src/adapter/EventLog/EventLogStorage.res +3 -3
  37. package/src/adapter/EventLog/EventLogStorage.res.mjs +3 -3
  38. package/src/adapter/EventLog/EventLogStorage_DynamoDb.res +2 -2
  39. package/src/adapter/EventLog/EventLogStorage_DynamoDb.res.mjs +2 -2
  40. package/src/adapter/EventLog/EventLogStorage_DynamoDbStream.res +2 -2
  41. package/src/adapter/EventLog/EventLogStorage_DynamoDbStream.res.mjs +2 -2
  42. package/src/adapter/EventLog/EventLogStorage_Postgres.res +1 -1
  43. package/src/adapter/EventLog/EventLogStorage_Postgres.res.mjs +1 -1
  44. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync.res +7 -1
  45. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync.res.mjs +2 -2
  46. package/src/adapter/EventTopic/EventTopicPublisher_DynamoDbStream.res +1 -1
  47. package/src/adapter/EventTopic/EventTopicPublisher_DynamoDbStream.res.mjs +1 -1
  48. package/src/adapter/EventTopic/EventTopicPublisher_SNS.res +2 -2
  49. package/src/adapter/EventTopic/EventTopicPublisher_SNS.res.mjs +2 -2
  50. package/src/adapter/EventTopic/EventTopicPublisher_SNS_FIFO.res +2 -2
  51. package/src/adapter/EventTopic/EventTopicPublisher_SNS_FIFO.res.mjs +2 -2
  52. package/src/adapter/Mcp/MCP_Lambda.res.mjs +1 -1
  53. package/src/adapter/Postgres/PgChangeFeedRelay_Builder.res +7 -0
  54. package/src/adapter/Postgres/PgChangeFeedRelay_Builder.res.mjs +4 -2
  55. package/src/adapter/Postgres/PgMigration_Builder.res +1 -0
  56. package/src/adapter/Postgres/PgMigration_Builder.res.mjs +1 -1
  57. package/src/adapter/QueryDb/PgQueryResolver_Builder.res +7 -0
  58. package/src/adapter/QueryDb/PgQueryResolver_Builder.res.mjs +4 -2
  59. package/src/adapter/QueryDb/QueryDbStorage.res +6 -6
  60. package/src/adapter/QueryDb/QueryDbStorage.res.mjs +6 -6
  61. package/src/adapter/QueryDb/QueryDbStorage_DynamoDb.res +2 -2
  62. package/src/adapter/QueryDb/QueryDbStorage_DynamoDb.res.mjs +2 -2
  63. package/src/adapter/QueryDb/QueryDbStorage_DynamoDbStream.res +2 -2
  64. package/src/adapter/QueryDb/QueryDbStorage_DynamoDbStream.res.mjs +2 -2
  65. package/src/adapter/QueryDb/QueryDbStorage_Postgres.res +1 -1
  66. package/src/adapter/QueryDb/QueryDbStorage_Postgres.res.mjs +1 -1
  67. package/src/adapter/Runtime/AdminEventCollectorEntryPoint.mjs +24 -41
  68. package/src/adapter/Runtime/AggregateEntryPoint.mjs +52 -45
  69. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res +19 -2
  70. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res.mjs +8 -5
  71. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro_Async.res +19 -2
  72. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro_Async.res.mjs +8 -5
  73. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res +9 -1
  74. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res.mjs +4 -2
  75. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate_Async.res +9 -1
  76. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate_Async.res.mjs +4 -2
  77. package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res +9 -1
  78. package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res.mjs +4 -2
  79. package/src/adapter/Runtime/AggregateRuntime_Builder_Single_Async.res +9 -1
  80. package/src/adapter/Runtime/AggregateRuntime_Builder_Single_Async.res.mjs +4 -2
  81. package/src/adapter/Runtime/AutomationSliceEntryPoint.mjs +36 -22
  82. package/src/adapter/Runtime/AutomationSliceRuntime_Builder_Single.res +1 -0
  83. package/src/adapter/Runtime/AutomationSliceRuntime_Builder_Single.res.mjs +1 -1
  84. package/src/adapter/Runtime/DcbCommandTopicEntryPoint.mjs +39 -42
  85. package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res +7 -1
  86. package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res.mjs +4 -2
  87. package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res +19 -1
  88. package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs +5 -2
  89. package/src/adapter/Runtime/EventMapperEntryPoint.mjs +25 -23
  90. package/src/adapter/Runtime/ExtensionPointEntryPoint.mjs +25 -41
  91. package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res +1 -0
  92. package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res.mjs +1 -1
  93. package/src/adapter/Runtime/HandlerFactoryHelpers.mjs +126 -0
  94. package/src/adapter/Runtime/PluginExtensionPointEntryPoint.mjs +24 -41
  95. package/src/adapter/Runtime/ReadModelEntryPoint.mjs +33 -24
  96. package/src/adapter/Runtime/RuntimeEnvironment_Lambda.res +52 -2
  97. package/src/adapter/Runtime/RuntimeEnvironment_Lambda.res.mjs +25 -7
  98. package/src/adapter/Runtime/SideEffectEntryPoint.mjs +25 -24
  99. package/src/adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res +9 -1
  100. package/src/adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res.mjs +4 -2
  101. package/src/adapter/Runtime/StateChangeSliceRuntime_Builder_Single.res +1 -0
  102. package/src/adapter/Runtime/StateChangeSliceRuntime_Builder_Single.res.mjs +1 -1
  103. package/src/adapter/Runtime/StateViewSliceEntryPoint.mjs +26 -21
  104. package/src/adapter/Runtime/StateViewSliceRuntime_Builder_Single.res +2 -1
  105. package/src/adapter/Runtime/StateViewSliceRuntime_Builder_Single.res.mjs +2 -2
  106. package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res +1 -0
  107. package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res.mjs +1 -1
  108. package/src/adapter/ScheduledPublisher/ScheduledPublisher_CloudWatchEvents.res +12 -0
  109. package/src/adapter/ScheduledPublisher/ScheduledPublisher_CloudWatchEvents.res.mjs +4 -2
  110. package/src/adapter/StateTopic/StateTopic_AppSync.res +7 -1
  111. package/src/adapter/StateTopic/StateTopic_AppSync.res.mjs +2 -2
  112. package/src/adapter/Task/TaskBucket_S3.res +1 -0
  113. package/src/adapter/Task/TaskBucket_S3.res.mjs +7 -1
  114. package/src/components/Aggregate_Builder_Micro.res.mjs +2 -0
  115. package/src/components/Aggregate_Builder_NoResolver.res.mjs +2 -0
  116. package/src/components/Aggregate_Builder_PerAggregate.res.mjs +2 -0
  117. package/src/components/Aggregate_Builder_Single.res.mjs +2 -0
  118. package/src/components/Aggregate_Builder_Single_Async.res.mjs +2 -0
  119. package/src/components/Api/AppSync_Adapter.res +12 -0
  120. package/src/components/Api/AppSync_Adapter.res.mjs +6 -2
  121. package/src/components/Api/AppSync_MergedApi.res +12 -0
  122. package/src/components/Api/AppSync_MergedApi.res.mjs +5 -2
  123. package/src/components/AutomationSlice_Builder.res.mjs +2 -0
  124. package/src/components/ExtensionPoint_Builder.res.mjs +2 -0
  125. package/src/components/ForeignReadModel_Builder.res.mjs +4 -0
  126. package/src/components/OutboundTranslationSlice_Builder.res.mjs +2 -0
  127. package/src/components/Plugin.res.mjs +2 -0
  128. package/src/components/ReadModel_Builder_NoResolver.res.mjs +2 -0
  129. package/src/components/ReadModel_Builder_NoResolver_Stream.res.mjs +2 -0
  130. package/src/components/ReadModel_Builder_PerReadModel.res.mjs +2 -0
  131. package/src/components/ReadModel_Builder_Single.res.mjs +2 -0
  132. package/src/components/ReadModel_Builder_Single_Stream.res.mjs +2 -0
  133. package/src/components/SideEffectHandler_PerSideEffectHandler.res.mjs +6 -0
  134. package/src/components/SideEffectHandler_Single.res.mjs +4 -0
  135. package/src/components/StateViewSlice_Builder.res.mjs +2 -0
  136. package/src/components/StateViewSlice_Builder_Stream.res.mjs +2 -0
  137. package/src/components/Task_Builder_PerBucket.res.mjs +4 -0
  138. package/src/components/Vpc.res +10 -1
  139. package/src/components/Vpc.res.mjs +3 -1
  140. package/src/plugin/cloner/ClonerRunner_Fargate.res +26 -1
  141. package/src/plugin/cloner/ClonerRunner_Fargate.res.mjs +9 -6
  142. package/src/plugin/heartbeat/HeartbeatRunner_CloudWatchEvents.res +6 -0
  143. package/src/plugin/heartbeat/HeartbeatRunner_CloudWatchEvents.res.mjs +4 -1
  144. package/src/plugin/runtime/PluginExtensionPointRuntime_Builder.res +1 -0
  145. package/src/plugin/runtime/PluginExtensionPointRuntime_Builder.res.mjs +1 -1
  146. package/src/plugin/runtime/PluginRuntime_Builder.res +2 -0
  147. package/src/plugin/runtime/PluginRuntime_Builder.res.mjs +2 -2
  148. package/src/plugin/stack/Plugin_ExtensionPoint_Builder.res.mjs +4 -0
  149. package/src/plugin/stack/Plugin_Stack.res +26 -1
  150. package/src/plugin/stack/Plugin_Stack.res.mjs +8 -3
  151. package/src/util/Util_CognitoGroupUser.res +6 -0
  152. package/src/util/Util_CognitoGroupUser.res.mjs +3 -1
  153. package/src/util/Util_DeadLetterQueue.res +8 -2
  154. package/src/util/Util_DeadLetterQueue.res.mjs +3 -4
  155. package/src/util/Util_LogAttribution.res +31 -0
  156. package/src/util/Util_LogAttribution.res.mjs +27 -0
  157. package/tests/AWS_TagsTest.res +236 -0
  158. package/tests/AWS_TagsTest.res.mjs +153 -0
  159. package/tests/AppSync_SourceApiAssociation_RetryingTest.res +26 -0
  160. package/tests/AppSync_SourceApiAssociation_RetryingTest.res.mjs +20 -0
  161. package/tests/HandlerFactoryDispatchTest.res +190 -0
  162. package/tests/HandlerFactoryDispatchTest.res.mjs +135 -0
  163. package/tests/integration/AggregateEntryPoint_IntegrationTest.res +5 -3
  164. package/tests/integration/AggregateEntryPoint_IntegrationTest.res.mjs +5 -3
@@ -6,6 +6,7 @@ import * as Output$Pulumi from "@reventlessdev/rescript-pulumi-pulumi/src/Output
6
6
  import * as Stdlib_String from "@rescript/runtime/lib/es6/Stdlib_String.js";
7
7
  import * as Pulumi from "@pulumi/pulumi";
8
8
  import * as AWS$ReventlessAws from "../AWS.res.mjs";
9
+ import * as AWS_Tags$ReventlessAws from "../AWS_Tags.res.mjs";
9
10
  import * as PolicyDocument$PulumiAws from "@reventlessdev/rescript-pulumi-aws/src/IAM/PolicyDocument.res.mjs";
10
11
  import * as Util_Pulumi$ReventlessCore from "@reventlessdev/reventless-core/src/util/Util_Pulumi.res.mjs";
11
12
  import * as AppSync_Resolver_Functions$PulumiAws from "@reventlessdev/rescript-pulumi-aws/src/AppSync/AppSync_Resolver_Functions.res.mjs";
@@ -15,7 +16,7 @@ import * as CommandSubscriptionResolvers_AppSync$ReventlessAws from "../Api/Comm
15
16
  function make(api, runtime, fieldNames, opts) {
16
17
  let opts$1 = Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions(opts);
17
18
  let lambda = runtime.parts.lambda;
18
- let dataSourceRole = IAM$PulumiAws.Role.makeWithDefaultPolicy("InboundTranslationDS", Pulumi.output(AWS$ReventlessAws.AppSync.principal), opts$1);
19
+ let dataSourceRole = IAM$PulumiAws.Role.makeWithDefaultPolicy("InboundTranslationDS", Pulumi.output(AWS$ReventlessAws.AppSync.principal), AWS_Tags$ReventlessAws.make("InboundTranslationDS", "Plugin", "Identity", "Plugin", undefined, undefined, undefined, undefined), opts$1);
19
20
  Pulumi.all([
20
21
  Output$Pulumi.flatMap(lambda, lambda => lambda.arn),
21
22
  dataSourceRole.id
@@ -44,11 +44,11 @@ let make: ReventlessCore.CommandTopic_Adapter.channelMaker<
44
44
  'context,
45
45
  Util.SQS.channelParts,
46
46
  Util.Lambda.runtimeParts,
47
- > = (~name, ~opts=?) => {
47
+ > = (~name, ~owner, ~opts=?) => {
48
48
  let opts =
49
49
  opts->Option.map(ReventlessCore.Util.Pulumi.ComponentResourceOptions.toCustomResourceOptions)
50
50
 
51
- let tags = AWS.Tags.make(~name, ReventlessCore.CommandTopic.componentType)
51
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.CommandTopic.componentType, ~role=CommandTopic, ~owner?)
52
52
  let queue = PulumiAws.SQS.Queue.make(
53
53
  ~name,
54
54
  ~args={
@@ -38,9 +38,9 @@ function connect(name, channel, runtime, resources, opts) {
38
38
  return [CommandTopicChannel_Helpers$ReventlessAws.subscribeLambda2SqsTopic(batchSizeRef.contents, lambda, name, queue, opts$1)];
39
39
  }
40
40
 
41
- function make(name, opts) {
41
+ function make(name, owner, opts) {
42
42
  let opts$1 = Stdlib_Option.map(opts, Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions);
43
- let tags = AWS_Tags$ReventlessAws.make(name, CommandTopic$ReventlessCore.componentType);
43
+ let tags = AWS_Tags$ReventlessAws.make(name, CommandTopic$ReventlessCore.componentType, "CommandTopic", undefined, undefined, owner, undefined, undefined);
44
44
  let queue = new (Aws.sqs.Queue)(name, {
45
45
  redrivePolicy: Util_DeadLetterQueue$ReventlessAws.queue.arn.apply(dlqArn => SQS_Queue$PulumiAws.RedrivePolicy.make(dlqArn, 5)),
46
46
  tags: tags,
@@ -20,10 +20,10 @@ let make: ReventlessCore.CommandTopic_Adapter.channelMaker<
20
20
  'context,
21
21
  Util.SQS.channelParts,
22
22
  Util.Lambda.runtimeParts,
23
- > = (~name, ~opts=?) => {
23
+ > = (~name, ~owner, ~opts=?) => {
24
24
  let opts =
25
25
  opts->Option.map(ReventlessCore.Util.Pulumi.ComponentResourceOptions.toCustomResourceOptions)
26
- let tags = AWS.Tags.make(~name, ReventlessCore.CommandTopic.componentType)
26
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.CommandTopic.componentType, ~role=CommandTopic, ~owner?)
27
27
  let queue = PulumiAws.SQS.Queue.make(
28
28
  ~name,
29
29
  ~args={
@@ -17,9 +17,9 @@ import * as Util_DeadLetterQueue$ReventlessAws from "../../util/Util_DeadLetterQ
17
17
  import * as CommandTopicChannel_SQS$ReventlessAws from "./CommandTopicChannel_SQS.res.mjs";
18
18
  import * as CommandTopicChannel_SQS_Runtime$ReventlessAws from "./CommandTopicChannel_SQS_Runtime.res.mjs";
19
19
 
20
- function make(name, opts) {
20
+ function make(name, owner, opts) {
21
21
  let opts$1 = Stdlib_Option.map(opts, Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions);
22
- let tags = AWS_Tags$ReventlessAws.make(name, CommandTopic$ReventlessCore.componentType);
22
+ let tags = AWS_Tags$ReventlessAws.make(name, CommandTopic$ReventlessCore.componentType, "CommandTopic", undefined, undefined, owner, undefined, undefined);
23
23
  let queue = new (Aws.sqs.Queue)(name, {
24
24
  contentBasedDeduplication: true,
25
25
  fifoQueue: true,
@@ -9,10 +9,10 @@ let make: ReventlessCore.CommandTopic_Adapter.channelMaker<
9
9
  'context,
10
10
  Util.SQS.channelParts,
11
11
  Util.Lambda.runtimeParts,
12
- > = (~name, ~opts=?) => {
12
+ > = (~name, ~owner, ~opts=?) => {
13
13
  let opts =
14
14
  opts->Option.map(ReventlessCore.Util.Pulumi.ComponentResourceOptions.toCustomResourceOptions)
15
- let tags = AWS.Tags.make(~name, ReventlessCore.CommandTopic.componentType)
15
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.CommandTopic.componentType, ~role=CommandTopic, ~owner?)
16
16
  let queue = PulumiAws.SQS.Queue.make(
17
17
  ~name,
18
18
  ~args={
@@ -17,9 +17,9 @@ import * as Util_DeadLetterQueue$ReventlessAws from "../../util/Util_DeadLetterQ
17
17
  import * as CommandTopicChannel_SQS$ReventlessAws from "./CommandTopicChannel_SQS.res.mjs";
18
18
  import * as CommandTopicChannel_SQS_Runtime$ReventlessAws from "./CommandTopicChannel_SQS_Runtime.res.mjs";
19
19
 
20
- function make(name, opts) {
20
+ function make(name, owner, opts) {
21
21
  let opts$1 = Stdlib_Option.map(opts, Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions);
22
- let tags = AWS_Tags$ReventlessAws.make(name, CommandTopic$ReventlessCore.componentType);
22
+ let tags = AWS_Tags$ReventlessAws.make(name, CommandTopic$ReventlessCore.componentType, "CommandTopic", undefined, undefined, owner, undefined, undefined);
23
23
  let queue = new (Aws.sqs.Queue)(name, {
24
24
  contentBasedDeduplication: true,
25
25
  fifoQueue: true,
@@ -20,7 +20,7 @@ let make: ReventlessCore.CommandTopic_Adapter.channelMaker<
20
20
  'context,
21
21
  Util.SQS.channelParts,
22
22
  Util.Lambda.runtimeParts,
23
- > = (~name, ~opts=?) => {
23
+ > = (~name, ~owner, ~opts=?) => {
24
24
  // Captured when handleChannelEvent is called; used by publishJsonsAndWait to
25
25
  // run the handler inline and collect typed outcomes without going through SQS.
26
26
  let handleCmdsRef: ref<option<ReventlessCore.CommandTopic.jsonCommandsHandler>> = ref(None)
@@ -28,7 +28,7 @@ let make: ReventlessCore.CommandTopic_Adapter.channelMaker<
28
28
  let opts =
29
29
  opts->Option.map(ReventlessCore.Util.Pulumi.ComponentResourceOptions.toCustomResourceOptions)
30
30
 
31
- let tags = AWS.Tags.make(~name, ReventlessCore.CommandTopic.componentType)
31
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.CommandTopic.componentType, ~role=CommandTopic, ~owner?)
32
32
  let queue = PulumiAws.SQS.Queue.make(
33
33
  ~name,
34
34
  ~args={
@@ -15,12 +15,12 @@ import * as Util_DeadLetterQueue$ReventlessAws from "../../util/Util_DeadLetterQ
15
15
  import * as CommandTopicChannel_SQS$ReventlessAws from "./CommandTopicChannel_SQS.res.mjs";
16
16
  import * as CommandTopicChannel_SQS_Runtime$ReventlessAws from "./CommandTopicChannel_SQS_Runtime.res.mjs";
17
17
 
18
- function make(name, opts) {
18
+ function make(name, owner, opts) {
19
19
  let handleCmdsRef = {
20
20
  contents: undefined
21
21
  };
22
22
  let opts$1 = Stdlib_Option.map(opts, Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions);
23
- let tags = AWS_Tags$ReventlessAws.make(name, CommandTopic$ReventlessCore.componentType);
23
+ let tags = AWS_Tags$ReventlessAws.make(name, CommandTopic$ReventlessCore.componentType, "CommandTopic", undefined, undefined, owner, undefined, undefined);
24
24
  let queue = new (Aws.sqs.Queue)(name, {
25
25
  redrivePolicy: Util_DeadLetterQueue$ReventlessAws.queue.arn.apply(dlqArn => SQS_Queue$PulumiAws.RedrivePolicy.make(dlqArn, 5)),
26
26
  tags: tags,
@@ -60,6 +60,7 @@ let make: ReventlessCore.Counter_Adapter.handlerMaker = (
60
60
  let runtime = RuntimeEnvironment_Lambda.makeFromCodeAsset(
61
61
  ~name,
62
62
  ~unitKind=ReventlessCore.Monitoring.Other("Counter"),
63
+ ~componentKind=ReventlessCore.ComponentType.Counter,
63
64
  ~code,
64
65
  ~sourceCodeHash,
65
66
  ~envVars,
@@ -40,7 +40,7 @@ function make(name, referencesName, referencesDb, countsName, countsDb, param, s
40
40
  let runtime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(name, {
41
41
  TAG: "Other",
42
42
  _0: "Counter"
43
- }, match.code, match.sourceCodeHash, envVars, 1024, 30, undefined, undefined, undefined, undefined, undefined, componentOpts);
43
+ }, "Counter", match.code, match.sourceCodeHash, envVars, 1024, 30, undefined, undefined, undefined, undefined, undefined, componentOpts);
44
44
  let lambda = runtime.parts.lambda;
45
45
  let subscribe = (sourceName, source) => Util_EventSourceMapping$ReventlessAws.subscribe(undefined, lambda, name, sourceName, source, opts);
46
46
  subscribe(referencesName, referencesStream);
@@ -50,7 +50,7 @@ let make: ReventlessCore.DcbEventLog_Adapter.storageMaker = (
50
50
 
51
51
  // Create DynamoDB table with stream enabled — EventTopicPublisher_DynamoDbStream
52
52
  // needs a DynamoDbStream resource to connect the EventTopic.
53
- let tags = AWS.Tags.make(~name, ReventlessCore.DcbEventLog.componentType)
53
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.ComponentType.Plugin, ~role=DcbEventLog, ~scope=Plugin)
54
54
  let table = Util_DynamoDbStream.makeTable(
55
55
  name,
56
56
  ~attributes,
@@ -1,7 +1,6 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
2
 
3
3
  import * as AWS_Tags$ReventlessAws from "../AWS_Tags.res.mjs";
4
- import * as DcbEventLog$ReventlessCore from "@reventlessdev/reventless-core/src/components/DcbEventLog/DcbEventLog.res.mjs";
5
4
  import * as Util_DynamoDb$ReventlessAws from "../../util/Util_DynamoDb.res.mjs";
6
5
  import * as Util_DynamoDbStream$ReventlessAws from "../../util/Util_DynamoDbStream.res.mjs";
7
6
  import * as DcbEventLogStorage_DynamoDb_Runtime$ReventlessAws from "./DcbEventLogStorage_DynamoDb_Runtime.res.mjs";
@@ -31,7 +30,7 @@ function make(name, indexes, partitionTag, crossPartitionTagKeysOpt, opts) {
31
30
  rangeKey: "position"
32
31
  };
33
32
  });
34
- let tags = AWS_Tags$ReventlessAws.make(name, DcbEventLog$ReventlessCore.componentType);
33
+ let tags = AWS_Tags$ReventlessAws.make(name, "Plugin", "DcbEventLog", "Plugin", undefined, undefined, undefined, undefined);
35
34
  let table = Util_DynamoDbStream$ReventlessAws.makeTable(attributes, globalSecondaryIndexes, undefined, "position", "NEW_IMAGE", tags, opts, name);
36
35
  return {
37
36
  resources: [Util_DynamoDbStream$ReventlessAws.toResource(tags, table)],
@@ -30,7 +30,7 @@ let connect = (
30
30
  let make: ReventlessCore.EventCollector_Adapter.channelMaker<callbackEvent, 'context, channelParts> = (
31
31
  ~name as _,
32
32
  ~eventTopics,
33
- ~opts as _,
33
+ ~owner as _, ~opts as _,
34
34
  ) => {
35
35
  // Postgres-backed event logs have NO storage resources (no table, no stream) —
36
36
  // skip them instead of producing undefined entries; their events arrive via the
@@ -20,7 +20,7 @@ function connect(name, channelSpecs, runtime, opts) {
20
20
  return EventCollectorChannel_Helpers$ReventlessAws.connectLambda(lambda, name, lambdaRole, queues, eventTopics, resources, opts$1);
21
21
  }
22
22
 
23
- function make(param, eventTopics, param$1) {
23
+ function make(param, eventTopics, param$1, param$2) {
24
24
  let eventTopicResources = Stdlib_Array.filterMap(Object.values(eventTopics), outputs => outputs.resources[0]);
25
25
  let enqueueEventNotSupported = (delay, id, messageBody) => {
26
26
  log.debug("EventCollectorChannel_DynamoDbStream", Object.fromEntries([
@@ -33,11 +33,11 @@ let connect = (
33
33
  let make: ReventlessCore.EventCollector_Adapter.channelMaker<callbackEvent, 'context, channelParts> = (
34
34
  ~name,
35
35
  ~eventTopics,
36
- ~opts,
36
+ ~owner, ~opts,
37
37
  ) => {
38
38
  let opts = opts->ReventlessCore.Util.Pulumi.ComponentResourceOptions.toCustomResourceOptions
39
39
 
40
- let tags = AWS.Tags.make(~name, ReventlessCore.EventCollector.componentType)
40
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.EventCollector.componentType, ~role=EventCollector, ~owner?)
41
41
  let queue = PulumiAws.SQS.Queue.make(
42
42
  ~name,
43
43
  ~args={
@@ -25,9 +25,9 @@ function connect(name, channelSpecs, runtime, opts) {
25
25
  return EventCollectorChannel_Helpers$ReventlessAws.connectLambda(lambda, name, lambdaRole, queues, eventTopics, resources, opts$1);
26
26
  }
27
27
 
28
- function make(name, eventTopics, opts) {
28
+ function make(name, eventTopics, owner, opts) {
29
29
  let opts$1 = Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions(opts);
30
- let tags = AWS_Tags$ReventlessAws.make(name, EventCollector$ReventlessCore.componentType);
30
+ let tags = AWS_Tags$ReventlessAws.make(name, EventCollector$ReventlessCore.componentType, "EventCollector", undefined, undefined, owner, undefined, undefined);
31
31
  let queue = new (Aws.sqs.Queue)(name, {
32
32
  redrivePolicy: Util_DeadLetterQueue$ReventlessAws.queue.arn.apply(dlqArn => SQS_Queue$PulumiAws.RedrivePolicy.make(dlqArn, 5)),
33
33
  tags: tags,
@@ -7,11 +7,11 @@ let connect = EventCollectorChannel_SQS.connect
7
7
  let make: ReventlessCore.EventCollector_Adapter.channelMaker<callbackEvent, 'context, channelParts> = (
8
8
  ~name,
9
9
  ~eventTopics,
10
- ~opts,
10
+ ~owner, ~opts,
11
11
  ) => {
12
12
  let opts = opts->ReventlessCore.Util.Pulumi.ComponentResourceOptions.toCustomResourceOptions
13
13
 
14
- let tags = AWS.Tags.make(~name, ReventlessCore.EventCollector.componentType)
14
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.EventCollector.componentType, ~role=EventCollector, ~owner?)
15
15
  let queue = PulumiAws.SQS.Queue.make(
16
16
  ~name,
17
17
  ~args={
@@ -10,9 +10,9 @@ import * as Util_DeadLetterQueue$ReventlessAws from "../../util/Util_DeadLetterQ
10
10
  import * as EventCollectorChannel_SQS$ReventlessAws from "./EventCollectorChannel_SQS.res.mjs";
11
11
  import * as EventCollectorChannel_SQS_Runtime$ReventlessAws from "./EventCollectorChannel_SQS_Runtime.res.mjs";
12
12
 
13
- function make(name, eventTopics, opts) {
13
+ function make(name, eventTopics, owner, opts) {
14
14
  let opts$1 = Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions(opts);
15
- let tags = AWS_Tags$ReventlessAws.make(name, EventCollector$ReventlessCore.componentType);
15
+ let tags = AWS_Tags$ReventlessAws.make(name, EventCollector$ReventlessCore.componentType, "EventCollector", undefined, undefined, owner, undefined, undefined);
16
16
  let queue = new (Aws.sqs.Queue)(name, {
17
17
  contentBasedDeduplication: true,
18
18
  fifoQueue: true,
@@ -9,10 +9,10 @@ module Postgres = EventLogStorage_Postgres
9
9
  // or the streamed DynamoDB maker. Used by the Single (sync/async) aggregate
10
10
  // builders; PerAggregate and Micro stay on `DynamoDbStream` directly.
11
11
  module Selectable = {
12
- let make: ReventlessCore.EventLog_Adapter.storageMaker = (~name, ~opts) =>
12
+ let make: ReventlessCore.EventLog_Adapter.storageMaker = (~name, ~owner, ~opts) =>
13
13
  if EventLogBackend.isPostgres() {
14
- Postgres.make(~name, ~opts)
14
+ Postgres.make(~name, ~owner, ~opts)
15
15
  } else {
16
- DynamoDbStream.make(~name, ~opts)
16
+ DynamoDbStream.make(~name, ~owner, ~opts)
17
17
  }
18
18
  }
@@ -4,11 +4,11 @@ import * as EventLogBackend$ReventlessAws from "./EventLogBackend.res.mjs";
4
4
  import * as EventLogStorage_Postgres$ReventlessAws from "./EventLogStorage_Postgres.res.mjs";
5
5
  import * as EventLogStorage_DynamoDbStream$ReventlessAws from "./EventLogStorage_DynamoDbStream.res.mjs";
6
6
 
7
- function make(name, opts) {
7
+ function make(name, owner, opts) {
8
8
  if (EventLogBackend$ReventlessAws.isPostgres()) {
9
- return EventLogStorage_Postgres$ReventlessAws.make(name, opts);
9
+ return EventLogStorage_Postgres$ReventlessAws.make(name, owner, opts);
10
10
  } else {
11
- return EventLogStorage_DynamoDbStream$ReventlessAws.make(name, opts);
11
+ return EventLogStorage_DynamoDbStream$ReventlessAws.make(name, owner, opts);
12
12
  }
13
13
  }
14
14
 
@@ -1,5 +1,5 @@
1
- let make: ReventlessCore.EventLog_Adapter.storageMaker = (~name, ~opts) => {
2
- let tags = AWS.Tags.make(~name, ReventlessCore.EventLog.componentType)
1
+ let make: ReventlessCore.EventLog_Adapter.storageMaker = (~name, ~owner, ~opts) => {
2
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.EventLog.componentType, ~role=EventLog, ~owner?)
3
3
  let table = Util.DynamoDb.makeTable(
4
4
  name,
5
5
  ~attributes=[{name: "id", type_: "S"}, {name: "position", type_: "S"}],
@@ -5,8 +5,8 @@ import * as EventLog$ReventlessCore from "@reventlessdev/reventless-core/src/com
5
5
  import * as Util_DynamoDb$ReventlessAws from "../../util/Util_DynamoDb.res.mjs";
6
6
  import * as EventLogStorage_DynamoDb_Runtime$ReventlessAws from "./EventLogStorage_DynamoDb_Runtime.res.mjs";
7
7
 
8
- function make(name, opts) {
9
- let tags = AWS_Tags$ReventlessAws.make(name, EventLog$ReventlessCore.componentType);
8
+ function make(name, owner, opts) {
9
+ let tags = AWS_Tags$ReventlessAws.make(name, EventLog$ReventlessCore.componentType, "EventLog", undefined, undefined, owner, undefined, undefined);
10
10
  let table = Util_DynamoDb$ReventlessAws.makeTable([
11
11
  {
12
12
  name: "id",
@@ -1,5 +1,5 @@
1
- let make: ReventlessCore.EventLog_Adapter.storageMaker = (~name, ~opts) => {
2
- let tags = AWS.Tags.make(~name, ReventlessCore.EventLog.componentType)
1
+ let make: ReventlessCore.EventLog_Adapter.storageMaker = (~name, ~owner, ~opts) => {
2
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.EventLog.componentType, ~role=EventLog, ~owner?)
3
3
  let table = Util.DynamoDbStream.makeTable(
4
4
  name,
5
5
  ~attributes=[{name: "id", type_: "S"}, {name: "position", type_: "S"}],
@@ -6,8 +6,8 @@ import * as Util_DynamoDb$ReventlessAws from "../../util/Util_DynamoDb.res.mjs";
6
6
  import * as Util_DynamoDbStream$ReventlessAws from "../../util/Util_DynamoDbStream.res.mjs";
7
7
  import * as EventLogStorage_DynamoDb_Runtime$ReventlessAws from "./EventLogStorage_DynamoDb_Runtime.res.mjs";
8
8
 
9
- function make(name, opts) {
10
- let tags = AWS_Tags$ReventlessAws.make(name, EventLog$ReventlessCore.componentType);
9
+ function make(name, owner, opts) {
10
+ let tags = AWS_Tags$ReventlessAws.make(name, EventLog$ReventlessCore.componentType, "EventLog", undefined, undefined, owner, undefined, undefined);
11
11
  let table = Util_DynamoDbStream$ReventlessAws.makeTable([
12
12
  {
13
13
  name: "id",
@@ -11,7 +11,7 @@
11
11
  //
12
12
  // Selected by `EventLogStorage.Selectable` when `EventLogBackend` holds a selection.
13
13
 
14
- let make: ReventlessCore.EventLog_Adapter.storageMaker = (~name, ~opts as _) => {
14
+ let make: ReventlessCore.EventLog_Adapter.storageMaker = (~name, ~owner as _, ~opts as _) => {
15
15
  // `name` is the ComponentType-derived `<Aggregate>EventLog` — the canonical
16
16
  // `event_log.log_name`. Register it so `makePlatform` can wire the change-feed
17
17
  // relay; the collector queue is attached later in forPluginEventCollector,
@@ -4,7 +4,7 @@ import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
4
4
  import * as EventLogBackend$ReventlessAws from "./EventLogBackend.res.mjs";
5
5
  import * as EventLogStorage_Postgres_Runtime$ReventlessAws from "./EventLogStorage_Postgres_Runtime.res.mjs";
6
6
 
7
- function make(name, param) {
7
+ function make(name, param, param$1) {
8
8
  let aggregateName = name.endsWith("EventLog") ? name.slice(0, name.length - 8 | 0) : name;
9
9
  EventLogBackend$ReventlessAws.registerRelayLog(name, aggregateName);
10
10
  let match = EventLogBackend$ReventlessAws.get();
@@ -160,6 +160,12 @@ let make = (
160
160
  let lambdaRole = IAM.Role.makeWithDefaultPolicy(
161
161
  ~name=name ++ "EventLogSubRole",
162
162
  ~servicePrincipal=AWS.Lambda.principal->Pulumi.Output.make,
163
+ ~tags=AWS.Tags.make(
164
+ ~name=name ++ "EventLogSubRole",
165
+ ~kind=ReventlessCore.EventTopic.componentType,
166
+ ~role=Identity,
167
+ ~component=name,
168
+ ),
163
169
  ~opts,
164
170
  )
165
171
 
@@ -239,7 +245,7 @@ let make = (
239
245
  memorySize: 128->Pulumi.Input.make,
240
246
  timeout: 30->Pulumi.Input.make,
241
247
  layers,
242
- tags: AWS.Tags.make(~name=name ++ "EventLogSub", ReventlessCore.EventTopic.componentType),
248
+ tags: AWS.Tags.make(~name=name ++ "EventLogSub", ~kind=ReventlessCore.EventTopic.componentType, ~role=EventLogSubscription, ~component=name),
243
249
  environment: (
244
250
  {
245
251
  Lambda.Function.variables: Dict.fromArray([
@@ -110,7 +110,7 @@ function make(name, topicName, eventTopicOutputs, eventsApi, opts) {
110
110
  }, opts);
111
111
  });
112
112
  Util_SQS$ReventlessAws.subscribeToSnsTopic(queue, name + "EventLogSub", name, snsResource, opts);
113
- let lambdaRole = IAM$PulumiAws.Role.makeWithDefaultPolicy(name + "EventLogSubRole", Pulumi.output(AWS$ReventlessAws.Lambda.principal), opts);
113
+ let lambdaRole = IAM$PulumiAws.Role.makeWithDefaultPolicy(name + "EventLogSubRole", Pulumi.output(AWS$ReventlessAws.Lambda.principal), AWS_Tags$ReventlessAws.make(name + "EventLogSubRole", EventTopic$ReventlessCore.componentType, "Identity", undefined, name, undefined, undefined, undefined), opts);
114
114
  Pulumi.all([
115
115
  queue.arn,
116
116
  eventsApi.api.apiArn
@@ -158,7 +158,7 @@ function make(name, topicName, eventTopicOutputs, eventsApi, opts) {
158
158
  memorySize: 128,
159
159
  timeout: 30,
160
160
  layers: layers,
161
- tags: AWS_Tags$ReventlessAws.make(name + "EventLogSub", EventTopic$ReventlessCore.componentType),
161
+ tags: AWS_Tags$ReventlessAws.make(name + "EventLogSub", EventTopic$ReventlessCore.componentType, "EventLogSubscription", undefined, name, undefined, undefined, undefined),
162
162
  environment: {
163
163
  variables: Object.fromEntries([
164
164
  [
@@ -1,7 +1,7 @@
1
1
  let make: ReventlessCore.EventTopic_Adapter.publisherMaker = (
2
2
  ~name as _,
3
3
  ~storageResources,
4
- ~opts as _,
4
+ ~owner as _, ~opts as _,
5
5
  ) => {
6
6
  let storageResource = storageResources->Util.DynamoDbStream.findResource
7
7
 
@@ -7,7 +7,7 @@ import * as AWS$ReventlessAws from "../AWS.res.mjs";
7
7
  import * as Adapter$ReventlessCore from "@reventlessdev/reventless-core/src/adapter/Adapter.res.mjs";
8
8
  import * as Util_DynamoDbStream$ReventlessAws from "../../util/Util_DynamoDbStream.res.mjs";
9
9
 
10
- function make(param, storageResources, param$1) {
10
+ function make(param, storageResources, param$1, param$2) {
11
11
  let storageResource = Util_DynamoDbStream$ReventlessAws.findResource(storageResources);
12
12
  return {
13
13
  resources: [Adapter$ReventlessCore.outputToResource(storageResource.service.apply(service => {
@@ -4,9 +4,9 @@ open PulumiAws
4
4
  Read by subscriptionInfraHook (Phase 5) to skip non-SNS entries. */
5
5
  let snsRegistry: Set.t<string> = Set.make()
6
6
 
7
- let make: ReventlessCore.EventTopic_Adapter.publisherMaker = (~name, ~storageResources as _, ~opts) => {
7
+ let make: ReventlessCore.EventTopic_Adapter.publisherMaker = (~name, ~storageResources as _, ~owner, ~opts) => {
8
8
  snsRegistry->Set.add(name)
9
- let tags = AWS.Tags.make(~name, ReventlessCore.EventTopic.componentType)
9
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.EventTopic.componentType, ~role=EventTopic, ~owner?)
10
10
  let topic = SNS.Topic.make(
11
11
  ~name,
12
12
  ~args={SNS.Topic.tags: tags},
@@ -11,9 +11,9 @@ import * as EventTopicPublisher_SNS_Runtime$ReventlessAws from "./EventTopicPubl
11
11
 
12
12
  let snsRegistry = new Set();
13
13
 
14
- function make(name, param, opts) {
14
+ function make(name, param, owner, opts) {
15
15
  snsRegistry.add(name);
16
- let tags = AWS_Tags$ReventlessAws.make(name, EventTopic$ReventlessCore.componentType);
16
+ let tags = AWS_Tags$ReventlessAws.make(name, EventTopic$ReventlessCore.componentType, "EventTopic", undefined, undefined, owner, undefined, undefined);
17
17
  let topic = new (Aws.sns.Topic)(name, {
18
18
  tags: tags
19
19
  }, opts);
@@ -1,7 +1,7 @@
1
1
  open PulumiAws
2
2
 
3
- let make: ReventlessCore.EventTopic_Adapter.publisherMaker = (~name, ~storageResources as _, ~opts) => {
4
- let tags = AWS.Tags.make(~name, ReventlessCore.EventTopic.componentType)
3
+ let make: ReventlessCore.EventTopic_Adapter.publisherMaker = (~name, ~storageResources as _, ~owner, ~opts) => {
4
+ let tags = AWS.Tags.make(~name, ~kind=ReventlessCore.EventTopic.componentType, ~role=EventTopic, ~owner?)
5
5
  let topic = SNS.Topic.make(
6
6
  ~name,
7
7
  ~args={
@@ -10,8 +10,8 @@ import * as EventTopic$ReventlessCore from "@reventlessdev/reventless-core/src/c
10
10
  import * as Util_SNS_FIFO$ReventlessAws from "../../util/Util_SNS_FIFO.res.mjs";
11
11
  import * as EventTopicPublisher_SNS_Runtime$ReventlessAws from "./EventTopicPublisher_SNS_Runtime.res.mjs";
12
12
 
13
- function make(name, param, opts) {
14
- let tags = AWS_Tags$ReventlessAws.make(name, EventTopic$ReventlessCore.componentType);
13
+ function make(name, param, owner, opts) {
14
+ let tags = AWS_Tags$ReventlessAws.make(name, EventTopic$ReventlessCore.componentType, "EventTopic", undefined, undefined, owner, undefined, undefined);
15
15
  let topic = new (Aws.sns.Topic)(name, {
16
16
  contentBasedDeduplication: true,
17
17
  fifoTopic: true,
@@ -263,7 +263,7 @@ async function dispatchTool(tool, args, identity) {
263
263
  meta: payload_meta,
264
264
  identity: identity
265
265
  };
266
- return await Runtime$ReventlessCore.runEffect(undefined, undefined, `Mcp(` + tool.name + `)`, undefined, identity, undefined, generateCommand(payload));
266
+ return await Runtime$ReventlessCore.runEffect(undefined, undefined, `Mcp(` + tool.name + `)`, undefined, undefined, undefined, identity, undefined, generateCommand(payload));
267
267
  }
268
268
 
269
269
  export {
@@ -102,6 +102,7 @@ let make = (
102
102
  let runtime = RuntimeEnvironment_Lambda.makeFromCodeAsset(
103
103
  ~name,
104
104
  ~unitKind=ReventlessCore.Monitoring.Other("ChangeFeed"),
105
+ ~componentKind=ReventlessCore.ComponentType.Platform,
105
106
  ~code,
106
107
  ~sourceCodeHash,
107
108
  ~envVars,
@@ -153,6 +154,12 @@ let make = (
153
154
  ~args={
154
155
  description: "Poll Postgres DCB change feed and relay to EventCollector"->Pulumi.Input.make,
155
156
  scheduleExpression: EventRule.ScheduleExpression.every(Minutes(intervalMinutes)),
157
+ tags: AWS.Tags.make(
158
+ ~name=`${Pulumi.Pulumi.getStackName()}-${name}`,
159
+ ~kind=ReventlessCore.ComponentType.Platform,
160
+ ~role=Scheduler,
161
+ ~component=name,
162
+ ),
156
163
  },
157
164
  ~opts=?customOpts,
158
165
  )
@@ -8,6 +8,7 @@ import * as Pulumi from "@pulumi/pulumi";
8
8
  import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
9
9
  import * as AWS$ReventlessAws from "../AWS.res.mjs";
10
10
  import * as DcbTag$Reventless from "@reventlessdev/reventless-spec/src/components/DcbTag.res.mjs";
11
+ import * as AWS_Tags$ReventlessAws from "../AWS_Tags.res.mjs";
11
12
  import * as Adapter$ReventlessCore from "@reventlessdev/reventless-core/src/adapter/Adapter.res.mjs";
12
13
  import * as PolicyDocument$PulumiAws from "@reventlessdev/rescript-pulumi-aws/src/IAM/PolicyDocument.res.mjs";
13
14
  import * as Util_Bundle$ReventlessAws from "../../util/Util_Bundle.res.mjs";
@@ -71,7 +72,7 @@ function make(name, logs, securityGroupId, subnetIds, intervalMinutesOpt, opts)
71
72
  let runtime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(name, {
72
73
  TAG: "Other",
73
74
  _0: "ChangeFeed"
74
- }, match.code, match.sourceCodeHash, envVars, undefined, undefined, undefined, undefined, undefined, undefined, vpcConfig, opts);
75
+ }, "Platform", match.code, match.sourceCodeHash, envVars, undefined, undefined, undefined, undefined, undefined, undefined, vpcConfig, opts);
75
76
  let secretArns = logs.map(l => l.connectionConfig.apply(cc => cc.secretArn));
76
77
  let queueArns = logs.map(l => l.targetQueueArn);
77
78
  Pulumi.all([
@@ -102,7 +103,8 @@ function make(name, logs, securityGroupId, subnetIds, intervalMinutesOpt, opts)
102
103
  scheduleExpression: Primitive_option.some(Cloudwatch_EventRule$PulumiAws.ScheduleExpression.every({
103
104
  TAG: "Minutes",
104
105
  _0: intervalMinutes
105
- }))
106
+ })),
107
+ tags: AWS_Tags$ReventlessAws.make(Pulumi.getStack() + `-` + name, "Platform", "Scheduler", undefined, name, undefined, undefined, undefined)
106
108
  }, customOpts !== undefined ? Primitive_option.valFromOption(customOpts) : undefined);
107
109
  let lambda = runtime.parts.lambda;
108
110
  Pulumi.all([
@@ -54,6 +54,7 @@ let make = (
54
54
  let runtime = RuntimeEnvironment_Lambda.makeFromCodeAsset(
55
55
  ~name,
56
56
  ~unitKind=ReventlessCore.Monitoring.Other("Migration"),
57
+ ~componentKind=ReventlessCore.ComponentType.Platform,
57
58
  ~code,
58
59
  ~sourceCodeHash,
59
60
  ~envVars,
@@ -24,7 +24,7 @@ function make(name, handlerConfig, secretArn, securityGroupId, subnetIds, opts)
24
24
  let runtime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(name, {
25
25
  TAG: "Other",
26
26
  _0: "Migration"
27
- }, match.code, sourceCodeHash, envVars, undefined, undefined, undefined, undefined, undefined, undefined, vpcConfig, opts);
27
+ }, "Platform", match.code, sourceCodeHash, envVars, undefined, undefined, undefined, undefined, undefined, undefined, vpcConfig, opts);
28
28
  let rolePolicy = new (Aws.iam.RolePolicy)(name + `MigrationAccess`, {
29
29
  policy: secretArn.apply(arn => PolicyDocument$PulumiAws.toJsonString(PolicyDocument$PulumiAws.make(undefined, name + `MigrationAccessPolicy`, [{
30
30
  Sid: "AllowGetSecret",
@@ -151,6 +151,7 @@ let provision = (
151
151
  let runtime = RuntimeEnvironment_Lambda.makeFromCodeAsset(
152
152
  ~name,
153
153
  ~unitKind=ReventlessCore.Monitoring.Other("QueryResolver"),
154
+ ~componentKind=ReventlessCore.ComponentType.QueryDb,
154
155
  ~code,
155
156
  ~sourceCodeHash,
156
157
  ~envVars,
@@ -188,6 +189,12 @@ let provision = (
188
189
  let dataSourceRole = IAM.Role.makeWithDefaultPolicy(
189
190
  ~name=name ++ "DataSource",
190
191
  ~servicePrincipal=AWS.AppSync.principal->Pulumi.Output.make,
192
+ ~tags=AWS.Tags.make(
193
+ ~name=name ++ "DataSource",
194
+ ~kind=ReventlessCore.QueryDb.componentType,
195
+ ~role=Identity,
196
+ ~component=name,
197
+ ),
191
198
  ~opts=customOpts,
192
199
  )
193
200
  let lambdaArn = runtime.parts.lambda->Pulumi.Output.flatMap(l => l.arn)
@@ -9,6 +9,8 @@ import * as Pulumi from "@pulumi/pulumi";
9
9
  import * as Primitive_string from "@rescript/runtime/lib/es6/Primitive_string.js";
10
10
  import * as AWS$ReventlessAws from "../AWS.res.mjs";
11
11
  import * as Logger$ReventlessCore from "@reventlessdev/reventless-core/src/util/Logger.res.mjs";
12
+ import * as AWS_Tags$ReventlessAws from "../AWS_Tags.res.mjs";
13
+ import * as QueryDb$ReventlessCore from "@reventlessdev/reventless-core/src/components/QueryDb/QueryDb.res.mjs";
12
14
  import * as PolicyDocument$PulumiAws from "@reventlessdev/rescript-pulumi-aws/src/IAM/PolicyDocument.res.mjs";
13
15
  import * as Util_Bundle$ReventlessAws from "../../util/Util_Bundle.res.mjs";
14
16
  import * as PgConnection$ReventlessAws from "../Postgres/PgConnection.res.mjs";
@@ -90,7 +92,7 @@ function provision(api, selection, opts) {
90
92
  let runtime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(name, {
91
93
  TAG: "Other",
92
94
  _0: "QueryResolver"
93
- }, match.code, match.sourceCodeHash, envVars, 512, 30, undefined, undefined, undefined, undefined, vpcConfig, opts);
95
+ }, "QueryDb", match.code, match.sourceCodeHash, envVars, 512, 30, undefined, undefined, undefined, undefined, vpcConfig, opts);
94
96
  selection.connectionConfig.apply(cc => new (Aws.iam.RolePolicy)(name + "-pgSecret", {
95
97
  policy: PolicyDocument$PulumiAws.toJsonString(PolicyDocument$PulumiAws.make(undefined, name + "-pgSecretPolicy", [{
96
98
  Sid: "AllowGetPgSecret",
@@ -100,7 +102,7 @@ function provision(api, selection, opts) {
100
102
  }])),
101
103
  role: runtime.parts.lambdaRole.id
102
104
  }));
103
- let dataSourceRole = IAM$PulumiAws.Role.makeWithDefaultPolicy(name + "DataSource", Pulumi.output(AWS$ReventlessAws.AppSync.principal), customOpts);
105
+ let dataSourceRole = IAM$PulumiAws.Role.makeWithDefaultPolicy(name + "DataSource", Pulumi.output(AWS$ReventlessAws.AppSync.principal), AWS_Tags$ReventlessAws.make(name + "DataSource", QueryDb$ReventlessCore.componentType, "Identity", undefined, name, undefined, undefined, undefined), customOpts);
104
106
  let lambdaArn = Output$Pulumi.flatMap(runtime.parts.lambda, l => l.arn);
105
107
  Pulumi.all([
106
108
  lambdaArn,