@reventlessdev/reventless-aws 3.0.0-alpha.231 → 3.0.0-alpha.233

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 (104) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/package.json +7 -7
  3. package/src/adapter/Api/AppSyncEventsSigner_Ops.res +137 -0
  4. package/src/adapter/Api/AppSyncEventsSigner_Ops.res.mjs +121 -0
  5. package/src/adapter/Api/Platform_AdminScan_Ops.res +136 -0
  6. package/src/adapter/Api/Platform_AdminScan_Ops.res.mjs +98 -0
  7. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res +12 -90
  8. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res.mjs +11 -84
  9. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda_Ops.res +86 -0
  10. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda_Ops.res.mjs +79 -0
  11. package/src/adapter/Api/Platform_UIFragments_Lambda.res +9 -79
  12. package/src/adapter/Api/Platform_UIFragments_Lambda.res.mjs +7 -143
  13. package/src/adapter/Api/Platform_UIFragments_Lambda_Ops.res +48 -0
  14. package/src/adapter/Api/Platform_UIFragments_Lambda_Ops.res.mjs +63 -0
  15. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync.res +21 -80
  16. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync.res.mjs +23 -68
  17. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync_Ops.res +70 -0
  18. package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync_Ops.res.mjs +68 -0
  19. package/src/adapter/Postgres/PgChangeFeedRelay_Builder.res +1 -1
  20. package/src/adapter/Postgres/PgChangeFeedRelay_Builder.res.mjs +1 -1
  21. package/src/adapter/Postgres/PgMigration_Builder.res +1 -1
  22. package/src/adapter/Postgres/PgMigration_Builder.res.mjs +1 -1
  23. package/src/adapter/Runtime/AutomationSliceEntryPoint.mjs +42 -126
  24. package/src/adapter/Runtime/AutomationSliceEntryPoint_Ops.res +246 -0
  25. package/src/adapter/Runtime/AutomationSliceEntryPoint_Ops.res.mjs +145 -0
  26. package/src/adapter/Runtime/AutomationSliceRuntime_Builder_Single.res +27 -2
  27. package/src/adapter/Runtime/AutomationSliceRuntime_Builder_Single.res.mjs +10 -3
  28. package/src/adapter/Runtime/CounterEntryPoint.mjs +19 -73
  29. package/src/adapter/Runtime/CounterEntryPoint_Ops.res +145 -0
  30. package/src/adapter/Runtime/CounterEntryPoint_Ops.res.mjs +129 -0
  31. package/src/adapter/Runtime/DcbCommandTopicEntryPoint_Ops.res +16 -3
  32. package/src/adapter/Runtime/DcbCommandTopicEntryPoint_Ops.res.mjs +11 -6
  33. package/src/adapter/Runtime/EventCollectorEntryPoint.mjs +52 -510
  34. package/src/adapter/Runtime/EventCollectorEntryPoint_Ops.res +816 -0
  35. package/src/adapter/Runtime/EventCollectorEntryPoint_Ops.res.mjs +651 -0
  36. package/src/adapter/Runtime/EventMapperEntryPoint.mjs +23 -67
  37. package/src/adapter/Runtime/EventMapperEntryPoint_Ops.res +126 -0
  38. package/src/adapter/Runtime/EventMapperEntryPoint_Ops.res.mjs +83 -0
  39. package/src/adapter/Runtime/ExtensionPointEntryPoint.mjs +16 -63
  40. package/src/adapter/Runtime/ExtensionPointEntryPoint_Ops.res +150 -0
  41. package/src/adapter/Runtime/ExtensionPointEntryPoint_Ops.res.mjs +111 -0
  42. package/src/adapter/Runtime/PgChangeFeedRelayEntryPoint.res +96 -0
  43. package/src/adapter/Runtime/PgChangeFeedRelayEntryPoint.res.mjs +70 -0
  44. package/src/adapter/Runtime/PgMigrationEntryPoint.res +54 -0
  45. package/src/adapter/Runtime/PgMigrationEntryPoint.res.mjs +37 -0
  46. package/src/adapter/Runtime/PgQueryResolverEntryPoint.mjs +20 -55
  47. package/src/adapter/Runtime/PgQueryResolverEntryPoint_Ops.res +155 -0
  48. package/src/adapter/Runtime/PgQueryResolverEntryPoint_Ops.res.mjs +94 -0
  49. package/src/adapter/Runtime/ProjectionEntryPoint_Ops.res +80 -0
  50. package/src/adapter/Runtime/ProjectionEntryPoint_Ops.res.mjs +39 -0
  51. package/src/adapter/Runtime/QueryDbEntryPoint_Ops.res +4 -4
  52. package/src/adapter/Runtime/ReadModelEntryPoint.mjs +34 -153
  53. package/src/adapter/Runtime/ReadModelEntryPoint_Ops.res +114 -0
  54. package/src/adapter/Runtime/ReadModelEntryPoint_Ops.res.mjs +83 -0
  55. package/src/adapter/Runtime/SideEffectEntryPoint.mjs +23 -64
  56. package/src/adapter/Runtime/SideEffectEntryPoint_Ops.res +71 -0
  57. package/src/adapter/Runtime/SideEffectEntryPoint_Ops.res.mjs +57 -0
  58. package/src/adapter/Runtime/StateViewSliceEntryPoint.mjs +34 -165
  59. package/src/adapter/Runtime/StateViewSliceEntryPoint_Ops.res +206 -0
  60. package/src/adapter/Runtime/StateViewSliceEntryPoint_Ops.res.mjs +105 -0
  61. package/src/adapter/Runtime/StreamRoutedEntryPoint_Ops.res +156 -0
  62. package/src/adapter/Runtime/StreamRoutedEntryPoint_Ops.res.mjs +123 -0
  63. package/src/adapter/Runtime/TaskBucketEntryPoint.mjs +18 -138
  64. package/src/adapter/Runtime/TaskBucketEntryPoint_Ops.res +198 -0
  65. package/src/adapter/Runtime/TaskBucketEntryPoint_Ops.res.mjs +155 -0
  66. package/src/adapter/StateTopic/StateTopic_AppSync.res +12 -170
  67. package/src/adapter/StateTopic/StateTopic_AppSync.res.mjs +7 -167
  68. package/src/adapter/StateTopic/StateTopic_AppSync_Ops.res +208 -0
  69. package/src/adapter/StateTopic/StateTopic_AppSync_Ops.res.mjs +183 -0
  70. package/src/components/AutomationSlice_Builder.res +2 -0
  71. package/src/components/AutomationSlice_Builder.res.mjs +1 -1
  72. package/src/components/OutboundTranslationSlice_Builder.res +1 -0
  73. package/src/components/OutboundTranslationSlice_Builder.res.mjs +1 -1
  74. package/tests/AppSyncEventsSigner_OpsTest.res +75 -0
  75. package/tests/AppSyncEventsSigner_OpsTest.res.mjs +44 -0
  76. package/tests/AppSyncEventsSigner_ParityFixture.mjs +36 -0
  77. package/tests/AutomationSliceEntryPoint_OpsTest.res +165 -0
  78. package/tests/AutomationSliceEntryPoint_OpsTest.res.mjs +280 -0
  79. package/tests/CounterEntryPoint_OpsTest.res +115 -0
  80. package/tests/CounterEntryPoint_OpsTest.res.mjs +150 -0
  81. package/tests/EventCollectorEntryPoint_OpsTest.res +216 -0
  82. package/tests/EventCollectorEntryPoint_OpsTest.res.mjs +339 -0
  83. package/tests/EventMapperEntryPoint_OpsTest.res +103 -0
  84. package/tests/EventMapperEntryPoint_OpsTest.res.mjs +120 -0
  85. package/tests/ExtensionPointEntryPoint_OpsTest.res +57 -0
  86. package/tests/ExtensionPointEntryPoint_OpsTest.res.mjs +54 -0
  87. package/tests/PgMigrationEntryPoint_IntegrationTest.res +22 -31
  88. package/tests/PgMigrationEntryPoint_IntegrationTest.res.mjs +20 -23
  89. package/tests/PgQueryResolverEntryPoint_OpsTest.res +38 -0
  90. package/tests/PgQueryResolverEntryPoint_OpsTest.res.mjs +31 -0
  91. package/tests/Platform_AdminScan_OpsTest.res +80 -0
  92. package/tests/Platform_AdminScan_OpsTest.res.mjs +127 -0
  93. package/tests/ReadModelEntryPoint_OpsTest.res +141 -0
  94. package/tests/ReadModelEntryPoint_OpsTest.res.mjs +267 -0
  95. package/tests/SideEffectEntryPoint_OpsTest.res +79 -0
  96. package/tests/SideEffectEntryPoint_OpsTest.res.mjs +105 -0
  97. package/tests/StateViewSliceEntryPoint_OpsTest.res +167 -0
  98. package/tests/StateViewSliceEntryPoint_OpsTest.res.mjs +296 -0
  99. package/tests/TaskBucketEntryPoint_OpsTest.res +117 -0
  100. package/tests/TaskBucketEntryPoint_OpsTest.res.mjs +165 -0
  101. package/tests/integration/StateViewSliceEntryPoint_IntegrationTest.res +42 -13
  102. package/tests/integration/StateViewSliceEntryPoint_IntegrationTest.res.mjs +29 -6
  103. package/src/adapter/Runtime/PgChangeFeedRelayEntryPoint.mjs +0 -57
  104. package/src/adapter/Runtime/PgMigrationEntryPoint.mjs +0 -40
