@reventlessdev/reventless-aws 3.0.0-alpha.402 → 3.0.0-alpha.403

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 3.0.0-alpha.403 (2026-10-29)
7
+
8
+ **Note:** Version bump only for package @reventlessdev/reventless-aws
9
+
10
+
11
+
12
+
13
+
6
14
  # 3.0.0-alpha.402 (2026-10-29)
7
15
 
8
16
  * feat(core)!: the caller's IP address leaves the messages a request causes ([aa9e8c7](https://github.com/ReventlessDev/reventless-core/commit/aa9e8c79c0360528a5cfeda2bb88d1da52f28674))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-aws",
3
- "version": "3.0.0-alpha.402",
3
+ "version": "3.0.0-alpha.403",
4
4
  "description": "AWS adapters for Reventless",
5
5
  "license": "Apache-2.0",
6
6
  "bin": {
@@ -22,19 +22,19 @@
22
22
  "sury": "11.0.0",
23
23
  "uuid": "^13.0.0",
24
24
  "yaml": "^2.8.3",
25
+ "@reventlessdev/rescript-pulumi-aws": "3.0.0-alpha.35",
25
26
  "@reventlessdev/rescript-aws-sdk": "3.0.0-alpha.36",
27
+ "@reventlessdev/rescript-node": "2.0.0-alpha.23",
26
28
  "@reventlessdev/rescript-effect": "1.0.0-alpha.1",
27
29
  "@reventlessdev/rescript-jest": "1.0.0-alpha.13",
28
- "@reventlessdev/rescript-node": "2.0.0-alpha.23",
29
- "@reventlessdev/rescript-pulumi-aws": "3.0.0-alpha.35",
30
- "@reventlessdev/rescript-uuid": "2.0.0-alpha.1",
31
30
  "@reventlessdev/rescript-pulumi-pulumi": "3.0.0-alpha.0",
32
- "@reventlessdev/reventless-core": "3.0.0-alpha.312",
33
- "@reventlessdev/reventless-infra": "3.0.0-alpha.209",
34
- "@reventlessdev/reventless-interop": "3.0.0-alpha.42",
35
- "@reventlessdev/reventless-spec": "3.0.0-alpha.180",
36
31
  "@reventlessdev/rescript-web": "1.0.0-alpha.8",
37
- "@reventlessdev/reventless-postgres": "3.0.0-alpha.176"
32
+ "@reventlessdev/reventless-core": "3.0.0-alpha.313",
33
+ "@reventlessdev/rescript-uuid": "2.0.0-alpha.1",
34
+ "@reventlessdev/reventless-postgres": "3.0.0-alpha.177",
35
+ "@reventlessdev/reventless-interop": "3.0.0-alpha.42",
36
+ "@reventlessdev/reventless-infra": "3.0.0-alpha.210",
37
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.181"
38
38
  },
39
39
  "devDependencies": {
40
40
  "rescript": "12.3.1",
@@ -522,6 +522,9 @@ let _makeApiResourceWith = (
522
522
  let appsyncLogConfig: AppSync.GraphQLApi.logConfig = {
523
523
  cloudwatchLogsRoleArn: iamRole.arn->Pulumi.Output.asInput,
524
524
  fieldLogLevel: AppSync.GraphQLApi.ERROR->Pulumi.Input.make,
525
+ // Without it an error line carries the request's arguments and the resolver's
526
+ // context, which hold whatever the caller sent, a person's name included.
527
+ excludeVerboseContent: true->Pulumi.Input.make,
525
528
  }
526
529
 
527
530
  // Resolve the Cognito UserPool — either supplied by the caller (plugin-stack
@@ -268,9 +268,11 @@ function _makeApiResourceWith(name, schema, userPoolConfig, opts) {
268
268
  role: iamRole.name
269
269
  }, customOpts);
270
270
  let appsyncLogConfig_cloudwatchLogsRoleArn = iamRole.arn;
271
+ let appsyncLogConfig_excludeVerboseContent = true;
271
272
  let appsyncLogConfig = {
272
273
  cloudwatchLogsRoleArn: appsyncLogConfig_cloudwatchLogsRoleArn,
273
- fieldLogLevel: "ERROR"
274
+ fieldLogLevel: "ERROR",
275
+ excludeVerboseContent: appsyncLogConfig_excludeVerboseContent
274
276
  };
275
277
  let userPoolConfigOut = userPoolConfig !== undefined ? userPoolConfig : Auth_Cognito$ReventlessAws.make(name + `-auth`, undefined).apply(c => ({
276
278
  userPoolId: c.userPoolId,
@@ -88,9 +88,10 @@ let lambdaRole = IAM.Role.makeWithDefaultPolicy(
88
88
  // bug removes the message that was stranded by it. Seven of them were still
89
89
  // cycling twelve hours after the fix that made them impossible.
90
90
  //
91
- // What the loop costs is now a function of the line, not the count: the full
92
- // record is written once — on the first delivery, the one carrying the diagnostic
93
- // — and every redelivery after it costs a single identity line. A stranded
91
+ // What the loop costs is now a function of the line, not the count: the first
92
+ // delivery writes the record's ids, kind, size and attribute names — never its
93
+ // body, which is a command or event and may be about a person — and every
94
+ // redelivery after it costs a single identity line. A stranded
94
95
  // message is ~150 KB over a fortnight rather than ~17 MB, which is small enough
95
96
  // that ending the loop early is an operator's job rather than the topology's.
96
97
  let entryPointCode = `export const handler = async (event) => {
@@ -104,7 +105,12 @@ let entryPointCode = `export const handler = async (event) => {
104
105
  " receiveCount=" + receiveCount +
105
106
  " bodyBytes=" + (record?.body?.length ?? 0);
106
107
  if (receiveCount <= 1) {
107
- console.error("DEAD LETTER ITEM: " + identity, JSON.stringify(record));
108
+ // Ids, type and size, never the body: a dead letter is a command or event,
109
+ // and its payload may be about a person.
110
+ const body = (() => { try { return JSON.parse(record?.body ?? "null") } catch { return null } })();
111
+ const kind = body?.command?.TAG ?? body?.event?.TAG ?? (body?.Message ? "sns" : "unknown");
112
+ console.error("DEAD LETTER ITEM: " + identity + " kind=" + kind +
113
+ " attributes=" + JSON.stringify(Object.keys(record?.messageAttributes ?? {})));
108
114
  } else {
109
115
  console.error("DEAD LETTER REDELIVERY: " + identity);
110
116
  }
@@ -56,7 +56,12 @@ let entryPointCode = `export const handler = async (event) => {
56
56
  " receiveCount=" + receiveCount +
57
57
  " bodyBytes=" + (record?.body?.length ?? 0);
58
58
  if (receiveCount <= 1) {
59
- console.error("DEAD LETTER ITEM: " + identity, JSON.stringify(record));
59
+ // Ids, type and size, never the body: a dead letter is a command or event,
60
+ // and its payload may be about a person.
61
+ const body = (() => { try { return JSON.parse(record?.body ?? "null") } catch { return null } })();
62
+ const kind = body?.command?.TAG ?? body?.event?.TAG ?? (body?.Message ? "sns" : "unknown");
63
+ console.error("DEAD LETTER ITEM: " + identity + " kind=" + kind +
64
+ " attributes=" + JSON.stringify(Object.keys(record?.messageAttributes ?? {})));
60
65
  } else {
61
66
  console.error("DEAD LETTER REDELIVERY: " + identity);
62
67
  }