@hanzo/s3 0.6.4 → 8.0.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.
Files changed (119) hide show
  1. package/LICENSE +202 -0
  2. package/MAINTAINERS.md +62 -0
  3. package/README.md +262 -0
  4. package/README_zh_CN.md +192 -0
  5. package/dist/esm/AssumeRoleProvider.d.mts +86 -0
  6. package/dist/esm/AssumeRoleProvider.mjs +183 -0
  7. package/dist/esm/CredentialProvider.d.mts +22 -0
  8. package/dist/esm/CredentialProvider.mjs +48 -0
  9. package/dist/esm/Credentials.d.mts +22 -0
  10. package/dist/esm/Credentials.mjs +38 -0
  11. package/dist/esm/IamAwsProvider.d.mts +27 -0
  12. package/dist/esm/IamAwsProvider.mjs +189 -0
  13. package/dist/esm/errors.d.mts +82 -0
  14. package/dist/esm/errors.mjs +117 -0
  15. package/dist/esm/helpers.d.mts +156 -0
  16. package/dist/esm/helpers.mjs +218 -0
  17. package/dist/esm/internal/async.d.mts +9 -0
  18. package/dist/esm/internal/async.mjs +14 -0
  19. package/dist/esm/internal/callbackify.d.mts +1 -0
  20. package/dist/esm/internal/callbackify.mjs +15 -0
  21. package/dist/esm/internal/client.d.mts +394 -0
  22. package/dist/esm/internal/client.mjs +3007 -0
  23. package/dist/esm/internal/copy-conditions.d.mts +10 -0
  24. package/dist/esm/internal/copy-conditions.mjs +25 -0
  25. package/dist/esm/internal/extensions.d.mts +18 -0
  26. package/dist/esm/internal/extensions.mjs +114 -0
  27. package/dist/esm/internal/helper.d.mts +177 -0
  28. package/dist/esm/internal/helper.mjs +552 -0
  29. package/dist/esm/internal/join-host-port.d.mts +11 -0
  30. package/dist/esm/internal/join-host-port.mjs +23 -0
  31. package/dist/esm/internal/post-policy.d.mts +17 -0
  32. package/dist/esm/internal/post-policy.mjs +98 -0
  33. package/dist/esm/internal/request.d.mts +11 -0
  34. package/dist/esm/internal/request.mjs +75 -0
  35. package/dist/esm/internal/response.d.mts +8 -0
  36. package/dist/esm/internal/response.mjs +16 -0
  37. package/dist/esm/internal/s3-endpoints.d.mts +38 -0
  38. package/dist/esm/internal/s3-endpoints.mjs +68 -0
  39. package/dist/esm/internal/type.d.mts +482 -0
  40. package/dist/esm/internal/type.mjs +30 -0
  41. package/dist/esm/internal/xml-parser.d.mts +93 -0
  42. package/dist/esm/internal/xml-parser.mjs +819 -0
  43. package/dist/esm/notification.d.mts +58 -0
  44. package/dist/esm/notification.mjs +209 -0
  45. package/dist/esm/s3.d.mts +40 -0
  46. package/dist/esm/s3.mjs +86 -0
  47. package/dist/esm/signing.d.mts +5 -0
  48. package/dist/esm/signing.mjs +258 -0
  49. package/dist/main/AssumeRoleProvider.d.ts +86 -0
  50. package/dist/main/AssumeRoleProvider.js +191 -0
  51. package/dist/main/CredentialProvider.d.ts +22 -0
  52. package/dist/main/CredentialProvider.js +55 -0
  53. package/dist/main/Credentials.d.ts +22 -0
  54. package/dist/main/Credentials.js +45 -0
  55. package/dist/main/IamAwsProvider.d.ts +27 -0
  56. package/dist/main/IamAwsProvider.js +198 -0
  57. package/dist/main/errors.d.ts +82 -0
  58. package/dist/main/errors.js +138 -0
  59. package/dist/main/helpers.d.ts +156 -0
  60. package/dist/main/helpers.js +233 -0
  61. package/dist/main/internal/async.d.ts +9 -0
  62. package/dist/main/internal/async.js +24 -0
  63. package/dist/main/internal/callbackify.d.ts +1 -0
  64. package/dist/main/internal/callbackify.js +21 -0
  65. package/dist/main/internal/client.d.ts +394 -0
  66. package/dist/main/internal/client.js +3014 -0
  67. package/dist/main/internal/copy-conditions.d.ts +10 -0
  68. package/dist/main/internal/copy-conditions.js +31 -0
  69. package/dist/main/internal/extensions.d.ts +18 -0
  70. package/dist/main/internal/extensions.js +122 -0
  71. package/dist/main/internal/helper.d.ts +177 -0
  72. package/dist/main/internal/helper.js +608 -0
  73. package/dist/main/internal/join-host-port.d.ts +11 -0
  74. package/dist/main/internal/join-host-port.js +29 -0
  75. package/dist/main/internal/post-policy.d.ts +17 -0
  76. package/dist/main/internal/post-policy.js +107 -0
  77. package/dist/main/internal/request.d.ts +11 -0
  78. package/dist/main/internal/request.js +83 -0
  79. package/dist/main/internal/response.d.ts +8 -0
  80. package/dist/main/internal/response.js +24 -0
  81. package/dist/main/internal/s3-endpoints.d.ts +38 -0
  82. package/dist/main/internal/s3-endpoints.js +73 -0
  83. package/dist/main/internal/type.d.ts +482 -0
  84. package/dist/main/internal/type.js +42 -0
  85. package/dist/main/internal/xml-parser.d.ts +93 -0
  86. package/dist/main/internal/xml-parser.js +849 -0
  87. package/dist/main/notification.d.ts +58 -0
  88. package/dist/main/notification.js +230 -0
  89. package/dist/main/s3.d.ts +40 -0
  90. package/dist/main/s3.js +117 -0
  91. package/dist/main/signing.d.ts +5 -0
  92. package/dist/main/signing.js +269 -0
  93. package/package.json +146 -39
  94. package/src/AssumeRoleProvider.ts +262 -0
  95. package/src/CredentialProvider.ts +54 -0
  96. package/src/Credentials.ts +44 -0
  97. package/src/IamAwsProvider.ts +234 -0
  98. package/src/errors.ts +120 -0
  99. package/src/helpers.ts +354 -0
  100. package/src/internal/async.ts +14 -0
  101. package/src/internal/callbackify.ts +19 -0
  102. package/src/internal/client.ts +3412 -0
  103. package/src/internal/copy-conditions.ts +30 -0
  104. package/src/internal/extensions.ts +140 -0
  105. package/src/internal/helper.ts +606 -0
  106. package/src/internal/join-host-port.ts +23 -0
  107. package/src/internal/post-policy.ts +99 -0
  108. package/src/internal/request.ts +102 -0
  109. package/src/internal/response.ts +26 -0
  110. package/src/internal/s3-endpoints.ts +70 -0
  111. package/src/internal/type.ts +577 -0
  112. package/src/internal/xml-parser.ts +871 -0
  113. package/src/notification.ts +254 -0
  114. package/src/s3.ts +155 -0
  115. package/src/signing.ts +325 -0
  116. package/lib/index.js +0 -450
  117. package/lib/index.js.map +0 -7
  118. package/lib/perfTest.js +0 -91
  119. package/lib/perfTest.js.map +0 -7
