@reventlessdev/reventless-local 3.0.0-alpha.235 → 3.0.0-alpha.237

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,21 @@
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.237 (2026-08-23)
7
+
8
+ ### Features
9
+
10
+ * **querydb:** serve owner-scoped lists from an index instead of a filtered Scan ([ad26c28](https://github.com/ReventlessDev/reventless-core/commit/ad26c284b4b0650fa3f3b6109ed33bbfe8608f6d))
11
+
12
+
13
+ # 3.0.0-alpha.236 (2026-08-23)
14
+
15
+ **Note:** Version bump only for package @reventlessdev/reventless-local
16
+
17
+
18
+
19
+
20
+
6
21
  # 3.0.0-alpha.235 (2026-08-22)
7
22
 
8
23
  * feat(core)!: a slice that has given up says so ([f5559ab](https://github.com/ReventlessDev/reventless-core/commit/f5559abede3a9cf2c9a48aadc69a666c46cc75bf))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-local",
3
- "version": "3.0.0-alpha.235",
3
+ "version": "3.0.0-alpha.237",
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": {
@@ -34,24 +34,24 @@
34
34
  "graphql-yoga": "^5.21.0",
35
35
  "sury": "11.0.0-rc.2",
36
36
  "ws": "^8.18.0",
37
- "@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.27",
38
37
  "@reventlessdev/rescript-effect": "0.1.0-alpha.32",
39
- "@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.21",
38
+ "@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.27",
40
39
  "@reventlessdev/rescript-jest": "1.0.0-alpha.10",
40
+ "@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.21",
41
41
  "@reventlessdev/rescript-node": "2.0.0-alpha.8",
42
42
  "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.19",
43
- "@reventlessdev/reventless-core": "3.0.0-alpha.247",
44
- "@reventlessdev/reventless-graphql-server": "1.0.0-alpha.95",
45
- "@reventlessdev/reventless-gwt": "1.0.0-alpha.194",
46
- "@reventlessdev/reventless-postgres": "3.0.0-alpha.111",
47
- "@reventlessdev/reventless-infra": "3.0.0-alpha.150",
43
+ "@reventlessdev/reventless-core": "3.0.0-alpha.249",
44
+ "@reventlessdev/reventless-graphql-server": "1.0.0-alpha.97",
45
+ "@reventlessdev/reventless-gwt": "1.0.0-alpha.196",
46
+ "@reventlessdev/reventless-infra": "3.0.0-alpha.151",
47
+ "@reventlessdev/reventless-postgres": "3.0.0-alpha.113",
48
48
  "@reventlessdev/reventless-seed": "1.0.0-alpha.17",
49
- "@reventlessdev/reventless-spec": "3.0.0-alpha.122"
49
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.123"
50
50
  },
51
51
  "devDependencies": {
52
52
  "rescript": "12.3.0",
53
53
  "sury-ppx": "11.0.0-rc.2",
54
- "@reventlessdev/reventless-ppx": "1.0.0-alpha.72"
54
+ "@reventlessdev/reventless-ppx": "1.0.0-alpha.73"
55
55
  },
56
56
  "peerDependencies": {
57
57
  "rescript": "12.3.0"
package/src/Platform.res CHANGED
@@ -1427,7 +1427,9 @@ module MakeWithConfig = (
1427
1427
  // indexed scan is fleshed out together with that first concrete index.
1428
1428
  switch entry.indexQueries {
1429
1429
  | Some(indexes) =>
1430
- indexes->Array.forEach((ic: Reventless.ReadModel.indexConfig) => {
1430
+ indexes
1431
+ ->Array.filter(ic => !Reventless.ReadModel.isDerivedIndex(ic))
1432
+ ->Array.forEach((ic: Reventless.ReadModel.indexConfig) => {
1431
1433
  let fieldName = ReventlessCore.GraphQL_FragmentGenerator.indexQueryFieldName(
1432
1434
  ~singleFieldName=entry.singleFieldName,
1433
1435
  ~index=ic.index,
@@ -13,6 +13,7 @@ import * as Effect from "effect/Effect";
13
13
  import * as Pulumi from "@pulumi/pulumi";
14
14
  import * as Stdlib_Promise from "@rescript/runtime/lib/es6/Stdlib_Promise.js";
15
15
  import * as Plugin$Reventless from "@reventlessdev/reventless-spec/src/components/Plugin.res.mjs";
16
+ import * as ReadModel$Reventless from "@reventlessdev/reventless-spec/src/components/ReadModel.res.mjs";
16
17
  import * as Util_Sury$Reventless from "@reventlessdev/reventless-spec/src/util/Util_Sury.res.mjs";
17
18
  import * as Logger$ReventlessCore from "@reventlessdev/reventless-core/src/util/Logger.res.mjs";
18
19
  import * as Plugin$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/component/Plugin.res.mjs";
@@ -1206,7 +1207,7 @@ function MakeWithConfig(Config) {
1206
1207
  }
1207
1208
  let indexes = entry.indexQueries;
1208
1209
  if (indexes !== undefined) {
1209
- indexes.forEach(ic => {
1210
+ indexes.filter(ic => !ReadModel$Reventless.isDerivedIndex(ic)).forEach(ic => {
1210
1211
  let fieldName = GraphQL_FragmentGenerator$ReventlessCore.indexQueryFieldName(entry.singleFieldName, ic.index);
1211
1212
  queryResolvers[fieldName] = async (_root, _args, _ctx) => connectionResponse([]);
1212
1213
  });
@@ -2932,7 +2933,7 @@ function Make($star) {
2932
2933
  }
2933
2934
  let indexes = entry.indexQueries;
2934
2935
  if (indexes !== undefined) {
2935
- indexes.forEach(ic => {
2936
+ indexes.filter(ic => !ReadModel$Reventless.isDerivedIndex(ic)).forEach(ic => {
2936
2937
  let fieldName = GraphQL_FragmentGenerator$ReventlessCore.indexQueryFieldName(entry.singleFieldName, ic.index);
2937
2938
  queryResolvers[fieldName] = async (_root, _args, _ctx) => connectionResponse([]);
2938
2939
  });
@@ -792,7 +792,12 @@ module Make = (Bus: LocalBus.T) => {
792
792
  // which is also where the AppSync SDL gets them. They used to be spelled out
793
793
  // here independently and disagreed with that emitter on all three, so the
794
794
  // same door had a different signature per backend and worked on neither.
795
- let indexSdlFields = indexes->Array.map((ic: Reventless.ReadModel.indexConfig) =>
795
+ //
796
+ // Derived indexes carry no door, on either backend — the same reasoning, and
797
+ // the same filter, as `GraphQL_FragmentGenerator`: a field emitted here and
798
+ // not there would make the local SDL disagree with the deployed one.
799
+ let doorIndexes = indexes->Array.filter(ic => !Reventless.ReadModel.isDerivedIndex(ic))
800
+ let indexSdlFields = doorIndexes->Array.map((ic: Reventless.ReadModel.indexConfig) =>
796
801
  GraphQL_FragmentGenerator.deriveIndexQueryField(
797
802
  ~singleFieldName=singleQueryName,
798
803
  ~indexConfig=ic,
@@ -858,7 +863,7 @@ module Make = (Bus: LocalBus.T) => {
858
863
  ),
859
864
  ])->JSON.Encode.object
860
865
  }
861
- let indexResolvers: array<(string, ReventlessGraphqlServer.GraphQL_ServerInstance.resolverFn)> = indexes->Array.map(
866
+ let indexResolvers: array<(string, ReventlessGraphqlServer.GraphQL_ServerInstance.resolverFn)> = doorIndexes->Array.map(
862
867
  (ic: Reventless.ReadModel.indexConfig) => {
863
868
  let resolverName = GraphQL_FragmentGenerator.indexQueryFieldName(
864
869
  ~singleFieldName=singleQueryName,
@@ -10,6 +10,7 @@ import * as Stdlib_Nullable from "@rescript/runtime/lib/es6/Stdlib_Nullable.js";
10
10
  import * as Owner$Reventless from "@reventlessdev/reventless-spec/src/components/Owner.res.mjs";
11
11
  import * as Primitive_object from "@rescript/runtime/lib/es6/Primitive_object.js";
12
12
  import * as Identity$Reventless from "@reventlessdev/reventless-spec/src/types/Identity.res.mjs";
13
+ import * as ReadModel$Reventless from "@reventlessdev/reventless-spec/src/components/ReadModel.res.mjs";
13
14
  import * as OwnerScope$Reventless from "@reventlessdev/reventless-spec/src/types/OwnerScope.res.mjs";
14
15
  import * as Api_Ids$ReventlessCore from "@reventlessdev/reventless-core/src/components/Api/Api_Ids.res.mjs";
15
16
  import * as Authorization$Reventless from "@reventlessdev/reventless-spec/src/types/Authorization.res.mjs";
@@ -525,7 +526,8 @@ function Make(Bus) {
525
526
  } else {
526
527
  itemsResolvers = [];
527
528
  }
528
- let indexSdlFields = indexes.map(ic => GraphQL_FragmentGenerator$ReventlessCore.deriveIndexQueryField(singleQueryName, ic, returnTypeName + "Connection"));
529
+ let doorIndexes = indexes.filter(ic => !ReadModel$Reventless.isDerivedIndex(ic));
530
+ let indexSdlFields = doorIndexes.map(ic => GraphQL_FragmentGenerator$ReventlessCore.deriveIndexQueryField(singleQueryName, ic, returnTypeName + "Connection"));
529
531
  let rejectBackwardPaging = args => {
530
532
  let given = key => {
531
533
  let match = Stdlib_Option.flatMap(Stdlib_JSON.Decode.object(args), d => d[key]);
@@ -585,7 +587,7 @@ function Make(Bus) {
585
587
  ]
586
588
  ]);
587
589
  };
588
- let indexResolvers = indexes.map(ic => {
590
+ let indexResolvers = doorIndexes.map(ic => {
589
591
  let resolverName = GraphQL_FragmentGenerator$ReventlessCore.indexQueryFieldName(singleQueryName, ic.index);
590
592
  let filterField = GraphQL_FragmentGenerator$ReventlessCore.indexKeyField(ic);
591
593
  let resolver = async (_root, args, ctx) => {