@anvil-cloud/sdk 0.0.13 → 0.0.15

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.
Files changed (63) hide show
  1. package/aws/cognitoAuth.ts +70 -0
  2. package/aws/cognitoUserPool.ts +132 -0
  3. package/aws/dynamoDB.ts +176 -0
  4. package/aws/eventBus.ts +91 -0
  5. package/aws/httpApi.ts +108 -0
  6. package/aws/index.ts +63 -0
  7. package/aws/lambda.ts +9 -3
  8. package/aws/oauthAuthorizer.ts +70 -0
  9. package/aws/queue.ts +156 -0
  10. package/aws/svelteKitSite.ts +14 -0
  11. package/aws/vpc.ts +159 -0
  12. package/aws/vpcEndpoint.ts +98 -0
  13. package/bin/aws/cognitoAuth.d.ts +36 -0
  14. package/bin/aws/cognitoAuth.js +53 -0
  15. package/bin/aws/cognitoAuth.js.map +1 -0
  16. package/bin/aws/cognitoUserPool.d.ts +82 -0
  17. package/bin/aws/cognitoUserPool.js +65 -0
  18. package/bin/aws/cognitoUserPool.js.map +1 -0
  19. package/bin/aws/dynamoDB.d.ts +115 -0
  20. package/bin/aws/dynamoDB.js +121 -0
  21. package/bin/aws/dynamoDB.js.map +1 -0
  22. package/bin/aws/eventBus.d.ts +47 -0
  23. package/bin/aws/eventBus.js +63 -0
  24. package/bin/aws/eventBus.js.map +1 -0
  25. package/bin/aws/httpApi.d.ts +66 -0
  26. package/bin/aws/httpApi.js +60 -0
  27. package/bin/aws/httpApi.js.map +1 -0
  28. package/bin/aws/index.d.ts +27 -0
  29. package/bin/aws/index.js +37 -1
  30. package/bin/aws/index.js.map +1 -1
  31. package/bin/aws/lambda.d.ts +7 -3
  32. package/bin/aws/lambda.js +2 -0
  33. package/bin/aws/lambda.js.map +1 -1
  34. package/bin/aws/oauthAuthorizer.d.ts +36 -0
  35. package/bin/aws/oauthAuthorizer.js +53 -0
  36. package/bin/aws/oauthAuthorizer.js.map +1 -0
  37. package/bin/aws/queue.d.ts +83 -0
  38. package/bin/aws/queue.js +103 -0
  39. package/bin/aws/queue.js.map +1 -0
  40. package/bin/aws/svelteKitSite.d.ts +9 -0
  41. package/bin/aws/svelteKitSite.js +3 -0
  42. package/bin/aws/svelteKitSite.js.map +1 -1
  43. package/bin/aws/vpc.d.ts +98 -0
  44. package/bin/aws/vpc.js +94 -0
  45. package/bin/aws/vpc.js.map +1 -0
  46. package/bin/aws/vpcEndpoint.d.ts +53 -0
  47. package/bin/aws/vpcEndpoint.js +62 -0
  48. package/bin/aws/vpcEndpoint.js.map +1 -0
  49. package/bin/grants.d.ts +0 -10
  50. package/bin/grants.js +5 -10
  51. package/bin/grants.js.map +1 -1
  52. package/bin/package.json +1 -1
  53. package/bin/types/enums/aws/index.d.ts +211 -7
  54. package/bin/types/enums/aws/index.js +192 -8
  55. package/bin/types/enums/aws/index.js.map +1 -1
  56. package/bin/types/input.d.ts +1040 -0
  57. package/bin/types/output.d.ts +13 -0
  58. package/grants.ts +7 -22
  59. package/package.json +1 -1
  60. package/tsconfig.json +9 -0
  61. package/types/enums/aws/index.ts +239 -7
  62. package/types/input.ts +1079 -0
  63. package/types/output.ts +14 -0
