@itssergio91/sandman 0.2.0 → 0.3.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.
Files changed (136) hide show
  1. package/README.md +54 -272
  2. package/dist/cli/commands/cli-contract.test.d.ts +2 -0
  3. package/dist/cli/commands/cli-contract.test.d.ts.map +1 -0
  4. package/dist/cli/commands/cli-contract.test.js +217 -0
  5. package/dist/cli/commands/cli-contract.test.js.map +1 -0
  6. package/dist/cli/commands/connect.d.ts +1 -0
  7. package/dist/cli/commands/connect.d.ts.map +1 -1
  8. package/dist/cli/commands/connect.js +67 -42
  9. package/dist/cli/commands/connect.js.map +1 -1
  10. package/dist/cli/commands/create.d.ts +7 -2
  11. package/dist/cli/commands/create.d.ts.map +1 -1
  12. package/dist/cli/commands/create.js +158 -46
  13. package/dist/cli/commands/create.js.map +1 -1
  14. package/dist/cli/commands/destroy.d.ts.map +1 -1
  15. package/dist/cli/commands/destroy.js +27 -23
  16. package/dist/cli/commands/destroy.js.map +1 -1
  17. package/dist/cli/commands/doctor.d.ts +8 -0
  18. package/dist/cli/commands/doctor.d.ts.map +1 -0
  19. package/dist/cli/commands/doctor.js +124 -0
  20. package/dist/cli/commands/doctor.js.map +1 -0
  21. package/dist/cli/commands/enable.d.ts +1 -2
  22. package/dist/cli/commands/enable.d.ts.map +1 -1
  23. package/dist/cli/commands/enable.js +75 -46
  24. package/dist/cli/commands/enable.js.map +1 -1
  25. package/dist/cli/commands/init.d.ts +2 -2
  26. package/dist/cli/commands/init.d.ts.map +1 -1
  27. package/dist/cli/commands/init.js +49 -17
  28. package/dist/cli/commands/init.js.map +1 -1
  29. package/dist/cli/commands/list.d.ts.map +1 -1
  30. package/dist/cli/commands/list.js +25 -18
  31. package/dist/cli/commands/list.js.map +1 -1
  32. package/dist/cli/commands/providers.d.ts +6 -0
  33. package/dist/cli/commands/providers.d.ts.map +1 -0
  34. package/dist/cli/commands/providers.js +20 -0
  35. package/dist/cli/commands/providers.js.map +1 -0
  36. package/dist/cli/commands/status.d.ts.map +1 -1
  37. package/dist/cli/commands/status.js +88 -50
  38. package/dist/cli/commands/status.js.map +1 -1
  39. package/dist/cli/env-name.d.ts +7 -0
  40. package/dist/cli/env-name.d.ts.map +1 -0
  41. package/dist/cli/env-name.js +9 -0
  42. package/dist/cli/env-name.js.map +1 -0
  43. package/dist/cli/env-name.test.d.ts +2 -0
  44. package/dist/cli/env-name.test.d.ts.map +1 -0
  45. package/dist/cli/env-name.test.js +38 -0
  46. package/dist/cli/env-name.test.js.map +1 -0
  47. package/dist/cli/index.d.ts.map +1 -1
  48. package/dist/cli/index.js +43 -11
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/cli/output.d.ts +28 -0
  51. package/dist/cli/output.d.ts.map +1 -0
  52. package/dist/cli/output.js +60 -0
  53. package/dist/cli/output.js.map +1 -0
  54. package/dist/cli/output.test.d.ts +2 -0
  55. package/dist/cli/output.test.d.ts.map +1 -0
  56. package/dist/cli/output.test.js +78 -0
  57. package/dist/cli/output.test.js.map +1 -0
  58. package/dist/cli/reap.d.ts +11 -0
  59. package/dist/cli/reap.d.ts.map +1 -0
  60. package/dist/cli/reap.js +32 -0
  61. package/dist/cli/reap.js.map +1 -0
  62. package/dist/cli/secrets.d.ts +8 -0
  63. package/dist/cli/secrets.d.ts.map +1 -0
  64. package/dist/cli/secrets.js +30 -0
  65. package/dist/cli/secrets.js.map +1 -0
  66. package/dist/core/state-store.d.ts +15 -1
  67. package/dist/core/state-store.d.ts.map +1 -1
  68. package/dist/core/state-store.js +168 -33
  69. package/dist/core/state-store.js.map +1 -1
  70. package/dist/core/state-store.test.js +40 -0
  71. package/dist/core/state-store.test.js.map +1 -1
  72. package/dist/index.js +0 -0
  73. package/dist/providers/aws/adapter.d.ts +13 -2
  74. package/dist/providers/aws/adapter.d.ts.map +1 -1
  75. package/dist/providers/aws/adapter.js +402 -63
  76. package/dist/providers/aws/adapter.js.map +1 -1
  77. package/dist/providers/aws/adapter.test.js +300 -191
  78. package/dist/providers/aws/adapter.test.js.map +1 -1
  79. package/dist/providers/base.d.ts +1 -9
  80. package/dist/providers/base.d.ts.map +1 -1
  81. package/dist/providers/base.js.map +1 -1
  82. package/dist/providers/base.test.js +12 -2
  83. package/dist/providers/base.test.js.map +1 -1
  84. package/dist/providers/catalog.d.ts +15 -0
  85. package/dist/providers/catalog.d.ts.map +1 -0
  86. package/dist/providers/catalog.js +53 -0
  87. package/dist/providers/catalog.js.map +1 -0
  88. package/dist/providers/cloudflare/adapter.d.ts +5 -2
  89. package/dist/providers/cloudflare/adapter.d.ts.map +1 -1
  90. package/dist/providers/cloudflare/adapter.js +17 -5
  91. package/dist/providers/cloudflare/adapter.js.map +1 -1
  92. package/dist/providers/cloudflare/adapter.test.js +4 -4
  93. package/dist/providers/cloudflare/adapter.test.js.map +1 -1
  94. package/dist/providers/enable-result.d.ts +9 -0
  95. package/dist/providers/enable-result.d.ts.map +1 -0
  96. package/dist/providers/enable-result.js +26 -0
  97. package/dist/providers/enable-result.js.map +1 -0
  98. package/dist/providers/gcp/adapter.d.ts +9 -3
  99. package/dist/providers/gcp/adapter.d.ts.map +1 -1
  100. package/dist/providers/gcp/adapter.js +115 -20
  101. package/dist/providers/gcp/adapter.js.map +1 -1
  102. package/dist/providers/gcp/adapter.test.js +52 -0
  103. package/dist/providers/gcp/adapter.test.js.map +1 -1
  104. package/dist/providers/index.d.ts +5 -2
  105. package/dist/providers/index.d.ts.map +1 -1
  106. package/dist/providers/index.js +13 -0
  107. package/dist/providers/index.js.map +1 -1
  108. package/dist/providers/vercel/adapter.d.ts +5 -2
  109. package/dist/providers/vercel/adapter.d.ts.map +1 -1
  110. package/dist/providers/vercel/adapter.js +17 -5
  111. package/dist/providers/vercel/adapter.js.map +1 -1
  112. package/dist/providers/vercel/adapter.test.js +4 -4
  113. package/dist/providers/vercel/adapter.test.js.map +1 -1
  114. package/dist/types/index.d.ts +40 -1
  115. package/dist/types/index.d.ts.map +1 -1
  116. package/dist/types/index.js +4 -0
  117. package/dist/types/index.js.map +1 -1
  118. package/dist/utils/cost-estimator.d.ts +2 -0
  119. package/dist/utils/cost-estimator.d.ts.map +1 -1
  120. package/dist/utils/cost-estimator.js +23 -0
  121. package/dist/utils/cost-estimator.js.map +1 -1
  122. package/dist/utils/cost-estimator.test.js +16 -1
  123. package/dist/utils/cost-estimator.test.js.map +1 -1
  124. package/dist/utils/logger.d.ts +8 -0
  125. package/dist/utils/logger.d.ts.map +1 -0
  126. package/dist/utils/logger.js +12 -0
  127. package/dist/utils/logger.js.map +1 -0
  128. package/dist/utils/ttl.d.ts +13 -0
  129. package/dist/utils/ttl.d.ts.map +1 -0
  130. package/dist/utils/ttl.js +35 -0
  131. package/dist/utils/ttl.js.map +1 -0
  132. package/dist/utils/ttl.test.d.ts +2 -0
  133. package/dist/utils/ttl.test.d.ts.map +1 -0
  134. package/dist/utils/ttl.test.js +27 -0
  135. package/dist/utils/ttl.test.js.map +1 -0
  136. package/package.json +12 -5
