@reventlessdev/reventless-aws 3.0.0-alpha.398 → 3.0.0-alpha.400

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.400 (2026-10-25)
7
+
8
+ **Note:** Version bump only for package @reventlessdev/reventless-aws
9
+
10
+
11
+
12
+
13
+
14
+ # 3.0.0-alpha.399 (2026-10-25)
15
+
16
+ **Note:** Version bump only for package @reventlessdev/reventless-aws
17
+
18
+
19
+
20
+
21
+
6
22
  # 3.0.0-alpha.398 (2026-10-25)
7
23
 
8
24
  ### Bug Fixes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-aws",
3
- "version": "3.0.0-alpha.398",
3
+ "version": "3.0.0-alpha.400",
4
4
  "description": "AWS adapters for Reventless",
5
5
  "license": "Apache-2.0",
6
6
  "bin": {
@@ -24,17 +24,17 @@
24
24
  "yaml": "^2.8.3",
25
25
  "@reventlessdev/rescript-effect": "1.0.0-alpha.1",
26
26
  "@reventlessdev/rescript-jest": "1.0.0-alpha.13",
27
- "@reventlessdev/rescript-aws-sdk": "3.0.0-alpha.36",
28
27
  "@reventlessdev/rescript-node": "2.0.0-alpha.23",
29
28
  "@reventlessdev/rescript-pulumi-aws": "3.0.0-alpha.34",
29
+ "@reventlessdev/rescript-aws-sdk": "3.0.0-alpha.36",
30
30
  "@reventlessdev/rescript-pulumi-pulumi": "3.0.0-alpha.0",
31
+ "@reventlessdev/rescript-web": "1.0.0-alpha.8",
31
32
  "@reventlessdev/rescript-uuid": "2.0.0-alpha.1",
32
- "@reventlessdev/reventless-core": "3.0.0-alpha.308",
33
+ "@reventlessdev/reventless-core": "3.0.0-alpha.310",
34
+ "@reventlessdev/reventless-infra": "3.0.0-alpha.207",
33
35
  "@reventlessdev/reventless-interop": "3.0.0-alpha.42",
34
- "@reventlessdev/rescript-web": "1.0.0-alpha.8",
35
- "@reventlessdev/reventless-postgres": "3.0.0-alpha.172",
36
- "@reventlessdev/reventless-infra": "3.0.0-alpha.205",
37
- "@reventlessdev/reventless-spec": "3.0.0-alpha.176"
36
+ "@reventlessdev/reventless-postgres": "3.0.0-alpha.174",
37
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.178"
38
38
  },