@@ -0,0 +1,98 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "../types/input";
3
+ export declare class Vpc extends pulumi.ComponentResource {
4
+ /**
5
+ * Returns true if the given object is an instance of Vpc. This is designed to work even
6
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
7
+ */
8
+ static isInstance(obj: any): obj is Vpc;
9
+ /**
10
+ * The resolved Availability Zone names, e.g. ['ap-southeast-2a']. Consumed by RDS Multi-AZ, ECS spread, and other downstream components.
11
+ */
12
+ readonly availabilityZones: pulumi.Output<string[]>;
13
+ /**
14
+ * The EC2 instance ID of the bastion host. Use with: aws ssm start-session --target <bastionInstanceId>. Only populated when bastion is enabled.
15
+ */
16
+ readonly bastionInstanceId: pulumi.Output<string | undefined>;
17
+ /**
18
+ * The security group ID of the bastion host. Use to grant the bastion access to private resources, e.g. db.grant(network.bastion, { access: 'readWrite' }). Only populated when bastion is enabled.
19
+ */
20
+ readonly bastionSecurityGroupId: pulumi.Output<string | undefined>;
21
+ /**
22
+ * The ID of the VPC default security group. All rules removed — not used by Anvil components.
23
+ */
24
+ readonly defaultSecurityGroupId: pulumi.Output<string>;
25
+ /**
26
+ * The IDs of the private subnets, one per AZ. Used by Lambda, ECS tasks, EC2, and RDS.
27
+ */
28
+ readonly privateSubnetIds: pulumi.Output<string[]>;
29
+ /**
30
+ * The IDs of the public subnets, one per AZ. Used by load balancers, NAT Gateways, and the bastion host.
31
+ */
32
+ readonly publicSubnetIds: pulumi.Output<string[]>;
33
+ /**
34
+ * The ID of the VPC.
35
+ */
36
+ readonly vpcId: pulumi.Output<string>;
37
+ /**
38
+ * Create a Vpc resource with the given unique name, arguments, and options.
39
+ *
40
+ * @param name The _unique_ name of the resource.
41
+ * @param args The arguments to use to populate this resource's properties.
42
+ * @param opts A bag of options that control this resource's behavior.
43
+ */
44
+ constructor(name: string, args?: VpcArgs, opts?: pulumi.ComponentResourceOptions);
45
+ /**
46
+ * Imports an existing Vpc into Anvil without managing or modifying it.
47
+ * Returns an identical output shape to `new Vpc()`.
48
+ *
49
+ * Flow logs, NAT, and bastion are not available on an imported VPC.
50
+ *
51
+ * If subnet IDs are omitted, Anvil auto-discovers them by inspecting
52
+ * route tables. Provide IDs explicitly if auto-discovery fails.
53
+ *
54
+ * @example
55
+ * const network = Vpc.fromId("existing", {
56
+ * vpcId: "vpc-0abc123def456",
57
+ * });
58
+ */
59
+ static fromId(name: string, args: {
60
+ vpcId: string;
61
+ privateSubnetIds?: string[];
62
+ publicSubnetIds?: string[];
63
+ }, opts?: pulumi.ComponentResourceOptions): Vpc;
64
+ }
65
+ /**
66
+ * The set of arguments for constructing a Vpc resource.
67
+ */
68
+ export interface VpcArgs {
69
+ /**
70
+ * Number of Availability Zones to deploy subnets into. Valid values: 1, 2, 3. Defaults to 1. Inherits from App.defaults.availability — 'high' maps to 3, 'low' maps to 1.
71
+ */
72
+ availabilityZones?: pulumi.Input<number>;
73
+ /**
74
+ * Optional SSM bastion host for private network access. No SSH, no port 22 — access via AWS SSM Session Manager only. Use to connect to RDS, ElastiCache, and other private resources locally.
75
+ */
76
+ bastion?: pulumi.Input<boolean | inputs.aws.VpcBastionArgsArgs>;
77
+ /**
78
+ * The IPv4 CIDR block for the VPC. Default: '10.0.0.0/16'. Public subnets carved from offset 0 (/24 each), private subnets from offset 10 (/24 each).
79
+ */
80
+ cidr?: pulumi.Input<string>;
81
+ /**
82
+ * Optional VPC Flow Log configuration. Opt-in only. Either or both destinations can be enabled simultaneously. CloudWatch for active debugging, S3 for long-term compliance retention.
83
+ */
84
+ flowLogs?: pulumi.Input<inputs.aws.VpcFlowLogsArgsArgs>;
85
+ /**
86
+ * Optional NAT configuration for outbound internet access from private subnets. Omit for a fully private VPC.
87
+ */
88
+ nat?: pulumi.Input<inputs.aws.VpcNatArgsArgs>;
89
+ }
90
+ /**
91
+ * Normalises the `bastion` shorthand so the Pulumi provider
92
+ * always receives an object, never a raw boolean.
93
+ *
94
+ * bastion: true // enable with all defaults
95
+ * bastion: {} // identical to true
96
+ * bastion: { ... } // enable with custom config
97
+ */
98
+ export declare function normaliseBastion(val: boolean | inputs.aws.VpcBastionArgsArgs | undefined): inputs.aws.VpcBastionArgsArgs | undefined;
package/bin/aws/vpc.js ADDED
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.normaliseBastion = exports.Vpc = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("../utilities");
8
+ class Vpc extends pulumi.ComponentResource {
9
+ /**
10
+ * Returns true if the given object is an instance of Vpc. This is designed to work even
11
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
12
+ */
13
+ static isInstance(obj) {
14
+ if (obj === undefined || obj === null) {
15
+ return false;
16
+ }
17
+ return obj['__pulumiType'] === Vpc.__pulumiType;
18
+ }
19
+ /**
20
+ * Create a Vpc resource with the given unique name, arguments, and options.
21
+ *
22
+ * @param name The _unique_ name of the resource.
23
+ * @param args The arguments to use to populate this resource's properties.
24
+ * @param opts A bag of options that control this resource's behavior.
25
+ */
26
+ constructor(name, args, opts) {
27
+ let resourceInputs = {};
28
+ opts = opts || {};
29
+ if (!opts.id) {
30
+ resourceInputs["availabilityZones"] = args?.availabilityZones;
31
+ resourceInputs["bastion"] = args?.bastion;
32
+ resourceInputs["cidr"] = args?.cidr;
33
+ resourceInputs["flowLogs"] = args?.flowLogs;
34
+ resourceInputs["nat"] = args?.nat;
35
+ resourceInputs["bastionInstanceId"] = undefined /*out*/;
36
+ resourceInputs["bastionSecurityGroupId"] = undefined /*out*/;
37
+ resourceInputs["defaultSecurityGroupId"] = undefined /*out*/;
38
+ resourceInputs["privateSubnetIds"] = undefined /*out*/;
39
+ resourceInputs["publicSubnetIds"] = undefined /*out*/;
40
+ resourceInputs["vpcId"] = undefined /*out*/;
41
+ }
42
+ else {
43
+ resourceInputs["availabilityZones"] = undefined /*out*/;
44
+ resourceInputs["bastionInstanceId"] = undefined /*out*/;
45
+ resourceInputs["bastionSecurityGroupId"] = undefined /*out*/;
46
+ resourceInputs["defaultSecurityGroupId"] = undefined /*out*/;
47
+ resourceInputs["privateSubnetIds"] = undefined /*out*/;
48
+ resourceInputs["publicSubnetIds"] = undefined /*out*/;
49
+ resourceInputs["vpcId"] = undefined /*out*/;
50
+ }
51
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
52
+ super(Vpc.__pulumiType, name, resourceInputs, opts, true /*remote*/);
53
+ }
54
+ /**
55
+ * Imports an existing Vpc into Anvil without managing or modifying it.
56
+ * Returns an identical output shape to `new Vpc()`.
57
+ *
58
+ * Flow logs, NAT, and bastion are not available on an imported VPC.
59
+ *
60
+ * If subnet IDs are omitted, Anvil auto-discovers them by inspecting
61
+ * route tables. Provide IDs explicitly if auto-discovery fails.
62
+ *
63
+ * @example
64
+ * const network = Vpc.fromId("existing", {
65
+ * vpcId: "vpc-0abc123def456",
66
+ * });
67
+ */
68
+ static fromId(name, args, opts) {
69
+ return new Vpc(name, args, {
70
+ ...opts,
71
+ id: args.vpcId,
72
+ });
73
+ }
74
+ }
75
+ exports.Vpc = Vpc;
76
+ /** @internal */
77
+ Vpc.__pulumiType = 'anvil:aws:Vpc';
78
+ /**
79
+ * Normalises the `bastion` shorthand so the Pulumi provider
80
+ * always receives an object, never a raw boolean.
81
+ *
82
+ * bastion: true // enable with all defaults
83
+ * bastion: {} // identical to true
84
+ * bastion: { ... } // enable with custom config
85
+ */
86
+ function normaliseBastion(val) {
87
+ if (val === undefined || val === false)
88
+ return undefined;
89
+ if (val === true)
90
+ return {};
91
+ return val;
92
+ }
93
+ exports.normaliseBastion = normaliseBastion;
94
+ //# sourceMappingURL=vpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpc.js","sourceRoot":"","sources":["../../aws/vpc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "../types/input";
3
+ /**
4
+ * An Anvil-managed AWS Interface VPC Endpoint. Creates one ENI per private subnet with private DNS enabled. The endpoint security group uses a self-referencing ingress rule on port 443 — only compute resources that have been explicitly granted access can reach the endpoint at the network layer. Access is enforced at three layers: network (self-referencing SG), IAM role policy (scoped per compute resource), and endpoint policy (blanket ceiling on allowed actions for all compute principals — Lambda, ECS, EC2).
5
+ */
6
+ export declare class VpcEndpoint extends pulumi.ComponentResource {
7
+ /**
8
+ * Returns true if the given object is an instance of VpcEndpoint. This is designed to work even
9
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
10
+ */
11
+ static isInstance(obj: any): obj is VpcEndpoint;
12
+ /**
13
+ * The first DNS name assigned to the endpoint, e.g. vpce-xxx.sqs.ap-southeast-2.vpce.amazonaws.com. With private DNS enabled, normal consumers use the standard AWS SDK hostname — this is exposed for debugging and multi-VPC architectures only.
14
+ */
15
+ readonly dnsName: pulumi.Output<string>;
16
+ /**
17
+ * The ID of the VPC endpoint, e.g. vpce-0abc1234567890abc. Use this to reference the endpoint in IAM condition keys such as aws:SourceVpce.
18
+ */
19
+ readonly endpointId: pulumi.Output<string>;
20
+ /**
21
+ * The ID of the dedicated security group attached to this endpoint. Uses a self-referencing ingress rule on port 443 — only compute resources with this SG explicitly attached can reach the endpoint at the network layer.
22
+ */
23
+ readonly securityGroupId: pulumi.Output<string>;
24
+ /**
25
+ * Create a VpcEndpoint resource with the given unique name, arguments, and options.
26
+ *
27
+ * @param name The _unique_ name of the resource.
28
+ * @param args The arguments to use to populate this resource's properties.
29
+ * @param opts A bag of options that control this resource's behavior.
30
+ */
31
+ constructor(name: string, args: VpcEndpointArgs, opts?: pulumi.ComponentResourceOptions);
32
+ }
33
+ /**
34
+ * The set of arguments for constructing a VpcEndpoint resource.
35
+ */
36
+ export interface VpcEndpointArgs {
37
+ /**
38
+ * Explicit Allow and Deny permission statements for the endpoint policy. When omitted, the endpoint policy allows all actions (*) for all Anvil compute principals (Lambda, ECS, EC2). When set, only the declared actions are permitted — the caller is responsible for declaring every action their compute resources need. Supports both Allow and Deny effects. Resource defaults to "*" if omitted on a permission entry.
39
+ */
40
+ overridePermissions?: pulumi.Input<pulumi.Input<inputs.aws.VpcEndpointPermissionArgs>[]>;
41
+ /**
42
+ * The IDs of the private subnets to attach the endpoint to. AWS places one ENI per subnet. Pass all private subnet IDs from your VPC — typically one per AZ.
43
+ */
44
+ privateSubnetIds: pulumi.Input<pulumi.Input<string>[]>;
45
+ /**
46
+ * The AWS service to route privately. The full com.amazonaws.{region}.{service} name is constructed at deploy time from the resolved region — you never write it manually.
47
+ */
48
+ service: pulumi.Input<string>;
49
+ /**
50
+ * The ID of the VPC to create the endpoint in. Accepts both Anvil-managed VPC IDs and imported VPC IDs.
51
+ */
52
+ vpcId: pulumi.Input<string>;
53
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.VpcEndpoint = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("../utilities");
8
+ /**
9
+ * An Anvil-managed AWS Interface VPC Endpoint. Creates one ENI per private subnet with private DNS enabled. The endpoint security group uses a self-referencing ingress rule on port 443 — only compute resources that have been explicitly granted access can reach the endpoint at the network layer. Access is enforced at three layers: network (self-referencing SG), IAM role policy (scoped per compute resource), and endpoint policy (blanket ceiling on allowed actions for all compute principals — Lambda, ECS, EC2).
10
+ */
11
+ class VpcEndpoint extends pulumi.ComponentResource {
12
+ /**
13
+ * Returns true if the given object is an instance of VpcEndpoint. This is designed to work even
14
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
15
+ */
16
+ static isInstance(obj) {
17
+ if (obj === undefined || obj === null) {
18
+ return false;
19
+ }
20
+ return obj['__pulumiType'] === VpcEndpoint.__pulumiType;
21
+ }
22
+ /**
23
+ * Create a VpcEndpoint resource with the given unique name, arguments, and options.
24
+ *
25
+ * @param name The _unique_ name of the resource.
26
+ * @param args The arguments to use to populate this resource's properties.
27
+ * @param opts A bag of options that control this resource's behavior.
28
+ */
29
+ constructor(name, args, opts) {
30
+ let resourceInputs = {};
31
+ opts = opts || {};
32
+ if (!opts.id) {
33
+ if (args?.privateSubnetIds === undefined && !opts.urn) {
34
+ throw new Error("Missing required property 'privateSubnetIds'");
35
+ }
36
+ if (args?.service === undefined && !opts.urn) {
37
+ throw new Error("Missing required property 'service'");
38
+ }
39
+ if (args?.vpcId === undefined && !opts.urn) {
40
+ throw new Error("Missing required property 'vpcId'");
41
+ }
42
+ resourceInputs["overridePermissions"] = args?.overridePermissions;
43
+ resourceInputs["privateSubnetIds"] = args?.privateSubnetIds;
44
+ resourceInputs["service"] = args?.service;
45
+ resourceInputs["vpcId"] = args?.vpcId;
46
+ resourceInputs["dnsName"] = undefined /*out*/;
47
+ resourceInputs["endpointId"] = undefined /*out*/;
48
+ resourceInputs["securityGroupId"] = undefined /*out*/;
49
+ }
50
+ else {
51
+ resourceInputs["dnsName"] = undefined /*out*/;
52
+ resourceInputs["endpointId"] = undefined /*out*/;
53
+ resourceInputs["securityGroupId"] = undefined /*out*/;
54
+ }
55
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
56
+ super(VpcEndpoint.__pulumiType, name, resourceInputs, opts, true /*remote*/);
57
+ }
58
+ }
59
+ exports.VpcEndpoint = VpcEndpoint;
60
+ /** @internal */
61
+ VpcEndpoint.__pulumiType = 'anvil:aws:VpcEndpoint';
62
+ //# sourceMappingURL=vpcEndpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpcEndpoint.js","sourceRoot":"","sources":["../../aws/vpcEndpoint.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAIzC,0CAA0C;AAE1C;;GAEG;AACH,MAAa,WAAY,SAAQ,MAAM,CAAC,iBAAiB;IAIrD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,WAAW,CAAC,YAAY,CAAC;IAC5D,CAAC;IAeD;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,IAAqB,EAAE,IAAsC;QACnF,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,IAAI,IAAI,EAAE,gBAAgB,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;aACnE;YACD,IAAI,IAAI,EAAE,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1C,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;aAC1D;YACD,IAAI,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;aACxD;YACD,cAAc,CAAC,qBAAqB,CAAC,GAAG,IAAI,EAAE,mBAAmB,CAAC;YAClE,cAAc,CAAC,kBAAkB,CAAC,GAAG,IAAI,EAAE,gBAAgB,CAAC;YAC5D,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC;YAC1C,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC;YACtC,cAAc,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC9C,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SACzD;aAAM;YACH,cAAc,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC9C,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SACzD;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACjF,CAAC;;AA9DL,kCA+DC;AA9DG,gBAAgB;AACO,wBAAY,GAAG,uBAAuB,CAAC"}
package/bin/grants.d.ts CHANGED
@@ -4,22 +4,12 @@ import * as pulumi from '@pulumi/pulumi';
4
4
  * Compute resources (Lambda, SvelteKitSite, etc.) satisfy this interface.
5
5
  */
6
6
  export interface GrantTarget {
7
- /**
8
- * The logical resource name passed to the constructor.
9
- */
10
7
  grantName(): string;
11
- /**
12
- * The ARN of the IAM execution role attached to this compute resource.
13
- */
14
8
  grantRoleArn(): pulumi.Output<string>;
15
9
  }
16
10
  /**
17
11
  * Optional metadata for grant methods.
18
12
  */
19
13
  export interface GrantOptions {
20
- /**
21
- * Documents why this grant is needed.
22
- * Stored as a tag on the generated IAM policy resource for audit purposes.
23
- */
24
14
  justification?: string;
25
15
  }
package/bin/grants.js CHANGED
@@ -12,8 +12,6 @@ const aws = require("@pulumi/aws");
12
12
  * Creates a scoped IAM RolePolicy granting the specified actions on the
13
13
  * specified resource ARNs to the target's execution role.
14
14
  *
15
- * This is the core engine that all resource-specific grant methods delegate to.
16
- *
17
15
  * @internal
18
16
  */
19
17
  function createGrant(parent, name, target, actions, resourceArns, opts) {
@@ -27,13 +25,10 @@ function createGrant(parent, name, target, actions, resourceArns, opts) {
27
25
  },
28
26
  ],
29
27
  }));