@@ -0,0 +1,577 @@
1
+ import type * as http from 'node:http'
2
+ import type { Readable as ReadableStream } from 'node:stream'
3
+
4
+ import type { CopyDestinationOptions, CopySourceOptions } from '../helpers.ts'
5
+ import type { CopyConditions } from './copy-conditions.ts'
6
+
7
+ export type VersionIdentificator = {
8
+ versionId?: string
9
+ }
10
+
11
+ export type GetObjectOpts = VersionIdentificator & {
12
+ SSECustomerAlgorithm?: string
13
+ SSECustomerKey?: string
14
+ SSECustomerKeyMD5?: string
15
+ }
16
+
17
+ export type Binary = string | Buffer
18
+
19
+ // nodejs IncomingHttpHeaders is Record<string, string | string[]>, but it's actually this:
20
+ export type ResponseHeader = Record<string, string>
21
+
22
+ export type ObjectMetaData = Record<string, string | number>
23
+
24
+ export type RequestHeaders = Record<string, string | boolean | number | undefined>
25
+ export type EnabledOrDisabledStatus = 'Enabled' | 'Disabled'
26
+
27
+ export const ENCRYPTION_TYPES = {
28
+ SSEC: 'SSE-C',
29
+ KMS: 'KMS',
30
+ } as const
31
+
32
+ export type ENCRYPTION_TYPES = (typeof ENCRYPTION_TYPES)[keyof typeof ENCRYPTION_TYPES]
33
+
34
+ export type Encryption =
35
+ | {
36
+ type: typeof ENCRYPTION_TYPES.SSEC
37
+ }
38
+ | {
39
+ type: typeof ENCRYPTION_TYPES.KMS
40
+ SSEAlgorithm?: string
41
+ KMSMasterKeyID?: string
42
+ }
43
+
44
+ export const RETENTION_MODES = {
45
+ GOVERNANCE: 'GOVERNANCE',
46
+ COMPLIANCE: 'COMPLIANCE',
47
+ } as const
48
+ export type RETENTION_MODES = (typeof RETENTION_MODES)[keyof typeof RETENTION_MODES]
49
+
50
+ export const RETENTION_VALIDITY_UNITS = {
51
+ DAYS: 'Days',
52
+ YEARS: 'Years',
53
+ } as const
54
+ export type RETENTION_VALIDITY_UNITS = (typeof RETENTION_VALIDITY_UNITS)[keyof typeof RETENTION_VALIDITY_UNITS]
55
+
56
+ export const LEGAL_HOLD_STATUS = {
57
+ ENABLED: 'ON',
58
+ DISABLED: 'OFF',
59
+ } as const
60
+ export type LEGAL_HOLD_STATUS = (typeof LEGAL_HOLD_STATUS)[keyof typeof LEGAL_HOLD_STATUS]
61
+
62
+ export type Transport = Pick<typeof http, 'request'>
63
+
64
+ export interface IRequest {
65
+ protocol: string
66
+ port?: number | string
67
+ method: string
68
+ path: string
69
+ headers: RequestHeaders
70
+ }
71
+
72
+ export type ICanonicalRequest = string
73
+
74
+ export interface IncompleteUploadedBucketItem {
75
+ key: string
76
+ uploadId: string
77
+ size: number
78
+ }
79
+
80
+ export interface MetadataItem {
81
+ Key: string
82
+ Value: string
83
+ }
84
+
85
+ export interface ItemBucketMetadataList {
86
+ Items: MetadataItem[]
87
+ }
88
+
89
+ export interface ItemBucketMetadata {
90
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
+ [key: string]: any
92
+ }
93
+ export interface ItemBucketTags {
94
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ [key: string]: any
96
+ }
97
+
98
+ export interface BucketItemFromList {
99
+ name: string
100
+ creationDate: Date
101
+ }
102
+
103
+ export interface BucketItemCopy {
104
+ etag: string
105
+ lastModified: Date
106
+ }
107
+
108
+ export type BucketItem =
109
+ | {
110
+ name: string
111
+ size: number
112
+ etag: string
113
+ prefix?: never
114
+ lastModified: Date
115
+ }
116
+ | {
117
+ name?: never
118
+ etag?: never
119
+ lastModified?: never
120
+ prefix: string
121
+ size: 0
122
+ }
123
+
124
+ export type BucketItemWithMetadata = BucketItem & {
125
+ metadata?: ItemBucketMetadata | ItemBucketMetadataList
126
+ tags?: ItemBucketTags
127
+ }
128
+
129
+ export interface BucketStream<T> extends ReadableStream {
130
+ on(event: 'data', listener: (item: T) => void): this
131
+
132
+ on(event: 'end' | 'pause' | 'readable' | 'resume' | 'close', listener: () => void): this
133
+
134
+ on(event: 'error', listener: (err: Error) => void): this
135
+
136
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
+ on(event: string | symbol, listener: (...args: any[]) => void): this
138
+ }
139
+
140
+ export interface BucketItemStat {
141
+ size: number
142
+ etag: string
143
+ lastModified: Date
144
+ metaData: ItemBucketMetadata
145
+ versionId?: string | null
146
+ }
147
+
148
+ export type StatObjectOpts = {
149
+ versionId?: string
150
+ }
151
+
152
+ /* Replication Config types */
153
+ export type ReplicationRuleStatus = {
154
+ Status: EnabledOrDisabledStatus
155
+ }
156
+
157
+ export type Tag = {
158
+ Key: string
159
+ Value: string
160
+ }
161
+
162
+ export type Tags = Record<string, string>
163
+
164
+ export type ReplicationRuleDestination = {
165
+ Bucket: string
166
+ StorageClass: string
167
+ }
168
+ export type ReplicationRuleAnd = {
169
+ Prefix: string
170
+ Tags: Tag[]
171
+ }
172
+
173
+ export type ReplicationRuleFilter = {
174
+ Prefix: string
175
+ And: ReplicationRuleAnd
176
+ Tag: Tag
177
+ }
178
+
179
+ export type ReplicaModifications = {
180
+ Status: ReplicationRuleStatus
181
+ }
182
+
183
+ export type SourceSelectionCriteria = {
184
+ ReplicaModifications: ReplicaModifications
185
+ }
186
+
187
+ export type ExistingObjectReplication = {
188
+ Status: ReplicationRuleStatus
189
+ }
190
+
191
+ export type ReplicationRule = {
192
+ ID: string
193
+ Status: ReplicationRuleStatus
194
+ Priority: number
195
+ DeleteMarkerReplication: ReplicationRuleStatus // should be set to "Disabled" by default
196
+ DeleteReplication: ReplicationRuleStatus
197
+ Destination: ReplicationRuleDestination
198
+ Filter: ReplicationRuleFilter
199
+ SourceSelectionCriteria: SourceSelectionCriteria
200
+ ExistingObjectReplication: ExistingObjectReplication
201
+ }
202
+
203
+ export type ReplicationConfigOpts = {
204
+ role: string
205
+ rules: ReplicationRule[]
206
+ }
207
+
208
+ export type ReplicationConfig = {
209
+ ReplicationConfiguration: ReplicationConfigOpts
210
+ }
211
+ /* Replication Config types */
212
+
213
+ export type ResultCallback<T> = (error: Error | null, result: T) => void
214
+
215
+ export type GetObjectLegalHoldOptions = {
216
+ versionId: string
217
+ }
218
+ /**
219
+ * @deprecated keep for backward compatible, use `LEGAL_HOLD_STATUS` instead
220
+ */
221
+ export type LegalHoldStatus = LEGAL_HOLD_STATUS
222
+
223
+ export type PutObjectLegalHoldOptions = {
224
+ versionId?: string
225
+ status: LEGAL_HOLD_STATUS
226
+ }
227
+
228
+ export interface UploadedObjectInfo {
229
+ etag: string
230
+ versionId: string | null
231
+ }
232
+
233
+ export interface RetentionOptions {
234
+ versionId: string
235
+ mode?: RETENTION_MODES
236
+ retainUntilDate?: IsoDate
237
+ governanceBypass?: boolean
238
+ }
239
+ export type Retention = RetentionOptions | EmptyObject
240
+ export type IsoDate = string
241
+ export type EmptyObject = Record<string, never>
242
+
243
+ export type ObjectLockInfo =
244
+ | {
245
+ objectLockEnabled: EnabledOrDisabledStatus
246
+ mode: RETENTION_MODES
247
+ unit: RETENTION_VALIDITY_UNITS
248
+ validity: number
249
+ }
250
+ | EmptyObject
251
+
252
+ export type ObjectLockConfigParam = {
253
+ ObjectLockEnabled?: 'Enabled' | undefined
254
+ Rule?:
255
+ | {
256
+ DefaultRetention:
257
+ | {
258
+ Mode: RETENTION_MODES
259
+ Days: number
260
+ Years: number
261
+ }
262
+ | EmptyObject
263
+ }
264
+ | EmptyObject
265
+ }
266
+
267
+ export type VersioningEnabled = 'Enabled'
268
+ export type VersioningSuspended = 'Suspended'
269
+
270
+ export type TaggingOpts = {
271
+ versionId: string
272
+ }
273
+
274
+ export type PutTaggingParams = {
275
+ bucketName: string
276
+ objectName?: string
277
+ tags: Tags
278
+ putOpts?: TaggingOpts
279
+ }
280
+
281
+ export type RemoveTaggingParams = {
282
+ bucketName: string
283
+ objectName?: string
284
+ removeOpts?: TaggingOpts
285
+ }
286
+
287
+ export type InputSerialization = {
288
+ CompressionType?: 'NONE' | 'GZIP' | 'BZIP2'
289
+ CSV?: {
290
+ AllowQuotedRecordDelimiter?: boolean
291
+ Comments?: string
292
+ FieldDelimiter?: string
293
+ FileHeaderInfo?: 'NONE' | 'IGNORE' | 'USE'
294
+ QuoteCharacter?: string
295
+ QuoteEscapeCharacter?: string
296
+ RecordDelimiter?: string
297
+ }
298
+ JSON?: {
299
+ Type: 'DOCUMENT' | 'LINES'
300
+ }
301
+ Parquet?: EmptyObject
302
+ }
303
+
304
+ export type OutputSerialization = {
305
+ CSV?: {
306
+ FieldDelimiter?: string
307
+ QuoteCharacter?: string
308
+ QuoteEscapeCharacter?: string
309
+ QuoteFields?: string
310
+ RecordDelimiter?: string
311
+ }
312
+ JSON?: {
313
+ RecordDelimiter?: string
314
+ }
315
+ }
316
+
317
+ export type SelectProgress = { Enabled: boolean }
318
+ export type ScanRange = { Start: number; End: number }
319
+ export type SelectOptions = {
320
+ expression: string
321
+ expressionType?: string
322
+ inputSerialization: InputSerialization
323
+ outputSerialization: OutputSerialization
324
+ requestProgress?: SelectProgress
325
+ scanRange?: ScanRange
326
+ }
327
+ export type Expiration = {
328
+ Date?: string
329
+ Days: number
330
+ DeleteMarker?: boolean
331
+ DeleteAll?: boolean
332
+ }
333
+
334
+ export type RuleFilterAnd = {
335
+ Prefix: string
336
+ Tags: Tag[]
337
+ }
338
+ export type RuleFilter = {
339
+ And?: RuleFilterAnd
340
+ Prefix: string
341
+ Tag?: Tag[]
342
+ }
343
+
344
+ export type NoncurrentVersionExpiration = {
345
+ NoncurrentDays: number
346
+ NewerNoncurrentVersions?: number
347
+ }
348
+
349
+ export type NoncurrentVersionTransition = {
350
+ StorageClass: string
351
+ NoncurrentDays?: number
352
+ NewerNoncurrentVersions?: number
353
+ }
354
+
355
+ export type Transition = {
356
+ Date?: string
357
+ StorageClass: string
358
+ Days: number
359
+ }
360
+ export type AbortIncompleteMultipartUpload = {
361
+ DaysAfterInitiation: number
362
+ }
363
+ export type LifecycleRule = {
364
+ AbortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload
365
+ ID: string
366
+ Prefix?: string
367
+ Status?: string
368
+ Expiration?: Expiration
369
+ Filter?: RuleFilter
370
+ NoncurrentVersionExpiration?: NoncurrentVersionExpiration
371
+ NoncurrentVersionTransition?: NoncurrentVersionTransition
372
+ Transition?: Transition
373
+ }
374
+
375
+ export type LifecycleConfig = {
376
+ Rule: LifecycleRule[]
377
+ }
378
+
379
+ export type LifeCycleConfigParam = LifecycleConfig | null | undefined | ''
380
+
381
+ export type ApplySSEByDefault = {
382
+ KmsMasterKeyID?: string
383
+ SSEAlgorithm: string
384
+ }
385
+
386
+ export type EncryptionRule = {
387
+ ApplyServerSideEncryptionByDefault?: ApplySSEByDefault
388
+ }
389
+
390
+ export type EncryptionConfig = {
391
+ Rule: EncryptionRule[]
392
+ }
393
+
394
+ export type GetObjectRetentionOpts = {
395
+ versionId: string
396
+ }
397
+
398
+ export type ObjectRetentionInfo = {
399
+ mode: RETENTION_MODES
400
+ retainUntilDate: string
401
+ }
402
+
403
+ export type RemoveObjectsEntry = {
404
+ name: string
405
+ versionId?: string
406
+ }
407
+ export type ObjectName = string
408
+
409
+ export type RemoveObjectsParam = ObjectName[] | RemoveObjectsEntry[]
410
+
411
+ export type RemoveObjectsRequestEntry = {
412
+ Key: string
413
+ VersionId?: string
414
+ }
415
+
416
+ export type RemoveObjectsResponse =
417
+ | null
418
+ | undefined
419
+ | {
420
+ Error?: {
421
+ Code?: string
422
+ Message?: string
423
+ Key?: string
424
+ VersionId?: string
425
+ }
426
+ }
427
+
428
+ export type CopyObjectResultV1 = {
429
+ etag: string
430
+ lastModified: string | Date
431
+ }
432
+ export type CopyObjectResultV2 = {
433
+ Bucket?: string
434
+ Key?: string
435
+ LastModified: string | Date
436
+ MetaData?: ResponseHeader
437
+ VersionId?: string | null
438
+ SourceVersionId?: string | null
439
+ Etag?: string
440
+ Size?: number
441
+ }
442
+
443
+ export type CopyObjectResult = CopyObjectResultV1 | CopyObjectResultV2
444
+ export type CopyObjectParams = [CopySourceOptions, CopyDestinationOptions] | [string, string, string, CopyConditions?]
445
+
446
+ export type ExcludedPrefix = {
447
+ Prefix: string
448
+ }
449
+ export type BucketVersioningConfiguration = {
450
+ Status: VersioningEnabled | VersioningSuspended
451
+ /* Below are Hanzo S3 only extensions */
452
+ MFADelete?: string
453
+ ExcludedPrefixes?: ExcludedPrefix[]
454
+ ExcludeFolders?: boolean
455
+ }
456
+
457
+ export type UploadPartConfig = {
458
+ bucketName: string
459
+ objectName: string
460
+ uploadID: string
461
+ partNumber: number
462
+ headers: RequestHeaders
463
+ sourceObj: string
464
+ }
465
+
466
+ export type PreSignRequestParams = { [key: string]: string }
467
+
468
+ /** List object api types **/
469
+
470
+ // Common types
471
+ export type CommonPrefix = {
472
+ Prefix: string
473
+ }
474
+
475
+ export type Owner = {
476
+ ID: string
477
+ DisplayName: string
478
+ }
479
+
480
+ export type Metadata = {
481
+ Items: MetadataItem[]
482
+ }
483
+
484
+ export type ObjectInfo = {
485
+ key?: string
486
+ name?: string
487
+ lastModified?: Date // time string of format "2006-01-02T15:04:05.000Z"
488
+ etag?: string
489
+ owner?: Owner
490
+ storageClass?: string
491
+ userMetadata?: Metadata
492
+ userTags?: string
493
+ prefix?: string
494
+ size?: number
495
+ }
496
+
497
+ export type ListObjectQueryRes = {
498
+ isTruncated?: boolean
499
+ nextMarker?: string
500
+ objects?: ObjectInfo[]
501
+ // version listing
502
+ keyMarker?: string
503
+ versionIdMarker?: string
504
+ }
505
+
506
+ export type ListObjectQueryOpts = {
507
+ Delimiter?: string
508
+ MaxKeys?: number
509
+ IncludeVersion?: boolean
510
+ // version listing
511
+ keyMarker?: string
512
+ versionIdMarker?: string
513
+ }
514
+ /** List object api types **/
515
+
516
+ export type ObjectVersionEntry = {
517
+ IsLatest?: string
518
+ VersionId?: string
519
+ }
520
+
521
+ export type ObjectRowEntry = ObjectVersionEntry & {
522
+ Key: string
523
+ LastModified?: Date | undefined
524
+ ETag?: string
525
+ Size?: string
526
+ Owner?: Owner
527
+ StorageClass?: string
528
+ }
529
+
530
+ export type ListObjectV2Res = {
531
+ objects: BucketItem[]
532
+ isTruncated: boolean
533
+ nextContinuationToken: string
534
+ }
535
+
536
+ export type NotificationConfigEntry = {
537
+ Id: string
538
+ Event: string[]
539
+ Filter: { Name: string; Value: string }[]
540
+ }
541
+
542
+ export type TopicConfigEntry = NotificationConfigEntry & { Topic: string }
543
+ export type QueueConfigEntry = NotificationConfigEntry & { Queue: string }
544
+ export type CloudFunctionConfigEntry = NotificationConfigEntry & { CloudFunction: string }
545
+
546
+ export type NotificationConfigResult = {
547
+ TopicConfiguration: TopicConfigEntry[]
548
+ QueueConfiguration: QueueConfigEntry[]
549
+ CloudFunctionConfiguration: CloudFunctionConfigEntry[]
550
+ }
551
+
552
+ export interface ListBucketResultV1 {
553
+ Name?: string
554
+ Prefix?: string
555
+ ContinuationToken?: string
556
+ KeyCount?: string
557
+ Marker?: string
558
+ MaxKeys?: string
559
+ Delimiter?: string
560
+ IsTruncated?: boolean
561
+ Contents?: ObjectRowEntry[]
562
+ NextKeyMarker?: string
563
+ CommonPrefixes?: CommonPrefix[]
564
+ Version?: ObjectRowEntry[]
565
+ DeleteMarker?: ObjectRowEntry[]
566
+ VersionIdMarker?: string
567
+ NextVersionIdMarker?: string
568
+ NextMarker?: string
569
+ }
570
+
571
+ export interface PostPolicyResult {
572
+ postURL: string
573
+ formData: {
574
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
575
+ [key: string]: any
576
+ }
577
+ }