@stacksjs/ts-cloud 0.1.3 → 0.1.6

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 (187) hide show
  1. package/README.md +98 -13
  2. package/dist/aws/acm.d.ts +129 -0
  3. package/dist/aws/application-autoscaling.d.ts +282 -0
  4. package/dist/aws/bedrock.d.ts +2292 -0
  5. package/dist/aws/client.d.ts +79 -0
  6. package/dist/aws/cloudformation.d.ts +105 -0
  7. package/dist/aws/cloudfront.d.ts +265 -0
  8. package/dist/aws/cloudwatch-logs.d.ts +48 -0
  9. package/dist/aws/comprehend.d.ts +505 -0
  10. package/dist/aws/connect.d.ts +377 -0
  11. package/dist/aws/deploy-imap.d.ts +14 -0
  12. package/dist/aws/dynamodb.d.ts +176 -0
  13. package/dist/aws/ec2.d.ts +272 -0
  14. package/dist/aws/ecr.d.ts +149 -0
  15. package/dist/aws/ecs.d.ts +162 -0
  16. package/dist/aws/elasticache.d.ts +71 -0
  17. package/dist/aws/elbv2.d.ts +248 -0
  18. package/dist/aws/email.d.ts +175 -0
  19. package/dist/aws/eventbridge.d.ts +142 -0
  20. package/dist/aws/iam.d.ts +638 -0
  21. package/dist/aws/imap-server.d.ts +119 -0
  22. package/{src/aws/index.ts → dist/aws/index.d.ts} +62 -83
  23. package/{src/aws/kendra.ts → dist/aws/kendra.d.ts} +71 -386
  24. package/dist/aws/lambda.d.ts +232 -0
  25. package/dist/aws/opensearch.d.ts +87 -0
  26. package/dist/aws/personalize.d.ts +516 -0
  27. package/dist/aws/polly.d.ts +214 -0
  28. package/dist/aws/rds.d.ts +240 -0
  29. package/dist/aws/rekognition.d.ts +543 -0
  30. package/dist/aws/route53-domains.d.ts +113 -0
  31. package/dist/aws/route53.d.ts +215 -0
  32. package/dist/aws/s3.d.ts +212 -0
  33. package/dist/aws/scheduler.d.ts +140 -0
  34. package/dist/aws/secrets-manager.d.ts +170 -0
  35. package/dist/aws/ses.d.ts +288 -0
  36. package/dist/aws/setup-phone.d.ts +0 -0
  37. package/dist/aws/setup-sms.d.ts +115 -0
  38. package/dist/aws/sms.d.ts +304 -0
  39. package/dist/aws/smtp-server.d.ts +61 -0
  40. package/dist/aws/sns.d.ts +117 -0
  41. package/dist/aws/sqs.d.ts +65 -0
  42. package/dist/aws/ssm.d.ts +179 -0
  43. package/dist/aws/sts.d.ts +15 -0
  44. package/dist/aws/support.d.ts +104 -0
  45. package/dist/aws/test-imap.d.ts +0 -0
  46. package/dist/aws/textract.d.ts +403 -0
  47. package/dist/aws/transcribe.d.ts +60 -0
  48. package/dist/aws/translate.d.ts +358 -0
  49. package/dist/aws/voice.d.ts +219 -0
  50. package/dist/bin/cli.js +1724 -0
  51. package/dist/config.d.ts +7 -0
  52. package/dist/deploy/index.d.ts +2 -0
  53. package/dist/deploy/static-site-external-dns.d.ts +51 -0
  54. package/dist/deploy/static-site.d.ts +71 -0
  55. package/dist/dns/cloudflare.d.ts +52 -0
  56. package/dist/dns/godaddy.d.ts +38 -0
  57. package/dist/dns/index.d.ts +45 -0
  58. package/dist/dns/porkbun.d.ts +18 -0
  59. package/dist/dns/route53-adapter.d.ts +38 -0
  60. package/{src/dns/types.ts → dist/dns/types.d.ts} +26 -63
  61. package/dist/dns/validator.d.ts +78 -0
  62. package/dist/generators/index.d.ts +1 -0
  63. package/dist/generators/infrastructure.d.ts +30 -0
  64. package/{src/index.ts → dist/index.d.ts} +70 -93
  65. package/dist/index.js +7881 -0
  66. package/dist/push/apns.d.ts +60 -0
  67. package/dist/push/fcm.d.ts +117 -0
  68. package/dist/push/index.d.ts +14 -0
  69. package/dist/security/pre-deploy-scanner.d.ts +69 -0
  70. package/dist/ssl/acme-client.d.ts +67 -0
  71. package/dist/ssl/index.d.ts +2 -0
  72. package/dist/ssl/letsencrypt.d.ts +48 -0
  73. package/dist/types.d.ts +1 -0
  74. package/dist/utils/cli.d.ts +123 -0
  75. package/dist/validation/index.d.ts +1 -0
  76. package/dist/validation/template.d.ts +23 -0
  77. package/package.json +8 -8
  78. package/bin/cli.ts +0 -133
  79. package/bin/commands/analytics.ts +0 -328
  80. package/bin/commands/api.ts +0 -379
  81. package/bin/commands/assets.ts +0 -221
  82. package/bin/commands/audit.ts +0 -501
  83. package/bin/commands/backup.ts +0 -682
  84. package/bin/commands/cache.ts +0 -294
  85. package/bin/commands/cdn.ts +0 -281
  86. package/bin/commands/config.ts +0 -202
  87. package/bin/commands/container.ts +0 -105
  88. package/bin/commands/cost.ts +0 -208
  89. package/bin/commands/database.ts +0 -401
  90. package/bin/commands/deploy.ts +0 -674
  91. package/bin/commands/domain.ts +0 -397
  92. package/bin/commands/email.ts +0 -423
  93. package/bin/commands/environment.ts +0 -285
  94. package/bin/commands/events.ts +0 -424
  95. package/bin/commands/firewall.ts +0 -145
  96. package/bin/commands/function.ts +0 -116
  97. package/bin/commands/generate.ts +0 -280
  98. package/bin/commands/git.ts +0 -139
  99. package/bin/commands/iam.ts +0 -464
  100. package/bin/commands/index.ts +0 -48
  101. package/bin/commands/init.ts +0 -120
  102. package/bin/commands/logs.ts +0 -148
  103. package/bin/commands/network.ts +0 -579
  104. package/bin/commands/notify.ts +0 -489
  105. package/bin/commands/queue.ts +0 -407
  106. package/bin/commands/scheduler.ts +0 -370
  107. package/bin/commands/secrets.ts +0 -54
  108. package/bin/commands/server.ts +0 -629
  109. package/bin/commands/shared.ts +0 -97
  110. package/bin/commands/ssl.ts +0 -138
  111. package/bin/commands/stack.ts +0 -325
  112. package/bin/commands/status.ts +0 -385
  113. package/bin/commands/storage.ts +0 -450
  114. package/bin/commands/team.ts +0 -96
  115. package/bin/commands/tunnel.ts +0 -489
  116. package/bin/commands/utils.ts +0 -202
  117. package/build.ts +0 -15
  118. package/cloud +0 -2
  119. package/src/aws/acm.ts +0 -768
  120. package/src/aws/application-autoscaling.ts +0 -845
  121. package/src/aws/bedrock.ts +0 -4074
  122. package/src/aws/client.ts +0 -878
  123. package/src/aws/cloudformation.ts +0 -896
  124. package/src/aws/cloudfront.ts +0 -1531
  125. package/src/aws/cloudwatch-logs.ts +0 -154
  126. package/src/aws/comprehend.ts +0 -839
  127. package/src/aws/connect.ts +0 -1056
  128. package/src/aws/deploy-imap.ts +0 -384
  129. package/src/aws/dynamodb.ts +0 -340
  130. package/src/aws/ec2.ts +0 -1385
  131. package/src/aws/ecr.ts +0 -621
  132. package/src/aws/ecs.ts +0 -615
  133. package/src/aws/elasticache.ts +0 -301
  134. package/src/aws/elbv2.ts +0 -942
  135. package/src/aws/email.ts +0 -928
  136. package/src/aws/eventbridge.ts +0 -248
  137. package/src/aws/iam.ts +0 -1689
  138. package/src/aws/imap-server.ts +0 -2100
  139. package/src/aws/lambda.ts +0 -786
  140. package/src/aws/opensearch.ts +0 -158
  141. package/src/aws/personalize.ts +0 -977
  142. package/src/aws/polly.ts +0 -559
  143. package/src/aws/rds.ts +0 -888
  144. package/src/aws/rekognition.ts +0 -846
  145. package/src/aws/route53-domains.ts +0 -359
  146. package/src/aws/route53.ts +0 -1046
  147. package/src/aws/s3.ts +0 -2318
  148. package/src/aws/scheduler.ts +0 -571
  149. package/src/aws/secrets-manager.ts +0 -769
  150. package/src/aws/ses.ts +0 -1081
  151. package/src/aws/setup-phone.ts +0 -104
  152. package/src/aws/setup-sms.ts +0 -580
  153. package/src/aws/sms.ts +0 -1735
  154. package/src/aws/smtp-server.ts +0 -531
  155. package/src/aws/sns.ts +0 -758
  156. package/src/aws/sqs.ts +0 -382
  157. package/src/aws/ssm.ts +0 -807
  158. package/src/aws/sts.ts +0 -92
  159. package/src/aws/support.ts +0 -391
  160. package/src/aws/test-imap.ts +0 -86
  161. package/src/aws/textract.ts +0 -780
  162. package/src/aws/transcribe.ts +0 -108
  163. package/src/aws/translate.ts +0 -641
  164. package/src/aws/voice.ts +0 -1379
  165. package/src/config.ts +0 -35
  166. package/src/deploy/index.ts +0 -7
  167. package/src/deploy/static-site-external-dns.ts +0 -906
  168. package/src/deploy/static-site.ts +0 -1125
  169. package/src/dns/godaddy.ts +0 -412
  170. package/src/dns/index.ts +0 -183
  171. package/src/dns/porkbun.ts +0 -362
  172. package/src/dns/route53-adapter.ts +0 -414
  173. package/src/dns/validator.ts +0 -369
  174. package/src/generators/index.ts +0 -5
  175. package/src/generators/infrastructure.ts +0 -1660
  176. package/src/push/apns.ts +0 -452
  177. package/src/push/fcm.ts +0 -506
  178. package/src/push/index.ts +0 -58
  179. package/src/ssl/acme-client.ts +0 -478
  180. package/src/ssl/index.ts +0 -7
  181. package/src/ssl/letsencrypt.ts +0 -747
  182. package/src/types.ts +0 -2
  183. package/src/utils/cli.ts +0 -398
  184. package/src/validation/index.ts +0 -5
  185. package/src/validation/template.ts +0 -405
  186. package/test/index.test.ts +0 -128
  187. package/tsconfig.json +0 -18
