@anvil-cloud/sdk 0.0.14 → 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 (56) 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 +49 -0
  7. package/aws/lambda.ts +1 -1
  8. package/aws/oauthAuthorizer.ts +70 -0
  9. package/aws/queue.ts +156 -0
  10. package/aws/svelteKitSite.ts +14 -0
  11. package/aws/vpcEndpoint.ts +9 -4
  12. package/bin/aws/cognitoAuth.d.ts +36 -0
  13. package/bin/aws/cognitoAuth.js +53 -0
  14. package/bin/aws/cognitoAuth.js.map +1 -0
  15. package/bin/aws/cognitoUserPool.d.ts +82 -0
  16. package/bin/aws/cognitoUserPool.js +65 -0
  17. package/bin/aws/cognitoUserPool.js.map +1 -0
  18. package/bin/aws/dynamoDB.d.ts +115 -0
  19. package/bin/aws/dynamoDB.js +121 -0
  20. package/bin/aws/dynamoDB.js.map +1 -0
  21. package/bin/aws/eventBus.d.ts +47 -0
  22. package/bin/aws/eventBus.js +63 -0
  23. package/bin/aws/eventBus.js.map +1 -0
  24. package/bin/aws/httpApi.d.ts +66 -0
  25. package/bin/aws/httpApi.js +60 -0
  26. package/bin/aws/httpApi.js.map +1 -0
  27. package/bin/aws/index.d.ts +21 -0
  28. package/bin/aws/index.js +29 -1
  29. package/bin/aws/index.js.map +1 -1
  30. package/bin/aws/lambda.d.ts +1 -1
  31. package/bin/aws/oauthAuthorizer.d.ts +36 -0
  32. package/bin/aws/oauthAuthorizer.js +53 -0
  33. package/bin/aws/oauthAuthorizer.js.map +1 -0
  34. package/bin/aws/queue.d.ts +83 -0
  35. package/bin/aws/queue.js +103 -0
  36. package/bin/aws/queue.js.map +1 -0
  37. package/bin/aws/svelteKitSite.d.ts +9 -0
  38. package/bin/aws/svelteKitSite.js +3 -0
  39. package/bin/aws/svelteKitSite.js.map +1 -1
  40. package/bin/aws/vpcEndpoint.d.ts +9 -5
  41. package/bin/aws/vpcEndpoint.js +2 -1
  42. package/bin/aws/vpcEndpoint.js.map +1 -1
  43. package/bin/grants.js +4 -0
  44. package/bin/grants.js.map +1 -1
  45. package/bin/package.json +1 -1
  46. package/bin/types/enums/aws/index.d.ts +164 -36
  47. package/bin/types/enums/aws/index.js +149 -35
  48. package/bin/types/enums/aws/index.js.map +1 -1
  49. package/bin/types/input.d.ts +962 -10
  50. package/bin/types/output.d.ts +13 -0
  51. package/grants.ts +6 -1
  52. package/package.json +1 -1
  53. package/tsconfig.json +7 -0
  54. package/types/enums/aws/index.ts +186 -36
  55. package/types/input.ts +994 -10
  56. package/types/output.ts +14 -0