30
- // Extract role name from ARN (everything after the last "/")
31
28
  const roleName = target.grantRoleArn().apply((arn) => {
32
29
  const idx = arn.lastIndexOf('/');
33
30
  return idx >= 0 ? arn.substring(idx + 1) : arn;
34
31
  });
35
- // Justification is stored in the resource name suffix for audit trail.
36
- // Future: compliance audit trail (Pro tier) will capture this metadata separately.
37
32
  const policyName = opts?.justification
38
33
  ? `${name}-${sanitize(opts.justification)}`
39
34
  : name;
@@ -43,7 +38,7 @@ function createGrant(parent, name, target, actions, resourceArns, opts) {
43
38
  }, { parent });
44
39
  }
45
40
  exports.createGrant = createGrant;
46
- /** @internal Sanitize a string for use in resource names. */
41
+ /** @internal */
47
42
  function sanitize(s) {
48
43
  return s
49
44
  .toLowerCase()
@@ -52,14 +47,14 @@ function sanitize(s) {
52
47
  }
53
48
  /**
54
49
  * Builds the list of ARNs for a grant based on a base ARN and optional path scoping.
55
- *
56
- * - No paths: grants access to the entire resource (baseArn + baseArn/*)
57
- * - With paths: grants access to baseArn (for list operations) + each scoped path
58
- *
59
50
  * @internal
60
51
  */
61
52
  function buildResourceArns(baseArn, paths) {
62
53
  const arns = [baseArn];
54
+ if (paths === null) {
55
+ // Explicit null = base ARN only, no sub-paths (used by DynamoDB index grants)
56
+ return arns;
57
+ }
63
58
  if (!paths || paths.length === 0) {
64
59
  arns.push(pulumi.interpolate `${baseArn}/*`);
65
60
  }
package/bin/grants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"grants.js","sourceRoot":"","sources":["../grants.ts"],"names":[],"mappings":";AAAA,uBAAuB;AACvB,4EAA4E;AAC5E,EAAE;AACF,uEAAuE;AACvE,+EAA+E;;;AAE/E,yCAAyC;AACzC,mCAAmC;AA6BnC;;;;;;;GAOG;AACH,SAAgB,WAAW,CACzB,MAAuB,EACvB,IAAY,EACZ,MAAmB,EACnB,OAAiB,EACjB,YAAqC,EACrC,IAAmB;IAEnB,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAC7D,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE;YACT;gBACE,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,IAAI;aACf;SACF;KACF,CAAC,CACH,CAAC;IAEF,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,mFAAmF;IACnF,MAAM,UAAU,GAAG,IAAI,EAAE,aAAa;QACpC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;QAC3C,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CACpB,UAAU,EACV;QACE,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC;AAzCD,kCAyCC;AAED,6DAA6D;AAC7D,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC;SACL,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAC/B,OAA8B,EAC9B,KAAgB;IAEhB,MAAM,IAAI,GAA4B,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA,GAAG,OAAO,IAAI,CAAC,CAAC;KAC7C;SAAM;QACL,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;SAChD;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAfD,8CAeC"}
1
+ {"version":3,"file":"grants.js","sourceRoot":"","sources":["../grants.ts"],"names":[],"mappings":";AAAA,uBAAuB;AACvB,4EAA4E;AAC5E,EAAE;AACF,uEAAuE;AACvE,+EAA+E;;;AAE/E,yCAAyC;AACzC,mCAAmC;AAkBnC;;;;;GAKG;AACH,SAAgB,WAAW,CACzB,MAAuB,EACvB,IAAY,EACZ,MAAmB,EACnB,OAAiB,EACjB,YAAqC,EACrC,IAAmB;IAEnB,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAC7D,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE;YACT;gBACE,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,IAAI;aACf;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,EAAE,aAAa;QACpC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;QAC3C,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CACpB,UAAU,EACV;QACE,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC;AAtCD,kCAsCC;AAED,gBAAgB;AAChB,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC;SACL,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,OAA8B,EAC9B,KAAuB;IAEvB,MAAM,IAAI,GAA4B,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,KAAK,KAAK,IAAI,EAAE;QAClB,8EAA8E;QAC9E,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA,GAAG,OAAO,IAAI,CAAC,CAAC;KAC7C;SAAM;QACL,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;SAChD;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AApBD,8CAoBC"}
package/bin/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvil-cloud/sdk",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "scripts": {
5
5
  "build": "tsc && cp package.json bin/"
6
6
  },
