alchemy 2.0.0-beta.17 → 2.0.0-beta.19

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 (182) hide show
  1. package/bin/alchemy.js +428 -80
  2. package/bin/alchemy.js.map +1 -1
  3. package/bin/alchemy.ts +2 -0
  4. package/bin/commands/_shared.ts +34 -0
  5. package/bin/commands/bootstrap.ts +10 -3
  6. package/bin/commands/deploy.ts +23 -3
  7. package/bin/commands/login.ts +18 -3
  8. package/bin/commands/logs.ts +11 -2
  9. package/bin/commands/profile.ts +11 -5
  10. package/bin/commands/state.ts +21 -13
  11. package/bin/commands/tail.ts +10 -2
  12. package/lib/AWS/CloudFront/CachePolicy.d.ts +106 -0
  13. package/lib/AWS/CloudFront/CachePolicy.d.ts.map +1 -0
  14. package/lib/AWS/CloudFront/CachePolicy.js +147 -0
  15. package/lib/AWS/CloudFront/CachePolicy.js.map +1 -0
  16. package/lib/AWS/CloudFront/KeyGroup.d.ts +72 -0
  17. package/lib/AWS/CloudFront/KeyGroup.d.ts.map +1 -0
  18. package/lib/AWS/CloudFront/KeyGroup.js +136 -0
  19. package/lib/AWS/CloudFront/KeyGroup.js.map +1 -0
  20. package/lib/AWS/CloudFront/OriginRequestPolicy.d.ts +84 -0
  21. package/lib/AWS/CloudFront/OriginRequestPolicy.d.ts.map +1 -0
  22. package/lib/AWS/CloudFront/OriginRequestPolicy.js +139 -0
  23. package/lib/AWS/CloudFront/OriginRequestPolicy.js.map +1 -0
  24. package/lib/AWS/CloudFront/PublicKey.d.ts +72 -0
  25. package/lib/AWS/CloudFront/PublicKey.d.ts.map +1 -0
  26. package/lib/AWS/CloudFront/PublicKey.js +137 -0
  27. package/lib/AWS/CloudFront/PublicKey.js.map +1 -0
  28. package/lib/AWS/CloudFront/ResponseHeadersPolicy.d.ts +114 -0
  29. package/lib/AWS/CloudFront/ResponseHeadersPolicy.d.ts.map +1 -0
  30. package/lib/AWS/CloudFront/ResponseHeadersPolicy.js +162 -0
  31. package/lib/AWS/CloudFront/ResponseHeadersPolicy.js.map +1 -0
  32. package/lib/AWS/CloudFront/index.d.ts +5 -0
  33. package/lib/AWS/CloudFront/index.d.ts.map +1 -1
  34. package/lib/AWS/CloudFront/index.js +5 -0
  35. package/lib/AWS/CloudFront/index.js.map +1 -1
  36. package/lib/AWS/ECS/CapacityProvider.d.ts +102 -0
  37. package/lib/AWS/ECS/CapacityProvider.d.ts.map +1 -0
  38. package/lib/AWS/ECS/CapacityProvider.js +217 -0
  39. package/lib/AWS/ECS/CapacityProvider.js.map +1 -0
  40. package/lib/AWS/ECS/index.d.ts +1 -0
  41. package/lib/AWS/ECS/index.d.ts.map +1 -1
  42. package/lib/AWS/ECS/index.js +1 -0
  43. package/lib/AWS/ECS/index.js.map +1 -1
  44. package/lib/AWS/Providers.d.ts.map +1 -1
  45. package/lib/AWS/Providers.js +7 -1
  46. package/lib/AWS/Providers.js.map +1 -1
  47. package/lib/Agent/lsp/client.d.ts +2 -2
  48. package/lib/Apply.d.ts.map +1 -1
  49. package/lib/Apply.js +41 -9
  50. package/lib/Apply.js.map +1 -1
  51. package/lib/Axiom/Annotation.d.ts +49 -0
  52. package/lib/Axiom/Annotation.d.ts.map +1 -0
  53. package/lib/Axiom/Annotation.js +74 -0
  54. package/lib/Axiom/Annotation.js.map +1 -0
  55. package/lib/Axiom/ApiToken.d.ts +62 -0
  56. package/lib/Axiom/ApiToken.d.ts.map +1 -0
  57. package/lib/Axiom/ApiToken.js +98 -0
  58. package/lib/Axiom/ApiToken.js.map +1 -0
  59. package/lib/Axiom/AuthProvider.d.ts +48 -0
  60. package/lib/Axiom/AuthProvider.d.ts.map +1 -0
  61. package/lib/Axiom/AuthProvider.js +177 -0
  62. package/lib/Axiom/AuthProvider.js.map +1 -0
  63. package/lib/Axiom/Chart.d.ts +72 -0
  64. package/lib/Axiom/Chart.d.ts.map +1 -0
  65. package/lib/Axiom/Chart.js +14 -0
  66. package/lib/Axiom/Chart.js.map +1 -0
  67. package/lib/Axiom/Credentials.d.ts +12 -0
  68. package/lib/Axiom/Credentials.d.ts.map +1 -0
  69. package/lib/Axiom/Credentials.js +34 -0
  70. package/lib/Axiom/Credentials.js.map +1 -0
  71. package/lib/Axiom/Dashboard.d.ts +124 -0
  72. package/lib/Axiom/Dashboard.d.ts.map +1 -0
  73. package/lib/Axiom/Dashboard.js +140 -0
  74. package/lib/Axiom/Dashboard.js.map +1 -0
  75. package/lib/Axiom/Dataset.d.ts +101 -0
  76. package/lib/Axiom/Dataset.d.ts.map +1 -0
  77. package/lib/Axiom/Dataset.js +183 -0
  78. package/lib/Axiom/Dataset.js.map +1 -0
  79. package/lib/Axiom/Monitor.d.ts +74 -0
  80. package/lib/Axiom/Monitor.d.ts.map +1 -0
  81. package/lib/Axiom/Monitor.js +103 -0
  82. package/lib/Axiom/Monitor.js.map +1 -0
  83. package/lib/Axiom/Notifier.d.ts +63 -0
  84. package/lib/Axiom/Notifier.d.ts.map +1 -0
  85. package/lib/Axiom/Notifier.js +83 -0
  86. package/lib/Axiom/Notifier.js.map +1 -0
  87. package/lib/Axiom/Providers.d.ts +15 -0
  88. package/lib/Axiom/Providers.d.ts.map +1 -0
  89. package/lib/Axiom/Providers.js +32 -0
  90. package/lib/Axiom/Providers.js.map +1 -0
  91. package/lib/Axiom/View.d.ts +55 -0
  92. package/lib/Axiom/View.d.ts.map +1 -0
  93. package/lib/Axiom/View.js +79 -0
  94. package/lib/Axiom/View.js.map +1 -0
  95. package/lib/Axiom/VirtualField.d.ts +42 -0
  96. package/lib/Axiom/VirtualField.d.ts.map +1 -0
  97. package/lib/Axiom/VirtualField.js +71 -0
  98. package/lib/Axiom/VirtualField.js.map +1 -0
  99. package/lib/Axiom/index.d.ts +13 -0
  100. package/lib/Axiom/index.d.ts.map +1 -0
  101. package/lib/Axiom/index.js +13 -0
  102. package/lib/Axiom/index.js.map +1 -0
  103. package/lib/Bundle/Bundle.d.ts +20 -2
  104. package/lib/Bundle/Bundle.d.ts.map +1 -1
  105. package/lib/Bundle/Bundle.js +18 -3
  106. package/lib/Bundle/Bundle.js.map +1 -1
  107. package/lib/Bundle/PurePlugin.d.ts +109 -0
  108. package/lib/Bundle/PurePlugin.d.ts.map +1 -0
  109. package/lib/Bundle/PurePlugin.js +469 -0
  110. package/lib/Bundle/PurePlugin.js.map +1 -0
  111. package/lib/Bundle/index.d.ts +1 -0
  112. package/lib/Bundle/index.d.ts.map +1 -1
  113. package/lib/Bundle/index.js +1 -0
  114. package/lib/Bundle/index.js.map +1 -1
  115. package/lib/Cloudflare/Workers/Worker.d.ts +12 -0
  116. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  117. package/lib/Cloudflare/Workers/Worker.js +19 -4
  118. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  119. package/lib/GitHub/Secrets.d.ts +45 -0
  120. package/lib/GitHub/Secrets.d.ts.map +1 -0
  121. package/lib/GitHub/Secrets.js +30 -0
  122. package/lib/GitHub/Secrets.js.map +1 -0
  123. package/lib/GitHub/index.d.ts +1 -0
  124. package/lib/GitHub/index.d.ts.map +1 -1
  125. package/lib/GitHub/index.js +1 -0
  126. package/lib/GitHub/index.js.map +1 -1
  127. package/lib/Output.d.ts.map +1 -1
  128. package/lib/Output.js +1 -1
  129. package/lib/Output.js.map +1 -1
  130. package/lib/Plan.d.ts.map +1 -1
  131. package/lib/Plan.js +10 -4
  132. package/lib/Plan.js.map +1 -1
  133. package/lib/Resource.d.ts +2 -2
  134. package/lib/Resource.d.ts.map +1 -1
  135. package/lib/Telemetry/Attributes.d.ts +43 -0
  136. package/lib/Telemetry/Attributes.d.ts.map +1 -0
  137. package/lib/Telemetry/Attributes.js +144 -0
  138. package/lib/Telemetry/Attributes.js.map +1 -0
  139. package/lib/Telemetry/Layer.d.ts +14 -0
  140. package/lib/Telemetry/Layer.d.ts.map +1 -0
  141. package/lib/Telemetry/Layer.js +50 -0
  142. package/lib/Telemetry/Layer.js.map +1 -0
  143. package/lib/Telemetry/Metrics.d.ts +34 -0
  144. package/lib/Telemetry/Metrics.d.ts.map +1 -0
  145. package/lib/Telemetry/Metrics.js +57 -0
  146. package/lib/Telemetry/Metrics.js.map +1 -0
  147. package/package.json +12 -1
  148. package/src/AWS/CloudFront/CachePolicy.ts +271 -0
  149. package/src/AWS/CloudFront/KeyGroup.ts +233 -0
  150. package/src/AWS/CloudFront/OriginRequestPolicy.ts +256 -0
  151. package/src/AWS/CloudFront/PublicKey.ts +245 -0
  152. package/src/AWS/CloudFront/ResponseHeadersPolicy.ts +308 -0
  153. package/src/AWS/CloudFront/index.ts +11 -0
  154. package/src/AWS/ECS/CapacityProvider.ts +336 -0
  155. package/src/AWS/ECS/index.ts +4 -0
  156. package/src/AWS/Providers.ts +12 -0
  157. package/src/Apply.ts +118 -9
  158. package/src/Axiom/Annotation.ts +95 -0
  159. package/src/Axiom/ApiToken.ts +125 -0
  160. package/src/Axiom/AuthProvider.ts +341 -0
  161. package/src/Axiom/Chart.ts +94 -0
  162. package/src/Axiom/Credentials.ts +70 -0
  163. package/src/Axiom/Dashboard.ts +192 -0
  164. package/src/Axiom/Dataset.ts +291 -0
  165. package/src/Axiom/Monitor.ts +122 -0
  166. package/src/Axiom/Notifier.ts +104 -0
  167. package/src/Axiom/Providers.ts +58 -0
  168. package/src/Axiom/View.ts +106 -0
  169. package/src/Axiom/VirtualField.ts +90 -0
  170. package/src/Axiom/index.ts +12 -0
  171. package/src/Bundle/Bundle.ts +39 -1
  172. package/src/Bundle/PurePlugin.ts +556 -0
  173. package/src/Bundle/index.ts +1 -0
  174. package/src/Cloudflare/Workers/Worker.ts +37 -6
  175. package/src/GitHub/Secrets.ts +66 -0
  176. package/src/GitHub/index.ts +1 -0
  177. package/src/Output.ts +2 -1
  178. package/src/Plan.ts +13 -4
  179. package/src/Resource.ts +2 -2
  180. package/src/Telemetry/Attributes.ts +216 -0
  181. package/src/Telemetry/Layer.ts +65 -0
  182. package/src/Telemetry/Metrics.ts +101 -0
