@stacksjs/ts-cloud-aws-types 0.1.5 → 0.1.7

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.
@@ -0,0 +1,310 @@
1
+ /**
2
+ * AWS CloudFormation Resource Type Definitions
3
+ * These types are lightweight definitions without AWS SDK dependencies
4
+ */
5
+ // CloudFormation Template Structure
6
+ export declare interface CloudFormationTemplate {
7
+ AWSTemplateFormatVersion?: '2010-09-09'
8
+ Description?: string
9
+ Parameters?: Record<string, CloudFormationParameter>
10
+ Mappings?: Record<string, unknown>
11
+ Conditions?: Record<string, unknown>
12
+ Resources: Record<string, CloudFormationResource>
13
+ Outputs?: Record<string, CloudFormationOutput>
14
+ }
15
+ export declare interface CloudFormationParameter {
16
+ Type: 'String' | 'Number' | 'List<Number>' | 'CommaDelimitedList'
17
+ Default?: unknown
18
+ Description?: string
19
+ AllowedValues?: unknown[]
20
+ AllowedPattern?: string
21
+ MinLength?: number
22
+ MaxLength?: number
23
+ MinValue?: number
24
+ MaxValue?: number
25
+ }
26
+ export declare interface CloudFormationResource {
27
+ Type: string
28
+ Properties?: Record<string, unknown>
29
+ DependsOn?: string | string[]
30
+ Condition?: string
31
+ DeletionPolicy?: 'Delete' | 'Retain' | 'Snapshot'
32
+ UpdateReplacePolicy?: 'Delete' | 'Retain' | 'Snapshot'
33
+ }
34
+ export declare interface CloudFormationOutput {
35
+ Description?: string
36
+ Value: unknown
37
+ Export?: {
38
+ Name: string
39
+ }
40
+ }
41
+ // CloudFormation Intrinsic Functions
42
+ export declare interface IntrinsicFunctions {
43
+ Ref: (logicalName: string) => { Ref: string }
44
+ GetAtt: (logicalName: string, attributeName: string) => { 'Fn::GetAtt': [string, string] }
45
+ Sub: (template: string, variables?: Record<string, unknown>) => { 'Fn::Sub': string | [string, Record<string, unknown>] }
46
+ Join: (delimiter: string, values: unknown[]) => { 'Fn::Join': [string, unknown[]] }
47
+ Select: (index: number, list: unknown[]) => { 'Fn::Select': [number, unknown[]] }
48
+ Split: (delimiter: string, source: string) => { 'Fn::Split': [string, string] }
49
+ GetAZs: (region?: string) => { 'Fn::GetAZs': string }
50
+ ImportValue: (name: string) => { 'Fn::ImportValue': string }
51
+ If: (condition: string, trueValue: unknown, falseValue: unknown) => { 'Fn::If': [string, unknown, unknown] }
52
+ }
53
+ // S3 Types
54
+ export declare interface S3Bucket extends CloudFormationResource {
55
+ Type: 'AWS::S3::Bucket'
56
+ Properties?: {
57
+ BucketName?: string
58
+ AccessControl?: 'Private' | 'PublicRead' | 'PublicReadWrite' | 'AuthenticatedRead'
59
+ BucketEncryption?: {
60
+ ServerSideEncryptionConfiguration: Array<{
61
+ ServerSideEncryptionByDefault: {
62
+ SSEAlgorithm: 'AES256' | 'aws:kms'
63
+ KMSMasterKeyID?: string
64
+ }
65
+ }>
66
+ }
67
+ VersioningConfiguration?: {
68
+ Status: 'Enabled' | 'Suspended'
69
+ }
70
+ WebsiteConfiguration?: {
71
+ IndexDocument?: string
72
+ ErrorDocument?: string
73
+ RedirectAllRequestsTo?: {
74
+ HostName: string
75
+ Protocol?: string
76
+ }
77
+ }
78
+ Tags?: Array<{
79
+ Key: string
80
+ Value: string
81
+ }>
82
+ LifecycleConfiguration?: {
83
+ Rules: Array<{
84
+ Id: string
85
+ Status: 'Enabled' | 'Disabled'
86
+ ExpirationInDays?: number
87
+ Transitions?: Array<{
88
+ TransitionInDays: number
89
+ StorageClass: string
90
+ }>
91
+ }>
92
+ }
93
+ PublicAccessBlockConfiguration?: {
94
+ BlockPublicAcls?: boolean
95
+ BlockPublicPolicy?: boolean
96
+ IgnorePublicAcls?: boolean
97
+ RestrictPublicBuckets?: boolean
98
+ }
99
+ CorsConfiguration?: {
100
+ CorsRules: Array<{
101
+ AllowedOrigins: string[]
102
+ AllowedMethods: string[]
103
+ AllowedHeaders?: string[]
104
+ MaxAge?: number
105
+ }>
106
+ }
107
+ NotificationConfiguration?: {
108
+ LambdaConfigurations?: Array<{
109
+ Event: string
110
+ Function: string
111
+ Filter?: {
112
+ S3Key?: {
113
+ Rules?: Array<{
114
+ Name: string
115
+ Value: string
116
+ }>
117
+ }
118
+ }
119
+ }>
120
+ }
121
+ }
122
+ }
123
+ export declare interface S3BucketPolicy extends CloudFormationResource {
124
+ Type: 'AWS::S3::BucketPolicy'
125
+ Properties: {
126
+ Bucket: string | { Ref: string }
127
+ PolicyDocument: {
128
+ Version: '2012-10-17'
129
+ Statement: Array<{
130
+ Sid?: string
131
+ Effect: 'Allow' | 'Deny'
132
+ Principal: unknown
133
+ Action: string | string[]
134
+ Resource: string | string[]
135
+ Condition?: unknown
136
+ }>
137
+ }
138
+ }
139
+ }
140
+ // CloudFront Cache Behavior Type
141
+ export declare interface CloudFrontCacheBehavior {
142
+ TargetOriginId: string
143
+ ViewerProtocolPolicy: 'allow-all' | 'https-only' | 'redirect-to-https'
144
+ AllowedMethods?: string[]
145
+ CachedMethods?: string[]
146
+ CachePolicyId?: string
147
+ Compress?: boolean
148
+ LambdaFunctionAssociations?: Array<{
149
+ EventType: 'origin-request' | 'origin-response' | 'viewer-request' | 'viewer-response'
150
+ LambdaFunctionARN: string
151
+ }>
152
+ DefaultTTL?: number
153
+ MaxTTL?: number
154
+ MinTTL?: number
155
+ ForwardedValues?: {
156
+ QueryString?: boolean
157
+ Headers?: string[]
158
+ Cookies?: {
159
+ Forward: string
160
+ WhitelistedNames?: string[]
161
+ }
162
+ }
163
+ PathPattern?: string
164
+ }
165
+ // CloudFront Origin Type
166
+ export declare interface CloudFrontOrigin {
167
+ Id: string
168
+ DomainName: string
169
+ OriginPath?: string
170
+ S3OriginConfig?: {
171
+ OriginAccessIdentity?: string
172
+ }
173
+ CustomOriginConfig?: {
174
+ HTTPPort?: number
175
+ HTTPSPort?: number
176
+ OriginProtocolPolicy: 'http-only' | 'https-only' | 'match-viewer'
177
+ OriginSSLProtocols?: string[]
178
+ OriginReadTimeout?: number
179
+ OriginKeepaliveTimeout?: number
180
+ }
181
+ OriginAccessControlId?: string
182
+ OriginCustomHeaders?: Array<{
183
+ HeaderName: string
184
+ HeaderValue: string
185
+ }>
186
+ }
187
+ // CloudFront Types
188
+ export declare interface CloudFrontDistribution extends CloudFormationResource {
189
+ Type: 'AWS::CloudFront::Distribution'
190
+ Properties: {
191
+ DistributionConfig: {
192
+ Enabled: boolean
193
+ Comment?: string
194
+ DefaultRootObject?: string
195
+ Origins: CloudFrontOrigin[]
196
+ DefaultCacheBehavior: CloudFrontCacheBehavior
197
+ CacheBehaviors?: CloudFrontCacheBehavior[]
198
+ PriceClass?: string
199
+ ViewerCertificate?: {
200
+ AcmCertificateArn?: string
201
+ CloudFrontDefaultCertificate?: boolean
202
+ MinimumProtocolVersion?: string
203
+ SslSupportMethod?: string
204
+ }
205
+ Aliases?: string[]
206
+ CustomErrorResponses?: Array<{
207
+ ErrorCode: number
208
+ ResponseCode?: number
209
+ ResponsePagePath?: string
210
+ }>
211
+ HttpVersion?: 'http1.1' | 'http2' | 'http2and3' | 'http3'
212
+ }
213
+ }
214
+ }
215
+ export declare interface CloudFrontOriginAccessControl extends CloudFormationResource {
216
+ Type: 'AWS::CloudFront::OriginAccessControl'
217
+ Properties: {
218
+ OriginAccessControlConfig: {
219
+ Name: string
220
+ Description?: string
221
+ OriginAccessControlOriginType: 's3' | 'mediastore'
222
+ SigningBehavior: 'always' | 'never' | 'no-override'
223
+ SigningProtocol: 'sigv4'
224
+ }
225
+ }
226
+ }
227
+ export declare interface CloudFrontFunction extends CloudFormationResource {
228
+ Type: 'AWS::CloudFront::Function'
229
+ Properties: {
230
+ Name: string
231
+ FunctionCode: string
232
+ FunctionConfig: {
233
+ Comment?: string
234
+ Runtime: 'cloudfront-js-1.0' | 'cloudfront-js-2.0'
235
+ KeyValueStoreAssociations?: Array<{
236
+ KeyValueStoreARN: string
237
+ }>
238
+ }
239
+ AutoPublish?: boolean
240
+ }
241
+ }
242
+ // Step Functions Types
243
+ export declare interface StepFunctionsStateMachine extends CloudFormationResource {
244
+ Type: 'AWS::StepFunctions::StateMachine'
245
+ Properties: {
246
+ StateMachineName?: string
247
+ StateMachineType?: 'STANDARD' | 'EXPRESS'
248
+ Definition?: Record<string, unknown>
249
+ DefinitionString?: string
250
+ DefinitionS3Location?: {
251
+ Bucket: string
252
+ Key: string
253
+ Version?: string
254
+ }
255
+ DefinitionSubstitutions?: Record<string, string>
256
+ RoleArn: string | { 'Fn::GetAtt': [string, string] } | { Ref: string }
257
+ LoggingConfiguration?: {
258
+ Destinations?: Array<{
259
+ CloudWatchLogsLogGroup?: {
260
+ LogGroupArn: string | { 'Fn::GetAtt': [string, string] }
261
+ }
262
+ }>
263
+ IncludeExecutionData?: boolean
264
+ Level?: 'ALL' | 'ERROR' | 'FATAL' | 'OFF'
265
+ }
266
+ TracingConfiguration?: {
267
+ Enabled?: boolean
268
+ }
269
+ Tags?: Array<{
270
+ Key: string
271
+ Value: string
272
+ }>
273
+ }
274
+ }
275
+ export * from './route53';
276
+ export * from './ec2';
277
+ export * from './iam';
278
+ export * from './lambda';
279
+ export * from './ecs';
280
+ export * from './ecr';
281
+ export * from './alb';
282
+ export * from './rds';
283
+ export * from './dynamodb';
284
+ export * from './apigateway';
285
+ export * from './sns';
286
+ export * from './ses';
287
+ export * from './sqs';
288
+ export * from './eventbridge';
289
+ export * from './cloudwatch';
290
+ export * from './kms';
291
+ export * from './acm';
292
+ export * from './efs';
293
+ export * from './waf';
294
+ export * from './elasticache';
295
+ export * from './secrets-manager';
296
+ export * from './autoscaling';
297
+ export * from './ssm';
298
+ export * from './backup';
299
+ export * from './opensearch';
300
+ export * from './rds-proxy';
301
+ export * from './globalaccelerator';
302
+ export * from './appsync';
303
+ export * from './athena';
304
+ export * from './kinesis';
305
+ export * from './glue';
306
+ export * from './connect';
307
+ export * from './pinpoint';
308
+ export * from './common';
309
+ export * from './cognito';
310
+ export * from './codedeploy';
package/dist/index.js ADDED
File without changes
@@ -0,0 +1,252 @@
1
+ import type { Tag } from './common';
2
+ export declare interface Stream {
3
+ Type: 'AWS::Kinesis::Stream'
4
+ Properties: {
5
+ Name?: string
6
+ ShardCount?: number
7
+ RetentionPeriodHours?: number // 24-8760 (1-365 days)
8
+
9
+ // Stream mode
10
+ StreamModeDetails?: {
11
+ StreamMode: 'PROVISIONED' | 'ON_DEMAND'
12
+ }
13
+
14
+ // Encryption
15
+ StreamEncryption?: {
16
+ EncryptionType: 'KMS'
17
+ KeyId: string | { Ref: string }
18
+ }
19
+
20
+ Tags?: Tag[]
21
+ }
22
+ DeletionPolicy?: 'Delete' | 'Retain'
23
+ UpdateReplacePolicy?: 'Delete' | 'Retain'
24
+ }
25
+ export declare interface StreamConsumer {
26
+ Type: 'AWS::Kinesis::StreamConsumer'
27
+ Properties: {
28
+ StreamARN: string | { 'Fn::GetAtt': [string, string] }
29
+ ConsumerName: string
30
+ }
31
+ DependsOn?: string | string[]
32
+ }
33
+ // Kinesis Data Firehose
34
+ export declare interface DeliveryStream {
35
+ Type: 'AWS::KinesisFirehose::DeliveryStream'
36
+ Properties: {
37
+ DeliveryStreamName?: string
38
+ DeliveryStreamType?: 'DirectPut' | 'KinesisStreamAsSource'
39
+
40
+ // Source configuration (if Type = KinesisStreamAsSource)
41
+ KinesisStreamSourceConfiguration?: {
42
+ KinesisStreamARN: string | { 'Fn::GetAtt': [string, string] }
43
+ RoleARN: string | { Ref: string }
44
+ }
45
+
46
+ // S3 destination
47
+ S3DestinationConfiguration?: {
48
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
49
+ RoleARN: string | { Ref: string }
50
+ Prefix?: string
51
+ ErrorOutputPrefix?: string
52
+ BufferingHints?: {
53
+ IntervalInSeconds?: number
54
+ SizeInMBs?: number
55
+ }
56
+ CompressionFormat?: 'UNCOMPRESSED' | 'GZIP' | 'ZIP' | 'Snappy' | 'HADOOP_SNAPPY'
57
+ EncryptionConfiguration?: {
58
+ NoEncryptionConfig?: 'NoEncryption'
59
+ KMSEncryptionConfig?: {
60
+ AWSKMSKeyARN: string | { Ref: string }
61
+ }
62
+ }
63
+ CloudWatchLoggingOptions?: {
64
+ Enabled?: boolean
65
+ LogGroupName?: string
66
+ LogStreamName?: string
67
+ }
68
+ }
69
+
70
+ // Extended S3 destination
71
+ ExtendedS3DestinationConfiguration?: {
72
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
73
+ RoleARN: string | { Ref: string }
74
+ Prefix?: string
75
+ ErrorOutputPrefix?: string
76
+ BufferingHints?: {
77
+ IntervalInSeconds?: number
78
+ SizeInMBs?: number
79
+ }
80
+ CompressionFormat?: 'UNCOMPRESSED' | 'GZIP' | 'ZIP' | 'Snappy' | 'HADOOP_SNAPPY'
81
+ EncryptionConfiguration?: {
82
+ NoEncryptionConfig?: 'NoEncryption'
83
+ KMSEncryptionConfig?: {
84
+ AWSKMSKeyARN: string | { Ref: string }
85
+ }
86
+ }
87
+ CloudWatchLoggingOptions?: {
88
+ Enabled?: boolean
89
+ LogGroupName?: string
90
+ LogStreamName?: string
91
+ }
92
+ DataFormatConversionConfiguration?: {
93
+ Enabled?: boolean
94
+ SchemaConfiguration?: {
95
+ DatabaseName?: string
96
+ TableName?: string
97
+ Region?: string
98
+ RoleARN?: string | { Ref: string }
99
+ }
100
+ InputFormatConfiguration?: {
101
+ Deserializer?: {
102
+ OpenXJsonSerDe?: Record<string, any>
103
+ HiveJsonSerDe?: Record<string, any>
104
+ }
105
+ }
106
+ OutputFormatConfiguration?: {
107
+ Serializer?: {
108
+ ParquetSerDe?: Record<string, any>
109
+ OrcSerDe?: Record<string, any>
110
+ }
111
+ }
112
+ }
113
+ DynamicPartitioningConfiguration?: {
114
+ Enabled?: boolean
115
+ RetryOptions?: {
116
+ DurationInSeconds?: number
117
+ }
118
+ }
119
+ ProcessingConfiguration?: {
120
+ Enabled?: boolean
121
+ Processors?: Array<{
122
+ Type: 'Lambda'
123
+ Parameters?: Array<{
124
+ ParameterName: string
125
+ ParameterValue: string
126
+ }>
127
+ }>
128
+ }
129
+ }
130
+
131
+ // Elasticsearch destination
132
+ ElasticsearchDestinationConfiguration?: {
133
+ DomainARN: string | { 'Fn::GetAtt': [string, string] }
134
+ IndexName: string
135
+ RoleARN: string | { Ref: string }
136
+ TypeName?: string
137
+ IndexRotationPeriod?: 'NoRotation' | 'OneHour' | 'OneDay' | 'OneWeek' | 'OneMonth'
138
+ BufferingHints?: {
139
+ IntervalInSeconds?: number
140
+ SizeInMBs?: number
141
+ }
142
+ RetryOptions?: {
143
+ DurationInSeconds?: number
144
+ }
145
+ S3BackupMode?: 'FailedDocumentsOnly' | 'AllDocuments'
146
+ S3Configuration: {
147
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
148
+ RoleARN: string | { Ref: string }
149
+ Prefix?: string
150
+ }
151
+ CloudWatchLoggingOptions?: {
152
+ Enabled?: boolean
153
+ LogGroupName?: string
154
+ LogStreamName?: string
155
+ }
156
+ }
157
+
158
+ // OpenSearch destination
159
+ AmazonopensearchserviceDestinationConfiguration?: {
160
+ DomainARN: string | { 'Fn::GetAtt': [string, string] }
161
+ IndexName: string
162
+ RoleARN: string | { Ref: string }
163
+ TypeName?: string
164
+ IndexRotationPeriod?: 'NoRotation' | 'OneHour' | 'OneDay' | 'OneWeek' | 'OneMonth'
165
+ BufferingHints?: {
166
+ IntervalInSeconds?: number
167
+ SizeInMBs?: number
168
+ }
169
+ RetryOptions?: {
170
+ DurationInSeconds?: number
171
+ }
172
+ S3BackupMode?: 'FailedDocumentsOnly' | 'AllDocuments'
173
+ S3Configuration: {
174
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
175
+ RoleARN: string | { Ref: string }
176
+ Prefix?: string
177
+ }
178
+ CloudWatchLoggingOptions?: {
179
+ Enabled?: boolean
180
+ LogGroupName?: string
181
+ LogStreamName?: string
182
+ }
183
+ }
184
+
185
+ // Redshift destination
186
+ RedshiftDestinationConfiguration?: {
187
+ ClusterJDBCURL: string
188
+ CopyCommand: {
189
+ DataTableName: string
190
+ CopyOptions?: string
191
+ DataTableColumns?: string
192
+ }
193
+ Username: string
194
+ Password: string
195
+ RoleARN: string | { Ref: string }
196
+ S3Configuration: {
197
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
198
+ RoleARN: string | { Ref: string }
199
+ Prefix?: string
200
+ }
201
+ CloudWatchLoggingOptions?: {
202
+ Enabled?: boolean
203
+ LogGroupName?: string
204
+ LogStreamName?: string
205
+ }
206
+ }
207
+
208
+ Tags?: Tag[]
209
+ }
210
+ DeletionPolicy?: 'Delete' | 'Retain'
211
+ UpdateReplacePolicy?: 'Delete' | 'Retain'
212
+ }
213
+ // Kinesis Data Analytics
214
+ export declare interface Application {
215
+ Type: 'AWS::KinesisAnalytics::Application'
216
+ Properties: {
217
+ ApplicationName?: string
218
+ ApplicationDescription?: string
219
+ ApplicationCode?: string
220
+ Inputs: Array<{
221
+ NamePrefix: string
222
+ InputSchema: {
223
+ RecordColumns: Array<{
224
+ Name: string
225
+ SqlType: string
226
+ Mapping?: string
227
+ }>
228
+ RecordFormat: {
229
+ RecordFormatType: 'CSV' | 'JSON'
230
+ MappingParameters?: {
231
+ CSVMappingParameters?: {
232
+ RecordRowDelimiter: string
233
+ RecordColumnDelimiter: string
234
+ }
235
+ JSONMappingParameters?: {
236
+ RecordRowPath: string
237
+ }
238
+ }
239
+ }
240
+ RecordEncoding?: string
241
+ }
242
+ KinesisStreamsInput?: {
243
+ ResourceARN: string | { 'Fn::GetAtt': [string, string] }
244
+ RoleARN: string | { Ref: string }
245
+ }
246
+ KinesisFirehoseInput?: {
247
+ ResourceARN: string | { 'Fn::GetAtt': [string, string] }
248
+ RoleARN: string | { Ref: string }
249
+ }
250
+ }>
251
+ }
252
+ }
package/dist/kms.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface KMSKey extends CloudFormationResource {
3
+ Type: 'AWS::KMS::Key'
4
+ Properties: {
5
+ Description?: string
6
+ Enabled?: boolean
7
+ EnableKeyRotation?: boolean
8
+ KeyPolicy: {
9
+ Version: '2012-10-17'
10
+ Statement: Array<{
11
+ Sid?: string
12
+ Effect: 'Allow' | 'Deny'
13
+ Principal: unknown
14
+ Action: string | string[]
15
+ Resource: string | string[]
16
+ }>
17
+ }
18
+ KeySpec?: 'SYMMETRIC_DEFAULT' | 'RSA_2048' | 'RSA_3072' | 'RSA_4096' | 'ECC_NIST_P256' | 'ECC_NIST_P384' | 'ECC_NIST_P521' | 'ECC_SECG_P256K1'
19
+ KeyUsage?: 'ENCRYPT_DECRYPT' | 'SIGN_VERIFY'
20
+ MultiRegion?: boolean
21
+ Tags?: Array<{
22
+ Key: string
23
+ Value: string
24
+ }>
25
+ }
26
+ }
27
+ export declare interface KMSAlias extends CloudFormationResource {
28
+ Type: 'AWS::KMS::Alias'
29
+ Properties: {
30
+ AliasName: string
31
+ TargetKeyId: string | { Ref: string }
32
+ }
33
+ }
@@ -0,0 +1,40 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface LambdaFunction extends CloudFormationResource {
3
+ Type: 'AWS::Lambda::Function'
4
+ Properties: {
5
+ FunctionName?: string
6
+ Description?: string
7
+ Runtime: string
8
+ Role: string | { 'Fn::GetAtt': [string, string] }
9
+ Handler: string
10
+ Code: {
11
+ S3Bucket?: string
12
+ S3Key?: string
13
+ ZipFile?: string
14
+ }
15
+ Timeout?: number
16
+ MemorySize?: number
17
+ Environment?: {
18
+ Variables: Record<string, string>
19
+ }
20
+ VpcConfig?: {
21
+ SecurityGroupIds: string[]
22
+ SubnetIds: string[]
23
+ }
24
+ Layers?: string[]
25
+ Tags?: Array<{
26
+ Key: string
27
+ Value: string
28
+ }>
29
+ }
30
+ }
31
+ export declare interface LambdaPermission extends CloudFormationResource {
32
+ Type: 'AWS::Lambda::Permission'
33
+ Properties: {
34
+ FunctionName: string | { Ref: string }
35
+ Action: string
36
+ Principal: string
37
+ SourceArn?: string
38
+ SourceAccount?: string
39
+ }
40
+ }