@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 +7 -0
- package/package.json +8 -8
- package/src/BakedManifest.res +11 -37
- package/src/BakedManifest.res.mjs +2 -27
- package/src/ShellConfig.res +9 -19
- package/src/ShellConfig.res.mjs +6 -10
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.
|
|
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/
|
|
44
|
-
"@reventlessdev/
|
|
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-
|
|
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": {
|
package/src/BakedManifest.res
CHANGED
|
@@ -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
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
}
|
package/src/ShellConfig.res
CHANGED
|
@@ -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
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
|
package/src/ShellConfig.res.mjs
CHANGED
|
@@ -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
|
|
35
|
-
if (
|
|
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));
|