@reventlessdev/rescript-pulumi-aws 2.4.0-alpha.43 → 2.4.0-alpha.45

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
+ # 2.4.0-alpha.45 (2026-07-05)
7
+
8
+ ### Features
9
+
10
+ * **rescript-pulumi-aws:** add RDS, Secrets Manager, and Lambda VPC bindings ([9b4fb3d](https://github.com/ReventlessDev/reventless-core/commit/9b4fb3d0b4173cc6f645a903801e59901dbbdeb2))
11
+ * **reventless-aws:** add PgConnection component + wire reventless-postgres dep ([a403a62](https://github.com/ReventlessDev/reventless-core/commit/a403a6292381513cfe679a2f7a967fda0ab00c0e))
12
+
13
+
14
+ # 2.4.0-alpha.44 (2026-06-27)
15
+
16
+ **Note:** Version bump only for package @reventlessdev/rescript-pulumi-aws
17
+
18
+
19
+
20
+
21
+
6
22
  # 2.4.0-alpha.43 (2026-06-21)
7
23
 
8
24
  ### Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/rescript-pulumi-aws",
3
- "version": "2.4.0-alpha.43",
3
+ "version": "2.4.0-alpha.45",
4
4
  "description": "ReScript bindings for @pulumi/aws",
5
5
  "license": "Apache-2.0",
6
6
  "jest": {
@@ -22,8 +22,8 @@
22
22
  "@pulumi/aws": "~7.19.0",
23
23
  "@pulumi/aws-native": "^1.62.0",
24
24
  "sury": "11.0.0-alpha.4",
25
- "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.13",
26
- "@reventlessdev/rescript-aws-sdk": "2.2.0-alpha.19"
25
+ "@reventlessdev/rescript-aws-sdk": "2.2.0-alpha.20",
26
+ "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.14"
27
27
  },
28
28
  "devDependencies": {
29
29
  "esbuild": "^0.25.12",
@@ -4,7 +4,18 @@
4
4
  type t = {id: Pulumi.Output.t<string>}
5
5
 
6
6
  module Ingress = {
7
- type t = {fromPort: int, protocol: string, toPort: int, cidrBlocks: array<string>}
7
+ type t = {
8
+ fromPort: int,
9
+ protocol: string,
10
+ toPort: int,
11
+ cidrBlocks: array<string>,
12
+ /** Allow traffic from other members of this same security group. The
13
+ idiomatic RDS+Lambda pattern: the DB and its client Lambdas share one SG
14
+ and this rule lets them reach the DB port without a separate client SG. */
15
+ self?: bool,
16
+ /** Allow traffic from the given source security group IDs. */
17
+ securityGroups?: array<Pulumi.Input.t<string>>,
18
+ }
8
19
  let allowAll = {fromPort: 0, protocol: "-1", toPort: 0, cidrBlocks: ["0.0.0.0/0"]}
9
20
  }
10
21
 
@@ -206,6 +206,15 @@ module Function = {
206
206
 
207
207
  type ephemeralStorage = {size: Pulumi.Input.t<int>}
208
208
 
209
+ /** Places the function inside a VPC so it can reach private resources such as
210
+ RDS/Aurora. Adds ENIs to the given subnets and attaches the security
211
+ groups; the execution role then needs `ec2:CreateNetworkInterface`,
212
+ `ec2:DescribeNetworkInterfaces`, `ec2:DeleteNetworkInterface`. */
213
+ type vpcConfig = {
214
+ subnetIds: Pulumi.Input.t<array<Pulumi.Input.t<string>>>,
215
+ securityGroupIds: Pulumi.Input.t<array<Pulumi.Input.t<string>>>,
216
+ }
217
+
209
218
  type args = {
210
219
  handler?: Pulumi.Input.t<string>,
211
220
  runtime?: Pulumi.Input.t<string>,
@@ -219,6 +228,7 @@ module Function = {
219
228
  sourceCodeHash?: Pulumi.Input.t<string>,
220
229
  reservedConcurrentExecutions?: Pulumi.Input.t<int>,
221
230
  ephemeralStorage?: Pulumi.Input.t<ephemeralStorage>,
231
+ vpcConfig?: Pulumi.Input.t<vpcConfig>,
222
232
  }
223
233
 
224
234
  type t = {
@@ -0,0 +1,8 @@
1
+ /** @pulumi/aws/rds
2
+ see: https://www.pulumi.com/registry/packages/aws/api-docs/rds
3
+ */
4
+ module Instance = Rds_Instance
5
+ module Cluster = Rds_Cluster
6
+ module ClusterInstance = Rds_ClusterInstance
7
+ module SubnetGroup = Rds_SubnetGroup
8
+ module Proxy = Rds_Proxy
@@ -0,0 +1,21 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+
4
+ let Instance;
5
+
6
+ let Cluster;
7
+
8
+ let ClusterInstance;
9
+
10
+ let SubnetGroup;
11
+
12
+ let $$Proxy;
13
+
14
+ export {
15
+ Instance,
16
+ Cluster,
17
+ ClusterInstance,
18
+ SubnetGroup,
19
+ $$Proxy,
20
+ }
21
+ /* No side effect */
@@ -0,0 +1,59 @@
1
+ /** @pulumi/aws/rds/cluster
2
+ see: https://www.pulumi.com/registry/packages/aws/api-docs/rds/cluster
3
+
4
+ Aurora (incl. Aurora Serverless v2) Postgres cluster. Pair with one or more
5
+ `Rds_ClusterInstance` — a cluster has no compute of its own.
6
+ */
7
+
8
+ /** See `Rds_Instance.masterUserSecret`. */
9
+ type masterUserSecret = {
10
+ kmsKeyId: string,
11
+ secretArn: string,
12
+ secretStatus: string,
13
+ }
14
+
15
+ /** Aurora Serverless v2 autoscaling bounds, in ACUs (0.5-increment floats). */
16
+ type serverlessv2ScalingConfiguration = {
17
+ maxCapacity: float,
18
+ minCapacity: float,
19
+ }
20
+
21
+ type t = {
22
+ arn: Pulumi.Output.t<string>,
23
+ id: Pulumi.Output.t<string>,
24
+ clusterIdentifier: Pulumi.Output.t<string>,
25
+ /** Writer endpoint hostname. */
26
+ endpoint: Pulumi.Output.t<string>,
27
+ /** Load-balanced reader endpoint hostname. */
28
+ readerEndpoint: Pulumi.Output.t<string>,
29
+ port: Pulumi.Output.t<int>,
30
+ databaseName: Pulumi.Output.t<string>,
31
+ masterUsername: Pulumi.Output.t<string>,
32
+ masterUserSecrets: Pulumi.Output.t<array<masterUserSecret>>,
33
+ }
34
+
35
+ type args = {
36
+ engine: Pulumi.Input.t<string>,
37
+ engineMode?: Pulumi.Input.t<string>,
38
+ engineVersion?: Pulumi.Input.t<string>,
39
+ clusterIdentifier?: Pulumi.Input.t<string>,
40
+ databaseName?: Pulumi.Input.t<string>,
41
+ masterUsername?: Pulumi.Input.t<string>,
42
+ masterPassword?: Pulumi.Input.t<string>,
43
+ manageMasterUserPassword?: Pulumi.Input.t<bool>,
44
+ dbSubnetGroupName?: Pulumi.Input.t<string>,
45
+ vpcSecurityGroupIds?: Pulumi.Input.t<array<Pulumi.Input.t<string>>>,
46
+ port?: Pulumi.Input.t<int>,
47
+ serverlessv2ScalingConfiguration?: Pulumi.Input.t<serverlessv2ScalingConfiguration>,
48
+ storageEncrypted?: Pulumi.Input.t<bool>,
49
+ backupRetentionPeriod?: Pulumi.Input.t<int>,
50
+ deletionProtection?: Pulumi.Input.t<bool>,
51
+ skipFinalSnapshot?: Pulumi.Input.t<bool>,
52
+ finalSnapshotIdentifier?: Pulumi.Input.t<string>,
53
+ applyImmediately?: Pulumi.Input.t<bool>,
54
+ tags?: Pulumi.Input.t<Aws.tags>,
55
+ }
56
+
57
+ @module("@pulumi/aws") @scope("rds") @new
58
+ external make: (~name: string, ~args: args, ~opts: Pulumi.CustomResourceOptions.t=?) => t =
59
+ "Cluster"
@@ -0,0 +1,2 @@
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. */
@@ -0,0 +1,29 @@
1
+ /** @pulumi/aws/rds/clusterinstance
2
+ see: https://www.pulumi.com/registry/packages/aws/api-docs/rds/clusterinstance
3
+
4
+ A compute node attached to an `Rds_Cluster`. Use `instanceClass =
5
+ "db.serverless"` for Aurora Serverless v2.
6
+ */
7
+ type t = {
8
+ arn: Pulumi.Output.t<string>,
9
+ id: Pulumi.Output.t<string>,
10
+ /** This node's own endpoint hostname (prefer the cluster writer endpoint). */
11
+ endpoint: Pulumi.Output.t<string>,
12
+ port: Pulumi.Output.t<int>,
13
+ }
14
+
15
+ type args = {
16
+ clusterIdentifier: Pulumi.Input.t<string>,
17
+ instanceClass: Pulumi.Input.t<string>,
18
+ engine: Pulumi.Input.t<string>,
19
+ engineVersion?: Pulumi.Input.t<string>,
20
+ identifier?: Pulumi.Input.t<string>,
21
+ dbSubnetGroupName?: Pulumi.Input.t<string>,
22
+ publiclyAccessible?: Pulumi.Input.t<bool>,
23
+ applyImmediately?: Pulumi.Input.t<bool>,
24
+ tags?: Pulumi.Input.t<Aws.tags>,
25
+ }
26
+
27
+ @module("@pulumi/aws") @scope("rds") @new
28
+ external make: (~name: string, ~args: args, ~opts: Pulumi.CustomResourceOptions.t=?) => t =
29
+ "ClusterInstance"
@@ -0,0 +1,2 @@
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. */
@@ -0,0 +1,59 @@
1
+ /** @pulumi/aws/rds/instance
2
+ see: https://www.pulumi.com/registry/packages/aws/api-docs/rds/instance
3
+ */
4
+
5
+ /** One entry of `masterUserSecrets`, populated when `manageMasterUserPassword`
6
+ is true — RDS creates and rotates the master password in Secrets Manager and
7
+ reports the secret ARN here. */
8
+ type masterUserSecret = {
9
+ kmsKeyId: string,
10
+ secretArn: string,
11
+ secretStatus: string,
12
+ }
13
+
14
+ type t = {
15
+ arn: Pulumi.Output.t<string>,
16
+ id: Pulumi.Output.t<string>,
17
+ /** Hostname of the instance (no port). */
18
+ address: Pulumi.Output.t<string>,
19
+ /** `address:port`. */
20
+ endpoint: Pulumi.Output.t<string>,
21
+ port: Pulumi.Output.t<int>,
22
+ dbName: Pulumi.Output.t<string>,
23
+ username: Pulumi.Output.t<string>,
24
+ /** Present when `manageMasterUserPassword=true`. */
25
+ masterUserSecrets: Pulumi.Output.t<array<masterUserSecret>>,
26
+ }
27
+
28
+ type args = {
29
+ allocatedStorage?: Pulumi.Input.t<int>,
30
+ maxAllocatedStorage?: Pulumi.Input.t<int>,
31
+ engine: Pulumi.Input.t<string>,
32
+ engineVersion?: Pulumi.Input.t<string>,
33
+ instanceClass: Pulumi.Input.t<string>,
34
+ /** Name of the initial database created inside the instance. */
35
+ dbName?: Pulumi.Input.t<string>,
36
+ identifier?: Pulumi.Input.t<string>,
37
+ username?: Pulumi.Input.t<string>,
38
+ password?: Pulumi.Input.t<string>,
39
+ /** Let RDS manage the master password in Secrets Manager (mutually
40
+ exclusive with `password`). Secret ARN surfaces on `masterUserSecrets`. */
41
+ manageMasterUserPassword?: Pulumi.Input.t<bool>,
42
+ dbSubnetGroupName?: Pulumi.Input.t<string>,
43
+ vpcSecurityGroupIds?: Pulumi.Input.t<array<Pulumi.Input.t<string>>>,
44
+ port?: Pulumi.Input.t<int>,
45
+ multiAz?: Pulumi.Input.t<bool>,
46
+ publiclyAccessible?: Pulumi.Input.t<bool>,
47
+ storageEncrypted?: Pulumi.Input.t<bool>,
48
+ backupRetentionPeriod?: Pulumi.Input.t<int>,
49
+ deletionProtection?: Pulumi.Input.t<bool>,
50
+ skipFinalSnapshot?: Pulumi.Input.t<bool>,
51
+ finalSnapshotIdentifier?: Pulumi.Input.t<string>,
52
+ applyImmediately?: Pulumi.Input.t<bool>,
53
+ parameterGroupName?: Pulumi.Input.t<string>,
54
+ tags?: Pulumi.Input.t<Aws.tags>,
55
+ }
56
+
57
+ @module("@pulumi/aws") @scope("rds") @new
58
+ external make: (~name: string, ~args: args, ~opts: Pulumi.CustomResourceOptions.t=?) => t =
59
+ "Instance"
@@ -0,0 +1,2 @@
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. */
@@ -0,0 +1,38 @@
1
+ /** @pulumi/aws/rds/proxy
2
+ see: https://www.pulumi.com/registry/packages/aws/api-docs/rds/proxy
3
+
4
+ RDS Proxy multiplexes many Lambda-container connections onto a small pool of
5
+ DB connections. At Lambda fan-out scale this is the recommended fronting for
6
+ RDS/Aurora; pair with the `#RowLocks` DCB strategy (advisory locks pin
7
+ connections and defeat the proxy — see the AWS-deployment guide).
8
+ */
9
+ type auth = {
10
+ authScheme?: string,
11
+ iamAuth?: string,
12
+ secretArn?: Pulumi.Input.t<string>,
13
+ description?: string,
14
+ }
15
+
16
+ type t = {
17
+ arn: Pulumi.Output.t<string>,
18
+ id: Pulumi.Output.t<string>,
19
+ /** Proxy endpoint hostname — Lambdas connect here instead of the DB. */
20
+ endpoint: Pulumi.Output.t<string>,
21
+ }
22
+
23
+ type args = {
24
+ name?: Pulumi.Input.t<string>,
25
+ engineFamily: Pulumi.Input.t<string>,
26
+ auths: Pulumi.Input.t<array<Pulumi.Input.t<auth>>>,
27
+ roleArn: Pulumi.Input.t<string>,
28
+ vpcSubnetIds: Pulumi.Input.t<array<Pulumi.Input.t<string>>>,
29
+ vpcSecurityGroupIds?: Pulumi.Input.t<array<Pulumi.Input.t<string>>>,
30
+ requireTls?: Pulumi.Input.t<bool>,
31
+ idleClientTimeout?: Pulumi.Input.t<int>,
32
+ debugLogging?: Pulumi.Input.t<bool>,
33
+ tags?: Pulumi.Input.t<Aws.tags>,
34
+ }
35
+
36
+ @module("@pulumi/aws") @scope("rds") @new
37
+ external make: (~name: string, ~args: args, ~opts: Pulumi.CustomResourceOptions.t=?) => t =
38
+ "Proxy"
@@ -0,0 +1,2 @@
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. */
@@ -0,0 +1,18 @@
1
+ /** @pulumi/aws/rds/subnetgroup
2
+ see: https://www.pulumi.com/registry/packages/aws/api-docs/rds/subnetgroup
3
+ */
4
+ type t = {
5
+ arn: Pulumi.Output.t<string>,
6
+ id: Pulumi.Output.t<string>,
7
+ name: Pulumi.Output.t<string>,
8
+ }
9
+
10
+ type args = {
11
+ name?: Pulumi.Input.t<string>,
12
+ subnetIds: Pulumi.Input.t<array<Pulumi.Input.t<string>>>,
13
+ tags?: Pulumi.Input.t<Aws.tags>,
14
+ }
15
+
16
+ @module("@pulumi/aws") @scope("rds") @new
17
+ external make: (~name: string, ~args: args, ~opts: Pulumi.CustomResourceOptions.t=?) => t =
18
+ "SubnetGroup"
@@ -0,0 +1,2 @@
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. */
@@ -0,0 +1,6 @@
1
+ /** @pulumi/aws/secretsmanager
2
+ see: https://www.pulumi.com/registry/packages/aws/api-docs/secretsmanager
3
+ */
4
+ module Secret = SecretsManager_Secret
5
+ module SecretVersion = SecretsManager_SecretVersion
6
+ module GetSecretVersion = GetSecretVersion
@@ -0,0 +1,15 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+
4
+ let Secret;
5
+
6
+ let SecretVersion;
7
+
8
+ let GetSecretVersion;
9
+
10
+ export {
11
+ Secret,
12
+ SecretVersion,
13
+ GetSecretVersion,
14
+ }
15
+ /* No side effect */
@@ -0,0 +1,23 @@
1
+ /** @pulumi/aws/secretsmanager/secret
2
+ see: https://www.pulumi.com/registry/packages/aws/api-docs/secretsmanager/secret
3
+ */
4
+ type t = {
5
+ arn: Pulumi.Output.t<string>,
6
+ id: Pulumi.Output.t<string>,
7
+ name: Pulumi.Output.t<string>,
8
+ }
9
+
10
+ type args = {
11
+ name?: Pulumi.Input.t<string>,
12
+ namePrefix?: Pulumi.Input.t<string>,
13
+ description?: Pulumi.Input.t<string>,
14
+ kmsKeyId?: Pulumi.Input.t<string>,
15
+ /** Days before a deleted secret is irrecoverably purged. Set `0` to delete
16
+ immediately (handy for throwaway CI/dev stacks). */
17
+ recoveryWindowInDays?: Pulumi.Input.t<int>,
18
+ tags?: Pulumi.Input.t<Aws.tags>,
19
+ }
20
+
21
+ @module("@pulumi/aws") @scope("secretsmanager") @new
22
+ external make: (~name: string, ~args: args=?, ~opts: Pulumi.CustomResourceOptions.t=?) => t =
23
+ "Secret"
@@ -0,0 +1,2 @@
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. */
@@ -0,0 +1,21 @@
1
+ /** @pulumi/aws/secretsmanager/secretversion
2
+ see: https://www.pulumi.com/registry/packages/aws/api-docs/secretsmanager/secretversion
3
+ */
4
+ type t = {
5
+ arn: Pulumi.Output.t<string>,
6
+ id: Pulumi.Output.t<string>,
7
+ versionId: Pulumi.Output.t<string>,
8
+ }
9
+
10
+ type args = {
11
+ secretId: Pulumi.Input.t<string>,
12
+ /** Plaintext secret payload (typically a JSON connection blob). Prefer
13
+ `secretString` over `secretBinary`. */
14
+ secretString?: Pulumi.Input.t<string>,
15
+ secretBinary?: Pulumi.Input.t<string>,
16
+ versionStages?: Pulumi.Input.t<array<Pulumi.Input.t<string>>>,
17
+ }
18
+
19
+ @module("@pulumi/aws") @scope("secretsmanager") @new
20
+ external make: (~name: string, ~args: args, ~opts: Pulumi.CustomResourceOptions.t=?) => t =
21
+ "SecretVersion"
@@ -0,0 +1,2 @@
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. */