@reventlessdev/reventless-infra 3.0.0-alpha.122 → 3.0.0-alpha.124

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.124 (2026-08-03)
7
+
8
+ **Note:** Version bump only for package @reventlessdev/reventless-infra
9
+
10
+
11
+
12
+
13
+
14
+ # 3.0.0-alpha.123 (2026-08-03)
15
+
16
+ ### Features
17
+
18
+ * **outbound:** let an outbound slice read an aggregate, and geocode addresses with it ([867e63e](https://github.com/ReventlessDev/reventless-core/commit/867e63e774ebc8b78b2b19c78645c8a12a8d06f6))
19
+ * **platform:** let a deployment choose what the host shell does ([ae0aec3](https://github.com/ReventlessDev/reventless-core/commit/ae0aec33dcf641f02187e8d6a3f3594c506820b6))
20
+
21
+
6
22
  # 3.0.0-alpha.122 (2026-08-02)
7
23
 
8
24
  **Note:** Version bump only for package @reventlessdev/reventless-infra
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-infra",
3
- "version": "3.0.0-alpha.122",
3
+ "version": "3.0.0-alpha.124",
4
4
  "description": "Infrastructure types for Reventless framework",
5
5
  "license": "Apache-2.0",
6
6
  "jest": {
@@ -17,9 +17,9 @@
17
17
  "sury-ppx": "11.0.0-alpha.2",
18
18
  "uuid": "^13.0.0",
19
19
  "@reventlessdev/rescript-effect": "0.1.0-alpha.32",
20
+ "@reventlessdev/rescript-uuid": "2.0.0-alpha.0",
20
21
  "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.18",
21
- "@reventlessdev/reventless-spec": "3.0.0-alpha.97",
22
- "@reventlessdev/rescript-uuid": "2.0.0-alpha.0"
22
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.99"
23
23
  },
24
24
  "devDependencies": {
25
25
  "rescript": "12.3.0",
@@ -38,6 +38,10 @@ module type T = {
38
38
  let queryDbName: string
39
39
  let make: (
40
40
  ~dcbEventLog: DcbEventLog.component,
41
+ // The plugin-wide topic dict, for a slice whose `Spec.sourceNames` reaches
42
+ // beyond its own DCB log (an Aggregate's events, say). Omitted ⇒ the slice
43
+ // subscribes to the DCB log alone, which is what every DCB-only slice wants.
44
+ ~allEventTopics: EventTopic.allOutputs=?,
41
45
  ~publishJsons: Pulumi.Output.t<CommandTopic.publishJsons>,
42
46
  ~runtime: RuntimeHints.t=?,
43
47
  ~opts: Pulumi.ComponentResource.options=?,
@@ -116,6 +116,46 @@ type capability =
116
116
  // (ARN, data source) without moving every call site.
117
117
  type geocoderIndex = {indexName: Pulumi.Input.t<string>}
118
118
 
119
+ // Options for the shell's map view mode. Written to config.json flat, beside
120
+ // `viewModes`, because that is where the shell reads them; carried on the arm
121
+ // here so a style set with the map off is unrepresentable.
122
+ type mapOptions = {
123
+ // Map style URL. Unset ⇒ the mode's built-in demo tiles, which is the honest
124
+ // default for an example; a real style is an account and a bill.
125
+ style?: string,
126
+ }
127
+
128
+ // Options for the shell's graph view mode. Flat on the wire for the same reason
129
+ // as `mapOptions`.
130
+ type graphOptions = {
131
+ // Graph layout algorithm. Unset ⇒ the mode's default.
132
+ layout?: string,
133
+ }
134
+
135
+ /**
136
+ An optional view mode the deployed shell loads at boot.
137
+
138
+ A closed variant rather than the wire's `array<string>` because a mode is looked
139
+ up by name in the shell's registry: a misspelled or renamed mode type-checks,
140
+ deploys, and yields an app with the feature silently absent. The cost is real
141
+ and accepted — a mode that ships in the UI repo cannot be turned on until this
142
+ variant grows an arm and core releases.
143
+
144
+ `Map` turns on *both* halves of the map feature: the map view mode and the
145
+ map-backed geo-point command input are registered by the same `init`.
146
+ */
147
+ type viewMode =
148
+ | Map(mapOptions)
149
+ | Graph(graphOptions)
150
+
151
+ // The wire spelling of a mode, owned in one place so the variant and the string
152
+ // the shell matches on cannot drift apart.
153
+ let viewModeToString = (mode: viewMode) =>
154
+ switch mode {
155
+ | Map(_) => "map"
156
+ | Graph(_) => "graph"
157
+ }
158
+
119
159
  // Module type alias so StateViewSliceStream can reference the component T
120
160
  // without being confused by the `module StateViewSlice` declaration inside T.
121
161
  module type StateViewSliceComponentT = StateViewSlice.T
@@ -325,6 +365,20 @@ module type T = {
325
365
  // a deployment cannot mint refs under one prefix and serve another.
326
366
  // In-memory platforms ignore this.
327
367
  uploadBucket?: objectStore,
368
+ // Optional view modes the shell loads at boot, written to config.json as
369
+ // `viewModes` with each mode's options flattened beside it. Unset ⇒ the key
370
+ // is omitted and no optional mode loads: every mode is a separate
371
+ // dynamically-imported chunk, so a deployment that names none downloads
372
+ // none. In-memory platforms ignore this.
373
+ viewModes?: array<viewMode>,
374
+ // Shell-owned config.json keys the framework has no opinion about
375
+ // (`accessTiers`, `platformName`, `assetOrigins`, `uiHintsUrl`, …), merged
376
+ // in verbatim under the keys the deploy computes. Untyped on purpose: these
377
+ // belong to the shell's schema, and re-declaring them here would mean a
378
+ // lockstep core release every time the UI adds a knob. A key that collides
379
+ // with a computed one fails the deploy naming it, rather than quietly
380
+ // pointing the app somewhere else. In-memory platforms ignore this.
381
+ shellConfig?: dict<JSON.t>,
328
382
  }
329
383
 
330
384
  /** Deploy a complete platform: creates the scheduler, builds each plugin,
@@ -1,2 +1,15 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
- /* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
2
+
3
+
4
+ function viewModeToString(mode) {
5
+ if (mode.TAG === "Map") {
6
+ return "map";
7
+ } else {
8
+ return "graph";
9
+ }
10
+ }
11
+
12
+ export {
13
+ viewModeToString,
14
+ }
15
+ /* No side effect */