@@ -69,20 +69,43 @@ async function createViewTable(tableName) {
69
69
  }
70
70
 
71
71
  let runOneEvent = (async (tableName, eventJson) => {
72
- const { buildJsonEventsHandler } = await import(
73
- "@reventlessdev/reventless-aws/src/adapter/Runtime/StateViewSliceEntryPoint.mjs"
72
+ const Ops = await import(
73
+ "@reventlessdev/reventless-aws/src/adapter/Runtime/StateViewSliceEntryPoint_Ops.res.mjs"
74
74
  );
75
75
  const specModule = await import("./SvsTestSlice.res.mjs");
76
76
  const projectionModule = await import("./SvsTestSlice_Projection.res.mjs");
77
77
  const Effect = await import("effect/Effect");
78
- const Stream = await import("effect/Stream");
79
78
  const { tag: requestContextTag } = await import(
80
79
  "@reventlessdev/reventless-core/src/RequestContext.res.mjs"
81
80
  );
82
81
 
83
- const handler = buildJsonEventsHandler(specModule, projectionModule, tableName, undefined, undefined);
84
- const stream = Stream.fromIterable([eventJson]);
85
- const effect = handler(stream)
82
+ const registered = Ops.makeRegisteredHandler(
83
+ {
84
+ specModule: "",
85
+ projectionModule: "",
86
+ queryDbTableName: tableName,
87
+ sourceUrn: "svs-test-urn",
88
+ stateTopicName: undefined,
89
+ pgConnection: undefined,
90
+ },
91
+ {
92
+ name: specModule.name,
93
+ consumedEventSchema: specModule.consumedEventSchema,
94
+ project: projectionModule.project,
95
+ config: specModule.config,
96
+ subIdConfig: specModule.subIdConfig,
97
+ },
98
+ );
99
+ const event = {
100
+ Records: [
101
+ {
102
+ eventSource: "aws:sqs",
103
+ eventSourceARN: "svs-test-urn",
104
+ body: JSON.stringify(eventJson),
105
+ },
106
+ ],
107
+ };
108
+ const effect = registered.handler(event, {})
86
109
  .pipe(Effect.provideService(requestContextTag, { correlationId: "svs-test" }));
87
110
  await Effect.runPromise(effect);
88
111
  });
@@ -1,57 +0,0 @@
1
- // PgChangeFeedRelay Lambda entry point (scheduled poll — B2.3).
2
- //
3
- // Triggered on a schedule (EventBridge rate rule). Each invocation drains every
4
- // Postgres log listed in HANDLER_CONFIG from its checkpoint — DCB (`dcb_event`)
5
- // and classic aggregate (`event_log`) logs alike — and relays the events,
6
- // transformed into the {id, meta, event} shape, onto the plugin EventCollector
7
- // SQS queue — which then fans out to projections, aggregate command topics, and
8
- // the cross-plugin SNS EventTopic.
9
- // See docs/plans/done/aws-postgres-change-feed-bridge.md.
10
- //
11
- // HANDLER_CONFIG shape:
12
- // { "logs": [ { "pgConnection": {host,port,database,username,secretArn},
13
- // "logName": string, // dcb_event/event_log log_name
14
- // "subscriber": string, // per-log checkpoint key
15
- // "targetQueueUrl": string, // plugin EventCollector SQS URL
16
- // "kind"?: "classic", // absent → DCB
17
- // "partitionTag"?: <derivedPartitionTag> } ] } // DCB only
18
-
19
- import { relay, relayClassic } from "@reventlessdev/reventless-aws/src/adapter/Postgres/PgChangeFeedRelay_Runtime.res.mjs";
20
- import { sendMessage } from "@reventlessdev/reventless-aws/src/util/Util_SQS_Runtime.res.mjs";
21
- import { makeQueueRef, log } from "./HandlerFactoryHelpers.mjs";
22
-
23
- // Standard (non-FIFO) EventCollector queue — no message group id needed. The
24
- // SQS handler parses each body straight back to JSON (Util_SQS_Runtime.parseSqsRecord).
25
- function makeSendBatch(targetQueueUrl) {
26
- const queue = makeQueueRef(targetQueueUrl);
27
- return (jsons) =>
28
- Promise.all(jsons.map((json) => sendMessage(queue, undefined, JSON.stringify(json)))).then(
29
- () => {}
30
- );
31
- }
32
-
33
- export async function handler(_event, _context) {
34
- const configStr = process.env["HANDLER_CONFIG"] || '{"logs":[]}';
35
- const config = JSON.parse(configStr);
36
- const logs = config.logs || [];
37
-
38
- await Promise.all(
39
- logs.map(async (l) => {
40
- const sendBatch = makeSendBatch(l.targetQueueUrl);
41
- try {
42
- const count =
43
- l.kind === "classic"
44
- ? await relayClassic(l.pgConnection, l.logName, l.subscriber, sendBatch)
45
- : await relay(l.pgConnection, l.logName, l.subscriber, l.partitionTag, sendBatch);
46
- log.debug("relayed " + count + " event(s) for " + l.logName, { comp: "PgChangeFeedRelay" });
47
- } catch (err) {
48
- // Log and continue — a failed log this tick is retried next tick from its
49
- // unchanged checkpoint (at-least-once; projections are idempotent).
50
- log.warn("relay failed for " + l.logName + ": " + (err?.message ?? String(err)), {
51
- comp: "PgChangeFeedRelay",
52
- });
53
- }
54
- })
55
- );
56
- return "";
57
- }
@@ -1,40 +0,0 @@
1
- // One-shot Postgres schema-migration Lambda entry point (A3).
2
- //
3
- // Invoked once during `pulumi up` by an `aws.lambda.Invocation` resource, from
4
- // INSIDE the DB's VPC, so the deploy runner needs no network path to a private
5
- // RDS instance. Runs the exact idempotent `PgSchema.ensureSchema` the local
6
- // backend runs at startup (reventless-local's `postgres` smart constructor), so
7
- // the AWS schema is byte-identical to local — zero drift. Every statement is
8
- // `IF NOT EXISTS`, so re-invocation (e.g. after a schema-DDL change bumps the
9
- // Lambda layer) is safe.
10
- //
11
- // HANDLER_CONFIG shape:
12
- // { "pgConnection": { host, port, database, username, secretArn } }
13
-
14
- import { poolFor } from "@reventlessdev/reventless-aws/src/adapter/Postgres/PgRuntime.res.mjs";
15
- import { ensureSchema } from "@reventlessdev/reventless-postgres/src/PgSchema.res.mjs";
16
- import { log } from "./HandlerFactoryHelpers.mjs";
17
-
18
- // Config parse → pool → ensureSchema, with the pool source injectable so the
19
- // orchestration is integration-testable against a real Postgres without the
20
- // Secrets Manager round-trip (mirrors PgChangeFeedRelay_Runtime's
21
- // relayWithPool/relay split). `opts.makePool` defaults to the production `poolFor`.
22
- export async function runMigration(config, opts = {}) {
23
- if (!config.pgConnection) {
24
- throw new Error("PgMigrationEntryPoint: HANDLER_CONFIG has no pgConnection");
25
- }
26
- // `poolFor` memoises one pool per secret ARN per container and resolves the
27
- // RDS-managed password from Secrets Manager via a cached provider.
28
- const makePool = opts.makePool ?? poolFor;
29
- const pool = makePool(config.pgConnection);
30
- await ensureSchema(pool);
31
- log.info("ensureSchema completed for " + config.pgConnection.database, {
32
- comp: "PgMigration",
33
- });
34
- return "ok";
35
- }
36
-
37
- export async function handler(_event, _context) {
38
- const config = JSON.parse(process.env["HANDLER_CONFIG"] || "{}");
39
- return runMigration(config);
40
- }