@@ -0,0 +1,53 @@
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.OAuthAuthorizer = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("../utilities");
8
+ /**
9
+ * An Anvil-managed JWT authorizer for HTTP API Gateway. Works with any OIDC-compliant identity provider — Auth0, Clerk, Google, Okta, Cognito. API Gateway verifies the JWT signature, issuer, audience, and expiry on every request natively — no Lambda or custom code required. Pass authorizerId to HttpApi defaultAuthorizerId to protect your routes.
10
+ */
11
+ class OAuthAuthorizer extends pulumi.ComponentResource {
12
+ /**
13
+ * Returns true if the given object is an instance of OAuthAuthorizer. 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'] === OAuthAuthorizer.__pulumiType;
21
+ }
22
+ /**
23
+ * Create a OAuthAuthorizer 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?.audience === undefined && !opts.urn) {
34
+ throw new Error("Missing required property 'audience'");
35
+ }
36
+ if (args?.issuer === undefined && !opts.urn) {
37
+ throw new Error("Missing required property 'issuer'");
38
+ }
39
+ resourceInputs["audience"] = args?.audience;
40
+ resourceInputs["issuer"] = args?.issuer;
41
+ resourceInputs["authorizerId"] = undefined /*out*/;
42
+ }
43
+ else {
44
+ resourceInputs["authorizerId"] = undefined /*out*/;
45
+ }
46
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
47
+ super(OAuthAuthorizer.__pulumiType, name, resourceInputs, opts, true /*remote*/);
48
+ }
49
+ }
50
+ exports.OAuthAuthorizer = OAuthAuthorizer;
51
+ /** @internal */
52
+ OAuthAuthorizer.__pulumiType = 'anvil:aws:OAuthAuthorizer';
53
+ //# sourceMappingURL=oauthAuthorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthAuthorizer.js","sourceRoot":"","sources":["../../aws/oauthAuthorizer.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AACzC,0CAA0C;AAE1C;;GAEG;AACH,MAAa,eAAgB,SAAQ,MAAM,CAAC,iBAAiB;IAIzD;;;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,eAAe,CAAC,YAAY,CAAC;IAChE,CAAC;IAOD;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,IAAyB,EAAE,IAAsC;QACvF,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,IAAI,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC3C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aAC3D;YACD,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACzC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;aACzD;YACD,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC;YAC5C,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC;YACxC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SACtD;aAAM;YACH,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SACtD;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACrF,CAAC;;AA7CL,0CA8CC;AA7CG,gBAAgB;AACO,4BAAY,GAAG,2BAA2B,CAAC"}
@@ -0,0 +1,83 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "../types/input";
3
+ import * as grants from "../grants";
4
+ /**
5
+ * An Anvil-managed SQS queue. A dead letter queue is always provisioned to prevent silent message loss. SSE-SQS encryption is enabled by default at no cost.
6
+ */
7
+ export declare class Queue extends pulumi.ComponentResource {
8
+ /**
9
+ * Returns true if the given object is an instance of Queue. This is designed to work even
10
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
11
+ */
12
+ static isInstance(obj: any): obj is Queue;
13
+ /**
14
+ * The ARN of the SQS queue.
15
+ */
16
+ readonly arn: pulumi.Output<string>;
17
+ /**
18
+ * The ARN of the dead letter queue.
19
+ */
20
+ readonly dlqArn: pulumi.Output<string>;
21
+ /**
22
+ * The URL of the dead letter queue.
23
+ */
24
+ readonly dlqUrl: pulumi.Output<string>;
25
+ /**
26
+ * The physical name of the SQS queue.
27
+ */
28
+ readonly name: pulumi.Output<string>;
29
+ /**
30
+ * The URL of the SQS queue. Use this to send and receive messages.
31
+ */
32
+ readonly url: pulumi.Output<string>;
33
+ /**
34
+ * Create a Queue resource with the given unique name, arguments, and options.
35
+ *
36
+ * @param name The _unique_ name of the resource.
37
+ * @param args The arguments to use to populate this resource's properties.
38
+ * @param opts A bag of options that control this resource's behavior.
39
+ */
40
+ constructor(name: string, args?: QueueArgs, opts?: pulumi.ComponentResourceOptions);
41
+ /**
42
+ * Grants sendmessage access (sqs:SendMessage) on this queue
43
+ * to the target compute resource's execution role.
44
+ *
45
+ * @param target - The compute resource to grant access to.
46
+ * @param opts - Optional grant options (justification for audit trail).
47
+ */
48
+ grantSendMessage(target: grants.GrantTarget, opts?: grants.GrantOptions): void;
49
+ /**
50
+ * Grants consumemessages access (sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes) on this queue
51
+ * to the target compute resource's execution role.
52
+ *
53
+ * @param target - The compute resource to grant access to.
54
+ * @param opts - Optional grant options (justification for audit trail).
55
+ */
56
+ grantConsumeMessages(target: grants.GrantTarget, opts?: grants.GrantOptions): void;
57
+ /**
58
+ * Grants full access (sqs:SendMessage, sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes, sqs:ChangeMessageVisibility, sqs:PurgeQueue) on this queue
59
+ * to the target compute resource's execution role.
60
+ *
61
+ * This is an escape hatch — prefer scoped grants (grantRead, grantWrite, etc.).
62
+ * A warning is logged if no justification is provided.
63
+ */
64
+ grantFullAccess(target: grants.GrantTarget, opts?: grants.GrantOptions): void;
65
+ }
66
+ /**
67
+ * The set of arguments for constructing a Queue resource.
68
+ */
69
+ export interface QueueArgs {
70
+ /**
71
+ * Wires a compute resource to consume messages from this queue. Creates the event source mapping (trigger) and grants the necessary IAM permissions automatically.
72
+ */
73
+ consumer?: pulumi.Input<inputs.aws.QueueConsumerArgsArgs>;
74
+ /**
75
+ * Dead letter queue configuration. Always provisioned — messages that fail processing are moved here instead of being silently dropped. Omit to use defaults (managed DLQ, maxReceiveCount: 3). Set arn to reuse an existing queue.
76
+ */
77
+ dlq?: pulumi.Input<inputs.aws.QueueDlqArgsArgs>;
78
+ /**
79
+ * Creates a FIFO queue when true. FIFO queues guarantee message ordering and exactly-once processing but have lower throughput (~3,000 msg/s vs unlimited for standard). Use for financial transactions, inventory updates, or any workflow where ordering or deduplication matters. Default: false.
80
+ */
81
+ fifo?: pulumi.Input<boolean>;
82
+ transform?: pulumi.Input<inputs.aws.QueueTransformArgsArgs>;
83
+ }
@@ -0,0 +1,103 @@
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.Queue = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("../utilities");
8
+ const grants = require("../grants");
9
+ /**
10
+ * An Anvil-managed SQS queue. A dead letter queue is always provisioned to prevent silent message loss. SSE-SQS encryption is enabled by default at no cost.
11
+ */
12
+ class Queue extends pulumi.ComponentResource {
13
+ /**
14
+ * Returns true if the given object is an instance of Queue. This is designed to work even
15
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
16
+ */
17
+ static isInstance(obj) {
18
+ if (obj === undefined || obj === null) {
19
+ return false;
20
+ }
21
+ return obj['__pulumiType'] === Queue.__pulumiType;
22
+ }
23
+ /**
24
+ * Create a Queue resource with the given unique name, arguments, and options.
25
+ *
26
+ * @param name The _unique_ name of the resource.
27
+ * @param args The arguments to use to populate this resource's properties.
28
+ * @param opts A bag of options that control this resource's behavior.
29
+ */
30
+ constructor(name, args, opts) {
31
+ let resourceInputs = {};
32
+ opts = opts || {};
33
+ if (!opts.id) {
34
+ resourceInputs["consumer"] = args?.consumer;
35
+ resourceInputs["dlq"] = args?.dlq;
36
+ resourceInputs["fifo"] = args?.fifo;
37
+ resourceInputs["transform"] = args?.transform;
38
+ resourceInputs["arn"] = undefined /*out*/;
39
+ resourceInputs["dlqArn"] = undefined /*out*/;
40
+ resourceInputs["dlqUrl"] = undefined /*out*/;
41
+ resourceInputs["name"] = undefined /*out*/;
42
+ resourceInputs["url"] = undefined /*out*/;
43
+ }
44
+ else {
45
+ resourceInputs["arn"] = undefined /*out*/;
46
+ resourceInputs["dlqArn"] = undefined /*out*/;
47
+ resourceInputs["dlqUrl"] = undefined /*out*/;
48
+ resourceInputs["name"] = undefined /*out*/;
49
+ resourceInputs["url"] = undefined /*out*/;
50
+ }
51
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
52
+ super(Queue.__pulumiType, name, resourceInputs, opts, true /*remote*/);
53
+ this.__name = name;
54
+ }
55
+ /**
56
+ * Grants sendmessage access (sqs:SendMessage) on this queue
57
+ * to the target compute resource's execution role.
58
+ *
59
+ * @param target - The compute resource to grant access to.
60
+ * @param opts - Optional grant options (justification for audit trail).
61
+ */
62
+ grantSendMessage(target, opts) {
63
+ const name = `${this.__name}-${target.grantName()}-sendmessage`;
64
+ const arns = grants.buildResourceArns(this.arn, undefined);
65
+ grants.createGrant(this, name, target, ["sqs:SendMessage"], arns, opts);
66
+ }
67
+ /**
68
+ * Grants consumemessages access (sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes) on this queue
69
+ * to the target compute resource's execution role.
70
+ *
71
+ * @param target - The compute resource to grant access to.
72
+ * @param opts - Optional grant options (justification for audit trail).
73
+ */
74
+ grantConsumeMessages(target, opts) {
75
+ const name = `${this.__name}-${target.grantName()}-consumemessages`;
76
+ const arns = grants.buildResourceArns(this.arn, undefined);
77
+ grants.createGrant(this, name, target, ["sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes"], arns, opts);
78
+ }
79
+ /**
80
+ * Grants full access (sqs:SendMessage, sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes, sqs:ChangeMessageVisibility, sqs:PurgeQueue) on this queue
81
+ * to the target compute resource's execution role.
82
+ *
83
+ * This is an escape hatch — prefer scoped grants (grantRead, grantWrite, etc.).
84
+ * A warning is logged if no justification is provided.
85
+ */
86
+ grantFullAccess(target, opts) {
87
+ if (!opts?.justification) {
88
+ pulumi.log.warn(`⚠ ${this.__name} → ${target.grantName()}: full access granted with no justification. ` +
89
+ `Consider scoping with grantRead, grantWrite, or grantDelete, ` +
90
+ `or add a justification.`, this);
91
+ }
92
+ else {
93
+ pulumi.log.info(`ℹ ${this.__name} → ${target.grantName()}: full access granted. Justification: "${opts.justification}"`, this);
94
+ }
95
+ const name = `${this.__name}-${target.grantName()}-fullaccess`;
96
+ const arns = grants.buildResourceArns(this.arn, undefined);
97
+ grants.createGrant(this, name, target, ["sqs:SendMessage", "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:ChangeMessageVisibility", "sqs:PurgeQueue"], arns, opts);
98
+ }
99
+ }
100
+ exports.Queue = Queue;
101
+ /** @internal */
102
+ Queue.__pulumiType = 'anvil:aws:Queue';
103
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../aws/queue.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "../types/input";
2
3
  export declare class SvelteKitSite extends pulumi.ComponentResource {
3
4
  /**
4
5
  * Returns true if the given object is an instance of SvelteKitSite. This is designed to work even
@@ -9,6 +10,10 @@ export declare class SvelteKitSite extends pulumi.ComponentResource {
9
10
  readonly cloudFrontDistributionId: pulumi.Output<string | undefined>;
10
11
  readonly dnsRecords: pulumi.Output<string | undefined>;
11
12
  readonly functionName: pulumi.Output<string | undefined>;
13
+ /**
14
+ * OriginSecret is the x-origin-secret header value to configure in Cloudflare Transform Rules. Only populated when originProtection is set.
15
+ */
16
+ readonly originSecret: pulumi.Output<string | undefined>;
12
17
  readonly url: pulumi.Output<string | undefined>;
13
18
  /**
14
19
  * Create a SvelteKitSite resource with the given unique name, arguments, and options.
@@ -30,6 +35,10 @@ export interface SvelteKitSiteArgs {
30
35
  environment?: pulumi.Input<{
31
36
  [key: string]: pulumi.Input<string>;
32
37
  }>;
38
+ /**
39
+ * OriginProtection enables WAF-based origin protection. When set, a WAF WebACL is created that blocks requests missing the x-origin-secret header. The secret value is output as originSecret. Requires domain to be set.
40
+ */
41
+ originProtection?: pulumi.Input<inputs.aws.SiteOriginProtectionArgs>;
33
42
  path?: pulumi.Input<string>;
34
43
  /**
35
44
  * Runtime-only environment vars set on the Lambda function. Supports Pulumi Output values (e.g. bucket.name, fn.arn). Only available at request time, NOT during build/prerendering.
@@ -29,6 +29,7 @@ class SvelteKitSite extends pulumi.ComponentResource {
29
29
  if (!opts.id) {
30
30
  resourceInputs["domain"] = args?.domain;
31
31
  resourceInputs["environment"] = args?.environment;
32
+ resourceInputs["originProtection"] = args?.originProtection;
32
33
  resourceInputs["path"] = args?.path;
33
34
  resourceInputs["runtimeEnvironment"] = args?.runtimeEnvironment;
34
35
  resourceInputs["transform"] = args?.transform;
@@ -36,6 +37,7 @@ class SvelteKitSite extends pulumi.ComponentResource {
36
37
  resourceInputs["cloudFrontDistributionId"] = undefined /*out*/;
37
38
  resourceInputs["dnsRecords"] = undefined /*out*/;
38
39
  resourceInputs["functionName"] = undefined /*out*/;
40
+ resourceInputs["originSecret"] = undefined /*out*/;
39
41
  resourceInputs["url"] = undefined /*out*/;
40
42
  }
