@reventlessdev/reventless-local 3.0.0-alpha.307 → 3.0.0-alpha.308

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,22 @@
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.308 (2026-10-29)
7
+
8
+ * feat(core)!: every reader opens a sealed field, with the keys its batch prepared ([d4ac204](https://github.com/ReventlessDev/reventless-core/commit/d4ac204c307d34617d4e32c556030b44bb55b178))
9
+
10
+ ### BREAKING CHANGES
11
+
12
+ * `Pii.provider` has `prefetch` and `openNow` in place of `open_`.
13
+
14
+ Not yet: `prepare` in the AWS entry points, the conformance scenario, the runs on
15
+ DynamoDB and Postgres.
16
+
17
+ Begins step PD10 of docs/plans/a-personal-field-is-marked-redacted-and-encrypted-at-the-seam.md.
18
+ Claude-Session: https://claude.ai/code/session_01HiQfdxVEsHwLHRoHSUcus1
19
+
20
+
21
+
6
22
  # 3.0.0-alpha.307 (2026-10-29)
7
23
 
8
24
  **Note:** Version bump only for package @reventlessdev/reventless-local
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-local",
3
- "version": "3.0.0-alpha.307",
3
+ "version": "3.0.0-alpha.308",
4
4
  "description": "Local platform for Reventless (in-memory or SQLite backend, for development and testing without AWS)",
5
5
  "license": "Apache-2.0",
6
6
  "bin": {
@@ -35,18 +35,18 @@
35
35
  "sury": "11.0.0",
36
36
  "ws": "^8.18.0",
37
37
  "@reventlessdev/rescript-effect": "1.0.0-alpha.1",
38
- "@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.29",
39
- "@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.24",
40
38
  "@reventlessdev/rescript-jest": "1.0.0-alpha.13",
39
+ "@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.24",
41
40
  "@reventlessdev/rescript-node": "2.0.0-alpha.24",
41
+ "@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.29",
42
42
  "@reventlessdev/rescript-pulumi-pulumi": "3.0.0-alpha.0",
43
- "@reventlessdev/reventless-gwt": "1.0.0-alpha.264",
44
- "@reventlessdev/reventless-core": "3.0.0-alpha.316",
45
- "@reventlessdev/reventless-graphql-server": "1.0.0-alpha.164",
46
- "@reventlessdev/reventless-infra": "3.0.0-alpha.213",
47
- "@reventlessdev/reventless-postgres": "3.0.0-alpha.180",
43
+ "@reventlessdev/reventless-core": "3.0.0-alpha.317",
44
+ "@reventlessdev/reventless-graphql-server": "1.0.0-alpha.165",
45
+ "@reventlessdev/reventless-gwt": "1.0.0-alpha.265",
46
+ "@reventlessdev/reventless-postgres": "3.0.0-alpha.181",
47
+ "@reventlessdev/reventless-infra": "3.0.0-alpha.214",
48
48
  "@reventlessdev/reventless-seed": "1.0.0-alpha.39",
49
- "@reventlessdev/reventless-spec": "3.0.0-alpha.184"
49
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.185"
50
50
  },
51
51
  "devDependencies": {
52
52
  "rescript": "12.3.1",
@@ -333,6 +333,11 @@ module Impl = (C: BusConfig): T => {
333
333
  }
334
334
 
335
335
  let publishEvent = async (topicName, service, meta, json) => {
336
+ // Every subscriber decodes in this process, so the keys the event's sealed
337
+ // fields name are fetched once, here, before any of them reads it.
338
+ if Reventless.Pii.needsPrepare([json]) {
339
+ await Reventless.Pii.prepareOrThrow([json])
340
+ }
336
341
  emitEventTap(~topic=topicName, ~service, ~payload=json)
337
342
  switch eventHubs.contents->Dict.get(topicName) {
338
343
  | None => ()
@@ -7,6 +7,7 @@ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
7
7
  import * as Effect$1 from "effect/Effect";
8
8
  import * as PubSub from "effect/PubSub";
9
9
  import * as Stream from "effect/Stream";
10
+ import * as Pii$Reventless from "@reventlessdev/reventless-spec/src/components/Pii.res.mjs";
10
11
  import * as Stdlib_Promise from "@rescript/runtime/lib/es6/Stdlib_Promise.js";
11
12
  import * as Deferred from "effect/Deferred";
12
13
  import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
@@ -137,6 +138,9 @@ function Impl(C) {
137
138
  }), Queue.shutdown(queue))), queue => Stream.fromQueue(queue));
138
139
  };
139
140
  let publishEvent = async (topicName, service, meta, json) => {
141
+ if (Pii$Reventless.needsPrepare([json])) {
142
+ await Pii$Reventless.prepareOrThrow([json]);
143
+ }
140
144
  emitEventTap(topicName, service, json);
141
145
  let hub = eventHubs.contents[topicName];
142
146
  if (hub === undefined) {
@@ -410,6 +414,9 @@ function Make($star) {
410
414
  }), Queue.shutdown(queue))), queue => Stream.fromQueue(queue));
411
415
  };
412
416
  let publishEvent = async (topicName, service, meta, json) => {
417
+ if (Pii$Reventless.needsPrepare([json])) {
418
+ await Pii$Reventless.prepareOrThrow([json]);
419
+ }
413
420
  emitEventTap(topicName, service, json);
414
421
  let hub = eventHubs.contents[topicName];
415
422
  if (hub === undefined) {
@@ -683,6 +690,9 @@ function MakeSilent($star) {
683
690
  }), Queue.shutdown(queue))), queue => Stream.fromQueue(queue));
684
691
  };
685
692
  let publishEvent = async (topicName, service, meta, json) => {
693
+ if (Pii$Reventless.needsPrepare([json])) {
694
+ await Pii$Reventless.prepareOrThrow([json]);
695
+ }
686
696
  emitEventTap(topicName, service, json);
687
697
  let hub = eventHubs.contents[topicName];
688
698
  if (hub === undefined) {
@@ -957,6 +967,9 @@ function MakeBounded(C) {
957
967
  }), Queue.shutdown(queue))), queue => Stream.fromQueue(queue));
958
968
  };
959
969
  let publishEvent = async (topicName, service, meta, json) => {
970
+ if (Pii$Reventless.needsPrepare([json])) {
971
+ await Pii$Reventless.prepareOrThrow([json]);
972
+ }
960
973
  emitEventTap(topicName, service, json);
961
974
  let hub = eventHubs.contents[topicName];
962
975
  if (hub === undefined) {