@@ -1,10 +1,186 @@
1
+ export declare const CognitoUserPoolCustomAttributeType: {
2
+ readonly String: "String";
3
+ readonly Number: "Number";
4
+ readonly DateTime: "DateTime";
5
+ readonly Boolean: "Boolean";
6
+ };
7
+ export type CognitoUserPoolCustomAttributeType = (typeof CognitoUserPoolCustomAttributeType)[keyof typeof CognitoUserPoolCustomAttributeType];
8
+ export declare const CognitoUserPoolIdentityProviderType: {
9
+ /**
10
+ * Google OAuth 2.0. Requires clientId and clientSecret.
11
+ */
12
+ readonly Google: "Google";
13
+ /**
14
+ * Facebook OAuth 2.0. Requires clientId and clientSecret.
15
+ */
16
+ readonly Facebook: "Facebook";
17
+ /**
18
+ * Login with Amazon. Requires clientId and clientSecret.
19
+ */
20
+ readonly LoginWithAmazon: "LoginWithAmazon";
21
+ /**
22
+ * Sign in with Apple. Requires clientId and clientSecret.
23
+ */
24
+ readonly SignInWithApple: "SignInWithApple";
25
+ /**
26
+ * Generic OIDC provider (Okta, Auth0, Microsoft Entra, etc.). Requires clientId, clientSecret, and oidcIssuer.
27
+ */
28
+ readonly OIDC: "OIDC";
29
+ /**
30
+ * SAML 2.0 provider (corporate SSO, Active Directory Federation Services etc.). Requires metadataUrl or metadataContent.
31
+ */
32
+ readonly SAML: "SAML";
33
+ };
34
+ export type CognitoUserPoolIdentityProviderType = (typeof CognitoUserPoolIdentityProviderType)[keyof typeof CognitoUserPoolIdentityProviderType];
35
+ export declare const CognitoUserPoolMfaMethod: {
36
+ /**
37
+ * Time-based one-time password (authenticator app). No additional AWS resources required.
38
+ */
39
+ readonly TOTP: "TOTP";
40
+ /**
41
+ * SMS one-time password via SNS. Requires snsCallerArn.
42
+ */
43
+ readonly SMS: "SMS";
44
+ };
45
+ export type CognitoUserPoolMfaMethod = (typeof CognitoUserPoolMfaMethod)[keyof typeof CognitoUserPoolMfaMethod];
46
+ export declare const CognitoUserPoolMfaMode: {
47
+ /**
48
+ * MFA disabled. Default.
49
+ */
50
+ readonly OFF: "OFF";
51
+ /**
52
+ * MFA available but not required. Users opt in.
53
+ */
54
+ readonly OPTIONAL: "OPTIONAL";
55
+ /**
56
+ * MFA required for all users.
57
+ */
58
+ readonly REQUIRED: "REQUIRED";
59
+ };
60
+ export type CognitoUserPoolMfaMode = (typeof CognitoUserPoolMfaMode)[keyof typeof CognitoUserPoolMfaMode];
61
+ export declare const CognitoUserPoolOAuthFlow: {
62
+ /**
63
+ * Authorization code grant (PKCE). Most secure — use for all browser and server apps.
64
+ */
65
+ readonly Code: "code";
66
+ /**
67
+ * Implicit grant. Deprecated — tokens visible in browser URL. Avoid for new applications.
68
+ */
69
+ readonly Implicit: "implicit";
70
+ /**
71
+ * Client credentials grant. M2M only — no user interaction.
72
+ */
73
+ readonly Client_credentials: "client_credentials";
74
+ };
75
+ export type CognitoUserPoolOAuthFlow = (typeof CognitoUserPoolOAuthFlow)[keyof typeof CognitoUserPoolOAuthFlow];
76
+ export declare const CognitoUserPoolUsernameAttribute: {
77
+ /**
78
+ * Users sign in with their email address.
79
+ */
80
+ readonly Email: "email";
81
+ /**
82
+ * Users sign in with their phone number.
83
+ */
84
+ readonly Phone_number: "phone_number";
85
+ };
86
+ export type CognitoUserPoolUsernameAttribute = (typeof CognitoUserPoolUsernameAttribute)[keyof typeof CognitoUserPoolUsernameAttribute];
87
+ export declare const DynamoDBAttributeType: {
88
+ /**
89
+ * String
90
+ */
91
+ readonly S: "S";
92
+ /**
93
+ * Number
94
+ */
95
+ readonly N: "N";
96
+ /**
97
+ * Binary
98
+ */
99
+ readonly B: "B";
100
+ };
101
+ export type DynamoDBAttributeType = (typeof DynamoDBAttributeType)[keyof typeof DynamoDBAttributeType];
102
+ export declare const DynamoDBProjectionType: {
103
+ /**
104
+ * All attributes are projected. Default.
105
+ */
106
+ readonly ALL: "ALL";
107
+ /**
108
+ * Only the table and GSI key attributes are projected.
109
+ */
110
+ readonly KEYS_ONLY: "KEYS_ONLY";
111
+ /**
112
+ * Only the specified nonKeyAttributes are projected in addition to keys.
113
+ */
114
+ readonly INCLUDE: "INCLUDE";
115
+ };
116
+ export type DynamoDBProjectionType = (typeof DynamoDBProjectionType)[keyof typeof DynamoDBProjectionType];
117
+ export declare const DynamoDBStreamStartingPosition: {
118
+ /**
119
+ * Start reading from the oldest available record in the stream. Replays all existing records up to 24hr retention window. AWS default.
120
+ */
121
+ readonly TRIM_HORIZON: "TRIM_HORIZON";
122
+ /**
123
+ * Start reading from the most recent record. Only processes new events from the point of consumer creation.
124
+ */
125
+ readonly LATEST: "LATEST";
126
+ };
127
+ export type DynamoDBStreamStartingPosition = (typeof DynamoDBStreamStartingPosition)[keyof typeof DynamoDBStreamStartingPosition];
128
+ export declare const DynamoDBStreamViewType: {
129
+ /**
130
+ * Only the new item image is written to the stream.
131
+ */
132
+ readonly NEW_IMAGE: "NEW_IMAGE";
133
+ /**
134
+ * Only the old item image is written to the stream.
135
+ */
136
+ readonly OLD_IMAGE: "OLD_IMAGE";
137
+ /**
138
+ * Both old and new item images are written to the stream.
139
+ */
140
+ readonly NEW_AND_OLD_IMAGES: "NEW_AND_OLD_IMAGES";
141
+ /**
142
+ * Only the key attributes are written to the stream.
143
+ */
144
+ readonly KEYS_ONLY: "KEYS_ONLY";
145
+ };
146
+ export type DynamoDBStreamViewType = (typeof DynamoDBStreamViewType)[keyof typeof DynamoDBStreamViewType];
147
+ export declare const HttpApiMethod: {
148
+ /**
149
+ * HTTP GET — read operations.
150
+ */
151
+ readonly GET: "GET";
152
+ /**
153
+ * HTTP POST — create operations and async consumers (SQS, EventBridge, Step Functions).
154
+ */
155
+ readonly POST: "POST";
156
+ /**
157
+ * HTTP PUT — replace operations.
158
+ */
159
+ readonly PUT: "PUT";
160
+ /**
161
+ * HTTP PATCH — partial update operations.
162
+ */
163
+ readonly PATCH: "PATCH";
164
+ /**
165
+ * HTTP DELETE — delete operations.
166
+ */
167
+ readonly DELETE: "DELETE";
168
+ /**
169
+ * Matches all HTTP methods. Maps to the $default route key.
170
+ */
171
+ readonly ANY: "ANY";
172
+ };
173
+ /**
174
+ * HTTP method for an API route.
175
+ */
176
+ export type HttpApiMethod = (typeof HttpApiMethod)[keyof typeof HttpApiMethod];
1
177
  export declare const LambdaArchitecture: {
2
178
  /**
3
- * Graviton 20% cheaper, better performance. Default.
179
+ * Graviton - 20% cheaper, better performance. Default.
4
180
  */
5
181
  readonly Arm64: "arm64";
6
182
  /**
7
- * Intel/AMD use for x86-specific native dependencies.
183
+ * Intel/AMD - use for x86-specific native dependencies.
8
184
  */
9
185
  readonly X86_64: "x86_64";
10
186
  };
