alchemy 0.53.0 → 0.55.0
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/bin/alchemy.js +196353 -0
- package/bin/alchemy.ts +2 -2
- package/bin/commands/init.ts +1190 -0
- package/bin/constants.ts +18 -0
- package/bin/services/execute-alchemy.ts +7 -2
- package/bin/services/package-manager.ts +1 -1
- package/bin/types.ts +14 -5
- package/lib/aws/ec2/index.d.ts +10 -0
- package/lib/aws/ec2/index.d.ts.map +1 -0
- package/lib/aws/ec2/index.js +10 -0
- package/lib/aws/ec2/index.js.map +1 -0
- package/lib/aws/ec2/internet-gateway-attachment.d.ts +150 -0
- package/lib/aws/ec2/internet-gateway-attachment.d.ts.map +1 -0
- package/lib/aws/ec2/internet-gateway-attachment.js +248 -0
- package/lib/aws/ec2/internet-gateway-attachment.js.map +1 -0
- package/lib/aws/ec2/internet-gateway.d.ts +132 -0
- package/lib/aws/ec2/internet-gateway.d.ts.map +1 -0
- package/lib/aws/ec2/internet-gateway.js +311 -0
- package/lib/aws/ec2/internet-gateway.js.map +1 -0
- package/lib/aws/ec2/nat-gateway.d.ts +145 -0
- package/lib/aws/ec2/nat-gateway.d.ts.map +1 -0
- package/lib/aws/ec2/nat-gateway.js +618 -0
- package/lib/aws/ec2/nat-gateway.js.map +1 -0
- package/lib/aws/ec2/route-table-association.d.ts +134 -0
- package/lib/aws/ec2/route-table-association.d.ts.map +1 -0
- package/lib/aws/ec2/route-table-association.js +364 -0
- package/lib/aws/ec2/route-table-association.js.map +1 -0
- package/lib/aws/ec2/route-table.d.ts +94 -0
- package/lib/aws/ec2/route-table.d.ts.map +1 -0
- package/lib/aws/ec2/route-table.js +253 -0
- package/lib/aws/ec2/route-table.js.map +1 -0
- package/lib/aws/ec2/route.d.ts +130 -0
- package/lib/aws/ec2/route.d.ts.map +1 -0
- package/lib/aws/ec2/route.js +253 -0
- package/lib/aws/ec2/route.js.map +1 -0
- package/lib/aws/ec2/security-group-rule.d.ts +84 -0
- package/lib/aws/ec2/security-group-rule.d.ts.map +1 -0
- package/lib/aws/ec2/security-group-rule.js +123 -0
- package/lib/aws/ec2/security-group-rule.js.map +1 -0
- package/lib/aws/ec2/security-group.d.ts +84 -0
- package/lib/aws/ec2/security-group.d.ts.map +1 -0
- package/lib/aws/ec2/security-group.js +207 -0
- package/lib/aws/ec2/security-group.js.map +1 -0
- package/lib/aws/ec2/subnet.d.ts +110 -0
- package/lib/aws/ec2/subnet.d.ts.map +1 -0
- package/lib/aws/ec2/subnet.js +336 -0
- package/lib/aws/ec2/subnet.js.map +1 -0
- package/lib/aws/ec2/utils.d.ts +15 -0
- package/lib/aws/ec2/utils.d.ts.map +1 -0
- package/lib/aws/ec2/utils.js +79 -0
- package/lib/aws/ec2/utils.js.map +1 -0
- package/lib/aws/ec2/vpc.d.ts +160 -0
- package/lib/aws/ec2/vpc.d.ts.map +1 -0
- package/lib/aws/ec2/vpc.js +453 -0
- package/lib/aws/ec2/vpc.js.map +1 -0
- package/lib/aws/index.d.ts +7 -0
- package/lib/aws/index.d.ts.map +1 -1
- package/lib/aws/index.js +8 -0
- package/lib/aws/index.js.map +1 -1
- package/lib/aws/utils.d.ts +25 -0
- package/lib/aws/utils.d.ts.map +1 -0
- package/lib/aws/utils.js +89 -0
- package/lib/aws/utils.js.map +1 -0
- package/lib/build-date.d.ts +6 -0
- package/lib/build-date.d.ts.map +1 -0
- package/lib/build-date.js +8 -0
- package/lib/build-date.js.map +1 -0
- package/lib/cloudflare/astro.d.ts.map +1 -1
- package/lib/cloudflare/astro.js +4 -3
- package/lib/cloudflare/astro.js.map +1 -1
- package/lib/cloudflare/bundle/externals.d.ts +3 -0
- package/lib/cloudflare/bundle/externals.d.ts.map +1 -0
- package/lib/cloudflare/bundle/externals.js +35 -0
- package/lib/cloudflare/bundle/externals.js.map +1 -0
- package/lib/cloudflare/bundle/internal-worker-bundle.d.ts +8 -1
- package/lib/cloudflare/bundle/internal-worker-bundle.d.ts.map +1 -1
- package/lib/cloudflare/bundle/internal-worker-bundle.js +11 -4
- package/lib/cloudflare/bundle/internal-worker-bundle.js.map +1 -1
- package/lib/cloudflare/bundle/plugin-hot-reload.d.ts +4 -1
- package/lib/cloudflare/bundle/plugin-hot-reload.d.ts.map +1 -1
- package/lib/cloudflare/bundle/plugin-hot-reload.js +27 -11
- package/lib/cloudflare/bundle/plugin-hot-reload.js.map +1 -1
- package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js +5 -1
- package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js.map +1 -1
- package/lib/cloudflare/bundle/plugin-wasm.d.ts +6 -2
- package/lib/cloudflare/bundle/plugin-wasm.d.ts.map +1 -1
- package/lib/cloudflare/bundle/plugin-wasm.js +21 -47
- package/lib/cloudflare/bundle/plugin-wasm.js.map +1 -1
- package/lib/cloudflare/bundle/validate-node-compat.d.ts +2 -1
- package/lib/cloudflare/bundle/validate-node-compat.d.ts.map +1 -1
- package/lib/cloudflare/bundle/validate-node-compat.js +5 -4
- package/lib/cloudflare/bundle/validate-node-compat.js.map +1 -1
- package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
- package/lib/cloudflare/compatibility-date.gen.js +1 -1
- package/lib/cloudflare/d1-database.js +1 -1
- package/lib/cloudflare/d1-database.js.map +1 -1
- package/lib/cloudflare/d1-migrations.d.ts.map +1 -1
- package/lib/cloudflare/d1-migrations.js +8 -10
- package/lib/cloudflare/d1-migrations.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-options.d.ts +3 -3
- package/lib/cloudflare/miniflare/miniflare-worker-options.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-options.js +23 -6
- package/lib/cloudflare/miniflare/miniflare-worker-options.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare.js +2 -4
- package/lib/cloudflare/miniflare/miniflare.js.map +1 -1
- package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/remote-binding-proxy.js +4 -6
- package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -1
- package/lib/cloudflare/react-router.d.ts +4 -0
- package/lib/cloudflare/react-router.d.ts.map +1 -1
- package/lib/cloudflare/react-router.js +8 -5
- package/lib/cloudflare/react-router.js.map +1 -1
- package/lib/cloudflare/worker-bundle.d.ts +80 -0
- package/lib/cloudflare/worker-bundle.d.ts.map +1 -0
- package/lib/cloudflare/worker-bundle.js +266 -0
- package/lib/cloudflare/worker-bundle.js.map +1 -0
- package/lib/cloudflare/worker.d.ts +1 -1
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +81 -195
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/esbuild/bundle.d.ts +1 -0
- package/lib/esbuild/bundle.d.ts.map +1 -1
- package/lib/state/cloudflare-state-store.js +1 -5
- package/lib/state/cloudflare-state-store.js.map +1 -1
- package/lib/state/dofs-state-store/store.d.ts.map +1 -1
- package/lib/state/dofs-state-store/store.js +4 -4
- package/lib/state/dofs-state-store/store.js.map +1 -1
- package/lib/util/params.d.ts +5 -0
- package/lib/util/params.d.ts.map +1 -0
- package/lib/util/params.js +30 -0
- package/lib/util/params.js.map +1 -0
- package/lib/util/timeout.d.ts +31 -0
- package/lib/util/timeout.d.ts.map +1 -0
- package/lib/util/timeout.js +109 -0
- package/lib/util/timeout.js.map +1 -0
- package/lib/util/xml.d.ts +5 -0
- package/lib/util/xml.d.ts.map +1 -0
- package/lib/util/xml.js +8 -0
- package/lib/util/xml.js.map +1 -0
- package/package.json +12 -5
- package/src/aws/ec2/index.ts +9 -0
- package/src/aws/ec2/internet-gateway-attachment.ts +468 -0
- package/src/aws/ec2/internet-gateway.ts +557 -0
- package/src/aws/ec2/nat-gateway.ts +1123 -0
- package/src/aws/ec2/route-table-association.ts +747 -0
- package/src/aws/ec2/route-table.ts +452 -0
- package/src/aws/ec2/route.ts +447 -0
- package/src/aws/ec2/security-group-rule.ts +229 -0
- package/src/aws/ec2/security-group.ts +418 -0
- package/src/aws/ec2/subnet.ts +625 -0
- package/src/aws/ec2/utils.ts +102 -0
- package/src/aws/ec2/vpc.ts +969 -0
- package/src/aws/index.ts +9 -0
- package/src/aws/utils.ts +137 -0
- package/src/build-date.ts +8 -0
- package/src/cloudflare/astro.ts +4 -3
- package/src/cloudflare/bundle/externals.ts +36 -0
- package/src/cloudflare/bundle/internal-worker-bundle.ts +12 -3
- package/src/cloudflare/bundle/plugin-hot-reload.ts +32 -12
- package/src/cloudflare/bundle/plugin-hybrid-node-compat.ts +6 -1
- package/src/cloudflare/bundle/plugin-wasm.ts +26 -54
- package/src/cloudflare/bundle/validate-node-compat.ts +6 -5
- package/src/cloudflare/compatibility-date.gen.ts +1 -1
- package/src/cloudflare/d1-database.ts +1 -1
- package/src/cloudflare/d1-migrations.ts +19 -18
- package/src/cloudflare/miniflare/miniflare-worker-options.ts +27 -13
- package/src/cloudflare/miniflare/miniflare.ts +2 -4
- package/src/cloudflare/miniflare/remote-binding-proxy.ts +5 -7
- package/src/cloudflare/react-router.ts +14 -6
- package/src/cloudflare/worker-bundle.ts +364 -0
- package/src/cloudflare/worker.ts +104 -241
- package/src/state/cloudflare-state-store.ts +1 -5
- package/src/state/dofs-state-store/store.ts +4 -4
- package/src/util/params.ts +33 -0
- package/src/util/timeout.ts +178 -0
- package/src/util/xml.ts +7 -0
- package/templates/nuxt/package.json +1 -1
- package/templates/nuxt/types/env.d.ts +11 -0
- package/templates/react-router/workers/app.ts +2 -2
- package/templates/rwsdk/.cursor/rules/alchemy_cloudflare.mdc +385 -0
- package/templates/rwsdk/wrangler.jsonc +10 -7
- package/templates/typescript/tsconfig.json +1 -2
- package/bin/alchemy.mjs +0 -51766
- package/lib/cloudflare/bundle/esbuild.d.ts +0 -16
- package/lib/cloudflare/bundle/esbuild.d.ts.map +0 -1
- package/lib/cloudflare/bundle/esbuild.js +0 -159
- package/lib/cloudflare/bundle/esbuild.js.map +0 -1
- package/lib/cloudflare/bundle/fs.d.ts +0 -18
- package/lib/cloudflare/bundle/fs.d.ts.map +0 -1
- package/lib/cloudflare/bundle/fs.js +0 -78
- package/lib/cloudflare/bundle/fs.js.map +0 -1
- package/lib/cloudflare/bundle/index.d.ts +0 -3
- package/lib/cloudflare/bundle/index.d.ts.map +0 -1
- package/lib/cloudflare/bundle/index.js +0 -2
- package/lib/cloudflare/bundle/index.js.map +0 -1
- package/lib/cloudflare/bundle/inline.d.ts +0 -12
- package/lib/cloudflare/bundle/inline.d.ts.map +0 -1
- package/lib/cloudflare/bundle/inline.js +0 -32
- package/lib/cloudflare/bundle/inline.js.map +0 -1
- package/lib/cloudflare/bundle/normalize.d.ts +0 -21
- package/lib/cloudflare/bundle/normalize.d.ts.map +0 -1
- package/lib/cloudflare/bundle/normalize.js +0 -49
- package/lib/cloudflare/bundle/normalize.js.map +0 -1
- package/lib/cloudflare/bundle/shared.d.ts +0 -30
- package/lib/cloudflare/bundle/shared.d.ts.map +0 -1
- package/lib/cloudflare/bundle/shared.js +0 -34
- package/lib/cloudflare/bundle/shared.js.map +0 -1
- package/src/cloudflare/bundle/esbuild.ts +0 -194
- package/src/cloudflare/bundle/fs.ts +0 -103
- package/src/cloudflare/bundle/index.ts +0 -6
- package/src/cloudflare/bundle/inline.ts +0 -42
- package/src/cloudflare/bundle/normalize.ts +0 -76
- package/src/cloudflare/bundle/shared.ts +0 -73
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internet-gateway.d.ts","sourceRoot":"","sources":["../../../src/aws/ec2/internet-gateway.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAG/B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,eACf,SAAQ,QAAQ,CAAC,sBAAsB,CAAC,EACtC,oBAAoB;IACtB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;KAC5D,CAAC,CAAC;IAEH;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAkFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AACH,eAAO,MAAM,eAAe,yFAGlB,OAAO,CAAC,eAAe,CAAC,OACzB,MAAM,SACJ,oBAAoB,KAC1B,OAAO,CAAC,eAAe,CAAC,CAgH5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,aAGtC,CAAC"}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import { XMLParser } from "fast-xml-parser";
|
|
2
|
+
import { Resource } from "../../resource.js";
|
|
3
|
+
import { ignore } from "../../util/ignore.js";
|
|
4
|
+
import { logger } from "../../util/logger.js";
|
|
5
|
+
import { mergeTimeoutConfig, waitForResourceState, } from "../../util/timeout.js";
|
|
6
|
+
import { callEC2Api, createEC2Client } from "./utils.js";
|
|
7
|
+
/**
|
|
8
|
+
* Wait for Internet Gateway to be in available state
|
|
9
|
+
*/
|
|
10
|
+
async function waitForInternetGatewayAvailable(client, internetGatewayId, timeoutConfig) {
|
|
11
|
+
const checkFunction = async () => {
|
|
12
|
+
const response = await callEC2Api(client, "DescribeInternetGateways", parseInternetGatewayXmlResponse, {
|
|
13
|
+
"InternetGatewayId.1": internetGatewayId,
|
|
14
|
+
});
|
|
15
|
+
return response.InternetGateways?.[0];
|
|
16
|
+
};
|
|
17
|
+
const isReady = (igw) => {
|
|
18
|
+
return igw?.State === "available" || igw !== undefined; // IGWs are usually immediately available
|
|
19
|
+
};
|
|
20
|
+
await waitForResourceState(checkFunction, isReady, timeoutConfig, internetGatewayId, "Internet Gateway", "is now available");
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Wait for Internet Gateway to be deleted
|
|
24
|
+
*/
|
|
25
|
+
async function waitForInternetGatewayDeleted(client, internetGatewayId, timeoutConfig) {
|
|
26
|
+
const checkFunction = async () => {
|
|
27
|
+
try {
|
|
28
|
+
const response = await callEC2Api(client, "DescribeInternetGateways", parseInternetGatewayXmlResponse, {
|
|
29
|
+
"InternetGatewayId.1": internetGatewayId,
|
|
30
|
+
});
|
|
31
|
+
return response.InternetGateways?.[0];
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
// If Internet Gateway is not found, it's been deleted - return undefined
|
|
35
|
+
if (error.code === "InvalidInternetGatewayID.NotFound" ||
|
|
36
|
+
error.code === "InvalidInternetGateway.NotFound") {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const isReady = (igw) => {
|
|
43
|
+
// Internet Gateway is deleted if it doesn't exist
|
|
44
|
+
return !igw;
|
|
45
|
+
};
|
|
46
|
+
await waitForResourceState(checkFunction, isReady, timeoutConfig, internetGatewayId, "Internet Gateway", "deletion completed");
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* AWS Internet Gateway Resource
|
|
50
|
+
*
|
|
51
|
+
* An Internet Gateway is a horizontally scaled, redundant, and highly available VPC component
|
|
52
|
+
* that allows communication between your VPC and the internet. It serves two purposes:
|
|
53
|
+
* 1. Provide a target in your VPC route tables for internet-routable traffic
|
|
54
|
+
* 2. Perform network address translation (NAT) for instances with public IPv4 addresses
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* // Create a basic Internet Gateway
|
|
59
|
+
* const igw = new InternetGateway({
|
|
60
|
+
* tags: {
|
|
61
|
+
* Name: "my-internet-gateway",
|
|
62
|
+
* Environment: "production"
|
|
63
|
+
* }
|
|
64
|
+
* });
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* // Create Internet Gateway with custom timeout configuration
|
|
70
|
+
* const igw = new InternetGateway({
|
|
71
|
+
* tags: { Name: "custom-igw" },
|
|
72
|
+
* timeoutConfig: {
|
|
73
|
+
* maxAttempts: 30,
|
|
74
|
+
* delayMs: 1000
|
|
75
|
+
* }
|
|
76
|
+
* });
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* // Create Internet Gateway and attach to VPC
|
|
82
|
+
* const vpc = new VPC({ cidrBlock: "10.0.0.0/16" });
|
|
83
|
+
* const igw = new InternetGateway({ tags: { Name: "vpc-igw" } });
|
|
84
|
+
* const attachment = new InternetGatewayAttachment({
|
|
85
|
+
* internetGatewayId: igw.internetGatewayId,
|
|
86
|
+
* vpcId: vpc.vpcId
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* // Access Internet Gateway properties
|
|
93
|
+
* const igw = new InternetGateway({ tags: { Name: "example-igw" } });
|
|
94
|
+
* logger.log(`Internet Gateway ID: ${igw.internetGatewayId}`);
|
|
95
|
+
* logger.log(`State: ${igw.state}`);
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* Creates and manages Internet Gateways that provide internet access to VPCs.
|
|
99
|
+
* Note: Use InternetGatewayAttachment to attach the gateway to a VPC.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* // Create a basic Internet Gateway
|
|
103
|
+
* const igw = await InternetGateway("main-igw", {
|
|
104
|
+
* tags: {
|
|
105
|
+
* Name: "main-internet-gateway",
|
|
106
|
+
* Environment: "production"
|
|
107
|
+
* }
|
|
108
|
+
* });
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* // Create an Internet Gateway for development environment
|
|
112
|
+
* const devIgw = await InternetGateway("dev-igw", {
|
|
113
|
+
* tags: {
|
|
114
|
+
* Name: "dev-internet-gateway",
|
|
115
|
+
* Environment: "development",
|
|
116
|
+
* Team: "backend"
|
|
117
|
+
* }
|
|
118
|
+
* });
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* // Create an Internet Gateway with custom timeout configuration
|
|
122
|
+
* const customIgw = await InternetGateway("custom-igw", {
|
|
123
|
+
* timeout: {
|
|
124
|
+
* maxAttempts: 90,
|
|
125
|
+
* delayMs: 1500
|
|
126
|
+
* },
|
|
127
|
+
* tags: {
|
|
128
|
+
* Name: "custom-timeout-igw",
|
|
129
|
+
* Purpose: "high-availability"
|
|
130
|
+
* }
|
|
131
|
+
* });
|
|
132
|
+
*/
|
|
133
|
+
export const InternetGateway = Resource("aws::InternetGateway", async function (_id, props) {
|
|
134
|
+
const client = await createEC2Client();
|
|
135
|
+
const timeoutConfig = mergeTimeoutConfig(INTERNET_GATEWAY_TIMEOUT, props.timeout);
|
|
136
|
+
if (this.phase === "delete") {
|
|
137
|
+
if (this.output?.internetGatewayId) {
|
|
138
|
+
logger.log(`🗑️ Deleting Internet Gateway: ${this.output.internetGatewayId}`);
|
|
139
|
+
// Simply delete the Internet Gateway - attachments should handle themselves
|
|
140
|
+
await ignore("InvalidInternetGatewayID.NotFound", async () => {
|
|
141
|
+
await callEC2Api(client, "DeleteInternetGateway", parseInternetGatewayXmlResponse, {
|
|
142
|
+
InternetGatewayId: this.output.internetGatewayId,
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
// Wait for Internet Gateway to be fully deleted
|
|
146
|
+
await waitForInternetGatewayDeleted(client, this.output.internetGatewayId, timeoutConfig);
|
|
147
|
+
logger.log(` ✅ Internet Gateway ${this.output.internetGatewayId} deletion completed`);
|
|
148
|
+
}
|
|
149
|
+
return this.destroy();
|
|
150
|
+
}
|
|
151
|
+
let internetGateway;
|
|
152
|
+
if (this.phase === "update" && this.output?.internetGatewayId) {
|
|
153
|
+
// Get existing Internet Gateway
|
|
154
|
+
const response = await callEC2Api(client, "DescribeInternetGateways", parseInternetGatewayXmlResponse, {
|
|
155
|
+
"InternetGatewayId.1": this.output.internetGatewayId,
|
|
156
|
+
});
|
|
157
|
+
if (!response.InternetGateways?.[0]) {
|
|
158
|
+
throw new Error(`Internet Gateway ${this.output.internetGatewayId} not found`);
|
|
159
|
+
}
|
|
160
|
+
internetGateway = response.InternetGateways[0];
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
// Create new Internet Gateway
|
|
164
|
+
const createInternetGatewayParams = {};
|
|
165
|
+
// Add tags if provided
|
|
166
|
+
if (props.tags) {
|
|
167
|
+
createInternetGatewayParams.TagSpecifications = [
|
|
168
|
+
{
|
|
169
|
+
ResourceType: "internet-gateway",
|
|
170
|
+
Tags: Object.entries(props.tags).map(([key, value]) => ({
|
|
171
|
+
Key: key,
|
|
172
|
+
Value: value,
|
|
173
|
+
})),
|
|
174
|
+
},
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
const createParams = convertCreateInternetGatewayParamsToAwsFormat(createInternetGatewayParams);
|
|
178
|
+
const response = await callEC2Api(client, "CreateInternetGateway", parseInternetGatewayXmlResponse, createParams);
|
|
179
|
+
if (!response.InternetGateway) {
|
|
180
|
+
throw new Error("Failed to create Internet Gateway");
|
|
181
|
+
}
|
|
182
|
+
internetGateway = response.InternetGateway;
|
|
183
|
+
// Wait for Internet Gateway to be available
|
|
184
|
+
await waitForInternetGatewayAvailable(client, internetGateway.InternetGatewayId, timeoutConfig);
|
|
185
|
+
}
|
|
186
|
+
return this({
|
|
187
|
+
internetGatewayId: internetGateway.InternetGatewayId,
|
|
188
|
+
state: "available",
|
|
189
|
+
attachments: internetGateway.Attachments?.map((att) => ({
|
|
190
|
+
vpcId: att.VpcId,
|
|
191
|
+
state: att.State,
|
|
192
|
+
})),
|
|
193
|
+
ownerId: internetGateway.OwnerId,
|
|
194
|
+
...props,
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
/**
|
|
198
|
+
* Internet Gateway timeout constants
|
|
199
|
+
*/
|
|
200
|
+
export const INTERNET_GATEWAY_TIMEOUT = {
|
|
201
|
+
maxAttempts: 60,
|
|
202
|
+
delayMs: 2000, // 2 seconds - IGWs are medium speed resources
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* Helper functions to convert typed parameters to AWS API format
|
|
206
|
+
*/
|
|
207
|
+
function convertCreateInternetGatewayParamsToAwsFormat(params) {
|
|
208
|
+
const awsParams = {};
|
|
209
|
+
if (params.DryRun !== undefined) {
|
|
210
|
+
awsParams.DryRun = params.DryRun.toString();
|
|
211
|
+
}
|
|
212
|
+
// Handle TagSpecifications
|
|
213
|
+
if (params.TagSpecifications) {
|
|
214
|
+
params.TagSpecifications.forEach((tagSpec, specIndex) => {
|
|
215
|
+
const specNum = specIndex + 1;
|
|
216
|
+
awsParams[`TagSpecification.${specNum}.ResourceType`] =
|
|
217
|
+
tagSpec.ResourceType;
|
|
218
|
+
tagSpec.Tags.forEach((tag, tagIndex) => {
|
|
219
|
+
const tagNum = tagIndex + 1;
|
|
220
|
+
awsParams[`TagSpecification.${specNum}.Tag.${tagNum}.Key`] = tag.Key;
|
|
221
|
+
awsParams[`TagSpecification.${specNum}.Tag.${tagNum}.Value`] =
|
|
222
|
+
tag.Value;
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
return awsParams;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Parse XML responses specifically for Internet Gateway operations
|
|
230
|
+
*/
|
|
231
|
+
function parseInternetGatewayXmlResponse(xmlText) {
|
|
232
|
+
const parser = new XMLParser({
|
|
233
|
+
ignoreAttributes: true,
|
|
234
|
+
parseAttributeValue: true,
|
|
235
|
+
parseTagValue: true,
|
|
236
|
+
trimValues: true,
|
|
237
|
+
});
|
|
238
|
+
const parsed = parser.parse(xmlText);
|
|
239
|
+
const result = {};
|
|
240
|
+
// Parse CreateInternetGatewayResponse
|
|
241
|
+
if (parsed.CreateInternetGatewayResponse) {
|
|
242
|
+
const internetGateway = parsed.CreateInternetGatewayResponse
|
|
243
|
+
.internetGateway;
|
|
244
|
+
if (internetGateway) {
|
|
245
|
+
result.InternetGateway = {
|
|
246
|
+
InternetGatewayId: internetGateway.internetGatewayId,
|
|
247
|
+
State: "available", // Internet Gateways are immediately available
|
|
248
|
+
Attachments: internetGateway.attachmentSet?.item
|
|
249
|
+
? (Array.isArray(internetGateway.attachmentSet.item)
|
|
250
|
+
? internetGateway.attachmentSet.item
|
|
251
|
+
: [internetGateway.attachmentSet.item]).map((attachment) => ({
|
|
252
|
+
VpcId: attachment.vpcId,
|
|
253
|
+
State: attachment.state,
|
|
254
|
+
}))
|
|
255
|
+
: [],
|
|
256
|
+
Tags: internetGateway.tagSet?.item
|
|
257
|
+
? Array.isArray(internetGateway.tagSet.item)
|
|
258
|
+
? internetGateway.tagSet.item.map((tag) => ({
|
|
259
|
+
Key: tag.key,
|
|
260
|
+
Value: tag.value,
|
|
261
|
+
}))
|
|
262
|
+
: [
|
|
263
|
+
{
|
|
264
|
+
Key: internetGateway.tagSet.item.key,
|
|
265
|
+
Value: internetGateway.tagSet.item.value,
|
|
266
|
+
},
|
|
267
|
+
]
|
|
268
|
+
: undefined,
|
|
269
|
+
OwnerId: internetGateway.ownerId,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Parse DescribeInternetGatewaysResponse
|
|
274
|
+
if (parsed.DescribeInternetGatewaysResponse) {
|
|
275
|
+
const internetGatewaySet = parsed.DescribeInternetGatewaysResponse.internetGatewaySet;
|
|
276
|
+
if (internetGatewaySet?.item) {
|
|
277
|
+
const igws = Array.isArray(internetGatewaySet.item)
|
|
278
|
+
? internetGatewaySet.item
|
|
279
|
+
: [internetGatewaySet.item];
|
|
280
|
+
result.InternetGateways = igws.map((igw) => ({
|
|
281
|
+
InternetGatewayId: igw.internetGatewayId,
|
|
282
|
+
State: "available",
|
|
283
|
+
Attachments: igw.attachmentSet?.item
|
|
284
|
+
? (Array.isArray(igw.attachmentSet.item)
|
|
285
|
+
? igw.attachmentSet.item
|
|
286
|
+
: [igw.attachmentSet.item]).map((attachment) => ({
|
|
287
|
+
VpcId: attachment.vpcId,
|
|
288
|
+
State: attachment.state,
|
|
289
|
+
}))
|
|
290
|
+
: [],
|
|
291
|
+
Tags: igw.tagSet?.item
|
|
292
|
+
? Array.isArray(igw.tagSet.item)
|
|
293
|
+
? igw.tagSet.item.map((tag) => ({ Key: tag.key, Value: tag.value }))
|
|
294
|
+
: [{ Key: igw.tagSet.item.key, Value: igw.tagSet.item.value }]
|
|
295
|
+
: undefined,
|
|
296
|
+
OwnerId: igw.ownerId,
|
|
297
|
+
}));
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
result.InternetGateways = [];
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Handle success responses
|
|
304
|
+
if (parsed.AttachInternetGatewayResponse ||
|
|
305
|
+
parsed.DetachInternetGatewayResponse ||
|
|
306
|
+
parsed.DeleteInternetGatewayResponse) {
|
|
307
|
+
result.success = true;
|
|
308
|
+
}
|
|
309
|
+
return result;
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=internet-gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internet-gateway.js","sourceRoot":"","sources":["../../../src/aws/ec2/internet-gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { Context } from "../../context.ts";
|
|
2
|
+
import { Resource } from "../../resource.ts";
|
|
3
|
+
import { type TimeoutConfig } from "../../util/timeout.ts";
|
|
4
|
+
import type { Subnet } from "./subnet.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Properties for creating or updating a NAT Gateway
|
|
7
|
+
*/
|
|
8
|
+
export interface NatGatewayProps {
|
|
9
|
+
/**
|
|
10
|
+
* The subnet to create the NAT Gateway in (must be a public subnet)
|
|
11
|
+
*/
|
|
12
|
+
subnet: Subnet | string;
|
|
13
|
+
/**
|
|
14
|
+
* The allocation ID of an existing Elastic IP address
|
|
15
|
+
* If not provided, a new Elastic IP will be allocated
|
|
16
|
+
*/
|
|
17
|
+
allocationId?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The connectivity type for the NAT Gateway
|
|
20
|
+
* @default "public"
|
|
21
|
+
*/
|
|
22
|
+
connectivityType?: "public" | "private";
|
|
23
|
+
/**
|
|
24
|
+
* Tags to apply to the NAT Gateway
|
|
25
|
+
*/
|
|
26
|
+
tags?: Record<string, string>;
|
|
27
|
+
/**
|
|
28
|
+
* Timeout configuration for NAT Gateway operations
|
|
29
|
+
* @default NAT Gateway-specific sensible defaults (60 attempts, 5000ms delay)
|
|
30
|
+
*/
|
|
31
|
+
timeout?: Partial<TimeoutConfig>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Output returned after NAT Gateway creation/update
|
|
35
|
+
*/
|
|
36
|
+
export interface NatGateway extends Resource<"aws::NatGateway">, NatGatewayProps {
|
|
37
|
+
/**
|
|
38
|
+
* The ID of the NAT Gateway
|
|
39
|
+
*/
|
|
40
|
+
natGatewayId: string;
|
|
41
|
+
/**
|
|
42
|
+
* The ID of the subnet the NAT Gateway is in
|
|
43
|
+
*/
|
|
44
|
+
subnetId: string;
|
|
45
|
+
/**
|
|
46
|
+
* The ID of the VPC the NAT Gateway belongs to
|
|
47
|
+
*/
|
|
48
|
+
vpcId: string;
|
|
49
|
+
/**
|
|
50
|
+
* The current state of the NAT Gateway
|
|
51
|
+
*/
|
|
52
|
+
state: "pending" | "failed" | "available" | "deleting" | "deleted";
|
|
53
|
+
/**
|
|
54
|
+
* The allocation ID of the Elastic IP address
|
|
55
|
+
*/
|
|
56
|
+
allocationId: string;
|
|
57
|
+
/**
|
|
58
|
+
* The public IP address of the NAT Gateway
|
|
59
|
+
*/
|
|
60
|
+
publicIp?: string;
|
|
61
|
+
/**
|
|
62
|
+
* The private IP address of the NAT Gateway
|
|
63
|
+
*/
|
|
64
|
+
privateIp?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Whether the Elastic IP was created by this resource
|
|
67
|
+
*/
|
|
68
|
+
createdElasticIp: boolean;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* AWS NAT Gateway Resource
|
|
72
|
+
*
|
|
73
|
+
* Creates and manages NAT Gateways that provide outbound internet access
|
|
74
|
+
* for instances in private subnets. Automatically allocates an Elastic IP
|
|
75
|
+
* if one is not provided. NAT Gateways are slow resources that can take
|
|
76
|
+
* up to 10 minutes to become available.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* // Create a NAT Gateway with automatic Elastic IP allocation
|
|
80
|
+
* const natGateway = await NatGateway("main-nat", {
|
|
81
|
+
* subnet: publicSubnet,
|
|
82
|
+
* tags: {
|
|
83
|
+
* Name: "main-nat-gateway",
|
|
84
|
+
* Environment: "production"
|
|
85
|
+
* }
|
|
86
|
+
* });
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* // Create a NAT Gateway with existing Elastic IP
|
|
90
|
+
* const natGateway = await NatGateway("custom-nat", {
|
|
91
|
+
* subnet: "subnet-12345678",
|
|
92
|
+
* allocationId: "eipalloc-12345678",
|
|
93
|
+
* connectivityType: "public",
|
|
94
|
+
* tags: {
|
|
95
|
+
* Name: "custom-nat-gateway"
|
|
96
|
+
* }
|
|
97
|
+
* });
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* // Create a private NAT Gateway (for VPC-to-VPC communication)
|
|
101
|
+
* const privateNat = await NatGateway("private-nat", {
|
|
102
|
+
* subnet: privateSubnet,
|
|
103
|
+
* connectivityType: "private",
|
|
104
|
+
* tags: {
|
|
105
|
+
* Name: "private-nat-gateway",
|
|
106
|
+
* Type: "internal"
|
|
107
|
+
* }
|
|
108
|
+
* });
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* // Create a NAT Gateway with custom timeout configuration
|
|
112
|
+
* const slowNat = await NatGateway("slow-nat", {
|
|
113
|
+
* subnet: publicSubnet,
|
|
114
|
+
* timeout: {
|
|
115
|
+
* maxAttempts: 180, // Wait up to 15 minutes
|
|
116
|
+
* delayMs: 5000 // Check every 5 seconds
|
|
117
|
+
* },
|
|
118
|
+
* tags: {
|
|
119
|
+
* Name: "slow-nat-gateway"
|
|
120
|
+
* }
|
|
121
|
+
* });
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* // Use NAT Gateway in route table for private subnet internet access
|
|
125
|
+
* const privateRoute = await Route("private-internet", {
|
|
126
|
+
* routeTable: privateRouteTable,
|
|
127
|
+
* destinationCidrBlock: "0.0.0.0/0",
|
|
128
|
+
* natGateway: natGateway,
|
|
129
|
+
* tags: {
|
|
130
|
+
* Name: "private-to-internet"
|
|
131
|
+
* }
|
|
132
|
+
* });
|
|
133
|
+
*/
|
|
134
|
+
export declare const NatGateway: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<NatGateway>, _id: string, props: NatGatewayProps) => Promise<NatGateway>);
|
|
135
|
+
/**
|
|
136
|
+
* Non-retryable error for NAT Gateway operations
|
|
137
|
+
*/
|
|
138
|
+
export declare class NatGatewayNonRetryableError extends Error {
|
|
139
|
+
constructor(message: string);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* NAT Gateway timeout constants
|
|
143
|
+
*/
|
|
144
|
+
export declare const NAT_GATEWAY_TIMEOUT: TimeoutConfig;
|
|
145
|
+
//# sourceMappingURL=nat-gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nat-gateway.d.ts","sourceRoot":"","sources":["../../../src/aws/ec2/nat-gateway.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAExC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,UACf,SAAQ,QAAQ,CAAC,iBAAiB,CAAC,EACjC,eAAe;IACjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAEnE;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,eAAO,MAAM,UAAU,yFAGb,OAAO,CAAC,UAAU,CAAC,OACpB,MAAM,SACJ,eAAe,KACrB,OAAO,CAAC,UAAU,CAAC,CA8LvB,CAAC;AAiOF;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAGjC,CAAC"}
|