@@ -1,260 +1,369 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- import { AwsAdapter } from "./adapter.js";
3
- // Mock IDs for AWS resources
4
- const MOCK_VPC_ID = "vpc-1234567890abcdef0";
5
- const MOCK_SUBNET_ID = "subnet-1234567890abcdef0";
6
- const MOCK_IGW_ID = "igw-1234567890abcdef0";
7
- const MOCK_RT_ID = "rtb-1234567890abcdef0";
8
- const MOCK_INSTANCE_ID = "i-1234567890abcdef0";
9
- const MOCK_ROLE_NAME = "sandman-test-role";
10
- const MOCK_INSTANCE_PROFILE_NAME = "sandman-test-profile";
11
- const MOCK_SG_ID = "sg-1234567890abcdef0";
12
- vi.mock("@aws-sdk/client-sts", () => ({
13
- STSClient: vi.fn().mockImplementation(() => ({
14
- send: vi.fn().mockResolvedValue({
15
- Account: "123456789012",
16
- Arn: "arn:aws:sts::123456789012:assumed-role/test",
17
- }),
18
- })),
19
- GetCallerIdentityCommand: vi.fn().mockImplementation(() => ({})),
20
- }));
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ const { named, s3Send, ec2Send, iamSend, stsSend, ssmSend, } = vi.hoisted(() => {
3
+ function named(name) {
4
+ const Cmd = class {
5
+ input;
6
+ constructor(input) {
7
+ this.input = input;
8
+ }
9
+ };
10
+ Object.defineProperty(Cmd, "name", { value: name });
11
+ return Cmd;
12
+ }
13
+ return {
14
+ named,
15
+ s3Send: vi.fn(),
16
+ ec2Send: vi.fn(),
17
+ iamSend: vi.fn(),
18
+ stsSend: vi.fn(),
19
+ ssmSend: vi.fn(),
20
+ };
21
+ });
21
22
  vi.mock("@aws-sdk/client-s3", () => ({
22
- S3Client: vi.fn().mockImplementation(() => ({
23
- send: vi.fn().mockResolvedValue({}),
24
- })),
25
- CreateBucketCommand: vi.fn().mockImplementation(() => ({})),
26
- DeleteBucketCommand: vi.fn().mockImplementation(() => ({})),
27
- ListObjectsV2Command: vi.fn().mockImplementation(() => ({ Contents: [] })),
28
- DeleteObjectsCommand: vi.fn().mockImplementation(() => ({})),
23
+ S3Client: vi.fn().mockImplementation(() => ({ send: s3Send })),
24
+ CreateBucketCommand: named("CreateBucketCommand"),
25
+ DeleteBucketCommand: named("DeleteBucketCommand"),
26
+ PutPublicAccessBlockCommand: named("PutPublicAccessBlockCommand"),
27
+ PutBucketEncryptionCommand: named("PutBucketEncryptionCommand"),
28
+ PutBucketTaggingCommand: named("PutBucketTaggingCommand"),
29
+ GetBucketTaggingCommand: named("GetBucketTaggingCommand"),
30
+ HeadBucketCommand: named("HeadBucketCommand"),
31
+ ListObjectsV2Command: named("ListObjectsV2Command"),
32
+ ListObjectVersionsCommand: named("ListObjectVersionsCommand"),
33
+ DeleteObjectsCommand: named("DeleteObjectsCommand"),
29
34
  }));