@@ -0,0 +1,137 @@
1
+ import * as cloudfront from "@distilled.cloud/aws/cloudfront";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Redacted from "effect/Redacted";
4
+ import { isResolved } from "../../Diff.js";
5
+ import { createPhysicalName } from "../../PhysicalName.js";
6
+ import * as Provider from "../../Provider.js";
7
+ import { Resource } from "../../Resource.js";
8
+ import { extractValue } from "./common.js";
9
+ /**
10
+ * A CloudFront public key.
11
+ *
12
+ * Public keys are uploaded ahead of being grouped into a {@link KeyGroup} and
13
+ * used by Distributions for signed URL or signed cookie verification.
14
+ *
15
+ * The key body is immutable after creation — changing `encodedKey` triggers
16
+ * a replacement (CloudFront returns no API to rotate a key in place).
17
+ *
18
+ * @section Creating Public Keys
19
+ * @example PEM-encoded RSA public key
20
+ * ```typescript
21
+ * const key = yield* PublicKey("SignedUrlKey", {
22
+ * encodedKey: Redacted.make(yield* fs.readFileString("./public_key.pem")),
23
+ * comment: "RSA-2048 signed URL key for /private",
24
+ * });
25
+ * ```
26
+ */
27
+ export const PublicKey = Resource("AWS.CloudFront.PublicKey");
28
+ export const PublicKeyProvider = () => Provider.effect(PublicKey, Effect.gen(function* () {
29
+ const getById = Effect.fn(function* (id) {
30
+ const config = yield* cloudfront
31
+ .getPublicKeyConfig({ Id: id })
32
+ .pipe(Effect.catchTag("NoSuchPublicKey", () => Effect.succeed(undefined)));
33
+ if (!config?.PublicKeyConfig)
34
+ return undefined;
35
+ return { config: config.PublicKeyConfig, etag: config.ETag };
36
+ });
37
+ const getByName = Effect.fn(function* (name) {
38
+ const listed = yield* cloudfront.listPublicKeys({});
39
+ const summary = listed.PublicKeyList?.Items?.find((item) => item.Name === name);
40
+ if (!summary?.Id)
41
+ return undefined;
42
+ return yield* getById(summary.Id).pipe(Effect.map((found) => found ? { id: summary.Id, ...found } : undefined));
43
+ });
44
+ const buildConfig = (name, callerReference, props) => ({
45
+ Name: name,
46
+ CallerReference: callerReference,
47
+ EncodedKey: extractValue(props.encodedKey),
48
+ Comment: props.comment,
49
+ });
50
+ const toAttrs = (id, config, etag) => ({
51
+ publicKeyId: id,
52
+ name: config.Name,
53
+ encodedKey: config.EncodedKey,
54
+ callerReference: config.CallerReference,
55
+ etag,
56
+ comment: config.Comment,
57
+ });
58
+ return {
59
+ stables: ["publicKeyId", "callerReference"],
60
+ diff: Effect.fn(function* ({ id, news, olds }) {
61
+ if (!isResolved(news))
62
+ return undefined;
63
+ if ((yield* createName(id, olds ?? {})) !==
64
+ (yield* createName(id, news))) {
65
+ return { action: "replace" };
66
+ }
67
+ if (isResolved(olds.encodedKey) &&
68
+ extractValue(olds.encodedKey) !== extractValue(news.encodedKey)) {
69
+ return { action: "replace" };
70
+ }
71
+ }),
72
+ read: Effect.fn(function* ({ id, olds, output }) {
73
+ if (output?.publicKeyId) {
74
+ const found = yield* getById(output.publicKeyId);
75
+ if (found)
76
+ return toAttrs(output.publicKeyId, found.config, found.etag);
77
+ }
78
+ const name = yield* createName(id, olds ?? {});
79
+ const found = yield* getByName(name);
80
+ if (!found)
81
+ return undefined;
82
+ return toAttrs(found.id, found.config, found.etag);
83
+ }),
84
+ create: Effect.fn(function* ({ id, news, session }) {
85
+ const name = yield* createName(id, news);
86
+ const callerReference = name;
87
+ const created = yield* cloudfront
88
+ .createPublicKey({
89
+ PublicKeyConfig: buildConfig(name, callerReference, news),
90
+ })
91
+ .pipe(Effect.catchTag("PublicKeyAlreadyExists", () => getByName(name).pipe(Effect.flatMap((existing) => existing
92
+ ? Effect.succeed({
93
+ PublicKey: {
94
+ Id: existing.id,
95
+ CreatedTime: new Date(),
96
+ PublicKeyConfig: existing.config,
97
+ },
98
+ ETag: existing.etag,
99
+ Location: undefined,
100
+ })
101
+ : Effect.fail(new Error(`Public key '${name}' already exists but could not be recovered`))))));
102
+ if (!created.PublicKey?.Id) {
103
+ return yield* Effect.fail(new Error("createPublicKey returned no identifier"));
104
+ }
105
+ yield* session.note(created.PublicKey.Id);
106
+ return toAttrs(created.PublicKey.Id, created.PublicKey.PublicKeyConfig, created.ETag);
107
+ }),
108
+ update: Effect.fn(function* ({ news, output, session }) {
109
+ const current = yield* getById(output.publicKeyId);
110
+ const updated = yield* cloudfront.updatePublicKey({
111
+ Id: output.publicKeyId,
112
+ IfMatch: current?.etag ?? output.etag,
113
+ PublicKeyConfig: buildConfig(output.name, output.callerReference, news),
114
+ });
115
+ if (!updated.PublicKey?.Id) {
116
+ return yield* Effect.fail(new Error("updatePublicKey returned no identifier"));
117
+ }
118
+ yield* session.note(output.publicKeyId);
119
+ return toAttrs(updated.PublicKey.Id, updated.PublicKey.PublicKeyConfig, updated.ETag);
120
+ }),
121
+ delete: Effect.fn(function* ({ output }) {
122
+ const current = yield* getById(output.publicKeyId);
123
+ if (!current)
124
+ return;
125
+ yield* cloudfront
126
+ .deletePublicKey({
127
+ Id: output.publicKeyId,
128
+ IfMatch: current.etag,
129
+ })
130
+ .pipe(Effect.catchTag("NoSuchPublicKey", () => Effect.void));
131
+ }),
132
+ };
133
+ }));
134
+ const createName = (id, props) => props.name
135
+ ? Effect.succeed(props.name)
136
+ : createPhysicalName({ id, maxLength: 128, lowercase: true });
137
+ //# sourceMappingURL=PublicKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicKey.js","sourceRoot":"","sources":["../../../src/AWS/CloudFront/PublicKey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import * as cloudfront from "@distilled.cloud/aws/cloudfront";
2
+ import * as Provider from "../../Provider.ts";
3
+ import { Resource } from "../../Resource.ts";
4
+ import type { Providers } from "../Providers.ts";
5
+ export interface ResponseHeadersPolicyProps {
6
+ /**
7
+ * Name of the response headers policy. If omitted, a deterministic name is
8
+ * generated. Names must be unique per AWS account. Changing the name
9
+ * triggers a replacement.
10
+ */
11
+ name?: string;
12
+ /**
13
+ * Optional comment describing the policy.
14
+ */
15
+ comment?: string;
16
+ /**
17
+ * CORS configuration applied to viewer responses.
18
+ */
19
+ corsConfig?: cloudfront.ResponseHeadersPolicyCorsConfig;
20
+ /**
21
+ * Standard security headers (HSTS, X-Frame-Options, etc.) added to
22
+ * viewer responses.
23
+ */
24
+ securityHeadersConfig?: cloudfront.ResponseHeadersPolicySecurityHeadersConfig;
25
+ /**
26
+ * Server-Timing header configuration for measuring CloudFront performance.
27
+ */
28
+ serverTimingHeadersConfig?: cloudfront.ResponseHeadersPolicyServerTimingHeadersConfig;
29
+ /**
30
+ * Custom headers to add to viewer responses.
31
+ */
32
+ customHeadersConfig?: cloudfront.ResponseHeadersPolicyCustomHeadersConfig;
33
+ /**
34
+ * Headers to remove from viewer responses.
35
+ */
36
+ removeHeadersConfig?: cloudfront.ResponseHeadersPolicyRemoveHeadersConfig;
37
+ }
38
+ export interface ResponseHeadersPolicy extends Resource<"AWS.CloudFront.ResponseHeadersPolicy", ResponseHeadersPolicyProps, {
39
+ /**
40
+ * CloudFront-assigned response headers policy identifier.
41
+ */
42
+ responseHeadersPolicyId: string;
43
+ /**
44
+ * Name of the response headers policy.
45
+ */
46
+ name: string;
47
+ /**
48
+ * Most recent entity tag for update/delete operations.
49
+ */
50
+ etag: string | undefined;
51
+ /**
52
+ * Current comment on the policy.
53
+ */
54
+ comment: string | undefined;
55
+ /**
56
+ * Current CORS configuration.
57
+ */
58
+ corsConfig: cloudfront.ResponseHeadersPolicyCorsConfig | undefined;
59
+ /**
60
+ * Current security headers configuration.
61
+ */
62
+ securityHeadersConfig: cloudfront.ResponseHeadersPolicySecurityHeadersConfig | undefined;
63
+ /**
64
+ * Current Server-Timing configuration.
65
+ */
66
+ serverTimingHeadersConfig: cloudfront.ResponseHeadersPolicyServerTimingHeadersConfig | undefined;
67
+ /**
68
+ * Current custom headers configuration.
69
+ */
70
+ customHeadersConfig: cloudfront.ResponseHeadersPolicyCustomHeadersConfig | undefined;
71
+ /**
72
+ * Current remove-headers configuration.
73
+ */
74
+ removeHeadersConfig: cloudfront.ResponseHeadersPolicyRemoveHeadersConfig | undefined;
75
+ }, never, Providers> {
76
+ }
77
+ /**
78
+ * A CloudFront response headers policy.
79
+ *
80
+ * Response headers policies add or remove headers in viewer responses,
81
+ * including CORS, standard security headers (HSTS, X-Frame-Options,
82
+ * X-Content-Type-Options, Referrer-Policy, etc.), Server-Timing, custom
83
+ * headers and explicit header removal. They are referenced by ID on a
84
+ * Distribution's default behavior or per-path cache behaviors.
85
+ *
86
+ * @section Creating Response Headers Policies
87
+ * @example Standard security + CORS
88
+ * ```typescript
89
+ * const responseHeadersPolicy = yield* ResponseHeadersPolicy("AppResponseHeaders", {
90
+ * comment: "Default app security + CORS",
91
+ * corsConfig: {
92
+ * AccessControlAllowOrigins: { Quantity: 1, Items: ["https://app.example.com"] },
93
+ * AccessControlAllowMethods: { Quantity: 2, Items: ["GET", "OPTIONS"] },
94
+ * AccessControlAllowHeaders: { Quantity: 1, Items: ["Authorization"] },
95
+ * AccessControlAllowCredentials: false,
96
+ * OriginOverride: true,
97
+ * },
98
+ * securityHeadersConfig: {
99
+ * StrictTransportSecurity: {
100
+ * AccessControlMaxAgeSec: 31536000,
101
+ * IncludeSubdomains: true,
102
+ * Preload: true,
103
+ * Override: true,
104
+ * },
105
+ * ContentTypeOptions: { Override: true },
106
+ * FrameOptions: { FrameOption: "DENY", Override: true },
107
+ * ReferrerPolicy: { ReferrerPolicy: "no-referrer", Override: true },
108
+ * },
109
+ * });
110
+ * ```
111
+ */
112
+ export declare const ResponseHeadersPolicy: import("../../Resource.ts").ResourceClass<ResponseHeadersPolicy>;
113
+ export declare const ResponseHeadersPolicyProvider: () => import("effect/Layer").Layer<Provider.Provider<ResponseHeadersPolicy>, never, import("effect/unstable/http/HttpClient").HttpClient | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
114
+ //# sourceMappingURL=ResponseHeadersPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponseHeadersPolicy.d.ts","sourceRoot":"","sources":["../../../src/AWS/CloudFront/ResponseHeadersPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAI9D,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC,+BAA+B,CAAC;IACxD;;;OAGG;IACH,qBAAqB,CAAC,EAAE,UAAU,CAAC,0CAA0C,CAAC;IAC9E;;OAEG;IACH,yBAAyB,CAAC,EAAE,UAAU,CAAC,8CAA8C,CAAC;IACtF;;OAEG;IACH,mBAAmB,CAAC,EAAE,UAAU,CAAC,wCAAwC,CAAC;IAC1E;;OAEG;IACH,mBAAmB,CAAC,EAAE,UAAU,CAAC,wCAAwC,CAAC;CAC3E;AAED,MAAM,WAAW,qBAAsB,SAAQ,QAAQ,CACrD,sCAAsC,EACtC,0BAA0B,EAC1B;IACE;;OAEG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,+BAA+B,GAAG,SAAS,CAAC;IACnE;;OAEG;IACH,qBAAqB,EACjB,UAAU,CAAC,0CAA0C,GACrD,SAAS,CAAC;IACd;;OAEG;IACH,yBAAyB,EACrB,UAAU,CAAC,8CAA8C,GACzD,SAAS,CAAC;IACd;;OAEG;IACH,mBAAmB,EACf,UAAU,CAAC,wCAAwC,GACnD,SAAS,CAAC;IACd;;OAEG;IACH,mBAAmB,EACf,UAAU,CAAC,wCAAwC,GACnD,SAAS,CAAC;CACf,EACD,KAAK,EACL,SAAS,CACV;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,qBAAqB,kEAEjC,CAAC;AAEF,eAAO,MAAM,6BAA6B,qTAwKvC,CAAC"}
@@ -0,0 +1,162 @@
1
+ import * as cloudfront from "@distilled.cloud/aws/cloudfront";
2
+ import * as Effect from "effect/Effect";
3
+ import { isResolved } from "../../Diff.js";
4
+ import { createPhysicalName } from "../../PhysicalName.js";
5
+ import * as Provider from "../../Provider.js";
6
+ import { Resource } from "../../Resource.js";
7
+ /**
8
+ * A CloudFront response headers policy.
9
+ *
10
+ * Response headers policies add or remove headers in viewer responses,
11
+ * including CORS, standard security headers (HSTS, X-Frame-Options,
12
+ * X-Content-Type-Options, Referrer-Policy, etc.), Server-Timing, custom
13
+ * headers and explicit header removal. They are referenced by ID on a
14
+ * Distribution's default behavior or per-path cache behaviors.
15
+ *
16
+ * @section Creating Response Headers Policies
17
+ * @example Standard security + CORS
18
+ * ```typescript
19
+ * const responseHeadersPolicy = yield* ResponseHeadersPolicy("AppResponseHeaders", {
20
+ * comment: "Default app security + CORS",
21
+ * corsConfig: {
22
+ * AccessControlAllowOrigins: { Quantity: 1, Items: ["https://app.example.com"] },
23
+ * AccessControlAllowMethods: { Quantity: 2, Items: ["GET", "OPTIONS"] },
24
+ * AccessControlAllowHeaders: { Quantity: 1, Items: ["Authorization"] },
25
+ * AccessControlAllowCredentials: false,
26
+ * OriginOverride: true,
27
+ * },
28
+ * securityHeadersConfig: {
29
+ * StrictTransportSecurity: {
30
+ * AccessControlMaxAgeSec: 31536000,
31
+ * IncludeSubdomains: true,
32
+ * Preload: true,
33
+ * Override: true,
34
+ * },
35
+ * ContentTypeOptions: { Override: true },
36
+ * FrameOptions: { FrameOption: "DENY", Override: true },
37
+ * ReferrerPolicy: { ReferrerPolicy: "no-referrer", Override: true },
38
+ * },
39
+ * });
40
+ * ```
41
+ */
42
+ export const ResponseHeadersPolicy = Resource("AWS.CloudFront.ResponseHeadersPolicy");
43
+ export const ResponseHeadersPolicyProvider = () => Provider.effect(ResponseHeadersPolicy, Effect.gen(function* () {
44
+ const getById = Effect.fn(function* (id) {
45
+ const config = yield* cloudfront
46
+ .getResponseHeadersPolicyConfig({ Id: id })
47
+ .pipe(Effect.catchTag("NoSuchResponseHeadersPolicy", () => Effect.succeed(undefined)));
48
+ if (!config?.ResponseHeadersPolicyConfig)
49
+ return undefined;
50
+ return {
51
+ config: config.ResponseHeadersPolicyConfig,
52
+ etag: config.ETag,
53
+ };
54
+ });
55
+ const getByName = Effect.fn(function* (name) {
56
+ const listed = yield* cloudfront.listResponseHeadersPolicies({
57
+ Type: "custom",
58
+ });
59
+ const summary = listed.ResponseHeadersPolicyList?.Items?.find((item) => item.ResponseHeadersPolicy?.ResponseHeadersPolicyConfig?.Name ===
60
+ name);
61
+ if (!summary?.ResponseHeadersPolicy?.Id)
62
+ return undefined;
63
+ return yield* getById(summary.ResponseHeadersPolicy.Id).pipe(Effect.map((found) => found
64
+ ? { id: summary.ResponseHeadersPolicy.Id, ...found }
65
+ : undefined));
66
+ });
67
+ const buildConfig = (name, props) => ({
68
+ Name: name,
69
+ Comment: props.comment,
70
+ CorsConfig: props.corsConfig,
71
+ SecurityHeadersConfig: props.securityHeadersConfig,
72
+ ServerTimingHeadersConfig: props.serverTimingHeadersConfig,
73
+ CustomHeadersConfig: props.customHeadersConfig,
74
+ RemoveHeadersConfig: props.removeHeadersConfig,
75
+ });
76
+ const toAttrs = (id, config, etag) => ({
77
+ responseHeadersPolicyId: id,
78
+ name: config.Name,
79
+ etag,
80
+ comment: config.Comment,
81
+ corsConfig: config.CorsConfig,
82
+ securityHeadersConfig: config.SecurityHeadersConfig,
83
+ serverTimingHeadersConfig: config.ServerTimingHeadersConfig,
84
+ customHeadersConfig: config.CustomHeadersConfig,
85
+ removeHeadersConfig: config.RemoveHeadersConfig,
86
+ });
87
+ return {
88
+ stables: ["responseHeadersPolicyId"],
89
+ diff: Effect.fn(function* ({ id, news, olds }) {
90
+ if (!isResolved(news))
91
+ return undefined;
92
+ if ((yield* createName(id, olds ?? {})) !==
93
+ (yield* createName(id, news))) {
94
+ return { action: "replace" };
95
+ }
96
+ }),
97
+ read: Effect.fn(function* ({ id, olds, output }) {
98
+ if (output?.responseHeadersPolicyId) {
99
+ const found = yield* getById(output.responseHeadersPolicyId);
100
+ if (found) {
101
+ return toAttrs(output.responseHeadersPolicyId, found.config, found.etag);
102
+ }
103
+ }
104
+ const name = yield* createName(id, olds ?? {});
105
+ const found = yield* getByName(name);
106
+ if (!found)
107
+ return undefined;
108
+ return toAttrs(found.id, found.config, found.etag);
109
+ }),
110
+ create: Effect.fn(function* ({ id, news, session }) {
111
+ const name = yield* createName(id, news);
112
+ const created = yield* cloudfront
113
+ .createResponseHeadersPolicy({
114
+ ResponseHeadersPolicyConfig: buildConfig(name, news),
115
+ })
116
+ .pipe(Effect.catchTag("ResponseHeadersPolicyAlreadyExists", () => getByName(name).pipe(Effect.flatMap((existing) => existing
117
+ ? Effect.succeed({
118
+ ResponseHeadersPolicy: {
119
+ Id: existing.id,
120
+ LastModifiedTime: new Date(),
121
+ ResponseHeadersPolicyConfig: existing.config,
122
+ },
123
+ ETag: existing.etag,
124
+ Location: undefined,
125
+ })
126
+ : Effect.fail(new Error(`Response headers policy '${name}' already exists but could not be recovered`))))));
127
+ if (!created.ResponseHeadersPolicy?.Id) {
128
+ return yield* Effect.fail(new Error("createResponseHeadersPolicy returned no identifier"));
129
+ }
130
+ yield* session.note(created.ResponseHeadersPolicy.Id);
131
+ return toAttrs(created.ResponseHeadersPolicy.Id, created.ResponseHeadersPolicy.ResponseHeadersPolicyConfig, created.ETag);
132
+ }),
133
+ update: Effect.fn(function* ({ news, output, session }) {
134
+ const current = yield* getById(output.responseHeadersPolicyId);
135
+ const updated = yield* cloudfront.updateResponseHeadersPolicy({
136
+ Id: output.responseHeadersPolicyId,
137
+ IfMatch: current?.etag ?? output.etag,
138
+ ResponseHeadersPolicyConfig: buildConfig(output.name, news),
139
+ });
140
+ if (!updated.ResponseHeadersPolicy?.Id) {
141
+ return yield* Effect.fail(new Error("updateResponseHeadersPolicy returned no identifier"));
142
+ }
143
+ yield* session.note(output.responseHeadersPolicyId);
144
+ return toAttrs(updated.ResponseHeadersPolicy.Id, updated.ResponseHeadersPolicy.ResponseHeadersPolicyConfig, updated.ETag);
145
+ }),
146
+ delete: Effect.fn(function* ({ output }) {
147
+ const current = yield* getById(output.responseHeadersPolicyId);
148
+ if (!current)
149
+ return;
150
+ yield* cloudfront
151
+ .deleteResponseHeadersPolicy({
152
+ Id: output.responseHeadersPolicyId,
153
+ IfMatch: current.etag,
154
+ })
155
+ .pipe(Effect.catchTag("NoSuchResponseHeadersPolicy", () => Effect.void));
156
+ }),
157
+ };
158
+ }));
159
+ const createName = (id, props) => props.name
160
+ ? Effect.succeed(props.name)
161
+ : createPhysicalName({ id, maxLength: 128, lowercase: true });
162
+ //# sourceMappingURL=ResponseHeadersPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponseHeadersPolicy.js","sourceRoot":"","sources":["../../../src/AWS/CloudFront/ResponseHeadersPolicy.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
+ export { CachePolicy, CachePolicyProvider } from "./CachePolicy.ts";
1
2
  export { Distribution, DistributionProvider } from "./Distribution.ts";