@@ -1,641 +0,0 @@
1
- /**
2
- * AWS Translate Client
3
- * Machine translation service
4
- * No external SDK dependencies - implements AWS Signature V4 directly
5
- */
6
-
7
- import { AWSClient } from './client'
8
-
9
- // ============================================================================
10
- // Types
11
- // ============================================================================
12
-
13
- export interface TranslateTextCommandInput {
14
- Text: string
15
- SourceLanguageCode: string
16
- TargetLanguageCode: string
17
- TerminologyNames?: string[]
18
- Settings?: {
19
- Formality?: 'FORMAL' | 'INFORMAL'
20
- Profanity?: 'MASK'
21
- Brevity?: 'ON'
22
- }
23
- }
24
-
25
- export interface TranslatedDocument {
26
- Content: Uint8Array
27
- }
28
-
29
- export interface AppliedTerminology {
30
- Name?: string
31
- Terms?: Array<{
32
- SourceText?: string
33
- TargetText?: string
34
- }>
35
- }
36
-
37
- export interface TranslateTextCommandOutput {
38
- TranslatedText: string
39
- SourceLanguageCode: string
40
- TargetLanguageCode: string
41
- AppliedTerminologies?: AppliedTerminology[]
42
- AppliedSettings?: {
43
- Formality?: 'FORMAL' | 'INFORMAL'
44
- Profanity?: 'MASK'
45
- Brevity?: 'ON'
46
- }
47
- }
48
-
49
- export interface TranslateDocumentCommandInput {
50
- Document: {
51
- Content: Uint8Array
52
- ContentType: 'text/html' | 'text/plain' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
53
- }
54
- SourceLanguageCode: string
55
- TargetLanguageCode: string
56
- TerminologyNames?: string[]
57
- Settings?: {
58
- Formality?: 'FORMAL' | 'INFORMAL'
59
- Profanity?: 'MASK'
60
- Brevity?: 'ON'
61
- }
62
- }
63
-
64
- export interface TranslateDocumentCommandOutput {
65
- TranslatedDocument: TranslatedDocument
66
- SourceLanguageCode: string
67
- TargetLanguageCode: string
68
- AppliedTerminologies?: AppliedTerminology[]
69
- AppliedSettings?: {
70
- Formality?: 'FORMAL' | 'INFORMAL'
71
- Profanity?: 'MASK'
72
- Brevity?: 'ON'
73
- }
74
- }
75
-
76
- export interface StartTextTranslationJobCommandInput {
77
- JobName?: string
78
- InputDataConfig: {
79
- S3Uri: string
80
- ContentType: 'text/html' | 'text/plain' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' | 'application/vnd.openxmlformats-officedocument.presentationml.presentation' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/x-xliff+xml'
81
- }
82
- OutputDataConfig: {
83
- S3Uri: string
84
- EncryptionKey?: {
85
- Type: 'KMS'
86
- Id: string
87
- }
88
- }
89
- DataAccessRoleArn: string
90
- SourceLanguageCode: string
91
- TargetLanguageCodes: string[]
92
- TerminologyNames?: string[]
93
- ParallelDataNames?: string[]
94
- ClientToken?: string
95
- Settings?: {
96
- Formality?: 'FORMAL' | 'INFORMAL'
97
- Profanity?: 'MASK'
98
- Brevity?: 'ON'
99
- }
100
- }
101
-
102
- export interface StartTextTranslationJobCommandOutput {
103
- JobId?: string
104
- JobStatus?: 'SUBMITTED' | 'IN_PROGRESS' | 'COMPLETED' | 'COMPLETED_WITH_ERROR' | 'FAILED' | 'STOP_REQUESTED' | 'STOPPED'
105
- }
106
-
107
- export interface DescribeTextTranslationJobCommandInput {
108
- JobId: string
109
- }
110
-
111
- export interface TextTranslationJobProperties {
112
- JobId?: string
113
- JobName?: string
114
- JobStatus?: 'SUBMITTED' | 'IN_PROGRESS' | 'COMPLETED' | 'COMPLETED_WITH_ERROR' | 'FAILED' | 'STOP_REQUESTED' | 'STOPPED'
115
- JobDetails?: {
116
- TranslatedDocumentsCount?: number
117
- DocumentsWithErrorsCount?: number
118
- InputDocumentsCount?: number
119
- }
120
- SourceLanguageCode?: string
121
- TargetLanguageCodes?: string[]
122
- TerminologyNames?: string[]
123
- ParallelDataNames?: string[]
124
- Message?: string
125
- SubmittedTime?: string
126
- EndTime?: string
127
- InputDataConfig?: {
128
- S3Uri?: string
129
- ContentType?: string
130
- }
131
- OutputDataConfig?: {
132
- S3Uri?: string
133
- EncryptionKey?: {
134
- Type?: string
135
- Id?: string
136
- }
137
- }
138
- DataAccessRoleArn?: string
139
- Settings?: {
140
- Formality?: 'FORMAL' | 'INFORMAL'
141
- Profanity?: 'MASK'
142
- Brevity?: 'ON'
143
- }
144
- }
145
-
146
- export interface DescribeTextTranslationJobCommandOutput {
147
- TextTranslationJobProperties?: TextTranslationJobProperties
148
- }
149
-
150
- export interface ListTextTranslationJobsCommandInput {
151
- Filter?: {
152
- JobName?: string
153
- JobStatus?: 'SUBMITTED' | 'IN_PROGRESS' | 'COMPLETED' | 'COMPLETED_WITH_ERROR' | 'FAILED' | 'STOP_REQUESTED' | 'STOPPED'
154
- SubmittedBeforeTime?: string
155
- SubmittedAfterTime?: string
156
- }
157
- NextToken?: string
158
- MaxResults?: number
159
- }
160
-
161
- export interface ListTextTranslationJobsCommandOutput {
162
- TextTranslationJobPropertiesList?: TextTranslationJobProperties[]
163
- NextToken?: string
164
- }
165
-
166
- export interface StopTextTranslationJobCommandInput {
167
- JobId: string
168
- }
169
-
170
- export interface StopTextTranslationJobCommandOutput {
171
- JobId?: string
172
- JobStatus?: 'SUBMITTED' | 'IN_PROGRESS' | 'COMPLETED' | 'COMPLETED_WITH_ERROR' | 'FAILED' | 'STOP_REQUESTED' | 'STOPPED'
173
- }
174
-
175
- export interface ListLanguagesCommandInput {
176
- DisplayLanguageCode?: string
177
- NextToken?: string
178
- MaxResults?: number
179
- }
180
-
181
- export interface Language {
182
- LanguageName?: string
183
- LanguageCode?: string
184
- }
185
-
186
- export interface ListLanguagesCommandOutput {
187
- Languages?: Language[]
188
- DisplayLanguageCode?: string
189
- NextToken?: string
190
- }
191
-
192
- export interface ImportTerminologyCommandInput {
193
- Name: string
194
- MergeStrategy: 'OVERWRITE'
195
- Description?: string
196
- TerminologyData: {
197
- File: Uint8Array
198
- Format: 'CSV' | 'TMX' | 'TSV'
199
- Directionality?: 'UNI' | 'MULTI'
200
- }
201
- EncryptionKey?: {
202
- Type: 'KMS'
203
- Id: string
204
- }
205
- Tags?: Array<{ Key: string; Value: string }>
206
- }
207
-
208
- export interface TerminologyProperties {
209
- Name?: string
210
- Description?: string
211
- Arn?: string
212
- SourceLanguageCode?: string
213
- TargetLanguageCodes?: string[]
214
- EncryptionKey?: {
215
- Type?: string
216
- Id?: string
217
- }
218
- SizeBytes?: number
219
- TermCount?: number
220
- CreatedAt?: string
221
- LastUpdatedAt?: string
222
- Directionality?: 'UNI' | 'MULTI'
223
- Message?: string
224
- SkippedTermCount?: number
225
- Format?: 'CSV' | 'TMX' | 'TSV'
226
- }
227
-
228
- export interface ImportTerminologyCommandOutput {
229
- TerminologyProperties?: TerminologyProperties
230
- AuxiliaryDataLocation?: {
231
- RepositoryType?: string
232
- Location?: string
233
- }
234
- }
235
-
236
- export interface GetTerminologyCommandInput {
237
- Name: string
238
- TerminologyDataFormat?: 'CSV' | 'TMX' | 'TSV'
239
- }
240
-
241
- export interface GetTerminologyCommandOutput {
242
- TerminologyProperties?: TerminologyProperties
243
- TerminologyDataLocation?: {
244
- RepositoryType?: string
245
- Location?: string
246
- }
247
- AuxiliaryDataLocation?: {
248
- RepositoryType?: string
249
- Location?: string
250
- }
251
- }
252
-
253
- export interface ListTerminologiesCommandInput {
254
- NextToken?: string
255
- MaxResults?: number
256
- }
257
-
258
- export interface ListTerminologiesCommandOutput {
259
- TerminologyPropertiesList?: TerminologyProperties[]
260
- NextToken?: string
261
- }
262
-
263
- export interface DeleteTerminologyCommandInput {
264
- Name: string
265
- }
266
-
267
- export interface DeleteTerminologyCommandOutput {
268
- // Empty
269
- }
270
-
271
- export interface CreateParallelDataCommandInput {
272
- Name: string
273
- Description?: string
274
- ParallelDataConfig: {
275
- S3Uri: string
276
- Format: 'TSV' | 'CSV' | 'TMX'
277
- }
278
- EncryptionKey?: {
279
- Type: 'KMS'
280
- Id: string
281
- }
282
- ClientToken?: string
283
- Tags?: Array<{ Key: string; Value: string }>
284
- }
285
-
286
- export interface ParallelDataProperties {
287
- Name?: string
288
- Arn?: string
289
- Description?: string
290
- Status?: 'CREATING' | 'UPDATING' | 'ACTIVE' | 'DELETING' | 'FAILED'
291
- SourceLanguageCode?: string
292
- TargetLanguageCodes?: string[]
293
- ParallelDataConfig?: {
294
- S3Uri?: string
295
- Format?: 'TSV' | 'CSV' | 'TMX'
296
- }
297
- Message?: string
298
- ImportedDataSize?: number
299
- ImportedRecordCount?: number
300
- FailedRecordCount?: number
301
- SkippedRecordCount?: number
302
- EncryptionKey?: {
303
- Type?: string
304
- Id?: string
305
- }
306
- CreatedAt?: string
307
- LastUpdatedAt?: string
308
- LatestUpdateAttemptStatus?: 'CREATING' | 'UPDATING' | 'ACTIVE' | 'DELETING' | 'FAILED'
309
- LatestUpdateAttemptAt?: string
310
- }
311
-
312
- export interface CreateParallelDataCommandOutput {
313
- Name?: string
314
- Status?: 'CREATING' | 'UPDATING' | 'ACTIVE' | 'DELETING' | 'FAILED'
315
- }
316
-
317
- export interface GetParallelDataCommandInput {
318
- Name: string
319
- }
320
-
321
- export interface GetParallelDataCommandOutput {
322
- ParallelDataProperties?: ParallelDataProperties
323
- DataLocation?: {
324
- RepositoryType?: string
325
- Location?: string
326
- }
327
- AuxiliaryDataLocation?: {
328
- RepositoryType?: string
329
- Location?: string
330
- }
331
- LatestUpdateAttemptAuxiliaryDataLocation?: {
332
- RepositoryType?: string
333
- Location?: string
334
- }
335
- }
336
-
337
- export interface ListParallelDataCommandInput {
338
- NextToken?: string
339
- MaxResults?: number
340
- }
341
-
342
- export interface ListParallelDataCommandOutput {
343
- ParallelDataPropertiesList?: ParallelDataProperties[]
344
- NextToken?: string
345
- }
346
-
347
- export interface DeleteParallelDataCommandInput {
348
- Name: string
349
- }
350
-
351
- export interface DeleteParallelDataCommandOutput {
352
- Name?: string
353
- Status?: 'CREATING' | 'UPDATING' | 'ACTIVE' | 'DELETING' | 'FAILED'
354
- }
355
-
356
- // ============================================================================
357
- // Translate Client
358
- // ============================================================================
359
-
360
- export class TranslateClient {
361
- private client: AWSClient
362
- private region: string
363
-
364
- constructor(region: string = 'us-east-1') {
365
- this.region = region
366
- this.client = new AWSClient()
367
- }
368
-
369
- private async request<T>(action: string, params: Record<string, unknown>): Promise<T> {
370
- return this.client.request({
371
- service: 'translate',
372
- region: this.region,
373
- method: 'POST',
374
- path: '/',
375
- headers: {
376
- 'Content-Type': 'application/x-amz-json-1.1',
377
- 'X-Amz-Target': `AWSShineFrontendService_20170701.${action}`,
378
- },
379
- body: JSON.stringify(params),
380
- })
381
- }
382
-
383
- // -------------------------------------------------------------------------
384
- // Real-time Translation
385
- // -------------------------------------------------------------------------
386
-
387
- /**
388
- * Translate text
389
- */
390
- async translateText(params: TranslateTextCommandInput): Promise<TranslateTextCommandOutput> {
391
- return this.request('TranslateText', params as unknown as Record<string, unknown>)
392
- }
393
-
394
- /**
395
- * Translate a document
396
- */
397
- async translateDocument(params: TranslateDocumentCommandInput): Promise<TranslateDocumentCommandOutput> {
398
- return this.request('TranslateDocument', params as unknown as Record<string, unknown>)
399
- }
400
-
401
- // -------------------------------------------------------------------------
402
- // Batch Translation
403
- // -------------------------------------------------------------------------
404
-
405
- /**
406
- * Start a batch translation job
407
- */
408
- async startTextTranslationJob(params: StartTextTranslationJobCommandInput): Promise<StartTextTranslationJobCommandOutput> {
409
- return this.request('StartTextTranslationJob', params as unknown as Record<string, unknown>)
410
- }
411
-
412
- /**
413
- * Describe a batch translation job
414
- */
415
- async describeTextTranslationJob(params: DescribeTextTranslationJobCommandInput): Promise<DescribeTextTranslationJobCommandOutput> {
416
- return this.request('DescribeTextTranslationJob', params as unknown as Record<string, unknown>)
417
- }
418
-
419
- /**
420
- * List batch translation jobs
421
- */
422
- async listTextTranslationJobs(params?: ListTextTranslationJobsCommandInput): Promise<ListTextTranslationJobsCommandOutput> {
423
- return this.request('ListTextTranslationJobs', (params || {}) as unknown as Record<string, unknown>)
424
- }
425
-
426
- /**
427
- * Stop a batch translation job
428
- */
429
- async stopTextTranslationJob(params: StopTextTranslationJobCommandInput): Promise<StopTextTranslationJobCommandOutput> {
430
- return this.request('StopTextTranslationJob', params as unknown as Record<string, unknown>)
431
- }
432
-
433
- // -------------------------------------------------------------------------
434
- // Languages
435
- // -------------------------------------------------------------------------
436
-
437
- /**
438
- * List supported languages
439
- */
440
- async listLanguages(params?: ListLanguagesCommandInput): Promise<ListLanguagesCommandOutput> {
441
- return this.request('ListLanguages', (params || {}) as unknown as Record<string, unknown>)
442
- }
443
-
444
- // -------------------------------------------------------------------------
445
- // Terminologies
446
- // -------------------------------------------------------------------------
447
-
448
- /**
449
- * Import a custom terminology
450
- */
451
- async importTerminology(params: ImportTerminologyCommandInput): Promise<ImportTerminologyCommandOutput> {
452
- return this.request('ImportTerminology', params as unknown as Record<string, unknown>)
453
- }
454
-
455
- /**
456
- * Get a terminology
457
- */
458
- async getTerminology(params: GetTerminologyCommandInput): Promise<GetTerminologyCommandOutput> {
459
- return this.request('GetTerminology', params as unknown as Record<string, unknown>)
460
- }
461
-
462
- /**
463
- * List terminologies
464
- */
465
- async listTerminologies(params?: ListTerminologiesCommandInput): Promise<ListTerminologiesCommandOutput> {
466
- return this.request('ListTerminologies', (params || {}) as unknown as Record<string, unknown>)
467
- }
468
-
469
- /**
470
- * Delete a terminology
471
- */
472
- async deleteTerminology(params: DeleteTerminologyCommandInput): Promise<DeleteTerminologyCommandOutput> {
473
- return this.request('DeleteTerminology', params as unknown as Record<string, unknown>)
474
- }
475
-
476
- // -------------------------------------------------------------------------
477
- // Parallel Data
478
- // -------------------------------------------------------------------------
479
-
480
- /**
481
- * Create parallel data for custom translation
482
- */
483
- async createParallelData(params: CreateParallelDataCommandInput): Promise<CreateParallelDataCommandOutput> {
484
- return this.request('CreateParallelData', params as unknown as Record<string, unknown>)
485
- }
486
-
487
- /**
488
- * Get parallel data
489
- */
490
- async getParallelData(params: GetParallelDataCommandInput): Promise<GetParallelDataCommandOutput> {
491
- return this.request('GetParallelData', params as unknown as Record<string, unknown>)
492
- }
493
-
494
- /**
495
- * List parallel data
496
- */
497
- async listParallelData(params?: ListParallelDataCommandInput): Promise<ListParallelDataCommandOutput> {
498
- return this.request('ListParallelData', (params || {}) as unknown as Record<string, unknown>)
499
- }
500
-
501
- /**
502
- * Delete parallel data
503
- */
504
- async deleteParallelData(params: DeleteParallelDataCommandInput): Promise<DeleteParallelDataCommandOutput> {
505
- return this.request('DeleteParallelData', params as unknown as Record<string, unknown>)
506
- }
507
-
508
- // -------------------------------------------------------------------------
509
- // Convenience Methods
510
- // -------------------------------------------------------------------------
511
-
512
- /**
513
- * Simple translation
514
- */
515
- async translate(
516
- text: string,
517
- targetLanguage: string,
518
- sourceLanguage: string = 'auto',
519
- ): Promise<string> {
520
- const result = await this.translateText({
521
- Text: text,
522
- SourceLanguageCode: sourceLanguage,
523
- TargetLanguageCode: targetLanguage,
524
- })
525
- return result.TranslatedText
526
- }
527
-
528
- /**
529
- * Translate with formality setting
530
- */
531
- async translateFormal(
532
- text: string,
533
- targetLanguage: string,
534
- sourceLanguage: string = 'auto',
535
- formality: 'FORMAL' | 'INFORMAL' = 'FORMAL',
536
- ): Promise<string> {
537
- const result = await this.translateText({
538
- Text: text,
539
- SourceLanguageCode: sourceLanguage,
540
- TargetLanguageCode: targetLanguage,
541
- Settings: { Formality: formality },
542
- })
543
- return result.TranslatedText
544
- }
545
-
546
- /**
547
- * Translate to multiple languages
548
- */
549
- async translateToMultiple(
550
- text: string,
551
- targetLanguages: string[],
552
- sourceLanguage: string = 'auto',
553
- ): Promise<Record<string, string>> {
554
- const results: Record<string, string> = {}
555
-
556
- for (const targetLang of targetLanguages) {
557
- results[targetLang] = await this.translate(text, targetLang, sourceLanguage)
558
- }
559
-
560
- return results
561
- }
562
-
563
- /**
564
- * Wait for batch translation job to complete
565
- */
566
- async waitForJob(
567
- jobId: string,
568
- options?: { maxWaitMs?: number; pollIntervalMs?: number },
569
- ): Promise<TextTranslationJobProperties> {
570
- const maxWaitMs = options?.maxWaitMs ?? 3600000 // 1 hour
571
- const pollIntervalMs = options?.pollIntervalMs ?? 30000
572
- const startTime = Date.now()
573
-
574
- while (Date.now() - startTime < maxWaitMs) {
575
- const result = await this.describeTextTranslationJob({ JobId: jobId })
576
- const job = result.TextTranslationJobProperties
577
-
578
- if (job?.JobStatus === 'COMPLETED' || job?.JobStatus === 'COMPLETED_WITH_ERROR') {
579
- return job
580
- }
581
- if (job?.JobStatus === 'FAILED' || job?.JobStatus === 'STOPPED') {
582
- throw new Error(`Translation job ${jobId} failed: ${job.Message}`)
583
- }
584
-
585
- await new Promise(resolve => setTimeout(resolve, pollIntervalMs))
586
- }
587
-
588
- throw new Error(`Timeout waiting for translation job ${jobId}`)
589
- }
590
-
591
- /**
592
- * Get all supported language codes
593
- */
594
- async getSupportedLanguages(): Promise<string[]> {
595
- const result = await this.listLanguages()
596
- return result.Languages?.map(l => l.LanguageCode || '').filter(Boolean) || []
597
- }
598
- }
599
-
600
- // ============================================================================
601
- // Helper Functions
602
- // ============================================================================
603
-
604
- /**
605
- * Quick translation
606
- */
607
- export async function translate(
608
- text: string,
609
- targetLanguage: string,
610
- options?: {
611
- sourceLanguage?: string
612
- region?: string
613
- },
614
- ): Promise<string> {
615
- const client = new TranslateClient(options?.region || 'us-east-1')
616
- return client.translate(text, targetLanguage, options?.sourceLanguage || 'auto')
617
- }
618
-
619
- /**
620
- * Translate to multiple languages
621
- */
622
- export async function translateToMultiple(
623
- text: string,
624
- targetLanguages: string[],
625
- options?: {
626
- sourceLanguage?: string
627
- region?: string
628
- },
629
- ): Promise<Record<string, string>> {
630
- const client = new TranslateClient(options?.region || 'us-east-1')
631
- return client.translateToMultiple(text, targetLanguages, options?.sourceLanguage || 'auto')
632
- }
633
-
634
- /**
635
- * List supported languages
636
- */
637
- export async function listLanguages(region?: string): Promise<Language[]> {
638
- const client = new TranslateClient(region || 'us-east-1')
639
- const result = await client.listLanguages()
640
- return result.Languages || []
641
- }