@@ -23,26 +199,26 @@ export declare const LambdaLogRetention: {
23
199
  */
24
200
  readonly LambdaLogRetention_90d: "90d";
25
201
  /**
26
- * 1 year (365 days) SOC 2 / ISO 27001 / PCI-DSS baseline. Default.
202
+ * 1 year (365 days) - SOC 2 / ISO 27001 / PCI-DSS baseline. Default.
27
203
  */
28
204
  readonly LambdaLogRetention_1y: "1y";
29
205
  /**
30
- * 3 years (1095 days) FedRAMP minimum
206
+ * 3 years (1095 days) - FedRAMP minimum
31
207
  */
32
208
  readonly LambdaLogRetention_3y: "3y";
33
209
  /**
34
- * 6 years (2190 days) HIPAA minimum
210
+ * 6 years (2190 days) - HIPAA minimum
35
211
  */
36
212
  readonly LambdaLogRetention_6y: "6y";
37
213
  /**
38
- * 7 years (2555 days) IRAP minimum
214
+ * 7 years (2555 days) - IRAP minimum
39
215
  */
40
216
  readonly LambdaLogRetention_7y: "7y";
41
217
  };
42
218
  export type LambdaLogRetention = (typeof LambdaLogRetention)[keyof typeof LambdaLogRetention];