41
43
  else {
@@ -43,6 +45,7 @@ class SvelteKitSite extends pulumi.ComponentResource {
43
45
  resourceInputs["cloudFrontDistributionId"] = undefined /*out*/;
44
46
  resourceInputs["dnsRecords"] = undefined /*out*/;
45
47
  resourceInputs["functionName"] = undefined /*out*/;
48
+ resourceInputs["originSecret"] = undefined /*out*/;
46
49
  resourceInputs["url"] = undefined /*out*/;
47
50
  }
48
51
  opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
@@ -1 +1 @@
1
- {"version":3,"file":"svelteKitSite.js","sourceRoot":"","sources":["../../aws/svelteKitSite.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AACzC,0CAA0C;AAE1C,MAAa,aAAc,SAAQ,MAAM,CAAC,iBAAiB;IAIvD;;;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,aAAa,CAAC,YAAY,CAAC;IAC9D,CAAC;IAQD;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,IAAwB,EAAE,IAAsC;QACtF,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC;YACxC,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC;YAClD,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;YACpC,cAAc,CAAC,oBAAoB,CAAC,GAAG,IAAI,EAAE,kBAAkB,CAAC;YAChE,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC;YAC9C,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,0BAA0B,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC/D,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACnD,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SAC7C;aAAM;YACH,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,0BAA0B,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC/D,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACnD,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SAC7C;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACnF,CAAC;;AAnDL,sCAoDC;AAnDG,gBAAgB;AACO,0BAAY,GAAG,yBAAyB,CAAC"}
1
+ {"version":3,"file":"svelteKitSite.js","sourceRoot":"","sources":["../../aws/svelteKitSite.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAIzC,0CAA0C;AAE1C,MAAa,aAAc,SAAQ,MAAM,CAAC,iBAAiB;IAIvD;;;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,aAAa,CAAC,YAAY,CAAC;IAC9D,CAAC;IAYD;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,IAAwB,EAAE,IAAsC;QACtF,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC;YACxC,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC;YAClD,cAAc,CAAC,kBAAkB,CAAC,GAAG,IAAI,EAAE,gBAAgB,CAAC;YAC5D,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;YACpC,cAAc,CAAC,oBAAoB,CAAC,GAAG,IAAI,EAAE,kBAAkB,CAAC;YAChE,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC;YAC9C,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,0BAA0B,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC/D,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACnD,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACnD,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SAC7C;aAAM;YACH,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,0BAA0B,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC/D,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACjD,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACnD,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACnD,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SAC7C;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACnF,CAAC;;AA1DL,sCA2DC;AA1DG,gBAAgB;AACO,0BAAY,GAAG,yBAAyB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import * as pulumi from "@pulumi/pulumi";
2
- import * as enums from "../types/enums";
2
+ import * as inputs from "../types/input";
3
3
  /**
4
- * An Anvil-managed AWS Interface VPC Endpoint. Creates one ENI per private subnet with private DNS enabled — standard AWS service hostnames resolve to ENI IPs inside the VPC automatically. Includes a dedicated security group with zero rules by default. Use grantEndpointAccess on compute resources to open the network path. IAM permissions are managed separately via grantPermissions.
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
5
  */
6
6
  export declare class VpcEndpoint extends pulumi.ComponentResource {
7
7
  /**
@@ -10,7 +10,7 @@ export declare class VpcEndpoint extends pulumi.ComponentResource {
10
10
  */
11
11
  static isInstance(obj: any): obj is VpcEndpoint;
12
12
  /**
13
- * The first DNS name assigned to the endpoint, e.g. vpce-xxx.ssm.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.
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
14
  */
15
15
  readonly dnsName: pulumi.Output<string>;
16
16
  /**
@@ -18,7 +18,7 @@ export declare class VpcEndpoint extends pulumi.ComponentResource {
18
18
  */
19
19
  readonly endpointId: pulumi.Output<string>;
20
20
  /**
21
- * The ID of the dedicated security group attached to this endpoint. Zero rules by default. Ingress rules are added when compute resources call grantEndpointAccess.
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
22
  */
23
23
  readonly securityGroupId: pulumi.Output<string>;
24
24
  /**
@@ -34,6 +34,10 @@ export declare class VpcEndpoint extends pulumi.ComponentResource {
34
34
  * The set of arguments for constructing a VpcEndpoint resource.
35
35
  */
36
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>[]>;
37
41
  /**
38
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.
39
43
  */
@@ -41,7 +45,7 @@ export interface VpcEndpointArgs {
41
45
  /**
42
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.
43
47
  */
44
- service: pulumi.Input<enums.aws.AwsVpcEndpointService>;
48
+ service: pulumi.Input<string>;
45
49
  /**
46
50
  * The ID of the VPC to create the endpoint in. Accepts both Anvil-managed VPC IDs and imported VPC IDs.
47
51
  */
@@ -6,7 +6,7 @@ exports.VpcEndpoint = void 0;
6
6
  const pulumi = require("@pulumi/pulumi");
7
7
  const utilities = require("../utilities");
8
8
  /**
9
- * An Anvil-managed AWS Interface VPC Endpoint. Creates one ENI per private subnet with private DNS enabled — standard AWS service hostnames resolve to ENI IPs inside the VPC automatically. Includes a dedicated security group with zero rules by default. Use grantEndpointAccess on compute resources to open the network path. IAM permissions are managed separately via grantPermissions.
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
10
  */
11
11
  class VpcEndpoint extends pulumi.ComponentResource {
12
12
  /**
@@ -39,6 +39,7 @@ class VpcEndpoint extends pulumi.ComponentResource {
39
39
  if (args?.vpcId === undefined && !opts.urn) {
40
40
  throw new Error("Missing required property 'vpcId'");
41
41
  }
42
+ resourceInputs["overridePermissions"] = args?.overridePermissions;
42
43
  resourceInputs["privateSubnetIds"] = args?.privateSubnetIds;
43
44
  resourceInputs["service"] = args?.service;
44
45
  resourceInputs["vpcId"] = args?.vpcId;
@@ -1 +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,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;;AA7DL,kCA8DC;AA7DG,gBAAgB;AACO,wBAAY,GAAG,uBAAuB,CAAC"}
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.js CHANGED
@@ -51,6 +51,10 @@ function sanitize(s) {
51
51
  */
52
52
  function buildResourceArns(baseArn, paths) {
53
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
+ }
54
58
  if (!paths || paths.length === 0) {
55
59
  arns.push(pulumi.interpolate `${baseArn}/*`);
56
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;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,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.14",
3
+ "version": "0.0.15",
4
4
  "scripts": {
5
5
  "build": "tsc && cp package.json bin/"
6
6
  },