@reventlessdev/reventless-local 3.0.0-alpha.247 → 3.0.0-alpha.248
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 +8 -0
- package/package.json +9 -9
- package/src/Platform.res.mjs +4 -4
- package/src/adapter/QueryDb/QueryDbResolvers_GraphQL.res +17 -0
- package/src/adapter/QueryDb/QueryDbResolvers_GraphQL.res.mjs +9 -0
- package/src/reset/LocalSeedReset.res.mjs +1 -1
- package/tests/PluginEventDecodeTest.res.mjs +1 -1
- package/tests/plugin/UiFragmentRegistry_GWT.res.mjs +2 -2
- package/tests/plugin/UiFragments_GWT.res.mjs +2 -2
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.248 (2026-09-08)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* a slice folder is named for its kind, without the Slice ([a400555](https://github.com/ReventlessDev/reventless-core/commit/a400555121b023823983ebe846e99cda27063c1f))
|
|
11
|
+
* **core:** a reference names a row and shows its picture ([2b40d04](https://github.com/ReventlessDev/reventless-core/commit/2b40d0418bba2bf83463f446e94e372ea0c9898c))
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
# 3.0.0-alpha.247 (2026-09-07)
|
|
7
15
|
|
|
8
16
|
### Bug Fixes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reventlessdev/reventless-local",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.248",
|
|
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": {
|
|
@@ -37,16 +37,16 @@
|
|
|
37
37
|
"@reventlessdev/rescript-effect": "0.1.0-alpha.32",
|
|
38
38
|
"@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.27",
|
|
39
39
|
"@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.21",
|
|
40
|
-
"@reventlessdev/rescript-jest": "1.0.0-alpha.10",
|
|
41
40
|
"@reventlessdev/rescript-node": "2.0.0-alpha.9",
|
|
42
|
-
"@reventlessdev/
|
|
43
|
-
"@reventlessdev/reventless-gwt": "1.0.0-alpha.205",
|
|
44
|
-
"@reventlessdev/reventless-postgres": "3.0.0-alpha.122",
|
|
45
|
-
"@reventlessdev/reventless-infra": "3.0.0-alpha.159",
|
|
46
|
-
"@reventlessdev/reventless-seed": "1.0.0-alpha.19",
|
|
47
|
-
"@reventlessdev/reventless-graphql-server": "1.0.0-alpha.106",
|
|
41
|
+
"@reventlessdev/rescript-jest": "1.0.0-alpha.10",
|
|
48
42
|
"@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.19",
|
|
49
|
-
"@reventlessdev/reventless-
|
|
43
|
+
"@reventlessdev/reventless-core": "3.0.0-alpha.259",
|
|
44
|
+
"@reventlessdev/reventless-gwt": "1.0.0-alpha.206",
|
|
45
|
+
"@reventlessdev/reventless-graphql-server": "1.0.0-alpha.107",
|
|
46
|
+
"@reventlessdev/reventless-seed": "1.0.0-alpha.19",
|
|
47
|
+
"@reventlessdev/reventless-spec": "3.0.0-alpha.132",
|
|
48
|
+
"@reventlessdev/reventless-infra": "3.0.0-alpha.160",
|
|
49
|
+
"@reventlessdev/reventless-postgres": "3.0.0-alpha.123"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"rescript": "12.3.0",
|
package/src/Platform.res.mjs
CHANGED
|
@@ -28,7 +28,7 @@ import * as Api_Naming$ReventlessCore from "@reventlessdev/reventless-core/src/c
|
|
|
28
28
|
import * as PluginSpec$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/lifecycle/PluginSpec.res.mjs";
|
|
29
29
|
import * as UserStore$ReventlessLocal from "./adapter/Auth/UserStore.res.mjs";
|
|
30
30
|
import * as TestRunner$ReventlessLocal from "./test/TestRunner.res.mjs";
|
|
31
|
-
import * as UiFragments$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
31
|
+
import * as UiFragments$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateView/UiFragments.res.mjs";
|
|
32
32
|
import * as CommandTopic$ReventlessCore from "@reventlessdev/reventless-core/src/components/CommandTopic/CommandTopic.res.mjs";
|
|
33
33
|
import * as EffectLogger$ReventlessCore from "@reventlessdev/reventless-core/src/util/EffectLogger.res.mjs";
|
|
34
34
|
import * as ShellConfig$ReventlessLocal from "./ShellConfig.res.mjs";
|
|
@@ -60,7 +60,7 @@ import * as LocalClonerRunner$ReventlessLocal from "./adapter/Cloner/LocalCloner
|
|
|
60
60
|
import * as PluginBaseFragment$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/api/PluginBaseFragment.res.mjs";
|
|
61
61
|
import * as ProjectionPending$ReventlessLocal from "./adapter/ProjectionPending.res.mjs";
|
|
62
62
|
import * as ReadModel_Builder$ReventlessLocal from "./components/ReadModel_Builder.res.mjs";
|
|
63
|
-
import * as UiFragmentRegistry$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
63
|
+
import * as UiFragmentRegistry$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChange/UiFragmentRegistry.res.mjs";
|
|
64
64
|
import * as LocalEvents_Server$ReventlessLocal from "./adapter/Api/LocalEvents_Server.res.mjs";
|
|
65
65
|
import * as LocalPlatformStart$ReventlessLocal from "./LocalPlatformStart.res.mjs";
|
|
66
66
|
import * as PlatformMCP_Server$ReventlessLocal from "./adapter/PlatformMCP_Server.res.mjs";
|
|
@@ -76,7 +76,7 @@ import * as ProjectionCheckpoint$ReventlessLocal from "./adapter/ProjectionCheck
|
|
|
76
76
|
import * as ExtensionPointMapping$ReventlessInfra from "@reventlessdev/reventless-infra/src/types/ExtensionPointMapping.res.mjs";
|
|
77
77
|
import * as LocalGeocodeResolvers$ReventlessLocal from "./adapter/LocalGeocodeResolvers.res.mjs";
|
|
78
78
|
import * as LocalPlatformRegistry$ReventlessLocal from "./LocalPlatformRegistry.res.mjs";
|
|
79
|
-
import * as UiFragments_Projection$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
79
|
+
import * as UiFragments_Projection$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateView/UiFragments_Projection.res.mjs";
|
|
80
80
|
import * as EventLogStorage_Sqlite$ReventlessLocal from "./adapter/EventLog/EventLogStorage_Sqlite.res.mjs";
|
|
81
81
|
import * as ExtensionPoint_Builder$ReventlessLocal from "./components/ExtensionPoint_Builder.res.mjs";
|
|
82
82
|
import * as PlatformGraphQL_Server$ReventlessLocal from "./adapter/PlatformGraphQL_Server.res.mjs";
|
|
@@ -94,7 +94,7 @@ import * as StateChangeSlice_Builder$ReventlessLocal from "./components/StateCha
|
|
|
94
94
|
import * as DcbEventLogStorage_Sqlite$ReventlessLocal from "./adapter/DcbEventLog/DcbEventLogStorage_Sqlite.res.mjs";
|
|
95
95
|
import * as LocalEventCollectorChannel$ReventlessLocal from "./adapter/EventCollector/LocalEventCollectorChannel.res.mjs";
|
|
96
96
|
import * as PluginRuntime_Builder_Micro$ReventlessCore from "@reventlessdev/reventless-core/src/adapter/Runtime/PluginRuntime_Builder_Micro.res.mjs";
|
|
97
|
-
import * as UiFragmentRegistry_Behavior$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
97
|
+
import * as UiFragmentRegistry_Behavior$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChange/UiFragmentRegistry_Behavior.res.mjs";
|
|
98
98
|
import * as Platform_PluginStructuresApi$ReventlessCore from "@reventlessdev/reventless-core/src/admin/Platform_PluginStructuresApi.res.mjs";
|
|
99
99
|
import * as EventHistoryResolvers_GraphQL$ReventlessLocal from "./adapter/EventHistory/EventHistoryResolvers_GraphQL.res.mjs";
|
|
100
100
|
import * as InboundTranslationSlice_Builder$ReventlessLocal from "./components/InboundTranslationSlice_Builder.res.mjs";
|
|
@@ -190,6 +190,14 @@ module Make = (Bus: LocalBus.T) => {
|
|
|
190
190
|
->Option.flatMap(Reventless.StateAnnotations.getSpec)
|
|
191
191
|
->Option.flatMap(spec => spec.retired)
|
|
192
192
|
|
|
193
|
+
// The picture a reference to one of these rows shows it by, derived once for
|
|
194
|
+
// every backend in `Reventless.RowImage`. Read per request for the same
|
|
195
|
+
// reason the two above are.
|
|
196
|
+
let imageSourceOf = () =>
|
|
197
|
+
Plugin_Helpers.stateSchemaRegistry
|
|
198
|
+
->Dict.get(name)
|
|
199
|
+
->Option.flatMap(Reventless.RowImage.sourceFrom)
|
|
200
|
+
|
|
193
201
|
// `includeRetired` is the caller asking; `decideRetired` decides whether the
|
|
194
202
|
// asking counts. Read here rather than inside the decision so the argument
|
|
195
203
|
// stays an argument — the door reports what was asked, the classifier says
|
|
@@ -500,10 +508,19 @@ module Make = (Bus: LocalBus.T) => {
|
|
|
500
508
|
// A view with no label field resolves to its id, which is
|
|
501
509
|
// what `labelField`'s own fallback already decided.
|
|
502
510
|
->Option.getOr(id)
|
|
511
|
+
// The picture travels with the name, so a retired row that
|
|
512
|
+
// keeps one keeps the other: an archived product reads as
|
|
513
|
+
// itself on the order that bought it.
|
|
514
|
+
let image =
|
|
515
|
+
switch (imageSourceOf(), item->JSON.Decode.object) {
|
|
516
|
+
| (Some(source), Some(d)) => d->Reventless.RowImage.refFrom(source)
|
|
517
|
+
| _ => None
|
|
518
|
+
}
|
|
503
519
|
Some(
|
|
504
520
|
Dict.fromArray([
|
|
505
521
|
("id", JSON.Encode.string(id)),
|
|
506
522
|
("label", JSON.Encode.string(label)),
|
|
523
|
+
("image", image->Option.mapOr(JSON.Encode.null, JSON.Encode.string)),
|
|
507
524
|
("retired", JSON.Encode.bool(retired)),
|
|
508
525
|
(
|
|
509
526
|
"retiredState",
|
|
@@ -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 RowImage$Reventless from "@reventlessdev/reventless-spec/src/semantic/RowImage.res.mjs";
|
|
13
14
|
import * as ReadModel$Reventless from "@reventlessdev/reventless-spec/src/components/ReadModel.res.mjs";
|
|
14
15
|
import * as OwnerScope$Reventless from "@reventlessdev/reventless-spec/src/types/OwnerScope.res.mjs";
|
|
15
16
|
import * as Api_Ids$ReventlessCore from "@reventlessdev/reventless-core/src/components/Api/Api_Ids.res.mjs";
|
|
@@ -106,6 +107,7 @@ function Make(Bus) {
|
|
|
106
107
|
return Stdlib_Option.mapOr(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_JSON.Decode.object(item), d => d[field]), Stdlib_JSON.Decode.string), false, v => v === required);
|
|
107
108
|
};
|
|
108
109
|
let retiredSpecOf = () => Stdlib_Option.flatMap(Stdlib_Option.flatMap(Plugin_Helpers$ReventlessCore.stateSchemaRegistry[name], StateAnnotations$Reventless.getSpec), spec => spec.retired);
|
|
110
|
+
let imageSourceOf = () => Stdlib_Option.flatMap(Plugin_Helpers$ReventlessCore.stateSchemaRegistry[name], RowImage$Reventless.sourceFrom);
|
|
109
111
|
let askedForRetired = args => Stdlib_Option.getOr(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_JSON.Decode.object(args), d => d["includeRetired"]), Stdlib_JSON.Decode.bool), false);
|
|
110
112
|
let retiredDecision = (ctx, args) => OwnerScope$Reventless.decideRetired(extractIdentity(ctx), Stdlib_Option.map(retiredSpecOf(), r => r.field), Stdlib_Option.flatMap(retiredSpecOf(), r => r.values), askedForRetired(args), undefined);
|
|
111
113
|
let retiredAllows = (ctx, args, item) => {
|
|
@@ -289,6 +291,9 @@ function Make(Bus) {
|
|
|
289
291
|
return;
|
|
290
292
|
}
|
|
291
293
|
let label = Stdlib_Option.getOr(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_JSON.Decode.object(item), d => d[labelField]), Stdlib_JSON.Decode.string), id);
|
|
294
|
+
let match$1 = imageSourceOf();
|
|
295
|
+
let match$2 = Stdlib_JSON.Decode.object(item);
|
|
296
|
+
let image = match$1 !== undefined && match$2 !== undefined ? RowImage$Reventless.refFrom(match$2, match$1) : undefined;
|
|
292
297
|
return Object.fromEntries([
|
|
293
298
|
[
|
|
294
299
|
"id",
|
|
@@ -298,6 +303,10 @@ function Make(Bus) {
|
|
|
298
303
|
"label",
|
|
299
304
|
label
|
|
300
305
|
],
|
|
306
|
+
[
|
|
307
|
+
"image",
|
|
308
|
+
Stdlib_Option.mapOr(image, null, prim => prim)
|
|
309
|
+
],
|
|
301
310
|
[
|
|
302
311
|
"retired",
|
|
303
312
|
retired
|
|
@@ -8,7 +8,7 @@ import * as Offload$Reventless from "@reventlessdev/reventless-spec/src/semantic
|
|
|
8
8
|
import * as Backend$ReventlessLocal from "../adapter/Backend.res.mjs";
|
|
9
9
|
import * as PluginSpec$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/lifecycle/PluginSpec.res.mjs";
|
|
10
10
|
import * as Seed_Prompt$ReventlessSeed from "@reventlessdev/reventless-seed/src/Seed_Prompt.res.mjs";
|
|
11
|
-
import * as UiFragments$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
11
|
+
import * as UiFragments$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateView/UiFragments.res.mjs";
|
|
12
12
|
import * as ComponentType$ReventlessCore from "@reventlessdev/reventless-core/src/ComponentType.res.mjs";
|
|
13
13
|
import * as SqliteDriver$ReventlessLocal from "../adapter/SqliteDriver.res.mjs";
|
|
14
14
|
import * as LocalSeedTarget$ReventlessLocal from "../LocalSeedTarget.res.mjs";
|
|
@@ -7,7 +7,7 @@ import * as PluginSpec$ReventlessCore from "@reventlessdev/reventless-core/src/p
|
|
|
7
7
|
import * as TestRunner$ReventlessLocal from "../src/test/TestRunner.res.mjs";
|
|
8
8
|
import * as ComponentType$ReventlessCore from "@reventlessdev/reventless-core/src/ComponentType.res.mjs";
|
|
9
9
|
import * as Plugin_Fixtures$ReventlessLocal from "./plugin/Plugin_Fixtures.res.mjs";
|
|
10
|
-
import * as UiFragmentRegistry$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
10
|
+
import * as UiFragmentRegistry$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChange/UiFragmentRegistry.res.mjs";
|
|
11
11
|
import * as Platform_Admin_Structure$ReventlessCore from "@reventlessdev/reventless-core/src/admin/Platform_Admin_Structure.res.mjs";
|
|
12
12
|
|
|
13
13
|
TestRunner$ReventlessLocal.setup();
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import * as Behavior_GWT$ReventlessGwt from "@reventlessdev/reventless-gwt/src/Behavior_GWT.res.mjs";
|
|
4
4
|
import * as Plugin_Fixtures$ReventlessLocal from "./Plugin_Fixtures.res.mjs";
|
|
5
|
-
import * as UiFragmentRegistry$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
6
|
-
import * as UiFragmentRegistry_Behavior$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
5
|
+
import * as UiFragmentRegistry$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChange/UiFragmentRegistry.res.mjs";
|
|
6
|
+
import * as UiFragmentRegistry_Behavior$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChange/UiFragmentRegistry_Behavior.res.mjs";
|
|
7
7
|
|
|
8
8
|
let Test = Behavior_GWT$ReventlessGwt.Make({
|
|
9
9
|
name: UiFragmentRegistry$ReventlessCore.name,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
-
import * as UiFragments$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
3
|
+
import * as UiFragments$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateView/UiFragments.res.mjs";
|
|
4
4
|
import * as Projection_GWT$ReventlessGwt from "@reventlessdev/reventless-gwt/src/Projection_GWT.res.mjs";
|
|
5
5
|
import * as Plugin_Fixtures$ReventlessLocal from "./Plugin_Fixtures.res.mjs";
|
|
6
|
-
import * as UiFragments_Projection$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/
|
|
6
|
+
import * as UiFragments_Projection$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateView/UiFragments_Projection.res.mjs";
|
|
7
7
|
|
|
8
8
|
let Test = Projection_GWT$ReventlessGwt.Make({
|
|
9
9
|
name: UiFragments$ReventlessCore.name,
|