@reventlessdev/reventless-infra 3.0.0-alpha.203 → 3.0.0-alpha.205
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,28 @@
|
|
|
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.205 (2026-10-25)
|
|
7
|
+
|
|
8
|
+
* refactor(aws)!: deploy and runtime configuration a function may lack are optional fields ([de80a54](https://github.com/ReventlessDev/reventless-core/commit/de80a546501a97b39cbe71200120f062bb260da4))
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* a plugin declares per role how a person is admitted, and the local platform honors the self-service and provisioned halves ([9c37bf5](https://github.com/ReventlessDev/reventless-core/commit/9c37bf50f15cac1703bf2c351713518121a56211))
|
|
12
|
+
* a stash capability holds a value for minutes outside the log and hands it over once ([627f285](https://github.com/ReventlessDev/reventless-core/commit/627f28529ead2d2d31bdd091c9f42e7faca40f6f))
|
|
13
|
+
|
|
14
|
+
### BREAKING CHANGES
|
|
15
|
+
|
|
16
|
+
* code that builds these records drops `name: None` and
|
|
17
|
+
writes `name: x` for `name: Some(x)`.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
# 3.0.0-alpha.204 (2026-10-23)
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* **aws:** a slice declaring the identity provider is handed one over the platform's Cognito pool ([b3a933b](https://github.com/ReventlessDev/reventless-core/commit/b3a933bbda475d0ce932a8de30616f738d639417))
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
# 3.0.0-alpha.203 (2026-10-22)
|
|
7
29
|
|
|
8
30
|
### Features
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reventlessdev/reventless-infra",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.205",
|
|
4
4
|
"description": "Infrastructure types for Reventless framework",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"jest": {
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"sury": "11.0.0",
|
|
17
17
|
"sury-ppx": "11.0.0",
|
|
18
18
|
"uuid": "^13.0.0",
|
|
19
|
-
"@reventlessdev/rescript-effect": "1.0.0-alpha.1",
|
|
20
19
|
"@reventlessdev/rescript-pulumi-pulumi": "3.0.0-alpha.0",
|
|
21
20
|
"@reventlessdev/rescript-uuid": "2.0.0-alpha.1",
|
|
22
|
-
"@reventlessdev/reventless-spec": "3.0.0-alpha.
|
|
21
|
+
"@reventlessdev/reventless-spec": "3.0.0-alpha.176",
|
|
22
|
+
"@reventlessdev/rescript-effect": "1.0.0-alpha.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"rescript": "12.3.1",
|
|
@@ -97,5 +97,7 @@ module type T = {
|
|
|
97
97
|
~componentChapters: dict<string>=?,
|
|
98
98
|
~lifecycleModel: array<Reventless.Plugin.derivedEdge>=?,
|
|
99
99
|
~identities: array<string>=?,
|
|
100
|
+
~admission: Reventless.Admission.t=?,
|
|
101
|
+
~admissionDoors: array<(string, Reventless.Admission.door)>=?,
|
|
100
102
|
) => Reventless.Plugin.pluginStructure
|
|
101
103
|
}
|
package/src/types/Platform.res
CHANGED
|
@@ -110,6 +110,7 @@ type capability =
|
|
|
110
110
|
| Geocoding
|
|
111
111
|
| Messaging
|
|
112
112
|
| IdentityProvider
|
|
113
|
+
| Stash
|
|
113
114
|
|
|
114
115
|
// A provisioned geocoding place index, as returned by the framework's geocoding
|
|
115
116
|
// capability helper. A record rather than a bare name so the handle can grow
|
|
@@ -477,10 +478,10 @@ module type T = {
|
|
|
477
478
|
messagingSender?: messagingSender,
|
|
478
479
|
// Optional identity provider for the unattended slice path: making,
|
|
479
480
|
// grouping and unmaking principals. A provider that runs in the platform's
|
|
480
|
-
// own process,
|
|
481
|
+
// own process, so only the in-memory platform reads it
|
|
481
482
|
// (`Capability_IdentityProvider_UserStore.make()`, over the accounts file
|
|
482
|
-
// its login reads). The AWS deploy ignores it
|
|
483
|
-
//
|
|
483
|
+
// its login reads). The AWS deploy ignores it: its pool always exists, and a
|
|
484
|
+
// plugin declaring the need is handed a provider over that pool.
|
|
484
485
|
identityProvider?: Reventless.IdentityProvider.t,
|
|
485
486
|
// Optional object store for direct-to-store uploads. When set, the deploy
|
|
486
487
|
// provisions a presign service against it, threads that service's URL into
|
|
@@ -11,12 +11,12 @@ not a literal cap — each platform adapter maps it to its own resource model
|
|
|
11
11
|
See docs/plans/configurable-component-runtime-resources.md.
|
|
12
12
|
*/
|
|
13
13
|
type t = {
|
|
14
|
-
memorySize
|
|
15
|
-
timeout
|
|
14
|
+
memorySize?: int,
|
|
15
|
+
timeout?: int,
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/** No hints — every field falls through to the per-kind builder default. */
|
|
19
|
-
let empty: t = {
|
|
19
|
+
let empty: t = {}
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
Resolve a component's memory floor: the per-component override raises the
|
|
@@ -25,7 +25,7 @@ the default unchanged.
|
|
|
25
25
|
*/
|
|
26
26
|
let resolveMemory = (hints: option<t>, ~default: int): int =>
|
|
27
27
|
switch hints {
|
|
28
|
-
| Some({memorySize: Some(m)}) => Math.Int.max(default, m)
|
|
28
|
+
| Some({memorySize: ?Some(m)}) => Math.Int.max(default, m)
|
|
29
29
|
| _ => default
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -36,6 +36,6 @@ override yields the default unchanged.
|
|
|
36
36
|
*/
|
|
37
37
|
let resolveTimeout = (hints: option<t>, ~default: int): int =>
|
|
38
38
|
switch hints {
|
|
39
|
-
| Some({timeout: Some(t)}) => t
|
|
39
|
+
| Some({timeout: ?Some(t)}) => t
|
|
40
40
|
| _ => default
|
|
41
41
|
}
|
|
@@ -12,23 +12,19 @@ describe("RuntimeHints.resolveMemory", () => {
|
|
|
12
12
|
expect(RH.resolveMemory(None, ~default=1024))->toBe(1024)
|
|
13
13
|
})
|
|
14
14
|
testSync("an override above the default wins", () => {
|
|
15
|
-
expect(RH.resolveMemory(Some({memorySize:
|
|
16
|
-
2048,
|
|
17
|
-
)
|
|
15
|
+
expect(RH.resolveMemory(Some({memorySize: 2048}), ~default=1024))->toBe(2048)
|
|
18
16
|
})
|
|
19
17
|
testSync("an override below the default is clamped up to the floor", () => {
|
|
20
|
-
expect(RH.resolveMemory(Some({memorySize:
|
|
21
|
-
1024,
|
|
22
|
-
)
|
|
18
|
+
expect(RH.resolveMemory(Some({memorySize: 256}), ~default=1024))->toBe(1024)
|
|
23
19
|
})
|
|
24
20
|
testSync("an absent memorySize field falls through to the default", () => {
|
|
25
|
-
expect(RH.resolveMemory(Some({
|
|
21
|
+
expect(RH.resolveMemory(Some({timeout: 60}), ~default=1024))->toBe(1024)
|
|
26
22
|
})
|
|
27
23
|
})
|
|
28
24
|
|
|
29
25
|
describe("RuntimeHints.resolveTimeout", () => {
|
|
30
26
|
testSync("an explicit timeout replaces the default (no max)", () => {
|
|
31
|
-
expect(RH.resolveTimeout(Some({
|
|
27
|
+
expect(RH.resolveTimeout(Some({timeout: 15}), ~default=30))->toBe(15)
|
|
32
28
|
})
|
|
33
29
|
testSync("no hint falls through to the default", () => {
|
|
34
30
|
expect(RH.resolveTimeout(None, ~default=30))->toBe(30)
|