39
39
  "devDependencies": {
40
40
  "rescript": "12.3.1",
@@ -61,7 +61,7 @@ Usage: deploy-app up|down [--manifest <path>] [--stack <name>]
61
61
  Deploy an app to AWS, or remove it again.
62
62
 
63
63
  deploy-app up Deploy the platform and every plugin, bake the component
64
- manifest, create the accounts in .reventless/users.<stack>.yaml,
64
+ manifest, create the accounts in .reventless/accounts.<stack>.yaml,
65
65
  and print the web address and the sign-ins.
66
66
  deploy-app down Remove every stack, and the Lambda layer and SSM parameter
67
67
  \`up\` created.
@@ -495,12 +495,23 @@ let outputString = (outputs: dict<Automation.outputValue>, name: string): option
495
495
  /** The stack's own accounts file beside the platform, started from the app's
496
496
  template, or `None` when the app has no template — then there is nothing to
497
497
  create. Per stack because the file records the ids one pool minted: sharing
498
- `users.yaml` would overwrite another deployment's record of its accounts. */
499
- let accountsFileName = stack => `users.${stack}.yaml`
498
+ `accounts.yaml` would overwrite another deployment's record of its accounts. A stack deployed
499
+ before the file was renamed keeps its `users.<stack>.yaml` until it is renamed. */
500
+ let accountsFileName = stack => `accounts.${stack}.yaml`
501
+ let oldAccountsFileName = stack => `users.${stack}.yaml`
500
502
 
501
503
  let accountsFile = (~platformDir: string, ~stack: string): option<string> => {
502
- let file = NodePath.join([platformDir, ".reventless", accountsFileName(stack)])
503
- let template = NodePath.join([platformDir, Manifest.templateName])
504
+ let file = {
505
+ let current = NodePath.join([platformDir, ".reventless", accountsFileName(stack)])
506
+ let old = NodePath.join([platformDir, ".reventless", oldAccountsFileName(stack)])
507
+ if !NodeFs.existsSync(current) && NodeFs.existsSync(old) {
508
+ Manifest.noticeOldName(old)
509
+ old
510
+ } else {
511
+ current
512
+ }
513
+ }
514
+ let template = Manifest.templateIn(platformDir)
504
515
  switch (NodeFs.existsSync(file), NodeFs.existsSync(template)) {
505
516
  | (false, false) => None
506
517
  | (true, _) => Some(file)
@@ -87,7 +87,7 @@ Usage: deploy-app up|down [--manifest <path>] [--stack <name>]
87
87
  Deploy an app to AWS, or remove it again.
88
88
 
89
89
  deploy-app up Deploy the platform and every plugin, bake the component
90
- manifest, create the accounts in .reventless/users.<stack>.yaml,
90
+ manifest, create the accounts in .reventless/accounts.<stack>.yaml,
91
91
  and print the web address and the sign-ins.
92
92
  deploy-app down Remove every stack, and the Lambda layer and SSM parameter
93
93
  \`up\` created.
@@ -611,12 +611,18 @@ function outputString(outputs, name) {
611
611
  }
612
612
 
613
613
  function accountsFileName(stack) {
614
+ return `accounts.` + stack + `.yaml`;
615
+ }
616
+
617
+ function oldAccountsFileName(stack) {
614
618
  return `users.` + stack + `.yaml`;
615
619
  }
616
620
 
617
621
  function accountsFile(platformDir, stack) {
618
- let file = Nodepath.join(platformDir, ".reventless", accountsFileName(stack));
619
- let template = Nodepath.join(platformDir, AccountsManifest$Reventless.templateName);
622
+ let current = Nodepath.join(platformDir, ".reventless", accountsFileName(stack));
623
+ let old = Nodepath.join(platformDir, ".reventless", oldAccountsFileName(stack));
624
+ let file = !Nodefs.existsSync(current) && Nodefs.existsSync(old) ? (AccountsManifest$Reventless.noticeOldName(old), old) : current;
625
+ let template = AccountsManifest$Reventless.templateIn(platformDir);
620
626
  let match = Nodefs.existsSync(file);
621
627
  let match$1 = Nodefs.existsSync(template);
622
628
  if (match) {
@@ -946,6 +952,7 @@ export {
946
952
  deploy,
947
953
  outputString,
948
954
  accountsFileName,
955
+ oldAccountsFileName,
949
956
  accountsFile,
950
957
  signInLines,
951
958
  up,
@@ -17,7 +17,7 @@ one alone is enough.
17
17
  pnpm exec provision-accounts
18
18
  ```
19
19
 
20
- It reads `.reventless/users.yaml`, and knows nothing about any particular
20
+ It reads `.reventless/accounts.yaml`, and knows nothing about any particular
21
21
  application's cast: the manifest belongs to whoever is deploying. A demo's four
22
22
  roles and a company's twelve staff are the same run. Which pool it writes to is
23
23
  [ProvisionProvider]'s question, and usually needs no argument either.
@@ -76,7 +76,7 @@ Turn a declared cast of accounts into working sign-ins.
76
76
  created the pool or was handed one.
77
77
  --stack <name> Read that output from this stack instead of the selected
78
78
  one. The run always names the stack it used.
79
- --file <path> The manifest. Defaults to .reventless/users.yaml relative
79
+ --file <path> The manifest. Defaults to .reventless/accounts.yaml relative
80
80
  to the working directory, which is where both platforms
81
81
  keep it.
82
82
 
@@ -39,7 +39,7 @@ Turn a declared cast of accounts into working sign-ins.
39
39
  created the pool or was handed one.
40
40
  --stack <name> Read that output from this stack instead of the selected
41
41
  one. The run always names the stack it used.
42
- --file <path> The manifest. Defaults to .reventless/users.yaml relative
42
+ --file <path> The manifest. Defaults to .reventless/accounts.yaml relative
43
43
  to the working directory, which is where both platforms
44
44
  keep it.
45
45
 
@@ -198,7 +198,7 @@ ${passwordNote}
198
198
  This script bootstraps the first account only, which is the one that cannot be
199
199
  made through a signed-in session because there is no signed-in session yet. The
200
200
  rest of the cast is a list rather than a command: declare it in
201
- .reventless/users.yaml and run \`pnpm exec provision-accounts\`.`
201
+ .reventless/accounts.yaml and run \`pnpm exec provision-accounts\`.`
202
202
 
203
203
  type request = {email: string, providerId?: string, stack?: string}
204
204
 
@@ -119,7 +119,7 @@ The first administrator is ready.
119
119
  This script bootstraps the first account only, which is the one that cannot be
120
120
  made through a signed-in session because there is no signed-in session yet. The
121
121
  rest of the cast is a list rather than a command: declare it in
122
- .reventless/users.yaml and run \`pnpm exec provision-accounts\`.`;
122
+ .reventless/accounts.yaml and run \`pnpm exec provision-accounts\`.`;
123
123
  }
124
124
 
125
125
  function parseRequest(argv) {
@@ -1,7 +1,7 @@
1
1
  // The identity provider a deployed platform provisions: principals in its
2
2
  // Cognito pool, and each new one's domain id in the identity store the pool's
3
3
  // pre-token trigger reads. The AWS counterpart of the local platform's
4
- // `Capability_IdentityProvider_UserStore`, and reached the same way — on the
4
+ // `Capability_IdentityProvider_AccountStore`, and reached the same way — on the
5
5
  // capability record a slice's `translate` receives.
6
6
  //
7
7
  // Pulumi-free so it ships in the slice Lambda. The pool calls go through an
@@ -147,7 +147,7 @@ describe("ProvisionAccounts.provision", () => {
147
147
 
148
148
  test("a refused pool leaves the manifest untouched", async () => {
149
149
  let dir = NodeFs.mkdtempSync(NodePath.join([NodeOs.tmpdir(), "provision-accounts-"]))
150
- let file = NodePath.join([dir, "users.yaml"])
150
+ let file = NodePath.join([dir, "accounts.yaml"])
151
151
  NodeFs.writeFileSync(file, manifest)
152
152
  let refuse = async (~providerId as _, ~usernames as _) => Error("pool signs in on email")
153
153
  let outcome = await Provision.provision(
@@ -147,7 +147,7 @@ globalThis.describe("ProvisionAccounts.provision", () => {
147
147
  `;
148
148
  globalThis.test("a refused pool leaves the manifest untouched", async () => {
149
149
  let dir = Nodefs.mkdtempSync(Nodepath.join(Nodeos.tmpdir(), "provision-accounts-"));
150
- let file = Nodepath.join(dir, "users.yaml");
150
+ let file = Nodepath.join(dir, "accounts.yaml");
151
151
  Nodefs.writeFileSync(file, manifest, "utf8");
152
152
  let refuse = async (param, param$1) => ({
153
153
  TAG: "Error",