30
35
  vi.mock("@aws-sdk/client-ec2", () => ({
31
- EC2Client: vi.fn().mockImplementation(() => ({
32
- send: vi.fn().mockImplementation((command) => {
33
- const commandName = command.constructor.name;
34
- switch (commandName) {
35
- case "CreateVpcCommand":
36
- return Promise.resolve({ Vpc: { VpcId: MOCK_VPC_ID } });
37
- case "CreateSubnetCommand":
38
- return Promise.resolve({ Subnet: { SubnetId: MOCK_SUBNET_ID } });
39
- case "CreateInternetGatewayCommand":
40
- return Promise.resolve({
41
- InternetGateway: { InternetGatewayId: MOCK_IGW_ID },
42
- });
43
- case "AttachInternetGatewayCommand":
44
- return Promise.resolve({});
45
- case "CreateRouteTableCommand":
46
- return Promise.resolve({ RouteTable: { RouteTableId: MOCK_RT_ID } });
47
- case "CreateRouteCommand":
48
- return Promise.resolve({});
49
- case "AssociateRouteTableCommand":
50
- return Promise.resolve({});
51
- case "CreateSecurityGroupCommand":
52
- return Promise.resolve({ GroupId: MOCK_SG_ID });
53
- case "AuthorizeSecurityGroupIngressCommand":
54
- return Promise.resolve({});
55
- case "RunInstancesCommand":
56
- return Promise.resolve({
57
- Instances: [{ InstanceId: MOCK_INSTANCE_ID }],
58
- });
59
- case "DeleteVpcCommand":
60
- case "DeleteSubnetCommand":
61
- case "DeleteInternetGatewayCommand":
62
- case "DetachInternetGatewayCommand":
63
- case "DeleteRouteTableCommand":
64
- case "DeleteSecurityGroupCommand":
65
- case "TerminateInstancesCommand":
66
- return Promise.resolve({});
67
- default:
68
- return Promise.resolve({});
69
- }
70
- }),
71
- })),
72
- CreateVpcCommand: vi.fn().mockImplementation(() => ({})),
73
- CreateSubnetCommand: vi.fn().mockImplementation(() => ({})),
74
- CreateInternetGatewayCommand: vi.fn().mockImplementation(() => ({})),
75
- AttachInternetGatewayCommand: vi.fn().mockImplementation(() => ({})),
76
- CreateRouteTableCommand: vi.fn().mockImplementation(() => ({})),
77
- CreateRouteCommand: vi.fn().mockImplementation(() => ({})),
78
- AssociateRouteTableCommand: vi.fn().mockImplementation(() => ({})),
79
- CreateSecurityGroupCommand: vi.fn().mockImplementation(() => ({})),
80
- AuthorizeSecurityGroupIngressCommand: vi.fn().mockImplementation(() => ({})),
81
- RunInstancesCommand: vi.fn().mockImplementation(() => ({})),
82
- DeleteVpcCommand: vi.fn().mockImplementation(() => ({})),
83
- DeleteSubnetCommand: vi.fn().mockImplementation(() => ({})),
84
- DeleteInternetGatewayCommand: vi.fn().mockImplementation(() => ({})),
85
- DetachInternetGatewayCommand: vi.fn().mockImplementation(() => ({})),
86
- DeleteRouteTableCommand: vi.fn().mockImplementation(() => ({})),
87
- DeleteSecurityGroupCommand: vi.fn().mockImplementation(() => ({})),
88
- TerminateInstancesCommand: vi.fn().mockImplementation(() => ({})),
36
+ EC2Client: vi.fn().mockImplementation(() => ({ send: ec2Send })),
37
+ RunInstancesCommand: named("RunInstancesCommand"),
38
+ TerminateInstancesCommand: named("TerminateInstancesCommand"),
39
+ CreateVpcCommand: named("CreateVpcCommand"),
40
+ DeleteVpcCommand: named("DeleteVpcCommand"),
41
+ CreateSubnetCommand: named("CreateSubnetCommand"),
42
+ DeleteSubnetCommand: named("DeleteSubnetCommand"),
43
+ CreateInternetGatewayCommand: named("CreateInternetGatewayCommand"),
44
+ AttachInternetGatewayCommand: named("AttachInternetGatewayCommand"),
45
+ DetachInternetGatewayCommand: named("DetachInternetGatewayCommand"),
46
+ DeleteInternetGatewayCommand: named("DeleteInternetGatewayCommand"),
47
+ CreateRouteTableCommand: named("CreateRouteTableCommand"),
48
+ CreateRouteCommand: named("CreateRouteCommand"),
49
+ AssociateRouteTableCommand: named("AssociateRouteTableCommand"),
50
+ DeleteRouteTableCommand: named("DeleteRouteTableCommand"),
51
+ CreateSecurityGroupCommand: named("CreateSecurityGroupCommand"),
52
+ AuthorizeSecurityGroupIngressCommand: named("AuthorizeSecurityGroupIngressCommand"),
53
+ DeleteSecurityGroupCommand: named("DeleteSecurityGroupCommand"),
54
+ DescribeInstancesCommand: named("DescribeInstancesCommand"),
55
+ DescribeVpcsCommand: named("DescribeVpcsCommand"),
56
+ DescribeSecurityGroupsCommand: named("DescribeSecurityGroupsCommand"),
57
+ DescribeSubnetsCommand: named("DescribeSubnetsCommand"),
58
+ DescribeInternetGatewaysCommand: named("DescribeInternetGatewaysCommand"),
59
+ DescribeRouteTablesCommand: named("DescribeRouteTablesCommand"),
60
+ waitUntilInstanceTerminated: vi.fn(),
89
61
  }));