43
219
  export declare const LambdaRuntime: {
44
220
  /**
45
- * Node.js 24 (LTS) recommended
221
+ * Node.js 24 (LTS) - recommended
46
222
  */
47
223
  readonly Nodejs24_x: "nodejs24.x";
48
224
  /**
@@ -51,3 +227,31 @@ export declare const LambdaRuntime: {
51
227
  readonly Nodejs22_x: "nodejs22.x";
52
228
  };
53
229
  export type LambdaRuntime = (typeof LambdaRuntime)[keyof typeof LambdaRuntime];
230
+ export declare const S3FlowLogLifecycle: {
231
+ /**
232
+ * Auto-tiered: Standard (0-30d) → Standard-IA (30-90d) → Glacier Instant Retrieval (90d+). Suitable for compliance retention at minimal long-term cost.
233
+ */
234
+ readonly Standard: "standard";
235
+ };
236
+ export type S3FlowLogLifecycle = (typeof S3FlowLogLifecycle)[keyof typeof S3FlowLogLifecycle];
237
+ export declare const SiteOriginProtectionProvider: {
238
+ /**
239
+ * Cloudflare — inject x-origin-secret via a Cloudflare Transform Rule.
240
+ */
241
+ readonly Cloudflare: "cloudflare";
242
+ };
243
+ /**
244
+ * The CDN/proxy provider sitting in front of CloudFront.
245
+ */
246
+ export type SiteOriginProtectionProvider = (typeof SiteOriginProtectionProvider)[keyof typeof SiteOriginProtectionProvider];
247
+ export declare const VpcNatType: {
248
+ /**
249
+ * AWS managed NAT Gateway. One per AZ for true HA. ~$32/month per AZ plus $0.045/GB data processed.
250
+ */
251
+ readonly Gateway: "gateway";
252
+ /**
253
+ * fck-nat EC2 instance. Single instance regardless of AZ count. ~$4-6/month for t4g.small. Accepted single point of failure tradeoff for cost savings.
254
+ */
255
+ readonly Fck_nat: "fck-nat";
256
+ };
257
+ export type VpcNatType = (typeof VpcNatType)[keyof typeof VpcNatType];