@reventlessdev/reventless-local 3.0.0-alpha.223 → 3.0.0-alpha.224

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,13 @@
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.224 (2026-08-15)
7
+
8
+ ### Features
9
+
10
+ * **aws:** serve one baked manifest per journey ([16d6307](https://github.com/ReventlessDev/reventless-core/commit/16d63071f059cf1fc7025f9be9206dda51f71053))
11
+
12
+
6
13
  # 3.0.0-alpha.223 (2026-08-15)
7
14
 
8
15
  ### Bug Fixes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-local",
3
- "version": "3.0.0-alpha.223",
3
+ "version": "3.0.0-alpha.224",
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,17 +35,17 @@
35
35
  "sury": "11.0.0-alpha.4",
36
36
  "ws": "^8.18.0",
37
37
  "@reventlessdev/rescript-effect": "0.1.0-alpha.32",
38
- "@reventlessdev/rescript-jest": "1.0.0-alpha.10",
39
- "@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.21",
40
38
  "@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.27",
41
- "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.19",
42
39
  "@reventlessdev/rescript-node": "2.0.0-alpha.7",
43
- "@reventlessdev/reventless-graphql-server": "1.0.0-alpha.83",
44
- "@reventlessdev/reventless-gwt": "1.0.0-alpha.182",
40
+ "@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.21",
41
+ "@reventlessdev/rescript-jest": "1.0.0-alpha.10",
42
+ "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.19",
43
+ "@reventlessdev/reventless-core": "3.0.0-alpha.236",
44
+ "@reventlessdev/reventless-graphql-server": "1.0.0-alpha.84",
45
45
  "@reventlessdev/reventless-infra": "3.0.0-alpha.142",
46
- "@reventlessdev/reventless-postgres": "3.0.0-alpha.99",
47
- "@reventlessdev/reventless-core": "3.0.0-alpha.235",
46
+ "@reventlessdev/reventless-gwt": "1.0.0-alpha.183",
48
47
  "@reventlessdev/reventless-seed": "1.0.0-alpha.14",
48
+ "@reventlessdev/reventless-postgres": "3.0.0-alpha.100",
49
49
  "@reventlessdev/reventless-spec": "3.0.0-alpha.114"
50
50
  },
51
51
  "devDependencies": {
@@ -9,50 +9,24 @@
9
9
 
10
10
  let log = ReventlessCore.Logger.fromEnv()
11
11
 
12
- /**
13
- A declared bake writes the file or fails loudly. Both failure modes it can hit
14
- are the deployment's own mistake — a name that matches no component, or a shell
15
- package that is not installed — and both produce the same symptom if swallowed:
16
- a shop that renders nothing, with no line in the log saying why.
17
- */
18
- let toSelections = (
19
- components: array<ReventlessInfra.Platform.bakedManifestSelection>,
20
- ): array<ReventlessCore.Platform_BakedManifest.selection> =>
21
- components->Array.map((s): ReventlessCore.Platform_BakedManifest.selection => {
22
- plugin: s.plugin,
23
- views: s.views,
24
- commands: s.commands,
25
- derived: s.derived,
26
- })
27
-
28
12
  /**
29
13
  Every file this declaration produces, as (key, selections) pairs.
30
14
 
31
- The default journey first, then one per declared journey. Separate from the
32
- write so the whole set is reachable from a test the same reason
33
- `ShellConfig.overlay` exists apart from its write.
15
+ The resolution itself is `Platform_BakedManifest.files`, shared with the deploy
16
+ for the reason the curation is: the key a file is written under and the URL a
17
+ shell fetches it from have to be the same string on either platform.
34
18
  */
35
19
  let files = (
36
20
  ~config: ReventlessInfra.Platform.bakedManifest,
37
- ): array<(string, array<ReventlessCore.Platform_BakedManifest.selection>)> => {
38
- let base = [
39
- (
40
- config.key->Option.getOr(ReventlessCore.Platform_BakedManifest.defaultKey),
41
- toSelections(config.components),
42
- ),
43
- ]
44
- switch config.journeys {
45
- | None => base
46
- | Some(journeys) =>
47
- base->Array.concat(
48
- journeys->Array.map(j => (
49
- j.key->Option.getOr(ReventlessCore.Platform_BakedManifest.journeyKey(~group=j.group)),
50
- toSelections(j.components),
51
- )),
52
- )
53
- }
54
- }
21
+ ): array<(string, array<ReventlessCore.Platform_BakedManifest.selection>)> =>
22
+ ReventlessCore.Platform_BakedManifest.files(~config)
55
23
 
24
+ /**
25
+ A declared bake writes the files or fails loudly. Both failure modes it can hit
26
+ are the deployment's own mistake — a name that matches no component, or a shell
27
+ package that is not installed — and both produce the same symptom if swallowed:
28
+ a shop that renders nothing, with no line in the log saying why.
29
+ */
56
30
  let emit = (
57
31
  ~structures: array<(string, Reventless.Plugin.pluginStructure)>,
58
32
  ~config: ReventlessInfra.Platform.bakedManifest,
@@ -2,7 +2,6 @@
2
2
 
3
3
  import * as Nodefs from "node:fs";
4
4
  import * as Nodepath from "node:path";
5
- import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
6
5
  import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
7
6
  import * as Logger$ReventlessCore from "@reventlessdev/reventless-core/src/util/Logger.res.mjs";
8
7
  import * as HostShellDist$ReventlessLocal from "./HostShellDist.res.mjs";
@@ -10,33 +9,10 @@ import * as Platform_BakedManifest$ReventlessCore from "@reventlessdev/reventles
10
9
 
11
10
  let log = Logger$ReventlessCore.fromEnv();
12
11
 
13
- function toSelections(components) {
14
- return components.map(s => ({
15
- plugin: s.plugin,
16
- views: s.views,
17
- commands: s.commands,
18
- derived: s.derived
19
- }));
20
- }
21
-
22
- function files(config) {
23
- let base = [[
24
- Stdlib_Option.getOr(config.key, Platform_BakedManifest$ReventlessCore.defaultKey),
25
- toSelections(config.components)
26
- ]];
27
- let journeys = config.journeys;
28
- if (journeys !== undefined) {
29
- return base.concat(journeys.map(j => [
30
- Stdlib_Option.getOr(j.key, Platform_BakedManifest$ReventlessCore.journeyKey(j.group)),
31
- toSelections(j.components)
32
- ]));
33
- } else {
34
- return base;
35
- }
36
- }
12
+ let files = Platform_BakedManifest$ReventlessCore.files;
37
13
 
38
14
  function emit(structures, config) {
39
- let outputs = files(config);
15
+ let outputs = Platform_BakedManifest$ReventlessCore.files(config);
40
16
  let curated = outputs.map(param => {
41
17
  let e = Platform_BakedManifest$ReventlessCore.curate(structures, param[1]);
42
18
  let tmp;
@@ -62,7 +38,6 @@ function emit(structures, config) {
62
38
 
63
39
  export {
64
40
  log,
65
- toSelections,
66
41
  files,
67
42
  emit,
68
43
  }
@@ -61,26 +61,16 @@ let overlay = (
61
61
  // Omitted entirely when nothing is declared, so a single-audience deployment
62
62
  // writes the same key set it always did and a shell that has never heard of
63
63
  // journeys sees no new keys.
64
- switch config.journeys {
65
- | None => ()
66
- | Some([]) => ()
67
- | Some(journeys) =>
68
- let map = Dict.make()
69
- journeys->Array.forEach(j =>
70
- map->Dict.set(
71
- j.group,
72
- JSON.Encode.string(
73
- ReventlessCore.Platform_BakedManifest.urlForKey(
74
- Some(
75
- j.key->Option.getOr(
76
- ReventlessCore.Platform_BakedManifest.journeyKey(~group=j.group),
77
- ),
78
- ),
79
- ),
80
- ),
81
- )
64
+ switch ReventlessCore.Platform_BakedManifest.journeyUrls(~config) {
65
+ | [] => ()
66
+ | urls =>
67
+ out->Dict.set(
68
+ journeyManifestsKey,
69
+ urls
70
+ ->Array.map(((group, url)) => (group, JSON.Encode.string(url)))
71
+ ->Dict.fromArray
72
+ ->JSON.Encode.object,
82
73
  )
83
- out->Dict.set(journeyManifestsKey, map->JSON.Encode.object)
84
74
  }
85
75
  })
86
76
 
@@ -31,18 +31,14 @@ function overlay(bakedManifest, shellConfig) {
31
31
  let out = {};
32
32
  Stdlib_Option.forEach(bakedManifest, config => {
33
33
  out["manifestUrl"] = Platform_BakedManifest$ReventlessCore.urlForKey(config.key);
34
- let journeys = config.journeys;
35
- if (journeys === undefined) {
34
+ let urls = Platform_BakedManifest$ReventlessCore.journeyUrls(config);
35
+ if (urls.length !== 0) {
36
+ out[journeyManifestsKey] = Object.fromEntries(urls.map(param => [
37
+ param[0],
38
+ param[1]
39
+ ]));
36
40
  return;
37
41
  }
38
- if (journeys.length === 0) {
39
- return;
40
- }
41
- let map = {};
42
- journeys.forEach(j => {
43
- map[j.group] = Platform_BakedManifest$ReventlessCore.urlForKey(Stdlib_Option.getOr(j.key, Platform_BakedManifest$ReventlessCore.journeyKey(j.group)));
44
- });
45
- out[journeyManifestsKey] = map;
46
42
  });
47
43
  Stdlib_Option.forEach(shellConfig, extra => {
48
44
  let collisions = Object.keys(extra).filter(k => computedKeys.includes(k));