90
62
  vi.mock("@aws-sdk/client-iam", () => ({
91
- IAMClient: vi.fn().mockImplementation(() => ({
92
- send: vi.fn().mockImplementation((command) => {
93
- const commandName = command.constructor.name;
94
- switch (commandName) {
95
- case "CreateRoleCommand":
96
- return Promise.resolve({
97
- Role: { Arn: `arn:aws:iam::123456789012:role/${MOCK_ROLE_NAME}` },
98
- });
99
- case "AttachRolePolicyCommand":
100
- return Promise.resolve({});
101
- case "CreateInstanceProfileCommand":
102
- return Promise.resolve({
103
- InstanceProfile: {
104
- Arn: `arn:aws:iam::123456789012:instance-profile/${MOCK_INSTANCE_PROFILE_NAME}`,
105
- },
106
- });
107
- case "AddRoleToInstanceProfileCommand":
108
- return Promise.resolve({});
109
- case "DeleteRoleCommand":
110
- case "DetachRolePolicyCommand":
111
- case "DeleteInstanceProfileCommand":
112
- case "RemoveRoleFromInstanceProfileCommand":
113
- return Promise.resolve({});
114
- default:
115
- return Promise.resolve({});
116
- }
117
- }),
118
- })),
119
- CreateRoleCommand: vi.fn().mockImplementation(() => ({})),
120
- AttachRolePolicyCommand: vi.fn().mockImplementation(() => ({})),
121
- CreateInstanceProfileCommand: vi.fn().mockImplementation(() => ({})),
122
- AddRoleToInstanceProfileCommand: vi.fn().mockImplementation(() => ({})),
123
- DeleteRoleCommand: vi.fn().mockImplementation(() => ({})),
124
- DetachRolePolicyCommand: vi.fn().mockImplementation(() => ({})),
125
- DeleteInstanceProfileCommand: vi.fn().mockImplementation(() => ({})),
126
- RemoveRoleFromInstanceProfileCommand: vi.fn().mockImplementation(() => ({})),
63
+ IAMClient: vi.fn().mockImplementation(() => ({ send: iamSend })),
64
+ CreateRoleCommand: named("CreateRoleCommand"),
65
+ DeleteRoleCommand: named("DeleteRoleCommand"),
66
+ AttachRolePolicyCommand: named("AttachRolePolicyCommand"),
67
+ DetachRolePolicyCommand: named("DetachRolePolicyCommand"),
68
+ CreateInstanceProfileCommand: named("CreateInstanceProfileCommand"),
69
+ AddRoleToInstanceProfileCommand: named("AddRoleToInstanceProfileCommand"),
70
+ RemoveRoleFromInstanceProfileCommand: named("RemoveRoleFromInstanceProfileCommand"),
71
+ DeleteInstanceProfileCommand: named("DeleteInstanceProfileCommand"),
72
+ }));
73
+ vi.mock("@aws-sdk/client-sts", () => ({
74
+ STSClient: vi.fn().mockImplementation(() => ({ send: stsSend })),
75
+ GetCallerIdentityCommand: named("GetCallerIdentityCommand"),
76
+ }));
77
+ vi.mock("@aws-sdk/client-ssm", () => ({
78
+ SSMClient: vi.fn().mockImplementation(() => ({ send: ssmSend })),
79
+ GetParameterCommand: named("GetParameterCommand"),
80
+ }));
81
+ vi.mock("@aws-sdk/credential-providers", () => ({
82
+ fromIni: vi.fn().mockReturnValue({}),
127
83
  }));
