@reventlessdev/reventless-local 3.0.0-alpha.248 → 3.0.0-alpha.250
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 +16 -0
- package/package.json +14 -14
- package/src/BakedManifest.res +5 -6
- package/src/EmitCapabilities.res +3 -1
- package/src/LocalPlatformRegistry.res +3 -1
- package/src/LocalPlatformStart.res +7 -6
- package/src/LocalSeedTarget.res +3 -1
- package/src/Platform.res +291 -215
- package/src/ShellConfig.res +10 -17
- package/src/UiHints.res +8 -14
- package/src/UiSlots.res +10 -17
- package/src/adapter/Api/LocalEvents_Server.res +5 -3
- package/src/adapter/Api/LocalGraphQL_Adapter.res +4 -4
- package/src/adapter/Auth/LocalAuth.res +11 -15
- package/src/adapter/Auth/UserStore.res +5 -7
- package/src/adapter/Backend.res +1 -2
- package/src/adapter/CommandGenerator/CommandGeneratorResolvers_GraphQL.res +42 -26
- package/src/adapter/CommandGenerator/InboundTranslationResolvers_GraphQL.res +13 -3
- package/src/adapter/CommandTopic/LocalCommandTopicChannel.res +15 -17
- package/src/adapter/CommandTopic/LocalCommandTopicRemoteChannel.res +18 -22
- package/src/adapter/Counter/LocalCounterHandler.res +1 -1
- package/src/adapter/DcbEventLog/DcbEventLogStorage_InMemory.res +33 -22
- package/src/adapter/DcbEventLog/DcbEventLogStorage_Sqlite.res +57 -57
- package/src/adapter/DomainGraphQL_Server.res +35 -34
- package/src/adapter/DomainMCP_Server.res +45 -41
- package/src/adapter/EventCollector/LocalEventCollectorChannel.res +47 -36
- package/src/adapter/EventHistory/EventHistoryResolvers_GraphQL.res +15 -12
- package/src/adapter/EventLog/EventLogStorage_InMemory.res +9 -4
- package/src/adapter/EventLog/EventLogStorage_Sqlite.res +36 -24
- package/src/adapter/EventTopic/LocalEventTopicPublisher.res +9 -3
- package/src/adapter/Heartbeat/LocalHeartbeatRunner.res +9 -14
- package/src/adapter/LocalBus.res +12 -12
- package/src/adapter/LocalCapabilities.res.mjs +1 -1
- package/src/adapter/LocalGeocodeResolvers.res +1 -4
- package/src/adapter/LocalSideEffectHandler.res +1 -1
- package/src/adapter/LocalStateChangeDescriptor.res +2 -1
- package/src/adapter/MCP_ServerInstance.res +51 -39
- package/src/adapter/ObjectStore/LocalObjectStore.res +5 -2
- package/src/adapter/ObjectStore/ObjectStoreStorage_FileSystem.res +1 -2
- package/src/adapter/PlatformGraphQL_Server.res +9 -5
- package/src/adapter/ProjectionCheckpoint.res +8 -1
- package/src/adapter/ProjectionPending.res +1 -3
- package/src/adapter/QueryDb/LocalQueryDbStorage.res +2 -1
- package/src/adapter/QueryDb/QueryDbResolvers_GraphQL.res +367 -269
- package/src/adapter/QueryDb/QueryDbStorage_InMemory.res +5 -3
- package/src/adapter/QueryDb/QueryDbStorage_Sqlite.res +63 -40
- package/src/adapter/QueryDb/SortKey_Filter.res +14 -6
- package/src/adapter/Runtime/LocalAggregateRuntime_Builder.res +12 -10
- package/src/adapter/Runtime/LocalEventCollectorRuntime_Builder.res +8 -2
- package/src/adapter/Runtime/LocalPluginRuntime_Builder.res +1 -4
- package/src/adapter/Scheduler/LocalScheduledPublisher.res +12 -12
- package/src/adapter/SqliteDriver.res +16 -4
- package/src/adapter/Task/TaskBucket_Sqlite.res +5 -6
- package/src/components/Aggregate_Builder.res +6 -1
- package/src/components/Counter_Builder.res +1 -5
- package/src/components/DcbEventLog_Builder.res +5 -3
- package/src/components/ExtensionPoint_Builder.res +13 -15
- package/src/components/InboundTranslationSlice_Builder.res +3 -2
- package/src/components/OutboundTranslationSlice_Builder.res +3 -2
- package/src/components/ReadModel_Builder.res +18 -20
- package/src/components/StateViewSlice_Builder.res +3 -2
- package/src/components/Task_Builder.res +12 -13
- package/src/reset/LocalSeedReset.res +2 -5
- package/src/test/Mocks/MockDcbEventLogStorage.res +5 -1
- package/src/test/Mocks/MockEventLogStorage.res +8 -3
- package/src/test/Mocks/MockQueryDbStorage.res +3 -2
- package/src/test/TestRunner.res +1 -1
- package/tests/BakedManifestFilesTest.res +7 -10
- package/tests/LocalEventTapTest.res +26 -21
- package/tests/LocalPlatformStartTest.res +33 -28
- package/tests/PluginEventDecodeTest.res +3 -3
- package/tests/ShellConfigTest.res +30 -21
- package/tests/SplitApiFixtures.res +34 -10
- package/tests/SplitApiTest.res +92 -62
- package/tests/adapter/BackendParityTest.res +180 -130
- package/tests/adapter/CollectNEventsTest.res +6 -4
- package/tests/adapter/CommandAuthorizationTest.res +47 -41
- package/tests/adapter/CommandTopicChannelTest.res +163 -139
- package/tests/adapter/CounterHandlerTest.res +95 -77
- package/tests/adapter/DcbEventLogStorageSqliteTest.res +171 -168
- package/tests/adapter/DcbEventLogStorageTest.res +264 -207
- package/tests/adapter/DomainGraphQL_ServerTest.res +53 -43
- package/tests/adapter/EventCollectorChannelTest.res +153 -124
- package/tests/adapter/EventHistoryResolverTest.res +46 -18
- package/tests/adapter/EventLogSnapshotParityTest.res +57 -45
- package/tests/adapter/EventLogStorageSqliteTest.res +9 -10
- package/tests/adapter/EventTapTest.res +37 -20
- package/tests/adapter/EventTopicPublisherTest.res +74 -50
- package/tests/adapter/GraphQLSubscriptionBridgeTest.res +4 -3
- package/tests/adapter/GraphQL_SchemaInspectorTest.res +666 -568
- package/tests/adapter/GraphQL_SubscriptionResolversTest.res +105 -96
- package/tests/adapter/HeartbeatRunnerTest.res +99 -81
- package/tests/adapter/InboundTranslationMutationTest.res +4 -1
- package/tests/adapter/LocalAuthHttpTest.res +79 -85
- package/tests/adapter/LocalAuthLoginTest.res +42 -50
- package/tests/adapter/LocalAuthTest.res +8 -16
- package/tests/adapter/LocalAuthUserStoreTest.res +2 -7
- package/tests/adapter/LocalBusBoundedTest.res +187 -117
- package/tests/adapter/LocalBusPubSubTest.res +118 -76
- package/tests/adapter/LocalDispatchContextTest.res +1 -2
- package/tests/adapter/LocalEvents_ServerTest.res +242 -187
- package/tests/adapter/PgProjectionCatchupTest.res +44 -10
- package/tests/adapter/ProjectionCheckpointTest.res +261 -206
- package/tests/adapter/QueryDbGsiTtlTest.res +123 -83
- package/tests/adapter/QueryDbListPushdownParityTest.res +107 -67
- package/tests/adapter/QueryDbListResolverTest.res +225 -208
- package/tests/adapter/QueryDbResolvedFieldsTest.res +17 -14
- package/tests/adapter/QueryDbStorageSqliteTest.res +33 -49
- package/tests/adapter/QueryDbStorageTest.res +163 -117
- package/tests/adapter/QueryDbUnionRoundTripTest.res +8 -10
- package/tests/adapter/QueryEngineTest.res +179 -126
- package/tests/adapter/ScheduledPublisherTest.res +171 -135
- package/tests/adapter/ServedBucketHttpTest.res +65 -59
- package/tests/adapter/SortKey_FilterTest.res +19 -3
- package/tests/adapter/SqliteDriverTest.res +13 -10
- package/tests/adapter/TaskBucketTest.res +94 -80
- package/tests/components/aggregate/AggregateTest.res +31 -18
- package/tests/components/automationslice/AutomationSliceCallbackTest.res +259 -222
- package/tests/components/automationslice/AutomationSliceFixtures.res +4 -2
- package/tests/components/automationslice/AutomationSliceSelfDeadlockFixtures.res +38 -38
- package/tests/components/automationslice/MixedSourceAutomationSliceFixtures.res +12 -14
- package/tests/components/automationslice/MixedSourceAutomationSliceTest.res +8 -32
- package/tests/components/commandgenerator/CommandGeneratorFixtures.res +7 -5
- package/tests/components/commandgenerator/CommandGeneratorTest.res +40 -31
- package/tests/components/commandtopic/CommandTopicFixtures.res +3 -4
- package/tests/components/commandtopic/CommandTopicStreamFixtures.res +7 -5
- package/tests/components/commandtopic/CommandTopicTest.res +24 -15
- package/tests/components/counter/CounterFixtures.res +6 -8
- package/tests/components/dcb/DcbCrossPartitionFixtures.res +8 -2
- package/tests/components/dcb/DcbCrossPartitionReadTest.res +20 -13
- package/tests/components/dcb/DcbEventLogAppendStreamTest.res +12 -8
- package/tests/components/dcb/DcbEventLogStreamTest.res +88 -61
- package/tests/components/dcb/DcbFixtures.res +4 -1
- package/tests/components/dcb/DcbTest.res +9 -6
- package/tests/components/eventcollector/EventCollectorFixtures.res +0 -1
- package/tests/components/eventcollector/EventCollectorTest.res +6 -3
- package/tests/components/eventlog/EventLogAppendStreamTest.res +88 -68
- package/tests/components/eventlog/EventLogConflictTest.res +8 -4
- package/tests/components/eventlog/EventLogFixtures.res +3 -3
- package/tests/components/eventlog/EventLogProvisioningSeamTest.res +26 -13
- package/tests/components/eventlog/EventLogStreamTest.res +119 -56
- package/tests/components/eventlog/EventLogTest.res +20 -4
- package/tests/components/eventtopic/EventTopicFixtures.res +3 -3
- package/tests/components/eventtopic/EventTopicStreamFixtures.res +1 -2
- package/tests/components/eventtopic/EventTopicStreamTest.res +7 -1
- package/tests/components/extensionpoint/ExtensionPointFixtures.res +14 -9
- package/tests/components/extensionpoint/ExtensionPointTest.res +3 -2
- package/tests/components/heartbeat/HeartbeatFixtures.res +5 -6
- package/tests/components/heartbeat/HeartbeatTest.res +56 -47
- package/tests/components/inboundtranslationslice/InboundTranslationSliceCallbackTest.res +271 -249
- package/tests/components/inboundtranslationslice/InboundTranslationSliceFixtures.res +3 -2
- package/tests/components/outboundtranslationslice/OutboundTranslationSliceCallbackTest.res +361 -276
- package/tests/components/outboundtranslationslice/OutboundTranslationSliceFixtures.res +8 -10
- package/tests/components/outboundtranslationslice/OutboundTranslationSlicePlatformFixtures.res +37 -43
- package/tests/components/querydb/QueryDbFixtures.res +1 -5
- package/tests/components/querydb/QueryDbTest.res +2 -4
- package/tests/components/readmodel/DcbReadModelE2EFixtures.res +15 -18
- package/tests/components/readmodel/MixedSourceReadModelFixtures.res +5 -7
- package/tests/components/readmodel/ReadModelFixtures.res +8 -8
- package/tests/components/scheduler/SchedulerTest.res +76 -58
- package/tests/components/sideeffecthandler/SideEffectHandlerFixtures.res +4 -4
- package/tests/components/stateviewslice/StateViewSliceDisplayNameFixtures.res +5 -7
- package/tests/components/stateviewslice/StateViewSliceFixtures.res +8 -6
- package/tests/components/stateviewslice/StateViewSliceSubIdFixtures.res +17 -11
- package/tests/components/stateviewslice/StateViewSliceSubIdTest.res +12 -2
- package/tests/components/task/TaskFixtures.res +5 -5
- package/tests/components/task/TaskTest.res +95 -80
- package/tests/plugin/PluginsProjection_GWT.res +3 -1
- package/tests/plugin/UiFragments_GWT.res +6 -1
- package/tests/reset/LocalSeedResetTest.res +1 -0
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.250 (2026-09-09)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @reventlessdev/reventless-local
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# 3.0.0-alpha.249 (2026-09-08)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @reventlessdev/reventless-local
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
# 3.0.0-alpha.248 (2026-09-08)
|
|
7
23
|
|
|
8
24
|
### Features
|
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.250",
|
|
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-effect": "0.1.0-alpha.
|
|
38
|
-
"@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.
|
|
39
|
-
"@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.21",
|
|
40
|
-
"@reventlessdev/rescript-node": "2.0.0-alpha.9",
|
|
37
|
+
"@reventlessdev/rescript-effect": "0.1.0-alpha.33",
|
|
38
|
+
"@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.28",
|
|
41
39
|
"@reventlessdev/rescript-jest": "1.0.0-alpha.10",
|
|
42
|
-
"@reventlessdev/rescript-
|
|
43
|
-
"@reventlessdev/
|
|
44
|
-
"@reventlessdev/
|
|
45
|
-
"@reventlessdev/reventless-
|
|
46
|
-
"@reventlessdev/reventless-
|
|
47
|
-
"@reventlessdev/reventless-
|
|
48
|
-
"@reventlessdev/reventless-
|
|
49
|
-
"@reventlessdev/reventless-postgres": "3.0.0-alpha.
|
|
40
|
+
"@reventlessdev/rescript-node": "2.0.0-alpha.11",
|
|
41
|
+
"@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.22",
|
|
42
|
+
"@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.20",
|
|
43
|
+
"@reventlessdev/reventless-core": "3.0.0-alpha.261",
|
|
44
|
+
"@reventlessdev/reventless-graphql-server": "1.0.0-alpha.109",
|
|
45
|
+
"@reventlessdev/reventless-infra": "3.0.0-alpha.162",
|
|
46
|
+
"@reventlessdev/reventless-seed": "1.0.0-alpha.21",
|
|
47
|
+
"@reventlessdev/reventless-postgres": "3.0.0-alpha.125",
|
|
48
|
+
"@reventlessdev/reventless-gwt": "1.0.0-alpha.208",
|
|
49
|
+
"@reventlessdev/reventless-spec": "3.0.0-alpha.134"
|
|
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.
|
|
54
|
+
"@reventlessdev/reventless-ppx": "1.0.0-alpha.80"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
57
|
"rescript": "12.3.0"
|
package/src/BakedManifest.res
CHANGED
|
@@ -16,10 +16,10 @@ let log = ReventlessCore.Logger.fromEnv()
|
|
|
16
16
|
for the reason the curation is: the key a file is written under and the URL a
|
|
17
17
|
shell fetches it from have to be the same string on either platform.
|
|
18
18
|
*/
|
|
19
|
-
let files = (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
let files = (~config: ReventlessInfra.Platform.bakedManifest): array<(
|
|
20
|
+
string,
|
|
21
|
+
array<ReventlessCore.Platform_BakedManifest.selection>,
|
|
22
|
+
)> => ReventlessCore.Platform_BakedManifest.files(~config)
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
A declared bake writes the files or fails loudly. Both failure modes it can hit
|
|
@@ -46,8 +46,7 @@ let emit = (
|
|
|
46
46
|
| None =>
|
|
47
47
|
JsError.throwWithMessage(
|
|
48
48
|
`baked manifest: cannot resolve ${HostShellDist.package} from ${NodeProcess.cwd()} — ` ++
|
|
49
|
-
`the local shell serves the file from that package's dist/, so declaring a bake ` ++
|
|
50
|
-
`without the package installed would write nothing and render an empty shell.`,
|
|
49
|
+
`the local shell serves the file from that package's dist/, so declaring a bake ` ++ `without the package installed would write nothing and render an empty shell.`,
|
|
51
50
|
)
|
|
52
51
|
| Some(dir) =>
|
|
53
52
|
curated->Array.forEach(((key, manifest)) => {
|
package/src/EmitCapabilities.res
CHANGED
|
@@ -80,7 +80,9 @@ let main = async () => {
|
|
|
80
80
|
let platformModule: localPlatformExports = await dynImport("./Platform.res.mjs")
|
|
81
81
|
let platform = platformModule["Make"]()
|
|
82
82
|
|
|
83
|
-
let composition: compositionExports = await dynImport(
|
|
83
|
+
let composition: compositionExports = await dynImport(
|
|
84
|
+
NodeUrl.pathToFileURL(modulePath)["href"],
|
|
85
|
+
)
|
|
84
86
|
let built = composition["Make"](platform)
|
|
85
87
|
|
|
86
88
|
let manifestPath = NodePath.join([srcDir, "capabilities.json"])
|
|
@@ -73,7 +73,9 @@ let alive = (pid: int): bool =>
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
let readEntry = (path: string): option<entry> =>
|
|
76
|
-
try Some(
|
|
76
|
+
try Some(
|
|
77
|
+
path->NodeFs.readFileSync->JSON.parseOrThrow->Reventless.Util_Sury.fromJson(entrySchema),
|
|
78
|
+
) catch {
|
|
77
79
|
| _ => None
|
|
78
80
|
}
|
|
79
81
|
|
|
@@ -40,23 +40,24 @@ let report = (entries: array<LocalPlatformRegistry.entry>): array<string> =>
|
|
|
40
40
|
| [e] => [e->entryLine, ` nothing started — ${e.endpoint} is serving this directory.`]
|
|
41
41
|
| entries =>
|
|
42
42
|
Array.concat(
|
|
43
|
-
[
|
|
43
|
+
[
|
|
44
|
+
`→ ${entries
|
|
45
|
+
->Array.length
|
|
46
|
+
->Int.toString} platforms are already running in this directory:`,
|
|
47
|
+
],
|
|
44
48
|
entries->Array.map(entryLine),
|
|
45
49
|
)->Array.concat([" nothing started — stop the ones you do not want, then start again."])
|
|
46
50
|
}
|
|
47
51
|
|
|
48
52
|
/** The live platform serving this store file, if one is. Resolved against this
|
|
49
53
|
process's cwd, because the registry's paths are absolute. */
|
|
50
|
-
let servedBy = (~path: string, ~cwd=NodeProcess.cwd(), ()): option<
|
|
51
|
-
LocalPlatformRegistry.entry,
|
|
52
|
-
> => {
|
|
54
|
+
let servedBy = (~path: string, ~cwd=NodeProcess.cwd(), ()): option<LocalPlatformRegistry.entry> => {
|
|
53
55
|
let resolved = NodePath.resolve([path])
|
|
54
56
|
LocalPlatformRegistry.list(~cwd, ())->Array.find(e => e.store.path == Some(resolved))
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
let refusalMessage = (~path: string, e: LocalPlatformRegistry.entry): string =>
|
|
58
|
-
`refusing to reset ${path}: it is the store of ${e.app} running at :${e.port->Int.toString} (pid ${e.pid->Int.toString}). ` ++
|
|
59
|
-
`Stop that platform first, or start this one without ?reset.`
|
|
60
|
+
`refusing to reset ${path}: it is the store of ${e.app} running at :${e.port->Int.toString} (pid ${e.pid->Int.toString}). ` ++ `Stop that platform first, or start this one without ?reset.`
|
|
60
61
|
|
|
61
62
|
/** Throws rather than letting a reset unlink a store something is serving. Always
|
|
62
63
|
on: it must protect an app that never calls {!orAddressRunning}. */
|
package/src/LocalSeedTarget.res
CHANGED
|
@@ -133,7 +133,9 @@ let select = async (): t => {
|
|
|
133
133
|
let announce = (t: t): unit =>
|
|
134
134
|
switch t.origin {
|
|
135
135
|
| Running(entry) =>
|
|
136
|
-
Console.log(
|
|
136
|
+
Console.log(
|
|
137
|
+
`→ ${entry.endpoint} · ${entry.store->storeLabel} (${entry.app->shortAppName})`,
|
|
138
|
+
)
|
|
137
139
|
| EnvOverride => Console.log(`→ ${t.endpoint} (REVENTLESS_GRAPHQL_ENDPOINT)`)
|
|
138
140
|
| NoneRunning =>
|
|
139
141
|
Console.log(`→ ${t.endpoint} (no local platform registered here — trying the default)`)
|