2
3
  export { Function, FunctionProvider } from "./Function.ts";
3
4
  export { Invalidation, InvalidationProvider } from "./Invalidation.ts";
5
+ export { KeyGroup, KeyGroupProvider } from "./KeyGroup.ts";
4
6
  export { KeyValueStore, KeyValueStoreProvider } from "./KeyValueStore.ts";
5
7
  export { KvEntries, KvEntriesProvider } from "./KvEntries.ts";
6
8
  export { KvRoutesUpdate, KvRoutesUpdateProvider } from "./KvRoutesUpdate.ts";
7
9
  export { MANAGED_ALL_VIEWER_EXCEPT_HOST_HEADER_POLICY_ID, MANAGED_CACHING_DISABLED_POLICY_ID, MANAGED_CACHING_OPTIMIZED_POLICY_ID, } from "./ManagedPolicies.ts";
8
10
  export { OriginAccessControl, OriginAccessControlProvider, } from "./OriginAccessControl.ts";
11
+ export { OriginRequestPolicy, OriginRequestPolicyProvider, } from "./OriginRequestPolicy.ts";
12
+ export { PublicKey, PublicKeyProvider } from "./PublicKey.ts";
13
+ export { ResponseHeadersPolicy, ResponseHeadersPolicyProvider, } from "./ResponseHeadersPolicy.ts";
9
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AWS/CloudFront/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,+CAA+C,EAC/C,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AWS/CloudFront/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,+CAA+C,EAC/C,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC"}
@@ -1,9 +1,14 @@
1
+ export { CachePolicy, CachePolicyProvider } from "./CachePolicy.js";
1
2
  export { Distribution, DistributionProvider } from "./Distribution.js";