84
+ import { AwsAdapter } from "./adapter.js";
85
+ const sandmanTagSet = [{ Key: "CreatedBy", Value: "sandman" }];
86
+ function mockHappyPath() {
87
+ s3Send.mockImplementation(async (command) => {
88
+ switch (command.constructor.name) {
89
+ case "CreateBucketCommand":
90
+ return { Location: "/test-bucket" };
91
+ case "ListObjectsV2Command":
92
+ return { Contents: [], IsTruncated: false };
93
+ case "ListObjectVersionsCommand":
94
+ return { Versions: [], DeleteMarkers: [], IsTruncated: false };
95
+ case "GetBucketTaggingCommand":
96
+ return { TagSet: sandmanTagSet };
97
+ default:
98
+ return {};
99
+ }
100
+ });
101
+ ec2Send.mockImplementation(async (command) => {
102
+ switch (command.constructor.name) {
103
+ case "CreateVpcCommand":
104
+ return { Vpc: { VpcId: "vpc-1234" } };
105
+ case "CreateSubnetCommand":
106
+ return { Subnet: { SubnetId: "subnet-1234" } };
107
+ case "CreateInternetGatewayCommand":
108
+ return { InternetGateway: { InternetGatewayId: "igw-1234" } };
109
+ case "CreateRouteTableCommand":
110
+ return { RouteTable: { RouteTableId: "rtb-1234" } };
111
+ case "CreateSecurityGroupCommand":
112
+ return { GroupId: "sg-1234" };
113
+ case "RunInstancesCommand":
114
+ return { Instances: [{ InstanceId: "i-1234" }] };
115
+ case "DescribeVpcsCommand":
116
+ return { Vpcs: [{ Tags: sandmanTagSet }] };
117
+ case "DescribeInstancesCommand":
118
+ return {
119
+ Reservations: [
120
+ {
121
+ Instances: [
122
+ { Tags: sandmanTagSet, State: { Name: "running" } },
123
+ ],
124
+ },
125
+ ],
126
+ };
127
+ default:
128
+ return {};
129
+ }
130
+ });
131
+ iamSend.mockImplementation(async (command) => {
132
+ switch (command.constructor.name) {
133
+ case "CreateRoleCommand":
134
+ return { Role: { Arn: "arn:aws:iam::123456789012:role/test" } };
135
+ case "CreateInstanceProfileCommand":
136
+ return {
137
+ InstanceProfile: {
138
+ Arn: "arn:aws:iam::123456789012:instance-profile/test",
139
+ InstanceProfileName: command.input?.InstanceProfileName || "sandman-profile",
140
+ },
141
+ };
142
+ default:
143
+ return {};
144
+ }
145
+ });
146
+ stsSend.mockResolvedValue({ Account: "123456789012" });
147
+ ssmSend.mockResolvedValue({ Parameter: { Value: "ami-ssm-resolved" } });
148
+ }
128
149
  describe("AwsAdapter", () => {
129
150
  let adapter;
130
151
  beforeEach(() => {
131
152
  vi.clearAllMocks();
153
+ mockHappyPath();
132
154
  adapter = new AwsAdapter();
133
155
  });
134
- afterEach(() => {
135
- vi.resetModules();
136
- });
137
156
  describe("init", () => {
138
- it("should verify credentials and detect account ID", async () => {
157
+ it("should detect AWS account ID", async () => {
139
158
  await adapter.init();
140
- const info = adapter.getAccountInfo();
141
- expect(info.accountId).toBe("123456789012");
142
- expect(info.region).toBe("us-east-1");
159
+ expect(stsSend).toHaveBeenCalled();
143
160
  });
144
- it("should respect AWS_DEFAULT_REGION env var", async () => {
145
- process.env.AWS_DEFAULT_REGION = "eu-west-1";
146
- const newAdapter = new AwsAdapter();
147
- await newAdapter.init();
148
- const info = newAdapter.getAccountInfo();
149
- expect(info.region).toBe("eu-west-1");
150
- delete process.env.AWS_DEFAULT_REGION;
161
+ it("should keep an explicit CLI region after init", async () => {
162
+ adapter.setRegion("eu-west-1");
163
+ await adapter.init();
164
+ const env = await adapter.createEnvironment("keep-region");
165
+ expect(env.region).toBe("eu-west-1");
151
166
  });
152
167
  });
153
168
  describe("createEnvironment", () => {
154
- it("should create an environment with S3 bucket", async () => {
169
+ it("should create environment with S3, EC2, VPC, and IAM resources", async () => {
155
170
  const env = await adapter.createEnvironment("test-env");
156
171
  expect(env.name).toBe("test-env");
157
172
  expect(env.provider).toBe("aws");
158
173
  expect(env.status).toBe("active");
174
+ expect(Object.keys(env.resources).length).toBeGreaterThan(0);
175
+ expect(env.resources.vpcId).toBe("vpc-1234");
176
+ expect(env.resources.instanceId).toBe("i-1234");
177
+ expect(env.resources.iamInstanceProfile).toMatch(/^sandman-test-env-/);
178
+ });
179
+ it("should include S3 bucket in resources", async () => {
180
+ const env = await adapter.createEnvironment("test-env");
159
181
  expect(env.resources.bucketName).toMatch(/^sandman-test-env-/);
160
182
  });
161
- it("should use account ID from init", async () => {
162
- await adapter.init();
163
- const env = await adapter.createEnvironment("my-env");
164
- expect(env.accountId).toBe("123456789012");
183
+ it("should resolve AMI from SSM", async () => {
184
+ await adapter.createEnvironment("ami-env");
185
+ expect(ssmSend).toHaveBeenCalled();
186
+ const runCall = ec2Send.mock.calls.find((c) => c[0].constructor.name ===
187
+ "RunInstancesCommand");
188
+ expect((runCall?.[0]).input?.ImageId).toBe("ami-ssm-resolved");
189
+ });
190
+ it("should fall back to a hardcoded AMI when SSM fails", async () => {
191
+ ssmSend.mockRejectedValue(new Error("Parameter not found"));
192
+ await adapter.createEnvironment("ami-fallback");
193
+ const runCall = ec2Send.mock.calls.find((c) => c[0].constructor.name ===
194
+ "RunInstancesCommand");
195
+ expect((runCall?.[0]).input?.ImageId).toBe("ami-0c7217cdde317cfec");
196
+ });
197
+ it("should return failed and keep partial IDs when VPC create fails", async () => {
198
+ ec2Send.mockImplementation(async (command) => {
199
+ if (command.constructor.name === "CreateVpcCommand") {
200
+ throw new Error("VpcLimitExceeded");
201
+ }
202
+ return {};
203
+ });
204
+ const env = await adapter.createEnvironment("partial-env");
205
+ expect(env.status).toBe("failed");
206
+ expect(env.error).toMatch(/vpc:/i);
207
+ expect(env.resources.bucketName).toMatch(/^sandman-partial-env-/);
208
+ expect(env.resources.vpcId).toBeUndefined();
209
+ });
210
+ it("should throw when no cloud resources were created", async () => {
211
+ s3Send.mockRejectedValue(new Error("AccessDenied"));
212
+ ec2Send.mockRejectedValue(new Error("Unauthorized"));
213
+ iamSend.mockRejectedValue(new Error("AccessDenied"));
214
+ await expect(adapter.createEnvironment("empty-env")).rejects.toThrow(/any AWS resources/);
165
215
  });
166
216
  });
167
- describe("connect", () => {
168
- it("should return environment variables", async () => {
169
- const env = {
170
- name: "test",
217
+ describe("destroyEnvironment", () => {
218
+ function makeEnv(overrides = {}) {
219
+ return {
220
+ name: "test-env",
171
221
  provider: "aws",
172
222
  status: "active",
173
- services: [],
174
- resources: { bucketName: "test-bucket" },
175
223
  createdAt: new Date().toISOString(),
176
224
  updatedAt: new Date().toISOString(),
177
- accountId: "123456789012",
178
225
  region: "us-east-1",
226
+ services: [],
227
+ resources: {
228
+ bucketName: "sandman-test-env-123",
229
+ instanceId: "i-1234",
230
+ vpcId: "vpc-1234",
231
+ subnetId: "subnet-1234",
232
+ internetGatewayId: "igw-1234",
233
+ routeTableId: "rtb-1234",
234
+ securityGroupId: "sg-1234",
235
+ iamInstanceProfile: "sandman-test-env-profile",
236
+ },
237
+ accountId: "123456789012",
238
+ ...overrides,
179
239
  };
180
- const creds = await adapter.connect(env);
181
- expect(creds.provider).toBe("aws");
182
- expect(creds.AWS_ACCOUNT_ID).toBe("123456789012");
183
- expect(creds.AWS_REGION).toBe("us-east-1");
184
- expect(creds.AWS_S3_BUCKET).toBe("test-bucket");
240
+ }
241
+ it("should destroy all resources without throwing", async () => {
242
+ await expect(adapter.destroyEnvironment(makeEnv())).resolves.not.toThrow();
243
+ });
244
+ it("should refuse destroy when STS account does not match", async () => {
245
+ await expect(adapter.destroyEnvironment(makeEnv({ accountId: "999999999999" }))).rejects.toThrow(/does not match caller/);
246
+ });
247
+ it("should refuse destroy of untagged resources that are not sandman-prefixed", async () => {
248
+ ec2Send.mockImplementation(async (command) => {
249
+ if (command.constructor.name === "DescribeInstancesCommand") {
250
+ return {
251
+ Reservations: [
252
+ {
253
+ Instances: [
254
+ { Tags: [{ Key: "CreatedBy", Value: "someone-else" }] },
255
+ ],
256
+ },
257
+ ],
258
+ };
259
+ }
260
+ return {};
261
+ });
262
+ await expect(adapter.destroyEnvironment(makeEnv({
263
+ resources: { instanceId: "i-foreign" },
264
+ accountId: undefined,
265
+ }))).rejects.toThrow(/Refusing to destroy/);
266
+ });
267
+ it("should delete object versions and delete markers before removing a bucket", async () => {
268
+ s3Send.mockImplementation(async (command) => {
269
+ switch (command.constructor.name) {
270
+ case "GetBucketTaggingCommand":
271
+ return { TagSet: sandmanTagSet };
272
+ case "ListObjectsV2Command":
273
+ return { Contents: [], IsTruncated: false };
274
+ case "ListObjectVersionsCommand":
275
+ return {
276
+ Versions: [{ Key: "a.txt", VersionId: "v1" }],
277
+ DeleteMarkers: [{ Key: "b.txt", VersionId: "d1" }],
278
+ IsTruncated: false,
279
+ };
280
+ default:
281
+ return {};
282
+ }
283
+ });
284
+ await adapter.destroyEnvironment(makeEnv({
285
+ resources: { bucketName: "sandman-test-env-123" },
286
+ }));
287
+ const deleteObjects = s3Send.mock.calls.find((c) => c[0].constructor.name ===
288
+ "DeleteObjectsCommand");
289
+ expect(deleteObjects).toBeDefined();
290
+ const input = (deleteObjects?.[0]).input;
291
+ expect(input?.Delete?.Objects).toHaveLength(2);
292
+ expect(s3Send.mock.calls.some((c) => c[0].constructor.name ===
293
+ "DeleteBucketCommand")).toBe(true);
185
294
  });
186
- it("should work without optional fields", async () => {
295
+ });
296
+ describe("enableServices", () => {
297
+ it("records lambda as local-only and s3 as already provisioned", async () => {
187
298
  const env = {
188
299
  name: "test",
189
300
  provider: "aws",
190
301
  status: "active",
191
- services: [],
192
- resources: {},
193
302
  createdAt: new Date().toISOString(),
194
303
  updatedAt: new Date().toISOString(),
304
+ region: "us-east-1",
305
+ services: [],
306
+ resources: { bucketName: "sandman-test-1", instanceId: "i-1234" },
195
307
  };
196
- const creds = await adapter.connect(env);
197
- expect(creds.provider).toBe("aws");
198
- expect(creds.AWS_ACCOUNT_ID).toBeUndefined();
308
+ const result = await adapter.enableServices(env, ["s3", "ec2", "lambda"]);
309
+ expect(result.mode).toBe("mixed");
310
+ expect(result.provisioned).toEqual(["s3", "ec2"]);
311
+ expect(result.localOnly).toEqual(["lambda"]);
312
+ expect(result.warnings?.[0]).toMatch(/lambda is not provisioned/);
199
313
  });
200
314
  });
201
- describe("destroyEnvironment", () => {
202
- it("should delete bucket and clean up resources", async () => {
315
+ describe("getStatus", () => {
316
+ it("should return the environment as-is when no cloud IDs are tracked", async () => {
203
317
  const env = {
204
318
  name: "test",
205
319
  provider: "aws",
206
320
  status: "active",
207
- services: [],
208
- resources: { bucketName: "test-bucket" },
209
321
  createdAt: new Date().toISOString(),
210
322
  updatedAt: new Date().toISOString(),
211
323
  region: "us-east-1",
212
- };
213
- await expect(adapter.destroyEnvironment(env)).resolves.not.toThrow();
214
- });
215
- it("should handle missing bucket gracefully", async () => {
216
- const env = {
217
- name: "test",
218
- provider: "aws",
219
- status: "active",
220
324
  services: [],
221
325
  resources: {},
222
- createdAt: new Date().toISOString(),
223
- updatedAt: new Date().toISOString(),
224
326
  };
225
- await expect(adapter.destroyEnvironment(env)).resolves.not.toThrow();
327
+ const result = await adapter.getStatus(env);
328
+ expect(result).toEqual(env);
226
329
  });
227
- });
228
- describe("enableServices", () => {
229
- it("should log services to enable", async () => {
330
+ it("should stay active when the instance is running and the bucket exists", async () => {
230
331
  const env = {
231
332
  name: "test",
232
333
  provider: "aws",
233
- status: "active",
234
- services: [],
235
- resources: {},
334
+ status: "failed",
236
335
  createdAt: new Date().toISOString(),
237
336
  updatedAt: new Date().toISOString(),
337
+ region: "us-east-1",
338
+ services: [],
339
+ resources: { bucketName: "sandman-test-1", instanceId: "i-1234" },
340
+ error: "old",
238
341
  };
239
- const consoleSpy = vi.spyOn(console, "log");
240
- await adapter.enableServices(env, ["s3", "lambda"]);
241
- expect(consoleSpy).toHaveBeenCalledWith("Enabling AWS services: s3, lambda");
242
- consoleSpy.mockRestore();
342
+ const result = await adapter.getStatus(env);
343
+ expect(result.status).toBe("active");
344
+ expect(result.error).toBeUndefined();
243
345
  });
244
- });
245
- describe("getStatus", () => {
246
- it("should return environment as-is", async () => {
346
+ it("should mark destroyed when instance and bucket are gone", async () => {
347
+ s3Send.mockRejectedValue({ name: "NotFound", message: "Not Found" });
348
+ ec2Send.mockImplementation(async (command) => {
349
+ if (command.constructor.name === "DescribeInstancesCommand") {
350
+ return { Reservations: [{ Instances: [{ State: { Name: "terminated" } }] }] };
351
+ }
352
+ return {};
353
+ });
247
354
  const env = {
248
355
  name: "test",
249
356
  provider: "aws",
250
357
  status: "active",
251
- services: ["s3"],
252
- resources: { bucketName: "my-bucket" },
253
- createdAt: "2026-01-01T00:00:00.000Z",
254
- updatedAt: "2026-01-01T00:00:00.000Z",
358
+ createdAt: new Date().toISOString(),
359
+ updatedAt: new Date().toISOString(),
360
+ region: "us-east-1",
361
+ services: [],
362
+ resources: { bucketName: "sandman-test-1", instanceId: "i-1234" },
255
363
  };
256
364
  const result = await adapter.getStatus(env);
257
- expect(result).toEqual(env);
365
+ expect(result.status).toBe("destroyed");
366
+ expect(result.error).toMatch(/missing/i);
258
367
  });
259
368
  });
260
369
  });
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.test.js","sourceRoot":"","sources":["../../../src/providers/aws/adapter.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.test.js","sourceRoot":"","sources":["../../../src/providers/aws/adapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAG9D,MAAM,EACJ,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,GACR,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;IAClB,SAAS,KAAK,CAAC,IAAY;QACzB,MAAM,GAAG,GAAG;YACV,KAAK,CAAW;YAChB,YAAY,KAAe;gBACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,CAAC;SACF,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO;QACL,KAAK;QACL,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;QACf,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;IACjD,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;IACjD,2BAA2B,EAAE,KAAK,CAAC,6BAA6B,CAAC;IACjE,0BAA0B,EAAE,KAAK,CAAC,4BAA4B,CAAC;IAC/D,uBAAuB,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzD,uBAAuB,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzD,iBAAiB,EAAE,KAAK,CAAC,mBAAmB,CAAC;IAC7C,oBAAoB,EAAE,KAAK,CAAC,sBAAsB,CAAC;IACnD,yBAAyB,EAAE,KAAK,CAAC,2BAA2B,CAAC;IAC7D,oBAAoB,EAAE,KAAK,CAAC,sBAAsB,CAAC;CACpD,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;IACjD,yBAAyB,EAAE,KAAK,CAAC,2BAA2B,CAAC;IAC7D,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,CAAC;IAC3C,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,CAAC;IAC3C,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;IACjD,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;IACjD,4BAA4B,EAAE,KAAK,CAAC,8BAA8B,CAAC;IACnE,4BAA4B,EAAE,KAAK,CAAC,8BAA8B,CAAC;IACnE,4BAA4B,EAAE,KAAK,CAAC,8BAA8B,CAAC;IACnE,4BAA4B,EAAE,KAAK,CAAC,8BAA8B,CAAC;IACnE,uBAAuB,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzD,kBAAkB,EAAE,KAAK,CAAC,oBAAoB,CAAC;IAC/C,0BAA0B,EAAE,KAAK,CAAC,4BAA4B,CAAC;IAC/D,uBAAuB,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzD,0BAA0B,EAAE,KAAK,CAAC,4BAA4B,CAAC;IAC/D,oCAAoC,EAAE,KAAK,CACzC,sCAAsC,CACvC;IACD,0BAA0B,EAAE,KAAK,CAAC,4BAA4B,CAAC;IAC/D,wBAAwB,EAAE,KAAK,CAAC,0BAA0B,CAAC;IAC3D,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;IACjD,6BAA6B,EAAE,KAAK,CAAC,+BAA+B,CAAC;IACrE,sBAAsB,EAAE,KAAK,CAAC,wBAAwB,CAAC;IACvD,+BAA+B,EAAE,KAAK,CAAC,iCAAiC,CAAC;IACzE,0BAA0B,EAAE,KAAK,CAAC,4BAA4B,CAAC;IAC/D,2BAA2B,EAAE,EAAE,CAAC,EAAE,EAAE;CACrC,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,iBAAiB,EAAE,KAAK,CAAC,mBAAmB,CAAC;IAC7C,iBAAiB,EAAE,KAAK,CAAC,mBAAmB,CAAC;IAC7C,uBAAuB,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzD,uBAAuB,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzD,4BAA4B,EAAE,KAAK,CAAC,8BAA8B,CAAC;IACnE,+BAA+B,EAAE,KAAK,CAAC,iCAAiC,CAAC;IACzE,oCAAoC,EAAE,KAAK,CACzC,sCAAsC,CACvC;IACD,4BAA4B,EAAE,KAAK,CAAC,8BAA8B,CAAC;CACpE,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,wBAAwB,EAAE,KAAK,CAAC,0BAA0B,CAAC;CAC5D,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC;CAClD,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;CACrC,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAE/D,SAAS,aAAa;IACpB,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAA0C,EAAE,EAAE;QAC7E,QAAQ,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACjC,KAAK,qBAAqB;gBACxB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;YACtC,KAAK,sBAAsB;gBACzB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YAC9C,KAAK,2BAA2B;gBAC9B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YACjE,KAAK,yBAAyB;gBAC5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YACnC;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAA0C,EAAE,EAAE;QAC9E,QAAQ,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACjC,KAAK,kBAAkB;gBACrB,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;YACxC,KAAK,qBAAqB;gBACxB,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC;YACjD,KAAK,8BAA8B;gBACjC,OAAO,EAAE,eAAe,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,CAAC;YAChE,KAAK,yBAAyB;gBAC5B,OAAO,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC;YACtD,KAAK,4BAA4B;gBAC/B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YAChC,KAAK,qBAAqB;gBACxB,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YACnD,KAAK,qBAAqB;gBACxB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;YAC7C,KAAK,0BAA0B;gBAC7B,OAAO;oBACL,YAAY,EAAE;wBACZ;4BACE,SAAS,EAAE;gCACT,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;6BACpD;yBACF;qBACF;iBACF,CAAC;YACJ;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,kBAAkB,CACxB,KAAK,EAAE,OAAoF,EAAE,EAAE;QAC7F,QAAQ,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACjC,KAAK,mBAAmB;gBACtB,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,qCAAqC,EAAE,EAAE,CAAC;YAClE,KAAK,8BAA8B;gBACjC,OAAO;oBACL,eAAe,EAAE;wBACf,GAAG,EAAE,iDAAiD;wBACtD,mBAAmB,EACjB,OAAO,CAAC,KAAK,EAAE,mBAAmB,IAAI,iBAAiB;qBAC1D;iBACF,CAAC;YACJ;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,OAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,EAAE,CAAC;QAChB,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC/B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CACH,CAAC,CAAC,CAAC,CAAuC,CAAC,WAAW,CAAC,IAAI;gBAC5D,qBAAqB,CACxB,CAAC;YACF,MAAM,CACJ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAsC,CAAA,CAAC,KAAK,EAAE,OAAO,CAClE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,OAAO,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC5D,MAAM,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CACH,CAAC,CAAC,CAAC,CAAuC,CAAC,WAAW,CAAC,IAAI;gBAC5D,qBAAqB,CACxB,CAAC;YACF,MAAM,CACJ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAsC,CAAA,CAAC,KAAK,EAAE,OAAO,CAClE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,OAAO,CAAC,kBAAkB,CACxB,KAAK,EAAE,OAA0C,EAAE,EAAE;gBACnD,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBACpD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CACF,CAAC;YAEF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAClE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YAErD,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAClE,mBAAmB,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,SAAS,OAAO,CAAC,YAAwC,EAAE;YACzD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE;oBACT,UAAU,EAAE,sBAAsB;oBAClC,UAAU,EAAE,QAAQ;oBACpB,KAAK,EAAE,UAAU;oBACjB,QAAQ,EAAE,aAAa;oBACvB,iBAAiB,EAAE,UAAU;oBAC7B,YAAY,EAAE,UAAU;oBACxB,eAAe,EAAE,SAAS;oBAC1B,kBAAkB,EAAE,0BAA0B;iBAC/C;gBACD,SAAS,EAAE,cAAc;gBACzB,GAAG,SAAS;aACb,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,MAAM,CACV,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC,CACnE,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,OAAO,CAAC,kBAAkB,CACxB,KAAK,EAAE,OAA0C,EAAE,EAAE;gBACnD,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;oBAC5D,OAAO;wBACL,YAAY,EAAE;4BACZ;gCACE,SAAS,EAAE;oCACT,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,EAAE;iCACxD;6BACF;yBACF;qBACF,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CACF,CAAC;YAEF,MAAM,MAAM,CACV,OAAO,CAAC,kBAAkB,CACxB,OAAO,CAAC;gBACN,SAAS,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;gBACtC,SAAS,EAAE,SAAS;aACrB,CAAC,CACH,CACF,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,MAAM,CAAC,kBAAkB,CACvB,KAAK,EAAE,OAA0C,EAAE,EAAE;gBACnD,QAAQ,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;oBACjC,KAAK,yBAAyB;wBAC5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;oBACnC,KAAK,sBAAsB;wBACzB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;oBAC9C,KAAK,2BAA2B;wBAC9B,OAAO;4BACL,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;4BAC7C,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;4BAClD,WAAW,EAAE,KAAK;yBACnB,CAAC;oBACJ;wBACE,OAAO,EAAE,CAAC;gBACd,CAAC;YACH,CAAC,CACF,CAAC;YAEF,MAAM,OAAO,CAAC,kBAAkB,CAC9B,OAAO,CAAC;gBACN,SAAS,EAAE,EAAE,UAAU,EAAE,sBAAsB,EAAE;aAClD,CAAC,CACH,CAAC;YAEF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CACH,CAAC,CAAC,CAAC,CAAuC,CAAC,WAAW,CAAC,IAAI;gBAC5D,sBAAsB,CACzB,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,CACZ,aAAa,EAAE,CAAC,CAAC,CAGlB,CAAA,CAAC,KAAK,CAAC;YACR,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CACJ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,CAAC,CAAC,EAAE,EAAE,CACH,CAAC,CAAC,CAAC,CAAuC,CAAC,WAAW,CAAC,IAAI;gBAC5D,qBAAqB,CACxB,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,GAAG,GAAsB;gBAC7B,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE;aAClE,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,GAAG,GAAsB;gBAC7B,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,EAAE;aACd,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,GAAG,GAAsB;gBAC7B,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE;gBACjE,KAAK,EAAE,KAAK;aACb,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAA0C,EAAE,EAAE;gBAC9E,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;oBAC5D,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChF,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,MAAM,GAAG,GAAsB;gBAC7B,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE;aAClE,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,12 +1,4 @@
1
- import { EnvironmentRecord, ServiceName } from "../types/index.js";
2
- export interface ProviderAdapter {
3
- init(): Promise<void>;
4
- createEnvironment(name: string): Promise<EnvironmentRecord>;
5
- enableServices(env: EnvironmentRecord, services: ServiceName[]): Promise<void>;
6
- connect(env: EnvironmentRecord): Promise<Record<string, string>>;
7
- destroyEnvironment(env: EnvironmentRecord): Promise<void>;
8
- getStatus(env: EnvironmentRecord): Promise<EnvironmentRecord>;
9
- }
1
+ export type { ProviderAdapter, EnableResult } from "../types/index.js";
10
2
  export declare const GCP_SERVICES: Record<string, string>;
11
3
  export declare const AWS_SERVICES: Record<string, string>;
12
4
  export declare const CLOUDFLARE_SERVICES: Record<string, string>;