2
3
  export { Function, FunctionProvider } from "./Function.js";
3
4
  export { Invalidation, InvalidationProvider } from "./Invalidation.js";
5
+ export { KeyGroup, KeyGroupProvider } from "./KeyGroup.js";
4
6
  export { KeyValueStore, KeyValueStoreProvider } from "./KeyValueStore.js";
5
7
  export { KvEntries, KvEntriesProvider } from "./KvEntries.js";
6
8
  export { KvRoutesUpdate, KvRoutesUpdateProvider } from "./KvRoutesUpdate.js";
7
9
  export { MANAGED_ALL_VIEWER_EXCEPT_HOST_HEADER_POLICY_ID, MANAGED_CACHING_DISABLED_POLICY_ID, MANAGED_CACHING_OPTIMIZED_POLICY_ID, } from "./ManagedPolicies.js";
8
10
  export { OriginAccessControl, OriginAccessControlProvider, } from "./OriginAccessControl.js";
11
+ export { OriginRequestPolicy, OriginRequestPolicyProvider, } from "./OriginRequestPolicy.js";
12
+ export { PublicKey, PublicKeyProvider } from "./PublicKey.js";
13
+ export { ResponseHeadersPolicy, ResponseHeadersPolicyProvider, } from "./ResponseHeadersPolicy.js";
9
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AWS/CloudFront/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,+CAA+C,EAC/C,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AWS/CloudFront/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,+CAA+C,EAC/C,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,102 @@
1
+ import * as ecs from "@distilled.cloud/aws/ecs";
2
+ import { Region } from "@distilled.cloud/aws/Region";
3
+ import type { Input } from "../../Input.ts";
4
+ import * as Provider from "../../Provider.ts";
5
+ import { Resource } from "../../Resource.ts";
6
+ import { AWSEnvironment, type AccountID } from "../Environment.ts";
7
+ import type { Providers } from "../Providers.ts";
8
+ import type { RegionID } from "../Region.ts";
9
+ export type CapacityProviderName = string;
10
+ export type CapacityProviderArn = `arn:aws:ecs:${RegionID}:${AccountID}:capacity-provider/${CapacityProviderName}`;
11
+ export interface CapacityProviderProps {
12
+ /**
13
+ * Capacity provider name. If omitted, a deterministic name is generated.
14
+ *
15
+ * Names beginning with `aws`, `ecs`, or `fargate` are reserved by AWS.
16
+ * Changing this triggers a replacement.
17
+ */
18
+ name?: string;
19
+ /**
20
+ * ARN of the EC2 Auto Scaling Group that backs this capacity provider.
21
+ *
22
+ * Cannot be changed after creation; changing this triggers a replacement.
23
+ */
24
+ autoScalingGroupArn: Input<string>;
25
+ /**
26
+ * Managed scaling configuration applied by ECS to the underlying ASG.
27
+ */
28
+ managedScaling?: ecs.ManagedScaling;
29
+ /**
30
+ * Whether ECS protects in-use container instances from ASG scale-in.
31
+ * @default "DISABLED"
32
+ */
33
+ managedTerminationProtection?: ecs.ManagedTerminationProtection;
34
+ /**
35
+ * Whether ECS sets container instances to DRAINING when terminated by ASG.
36
+ * @default "DISABLED"
37
+ */
38
+ managedDraining?: ecs.ManagedDraining;
39
+ /**
40
+ * User-defined tags to apply to the capacity provider.
41
+ */
42
+ tags?: Record<string, string>;
43
+ }
44
+ export interface CapacityProvider extends Resource<"AWS.ECS.CapacityProvider", CapacityProviderProps, {
45
+ capacityProviderArn: CapacityProviderArn;
46
+ name: CapacityProviderName;
47
+ status: ecs.CapacityProviderStatus;
48
+ updateStatus: ecs.CapacityProviderUpdateStatus | undefined;
49
+ autoScalingGroupArn: string;
50
+ managedScaling: ecs.ManagedScaling | undefined;
51
+ managedTerminationProtection: ecs.ManagedTerminationProtection | undefined;
52
+ managedDraining: ecs.ManagedDraining | undefined;
53
+ tags: Record<string, string>;
54
+ }, never, Providers> {
55
+ }
56
+ /**
57
+ * An Amazon ECS capacity provider backed by an EC2 Auto Scaling Group.
58
+ *
59
+ * Capacity providers are associated with one or more ECS clusters via
60
+ * {@link Cluster#capacityProviders} and are referenced by a service or task's
61
+ * capacity provider strategy.
62
+ *
63
+ * Only EC2 Auto Scaling Group-backed capacity providers are currently
64
+ * supported. The reserved AWS providers `FARGATE` and `FARGATE_SPOT` do not
65
+ * need to be created and can be referenced by name on a `Cluster` directly.
66
+ *
67
+ * @section Creating Capacity Providers
68
+ * @example ASG-Backed Capacity Provider
69
+ * ```typescript
70
+ * const provider = yield* CapacityProvider("AppCapacityProvider", {
71
+ * autoScalingGroupArn: asg.autoScalingGroupArn,
72
+ * managedScaling: {
73
+ * status: "ENABLED",
74
+ * targetCapacity: 80,
75
+ * minimumScalingStepSize: 1,
76
+ * maximumScalingStepSize: 10,
77
+ * },
78
+ * managedTerminationProtection: "ENABLED",
79
+ * });
80
+ *
81
+ * yield* Cluster("AppCluster", {
82
+ * capacityProviders: [provider.name],
83
+ * defaultCapacityProviderStrategy: [
84
+ * { capacityProvider: provider.name, weight: 1 },
85
+ * ],
86
+ * });
87
+ * ```
88
+ *
89
+ * @section Adopting Existing Capacity Providers
90
+ * @example Adopt an existing provider
91
+ * ```typescript
92
+ * import { adopt } from "alchemy/AdoptPolicy";
93
+ *
94
+ * yield* CapacityProvider("AppCapacityProvider", {
95
+ * name: "existing-provider",
96
+ * autoScalingGroupArn: asg.autoScalingGroupArn,
97
+ * }).pipe(adopt());
98
+ * ```
99
+ */
100
+ export declare const CapacityProvider: import("../../Resource.ts").ResourceClass<CapacityProvider>;
101
+ export declare const CapacityProviderProvider: () => import("effect/Layer").Layer<Provider.Provider<CapacityProvider>, never, import("effect/unstable/http/HttpClient").HttpClient | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | Region | import("@distilled.cloud/aws/Credentials").Credentials | AWSEnvironment>;
102
+ //# sourceMappingURL=CapacityProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CapacityProvider.d.ts","sourceRoot":"","sources":["../../../src/AWS/ECS/CapacityProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAKrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC1C,MAAM,MAAM,mBAAmB,GAC7B,eAAe,QAAQ,IAAI,SAAS,sBAAsB,oBAAoB,EAAE,CAAC;AAEnF,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC;;OAEG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;IACpC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,GAAG,CAAC,4BAA4B,CAAC;IAChE;;;OAGG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC;IACtC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,CAChD,0BAA0B,EAC1B,qBAAqB,EACrB;IACE,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,sBAAsB,CAAC;IACnC,YAAY,EAAE,GAAG,CAAC,4BAA4B,GAAG,SAAS,CAAC;IAC3D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC;IAC/C,4BAA4B,EAAE,GAAG,CAAC,4BAA4B,GAAG,SAAS,CAAC;IAC3E,eAAe,EAAE,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,EACD,KAAK,EACL,SAAS,CACV;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,gBAAgB,6DAE5B,CAAC;AAEF,eAAO,MAAM,wBAAwB,2RAwNlC,CAAC"}