@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,58 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ import type { TypedClient } from "./internal/client.mjs";
3
+ type Event = unknown;
4
+ export declare class TargetConfig {
5
+ private Filter?;
6
+ private Event?;
7
+ private Id;
8
+ setId(id: unknown): void;
9
+ addEvent(newevent: Event): void;
10
+ addFilterSuffix(suffix: string): void;
11
+ addFilterPrefix(prefix: string): void;
12
+ }
13
+ export declare class TopicConfig extends TargetConfig {
14
+ private Topic;
15
+ constructor(arn: string);
16
+ }
17
+ export declare class QueueConfig extends TargetConfig {
18
+ private Queue;
19
+ constructor(arn: string);
20
+ }
21
+ export declare class CloudFunctionConfig extends TargetConfig {
22
+ private CloudFunction;
23
+ constructor(arn: string);
24
+ }
25
+ export declare class NotificationConfig {
26
+ private TopicConfiguration?;
27
+ private CloudFunctionConfiguration?;
28
+ private QueueConfiguration?;
29
+ add(target: TargetConfig): void;
30
+ }
31
+ export declare const buildARN: (partition: string, service: string, region: string, accountId: string, resource: string) => string;
32
+ export declare const ObjectCreatedAll = "s3:ObjectCreated:*";
33
+ export declare const ObjectCreatedPut = "s3:ObjectCreated:Put";
34
+ export declare const ObjectCreatedPost = "s3:ObjectCreated:Post";
35
+ export declare const ObjectCreatedCopy = "s3:ObjectCreated:Copy";
36
+ export declare const ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload";
37
+ export declare const ObjectRemovedAll = "s3:ObjectRemoved:*";
38
+ export declare const ObjectRemovedDelete = "s3:ObjectRemoved:Delete";
39
+ export declare const ObjectRemovedDeleteMarkerCreated = "s3:ObjectRemoved:DeleteMarkerCreated";
40
+ export declare const ObjectReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject";
41
+ export type NotificationEvent = 's3:ObjectCreated:*' | 's3:ObjectCreated:Put' | 's3:ObjectCreated:Post' | 's3:ObjectCreated:Copy' | 's3:ObjectCreated:CompleteMultipartUpload' | 's3:ObjectRemoved:*' | 's3:ObjectRemoved:Delete' | 's3:ObjectRemoved:DeleteMarkerCreated' | 's3:ReducedRedundancyLostObject' | 's3:TestEvent' | 's3:ObjectRestore:Post' | 's3:ObjectRestore:Completed' | 's3:Replication:OperationFailedReplication' | 's3:Replication:OperationMissedThreshold' | 's3:Replication:OperationReplicatedAfterThreshold' | 's3:Replication:OperationNotTracked' | string;
42
+ export type NotificationRecord = unknown;
43
+ export declare class NotificationPoller extends EventEmitter<{
44
+ notification: (event: NotificationRecord) => void;
45
+ error: (error: unknown) => void;
46
+ }> {
47
+ private client;
48
+ private bucketName;
49
+ private prefix;
50
+ private suffix;
51
+ private events;
52
+ private ending;
53
+ constructor(client: TypedClient, bucketName: string, prefix: string, suffix: string, events: NotificationEvent[]);
54
+ start(): void;
55
+ stop(): void;
56
+ checkForChanges(): void;
57
+ }
58
+ export {};
@@ -0,0 +1,209 @@
1
+ /*
2
+ * Hanzo S3 Javascript Library for Amazon S3 Compatible Cloud Storage, (C) 2016 Hanzo AI, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { EventEmitter } from 'eventemitter3';
18
+ import jsonLineParser from 'stream-json/jsonl/Parser.js';
19
+ import { DEFAULT_REGION } from "./helpers.mjs";
20
+ import { pipesetup, uriEscape } from "./internal/helper.mjs";
21
+
22
+ // TODO: type this
23
+
24
+ // Base class for three supported configs.
25
+ export class TargetConfig {
26
+ setId(id) {
27
+ this.Id = id;
28
+ }
29
+ addEvent(newevent) {
30
+ if (!this.Event) {
31
+ this.Event = [];
32
+ }
33
+ this.Event.push(newevent);
34
+ }
35
+ addFilterSuffix(suffix) {
36
+ if (!this.Filter) {
37
+ this.Filter = {
38
+ S3Key: {
39
+ FilterRule: []
40
+ }
41
+ };
42
+ }
43
+ this.Filter.S3Key.FilterRule.push({
44
+ Name: 'suffix',
45
+ Value: suffix
46
+ });
47
+ }
48
+ addFilterPrefix(prefix) {
49
+ if (!this.Filter) {
50
+ this.Filter = {
51
+ S3Key: {
52
+ FilterRule: []
53
+ }
54
+ };
55
+ }
56
+ this.Filter.S3Key.FilterRule.push({
57
+ Name: 'prefix',
58
+ Value: prefix
59
+ });
60
+ }
61
+ }
62
+
63
+ // 1. Topic (simple notification service)
64
+ export class TopicConfig extends TargetConfig {
65
+ constructor(arn) {
66
+ super();
67
+ this.Topic = arn;
68
+ }
69
+ }
70
+
71
+ // 2. Queue (simple queue service)
72
+ export class QueueConfig extends TargetConfig {
73
+ constructor(arn) {
74
+ super();
75
+ this.Queue = arn;
76
+ }
77
+ }
78
+
79
+ // 3. CloudFront (lambda function)
80
+ export class CloudFunctionConfig extends TargetConfig {
81
+ constructor(arn) {
82
+ super();
83
+ this.CloudFunction = arn;
84
+ }
85
+ }
86
+
87
+ // Notification config - array of target configs.
88
+ // Target configs can be
89
+ // 1. Topic (simple notification service)
90
+ // 2. Queue (simple queue service)
91
+ // 3. CloudFront (lambda function)
92
+ export class NotificationConfig {
93
+ add(target) {
94
+ let instance;
95
+ if (target instanceof TopicConfig) {
96
+ instance = this.TopicConfiguration ?? (this.TopicConfiguration = []);
97
+ }
98
+ if (target instanceof QueueConfig) {
99
+ instance = this.QueueConfiguration ?? (this.QueueConfiguration = []);
100
+ }
101
+ if (target instanceof CloudFunctionConfig) {
102
+ instance = this.CloudFunctionConfiguration ?? (this.CloudFunctionConfiguration = []);
103
+ }
104
+ if (instance) {
105
+ instance.push(target);
106
+ }
107
+ }
108
+ }
109
+ export const buildARN = (partition, service, region, accountId, resource) => {
110
+ return 'arn:' + partition + ':' + service + ':' + region + ':' + accountId + ':' + resource;
111
+ };
112
+ export const ObjectCreatedAll = 's3:ObjectCreated:*';
113
+ export const ObjectCreatedPut = 's3:ObjectCreated:Put';
114
+ export const ObjectCreatedPost = 's3:ObjectCreated:Post';
115
+ export const ObjectCreatedCopy = 's3:ObjectCreated:Copy';
116
+ export const ObjectCreatedCompleteMultipartUpload = 's3:ObjectCreated:CompleteMultipartUpload';
117
+ export const ObjectRemovedAll = 's3:ObjectRemoved:*';
118
+ export const ObjectRemovedDelete = 's3:ObjectRemoved:Delete';
119
+ export const ObjectRemovedDeleteMarkerCreated = 's3:ObjectRemoved:DeleteMarkerCreated';
120
+ export const ObjectReducedRedundancyLostObject = 's3:ReducedRedundancyLostObject';
121
+
122
+ // put string at least so auto-complete could work
123
+ // TODO: type this
124
+ // Poll for notifications, used in #listenBucketNotification.
125
+ // Listening constitutes repeatedly requesting s3 whether or not any
126
+ // changes have occurred.
127
+ export class NotificationPoller extends EventEmitter {
128
+ constructor(client, bucketName, prefix, suffix, events) {
129
+ super();
130
+ this.client = client;
131
+ this.bucketName = bucketName;
132
+ this.prefix = prefix;
133
+ this.suffix = suffix;
134
+ this.events = events;
135
+ this.ending = false;
136
+ }
137
+
138
+ // Starts the polling.
139
+ start() {
140
+ this.ending = false;
141
+ process.nextTick(() => {
142
+ this.checkForChanges();
143
+ });
144
+ }
145
+
146
+ // Stops the polling.
147
+ stop() {
148
+ this.ending = true;
149
+ }
150
+ checkForChanges() {
151
+ // Don't continue if we're looping again but are cancelled.
152
+ if (this.ending) {
153
+ return;
154
+ }
155
+ const method = 'GET';
156
+ const queries = [];
157
+ if (this.prefix) {
158
+ const prefix = uriEscape(this.prefix);
159
+ queries.push(`prefix=${prefix}`);
160
+ }
161
+ if (this.suffix) {
162
+ const suffix = uriEscape(this.suffix);
163
+ queries.push(`suffix=${suffix}`);
164
+ }
165
+ if (this.events) {
166
+ this.events.forEach(s3event => queries.push('events=' + uriEscape(s3event)));
167
+ }
168
+ queries.sort();
169
+ let query = '';
170
+ if (queries.length > 0) {
171
+ query = `${queries.join('&')}`;
172
+ }
173
+ const region = this.client.region || DEFAULT_REGION;
174
+ this.client.makeRequestAsync({
175
+ method,
176
+ bucketName: this.bucketName,
177
+ query
178
+ }, '', [200], region).then(response => {
179
+ const asm = jsonLineParser.make();
180
+ pipesetup(response, asm).on('data', data => {
181
+ // Data is flushed periodically (every 5 seconds), so we should
182
+ // handle it after flushing from the JSON parser.
183
+ let records = data.value.Records;
184
+ // If null (= no records), change to an empty array.
185
+ if (!records) {
186
+ records = [];
187
+ }
188
+
189
+ // Iterate over the notifications and emit them individually.
190
+ records.forEach(record => {
191
+ this.emit('notification', record);
192
+ });
193
+
194
+ // If we're done, stop.
195
+ if (this.ending) {
196
+ response === null || response === void 0 ? void 0 : response.destroy();
197
+ }
198
+ }).on('error', e => this.emit('error', e)).on('end', () => {
199
+ // Do it again, if we haven't cancelled yet.
200
+ process.nextTick(() => {
201
+ this.checkForChanges();
202
+ });
203
+ });
204
+ }, e => {
205
+ return this.emit('error', e);
206
+ });
207
+ }
208
+ }
209
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJqc29uTGluZVBhcnNlciIsIkRFRkFVTFRfUkVHSU9OIiwicGlwZXNldHVwIiwidXJpRXNjYXBlIiwiVGFyZ2V0Q29uZmlnIiwic2V0SWQiLCJpZCIsIklkIiwiYWRkRXZlbnQiLCJuZXdldmVudCIsIkV2ZW50IiwicHVzaCIsImFkZEZpbHRlclN1ZmZpeCIsInN1ZmZpeCIsIkZpbHRlciIsIlMzS2V5IiwiRmlsdGVyUnVsZSIsIk5hbWUiLCJWYWx1ZSIsImFkZEZpbHRlclByZWZpeCIsInByZWZpeCIsIlRvcGljQ29uZmlnIiwiY29uc3RydWN0b3IiLCJhcm4iLCJUb3BpYyIsIlF1ZXVlQ29uZmlnIiwiUXVldWUiLCJDbG91ZEZ1bmN0aW9uQ29uZmlnIiwiQ2xvdWRGdW5jdGlvbiIsIk5vdGlmaWNhdGlvbkNvbmZpZyIsImFkZCIsInRhcmdldCIsImluc3RhbmNlIiwiVG9waWNDb25maWd1cmF0aW9uIiwiUXVldWVDb25maWd1cmF0aW9uIiwiQ2xvdWRGdW5jdGlvbkNvbmZpZ3VyYXRpb24iLCJidWlsZEFSTiIsInBhcnRpdGlvbiIsInNlcnZpY2UiLCJyZWdpb24iLCJhY2NvdW50SWQiLCJyZXNvdXJjZSIsIk9iamVjdENyZWF0ZWRBbGwiLCJPYmplY3RDcmVhdGVkUHV0IiwiT2JqZWN0Q3JlYXRlZFBvc3QiLCJPYmplY3RDcmVhdGVkQ29weSIsIk9iamVjdENyZWF0ZWRDb21wbGV0ZU11bHRpcGFydFVwbG9hZCIsIk9iamVjdFJlbW92ZWRBbGwiLCJPYmplY3RSZW1vdmVkRGVsZXRlIiwiT2JqZWN0UmVtb3ZlZERlbGV0ZU1hcmtlckNyZWF0ZWQiLCJPYmplY3RSZWR1Y2VkUmVkdW5kYW5jeUxvc3RPYmplY3QiLCJOb3RpZmljYXRpb25Qb2xsZXIiLCJjbGllbnQiLCJidWNrZXROYW1lIiwiZXZlbnRzIiwiZW5kaW5nIiwic3RhcnQiLCJwcm9jZXNzIiwibmV4dFRpY2siLCJjaGVja0ZvckNoYW5nZXMiLCJzdG9wIiwibWV0aG9kIiwicXVlcmllcyIsImZvckVhY2giLCJzM2V2ZW50Iiwic29ydCIsInF1ZXJ5IiwibGVuZ3RoIiwiam9pbiIsIm1ha2VSZXF1ZXN0QXN5bmMiLCJ0aGVuIiwicmVzcG9uc2UiLCJhc20iLCJtYWtlIiwib24iLCJkYXRhIiwicmVjb3JkcyIsInZhbHVlIiwiUmVjb3JkcyIsInJlY29yZCIsImVtaXQiLCJkZXN0cm95IiwiZSJdLCJzb3VyY2VzIjpbIm5vdGlmaWNhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogSGFuem8gUzMgSmF2YXNjcmlwdCBMaWJyYXJ5IGZvciBBbWF6b24gUzMgQ29tcGF0aWJsZSBDbG91ZCBTdG9yYWdlLCAoQykgMjAxNiBIYW56byBBSSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudGVtaXR0ZXIzJ1xuaW1wb3J0IGpzb25MaW5lUGFyc2VyIGZyb20gJ3N0cmVhbS1qc29uL2pzb25sL1BhcnNlci5qcydcblxuaW1wb3J0IHsgREVGQVVMVF9SRUdJT04gfSBmcm9tICcuL2hlbHBlcnMudHMnXG5pbXBvcnQgdHlwZSB7IFR5cGVkQ2xpZW50IH0gZnJvbSAnLi9pbnRlcm5hbC9jbGllbnQudHMnXG5pbXBvcnQgeyBwaXBlc2V0dXAsIHVyaUVzY2FwZSB9IGZyb20gJy4vaW50ZXJuYWwvaGVscGVyLnRzJ1xuXG4vLyBUT0RPOiB0eXBlIHRoaXNcblxudHlwZSBFdmVudCA9IHVua25vd25cblxuLy8gQmFzZSBjbGFzcyBmb3IgdGhyZWUgc3VwcG9ydGVkIGNvbmZpZ3MuXG5leHBvcnQgY2xhc3MgVGFyZ2V0Q29uZmlnIHtcbiAgcHJpdmF0ZSBGaWx0ZXI/OiB7IFMzS2V5OiB7IEZpbHRlclJ1bGU6IHsgTmFtZTogc3RyaW5nOyBWYWx1ZTogc3RyaW5nIH1bXSB9IH1cbiAgcHJpdmF0ZSBFdmVudD86IEV2ZW50W11cbiAgcHJpdmF0ZSBJZDogdW5rbm93blxuXG4gIHNldElkKGlkOiB1bmtub3duKSB7XG4gICAgdGhpcy5JZCA9IGlkXG4gIH1cblxuICBhZGRFdmVudChuZXdldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuRXZlbnQpIHtcbiAgICAgIHRoaXMuRXZlbnQgPSBbXVxuICAgIH1cbiAgICB0aGlzLkV2ZW50LnB1c2gobmV3ZXZlbnQpXG4gIH1cblxuICBhZGRGaWx0ZXJTdWZmaXgoc3VmZml4OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuRmlsdGVyKSB7XG4gICAgICB0aGlzLkZpbHRlciA9IHsgUzNLZXk6IHsgRmlsdGVyUnVsZTogW10gfSB9XG4gICAgfVxuICAgIHRoaXMuRmlsdGVyLlMzS2V5LkZpbHRlclJ1bGUucHVzaCh7IE5hbWU6ICdzdWZmaXgnLCBWYWx1ZTogc3VmZml4IH0pXG4gIH1cblxuICBhZGRGaWx0ZXJQcmVmaXgocHJlZml4OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuRmlsdGVyKSB7XG4gICAgICB0aGlzLkZpbHRlciA9IHsgUzNLZXk6IHsgRmlsdGVyUnVsZTogW10gfSB9XG4gICAgfVxuICAgIHRoaXMuRmlsdGVyLlMzS2V5LkZpbHRlclJ1bGUucHVzaCh7IE5hbWU6ICdwcmVmaXgnLCBWYWx1ZTogcHJlZml4IH0pXG4gIH1cbn1cblxuLy8gMS4gVG9waWMgKHNpbXBsZSBub3RpZmljYXRpb24gc2VydmljZSlcbmV4cG9ydCBjbGFzcyBUb3BpY0NvbmZpZyBleHRlbmRzIFRhcmdldENvbmZpZyB7XG4gIHByaXZhdGUgVG9waWM6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKGFybjogc3RyaW5nKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuVG9waWMgPSBhcm5cbiAgfVxufVxuXG4vLyAyLiBRdWV1ZSAoc2ltcGxlIHF1ZXVlIHNlcnZpY2UpXG5leHBvcnQgY2xhc3MgUXVldWVDb25maWcgZXh0ZW5kcyBUYXJnZXRDb25maWcge1xuICBwcml2YXRlIFF1ZXVlOiBzdHJpbmdcblxuICBjb25zdHJ1Y3Rvcihhcm46IHN0cmluZykge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLlF1ZXVlID0gYXJuXG4gIH1cbn1cblxuLy8gMy4gQ2xvdWRGcm9udCAobGFtYmRhIGZ1bmN0aW9uKVxuZXhwb3J0IGNsYXNzIENsb3VkRnVuY3Rpb25Db25maWcgZXh0ZW5kcyBUYXJnZXRDb25maWcge1xuICBwcml2YXRlIENsb3VkRnVuY3Rpb246IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKGFybjogc3RyaW5nKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuQ2xvdWRGdW5jdGlvbiA9IGFyblxuICB9XG59XG5cbi8vIE5vdGlmaWNhdGlvbiBjb25maWcgLSBhcnJheSBvZiB0YXJnZXQgY29uZmlncy5cbi8vIFRhcmdldCBjb25maWdzIGNhbiBiZVxuLy8gMS4gVG9waWMgKHNpbXBsZSBub3RpZmljYXRpb24gc2VydmljZSlcbi8vIDIuIFF1ZXVlIChzaW1wbGUgcXVldWUgc2VydmljZSlcbi8vIDMuIENsb3VkRnJvbnQgKGxhbWJkYSBmdW5jdGlvbilcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25Db25maWcge1xuICBwcml2YXRlIFRvcGljQ29uZmlndXJhdGlvbj86IFRhcmdldENvbmZpZ1tdXG4gIHByaXZhdGUgQ2xvdWRGdW5jdGlvbkNvbmZpZ3VyYXRpb24/OiBUYXJnZXRDb25maWdbXVxuICBwcml2YXRlIFF1ZXVlQ29uZmlndXJhdGlvbj86IFRhcmdldENvbmZpZ1tdXG5cbiAgYWRkKHRhcmdldDogVGFyZ2V0Q29uZmlnKSB7XG4gICAgbGV0IGluc3RhbmNlOiBUYXJnZXRDb25maWdbXSB8IHVuZGVmaW5lZFxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBUb3BpY0NvbmZpZykge1xuICAgICAgaW5zdGFuY2UgPSB0aGlzLlRvcGljQ29uZmlndXJhdGlvbiA/Pz0gW11cbiAgICB9XG4gICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIFF1ZXVlQ29uZmlnKSB7XG4gICAgICBpbnN0YW5jZSA9IHRoaXMuUXVldWVDb25maWd1cmF0aW9uID8/PSBbXVxuICAgIH1cbiAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgQ2xvdWRGdW5jdGlvbkNvbmZpZykge1xuICAgICAgaW5zdGFuY2UgPSB0aGlzLkNsb3VkRnVuY3Rpb25Db25maWd1cmF0aW9uID8/PSBbXVxuICAgIH1cbiAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgIGluc3RhbmNlLnB1c2godGFyZ2V0KVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRBUk4gPSAocGFydGl0aW9uOiBzdHJpbmcsIHNlcnZpY2U6IHN0cmluZywgcmVnaW9uOiBzdHJpbmcsIGFjY291bnRJZDogc3RyaW5nLCByZXNvdXJjZTogc3RyaW5nKSA9PiB7XG4gIHJldHVybiAnYXJuOicgKyBwYXJ0aXRpb24gKyAnOicgKyBzZXJ2aWNlICsgJzonICsgcmVnaW9uICsgJzonICsgYWNjb3VudElkICsgJzonICsgcmVzb3VyY2Vcbn1cbmV4cG9ydCBjb25zdCBPYmplY3RDcmVhdGVkQWxsID0gJ3MzOk9iamVjdENyZWF0ZWQ6KidcbmV4cG9ydCBjb25zdCBPYmplY3RDcmVhdGVkUHV0ID0gJ3MzOk9iamVjdENyZWF0ZWQ6UHV0J1xuZXhwb3J0IGNvbnN0IE9iamVjdENyZWF0ZWRQb3N0ID0gJ3MzOk9iamVjdENyZWF0ZWQ6UG9zdCdcbmV4cG9ydCBjb25zdCBPYmplY3RDcmVhdGVkQ29weSA9ICdzMzpPYmplY3RDcmVhdGVkOkNvcHknXG5leHBvcnQgY29uc3QgT2JqZWN0Q3JlYXRlZENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkID0gJ3MzOk9iamVjdENyZWF0ZWQ6Q29tcGxldGVNdWx0aXBhcnRVcGxvYWQnXG5leHBvcnQgY29uc3QgT2JqZWN0UmVtb3ZlZEFsbCA9ICdzMzpPYmplY3RSZW1vdmVkOionXG5leHBvcnQgY29uc3QgT2JqZWN0UmVtb3ZlZERlbGV0ZSA9ICdzMzpPYmplY3RSZW1vdmVkOkRlbGV0ZSdcbmV4cG9ydCBjb25zdCBPYmplY3RSZW1vdmVkRGVsZXRlTWFya2VyQ3JlYXRlZCA9ICdzMzpPYmplY3RSZW1vdmVkOkRlbGV0ZU1hcmtlckNyZWF0ZWQnXG5leHBvcnQgY29uc3QgT2JqZWN0UmVkdWNlZFJlZHVuZGFuY3lMb3N0T2JqZWN0ID0gJ3MzOlJlZHVjZWRSZWR1bmRhbmN5TG9zdE9iamVjdCdcbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvbkV2ZW50ID1cbiAgfCAnczM6T2JqZWN0Q3JlYXRlZDoqJ1xuICB8ICdzMzpPYmplY3RDcmVhdGVkOlB1dCdcbiAgfCAnczM6T2JqZWN0Q3JlYXRlZDpQb3N0J1xuICB8ICdzMzpPYmplY3RDcmVhdGVkOkNvcHknXG4gIHwgJ3MzOk9iamVjdENyZWF0ZWQ6Q29tcGxldGVNdWx0aXBhcnRVcGxvYWQnXG4gIHwgJ3MzOk9iamVjdFJlbW92ZWQ6KidcbiAgfCAnczM6T2JqZWN0UmVtb3ZlZDpEZWxldGUnXG4gIHwgJ3MzOk9iamVjdFJlbW92ZWQ6RGVsZXRlTWFya2VyQ3JlYXRlZCdcbiAgfCAnczM6UmVkdWNlZFJlZHVuZGFuY3lMb3N0T2JqZWN0J1xuICB8ICdzMzpUZXN0RXZlbnQnXG4gIHwgJ3MzOk9iamVjdFJlc3RvcmU6UG9zdCdcbiAgfCAnczM6T2JqZWN0UmVzdG9yZTpDb21wbGV0ZWQnXG4gIHwgJ3MzOlJlcGxpY2F0aW9uOk9wZXJhdGlvbkZhaWxlZFJlcGxpY2F0aW9uJ1xuICB8ICdzMzpSZXBsaWNhdGlvbjpPcGVyYXRpb25NaXNzZWRUaHJlc2hvbGQnXG4gIHwgJ3MzOlJlcGxpY2F0aW9uOk9wZXJhdGlvblJlcGxpY2F0ZWRBZnRlclRocmVzaG9sZCdcbiAgfCAnczM6UmVwbGljYXRpb246T3BlcmF0aW9uTm90VHJhY2tlZCdcbiAgfCBzdHJpbmcgLy8gcHV0IHN0cmluZyBhdCBsZWFzdCBzbyBhdXRvLWNvbXBsZXRlIGNvdWxkIHdvcmtcblxuLy8gVE9ETzogdHlwZSB0aGlzXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25SZWNvcmQgPSB1bmtub3duXG4vLyBQb2xsIGZvciBub3RpZmljYXRpb25zLCB1c2VkIGluICNsaXN0ZW5CdWNrZXROb3RpZmljYXRpb24uXG4vLyBMaXN0ZW5pbmcgY29uc3RpdHV0ZXMgcmVwZWF0ZWRseSByZXF1ZXN0aW5nIHMzIHdoZXRoZXIgb3Igbm90IGFueVxuLy8gY2hhbmdlcyBoYXZlIG9jY3VycmVkLlxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblBvbGxlciBleHRlbmRzIEV2ZW50RW1pdHRlcjx7XG4gIG5vdGlmaWNhdGlvbjogKGV2ZW50OiBOb3RpZmljYXRpb25SZWNvcmQpID0+IHZvaWRcbiAgZXJyb3I6IChlcnJvcjogdW5rbm93bikgPT4gdm9pZFxufT4ge1xuICBwcml2YXRlIGNsaWVudDogVHlwZWRDbGllbnRcbiAgcHJpdmF0ZSBidWNrZXROYW1lOiBzdHJpbmdcbiAgcHJpdmF0ZSBwcmVmaXg6IHN0cmluZ1xuICBwcml2YXRlIHN1ZmZpeDogc3RyaW5nXG4gIHByaXZhdGUgZXZlbnRzOiBOb3RpZmljYXRpb25FdmVudFtdXG4gIHByaXZhdGUgZW5kaW5nOiBib29sZWFuXG5cbiAgY29uc3RydWN0b3IoY2xpZW50OiBUeXBlZENsaWVudCwgYnVja2V0TmFtZTogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgc3VmZml4OiBzdHJpbmcsIGV2ZW50czogTm90aWZpY2F0aW9uRXZlbnRbXSkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50XG4gICAgdGhpcy5idWNrZXROYW1lID0gYnVja2V0TmFtZVxuICAgIHRoaXMucHJlZml4ID0gcHJlZml4XG4gICAgdGhpcy5zdWZmaXggPSBzdWZmaXhcbiAgICB0aGlzLmV2ZW50cyA9IGV2ZW50c1xuXG4gICAgdGhpcy5lbmRpbmcgPSBmYWxzZVxuICB9XG5cbiAgLy8gU3RhcnRzIHRoZSBwb2xsaW5nLlxuICBzdGFydCgpIHtcbiAgICB0aGlzLmVuZGluZyA9IGZhbHNlXG5cbiAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tGb3JDaGFuZ2VzKClcbiAgICB9KVxuICB9XG5cbiAgLy8gU3RvcHMgdGhlIHBvbGxpbmcuXG4gIHN0b3AoKSB7XG4gICAgdGhpcy5lbmRpbmcgPSB0cnVlXG4gIH1cblxuICBjaGVja0ZvckNoYW5nZXMoKSB7XG4gICAgLy8gRG9uJ3QgY29udGludWUgaWYgd2UncmUgbG9vcGluZyBhZ2FpbiBidXQgYXJlIGNhbmNlbGxlZC5cbiAgICBpZiAodGhpcy5lbmRpbmcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZCA9ICdHRVQnXG4gICAgY29uc3QgcXVlcmllcyA9IFtdXG4gICAgaWYgKHRoaXMucHJlZml4KSB7XG4gICAgICBjb25zdCBwcmVmaXggPSB1cmlFc2NhcGUodGhpcy5wcmVmaXgpXG4gICAgICBxdWVyaWVzLnB1c2goYHByZWZpeD0ke3ByZWZpeH1gKVxuICAgIH1cbiAgICBpZiAodGhpcy5zdWZmaXgpIHtcbiAgICAgIGNvbnN0IHN1ZmZpeCA9IHVyaUVzY2FwZSh0aGlzLnN1ZmZpeClcbiAgICAgIHF1ZXJpZXMucHVzaChgc3VmZml4PSR7c3VmZml4fWApXG4gICAgfVxuICAgIGlmICh0aGlzLmV2ZW50cykge1xuICAgICAgdGhpcy5ldmVudHMuZm9yRWFjaCgoczNldmVudCkgPT4gcXVlcmllcy5wdXNoKCdldmVudHM9JyArIHVyaUVzY2FwZShzM2V2ZW50KSkpXG4gICAgfVxuICAgIHF1ZXJpZXMuc29ydCgpXG5cbiAgICBsZXQgcXVlcnkgPSAnJ1xuICAgIGlmIChxdWVyaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHF1ZXJ5ID0gYCR7cXVlcmllcy5qb2luKCcmJyl9YFxuICAgIH1cbiAgICBjb25zdCByZWdpb24gPSB0aGlzLmNsaWVudC5yZWdpb24gfHwgREVGQVVMVF9SRUdJT05cblxuICAgIHRoaXMuY2xpZW50Lm1ha2VSZXF1ZXN0QXN5bmMoeyBtZXRob2QsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSwgcXVlcnkgfSwgJycsIFsyMDBdLCByZWdpb24pLnRoZW4oXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc3QgYXNtID0ganNvbkxpbmVQYXJzZXIubWFrZSgpXG5cbiAgICAgICAgcGlwZXNldHVwKHJlc3BvbnNlLCBhc20pXG4gICAgICAgICAgLm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIC8vIERhdGEgaXMgZmx1c2hlZCBwZXJpb2RpY2FsbHkgKGV2ZXJ5IDUgc2Vjb25kcyksIHNvIHdlIHNob3VsZFxuICAgICAgICAgICAgLy8gaGFuZGxlIGl0IGFmdGVyIGZsdXNoaW5nIGZyb20gdGhlIEpTT04gcGFyc2VyLlxuICAgICAgICAgICAgbGV0IHJlY29yZHMgPSBkYXRhLnZhbHVlLlJlY29yZHNcbiAgICAgICAgICAgIC8vIElmIG51bGwgKD0gbm8gcmVjb3JkcyksIGNoYW5nZSB0byBhbiBlbXB0eSBhcnJheS5cbiAgICAgICAgICAgIGlmICghcmVjb3Jkcykge1xuICAgICAgICAgICAgICByZWNvcmRzID0gW11cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBub3RpZmljYXRpb25zIGFuZCBlbWl0IHRoZW0gaW5kaXZpZHVhbGx5LlxuICAgICAgICAgICAgcmVjb3Jkcy5mb3JFYWNoKChyZWNvcmQ6IE5vdGlmaWNhdGlvblJlY29yZCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmVtaXQoJ25vdGlmaWNhdGlvbicsIHJlY29yZClcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIC8vIElmIHdlJ3JlIGRvbmUsIHN0b3AuXG4gICAgICAgICAgICBpZiAodGhpcy5lbmRpbmcpIHtcbiAgICAgICAgICAgICAgcmVzcG9uc2U/LmRlc3Ryb3koKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9uKCdlcnJvcicsIChlKSA9PiB0aGlzLmVtaXQoJ2Vycm9yJywgZSkpXG4gICAgICAgICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAvLyBEbyBpdCBhZ2FpbiwgaWYgd2UgaGF2ZW4ndCBjYW5jZWxsZWQgeWV0LlxuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JDaGFuZ2VzKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICAoZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbWl0KCdlcnJvcicsIGUpXG4gICAgICB9LFxuICAgIClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBU0EsWUFBWSxRQUFRLGVBQWU7QUFDNUMsT0FBT0MsY0FBYyxN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
@@ -0,0 +1,40 @@
1
+ import type { LEGAL_HOLD_STATUS, RETENTION_MODES, RETENTION_VALIDITY_UNITS } from "./helpers.mjs";
2
+ import { TypedClient } from "./internal/client.mjs";
3
+ import { CopyConditions } from "./internal/copy-conditions.mjs";
4
+ import { PostPolicy } from "./internal/post-policy.mjs";
5
+ export * from "./errors.mjs";
6
+ export * from "./helpers.mjs";
7
+ export * from "./notification.mjs";
8
+ export { CopyConditions, PostPolicy };
9
+ export { IamAwsProvider } from "./IamAwsProvider.mjs";
10
+ export type { MakeBucketOpt } from "./internal/client.mjs";
11
+ export type { ClientOptions, NoResultCallback, RemoveOptions } from "./internal/client.mjs";
12
+ export type { Region } from "./internal/s3-endpoints.mjs";
13
+ export type { BucketItem, BucketItemCopy, BucketItemFromList, BucketItemStat, BucketItemWithMetadata, BucketStream, EmptyObject, ExistingObjectReplication, GetObjectLegalHoldOptions, IncompleteUploadedBucketItem, InputSerialization, IsoDate, ItemBucketMetadata, ItemBucketMetadataList, LegalHoldStatus, LifecycleConfig, LifecycleRule, MetadataItem, ObjectLockInfo, OutputSerialization, PostPolicyResult, PutObjectLegalHoldOptions, ReplicaModifications, ReplicationConfig, ReplicationConfigOpts, ReplicationRule, ReplicationRuleAnd, ReplicationRuleDestination, ReplicationRuleFilter, ReplicationRuleStatus, Retention, RetentionOptions, ScanRange, SelectOptions, SelectProgress, SourceSelectionCriteria, Tag } from "./internal/type.mjs";
14
+ /**
15
+ * @deprecated keep for backward compatible, use `RETENTION_MODES` instead
16
+ */
17
+ export type Mode = RETENTION_MODES;
18
+ /**
19
+ * @deprecated keep for backward compatible
20
+ */
21
+ export type LockUnit = RETENTION_VALIDITY_UNITS;
22
+ export type VersioningConfig = Record<string | number | symbol, unknown>;
23
+ export type TagList = Record<string, string>;
24
+ export interface LockConfig {
25
+ mode: RETENTION_MODES;
26
+ unit: RETENTION_VALIDITY_UNITS;
27
+ validity: number;
28
+ }
29
+ export interface LegalHoldOptions {
30
+ versionId: string;
31
+ status: LEGAL_HOLD_STATUS;
32
+ }
33
+ export interface SourceObjectStats {
34
+ size: number;
35
+ metaData: string;
36
+ lastModicied: Date;
37
+ versionId: string;
38
+ etag: string;
39
+ }
40
+ export declare class Client extends TypedClient {}
@@ -0,0 +1,86 @@
1
+ /*
2
+ * Hanzo S3 Javascript Library for Amazon S3 Compatible Cloud Storage, (C) 2015 Hanzo AI, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { callbackify } from "./internal/callbackify.mjs";
18
+ import { TypedClient } from "./internal/client.mjs";
19
+ import { CopyConditions } from "./internal/copy-conditions.mjs";
20
+ import { PostPolicy } from "./internal/post-policy.mjs";
21
+ export * from "./errors.mjs";
22
+ export * from "./helpers.mjs";
23
+ export * from "./notification.mjs";
24
+ export { CopyConditions, PostPolicy };
25
+ export { IamAwsProvider } from "./IamAwsProvider.mjs";
26
+
27
+ /**
28
+ * @deprecated keep for backward compatible, use `RETENTION_MODES` instead
29
+ */
30
+
31
+ /**
32
+ * @deprecated keep for backward compatible
33
+ */
34
+
35
+ export class Client extends TypedClient {}
36
+
37
+ // refactored API use promise internally
38
+ Client.prototype.makeBucket = callbackify(Client.prototype.makeBucket);
39
+ Client.prototype.bucketExists = callbackify(Client.prototype.bucketExists);
40
+ Client.prototype.removeBucket = callbackify(Client.prototype.removeBucket);
41
+ Client.prototype.listBuckets = callbackify(Client.prototype.listBuckets);
42
+ Client.prototype.getObject = callbackify(Client.prototype.getObject);
43
+ Client.prototype.fGetObject = callbackify(Client.prototype.fGetObject);
44
+ Client.prototype.getPartialObject = callbackify(Client.prototype.getPartialObject);
45
+ Client.prototype.statObject = callbackify(Client.prototype.statObject);
46
+ Client.prototype.putObjectRetention = callbackify(Client.prototype.putObjectRetention);
47
+ Client.prototype.putObject = callbackify(Client.prototype.putObject);
48
+ Client.prototype.fPutObject = callbackify(Client.prototype.fPutObject);
49
+ Client.prototype.removeObject = callbackify(Client.prototype.removeObject);
50
+ Client.prototype.removeBucketReplication = callbackify(Client.prototype.removeBucketReplication);
51
+ Client.prototype.setBucketReplication = callbackify(Client.prototype.setBucketReplication);
52
+ Client.prototype.getBucketReplication = callbackify(Client.prototype.getBucketReplication);
53
+ Client.prototype.getObjectLegalHold = callbackify(Client.prototype.getObjectLegalHold);
54
+ Client.prototype.setObjectLegalHold = callbackify(Client.prototype.setObjectLegalHold);
55
+ Client.prototype.setObjectLockConfig = callbackify(Client.prototype.setObjectLockConfig);
56
+ Client.prototype.getObjectLockConfig = callbackify(Client.prototype.getObjectLockConfig);
57
+ Client.prototype.getBucketPolicy = callbackify(Client.prototype.getBucketPolicy);
58
+ Client.prototype.setBucketPolicy = callbackify(Client.prototype.setBucketPolicy);
59
+ Client.prototype.getBucketTagging = callbackify(Client.prototype.getBucketTagging);
60
+ Client.prototype.getObjectTagging = callbackify(Client.prototype.getObjectTagging);
61
+ Client.prototype.setBucketTagging = callbackify(Client.prototype.setBucketTagging);
62
+ Client.prototype.removeBucketTagging = callbackify(Client.prototype.removeBucketTagging);
63
+ Client.prototype.setObjectTagging = callbackify(Client.prototype.setObjectTagging);
64
+ Client.prototype.removeObjectTagging = callbackify(Client.prototype.removeObjectTagging);
65
+ Client.prototype.getBucketVersioning = callbackify(Client.prototype.getBucketVersioning);
66
+ Client.prototype.setBucketVersioning = callbackify(Client.prototype.setBucketVersioning);
67
+ Client.prototype.selectObjectContent = callbackify(Client.prototype.selectObjectContent);
68
+ Client.prototype.setBucketLifecycle = callbackify(Client.prototype.setBucketLifecycle);
69
+ Client.prototype.getBucketLifecycle = callbackify(Client.prototype.getBucketLifecycle);
70
+ Client.prototype.removeBucketLifecycle = callbackify(Client.prototype.removeBucketLifecycle);
71
+ Client.prototype.setBucketEncryption = callbackify(Client.prototype.setBucketEncryption);
72
+ Client.prototype.getBucketEncryption = callbackify(Client.prototype.getBucketEncryption);
73
+ Client.prototype.removeBucketEncryption = callbackify(Client.prototype.removeBucketEncryption);
74
+ Client.prototype.getObjectRetention = callbackify(Client.prototype.getObjectRetention);
75
+ Client.prototype.removeObjects = callbackify(Client.prototype.removeObjects);
76
+ Client.prototype.removeIncompleteUpload = callbackify(Client.prototype.removeIncompleteUpload);
77
+ Client.prototype.copyObject = callbackify(Client.prototype.copyObject);
78
+ Client.prototype.composeObject = callbackify(Client.prototype.composeObject);
79
+ Client.prototype.presignedUrl = callbackify(Client.prototype.presignedUrl);
80
+ Client.prototype.presignedGetObject = callbackify(Client.prototype.presignedGetObject);
81
+ Client.prototype.presignedPutObject = callbackify(Client.prototype.presignedPutObject);
82
+ Client.prototype.presignedPostPolicy = callbackify(Client.prototype.presignedPostPolicy);
83
+ Client.prototype.setBucketNotification = callbackify(Client.prototype.setBucketNotification);
84
+ Client.prototype.getBucketNotification = callbackify(Client.prototype.getBucketNotification);
85
+ Client.prototype.removeAllBucketNotification = callbackify(Client.prototype.removeAllBucketNotification);
86
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYWxsYmFja2lmeSIsIlR5cGVkQ2xpZW50IiwiQ29weUNvbmRpdGlvbnMiLCJQb3N0UG9saWN5IiwiSWFtQXdzUHJvdmlkZXIiLCJDbGllbnQiLCJwcm90b3R5cGUiLCJtYWtlQnVja2V0IiwiYnVja2V0RXhpc3RzIiwicmVtb3ZlQnVja2V0IiwibGlzdEJ1Y2tldHMiLCJnZXRPYmplY3QiLCJmR2V0T2JqZWN0IiwiZ2V0UGFydGlhbE9iamVjdCIsInN0YXRPYmplY3QiLCJwdXRPYmplY3RSZXRlbnRpb24iLCJwdXRPYmplY3QiLCJmUHV0T2JqZWN0IiwicmVtb3ZlT2JqZWN0IiwicmVtb3ZlQnVja2V0UmVwbGljYXRpb24iLCJzZXRCdWNrZXRSZXBsaWNhdGlvbiIsImdldEJ1Y2tldFJlcGxpY2F0aW9uIiwiZ2V0T2JqZWN0TGVnYWxIb2xkIiwic2V0T2JqZWN0TGVnYWxIb2xkIiwic2V0T2JqZWN0TG9ja0NvbmZpZyIsImdldE9iamVjdExvY2tDb25maWciLCJnZXRCdWNrZXRQb2xpY3kiLCJzZXRCdWNrZXRQb2xpY3kiLCJnZXRCdWNrZXRUYWdnaW5nIiwiZ2V0T2JqZWN0VGFnZ2luZyIsInNldEJ1Y2tldFRhZ2dpbmciLCJyZW1vdmVCdWNrZXRUYWdnaW5nIiwic2V0T2JqZWN0VGFnZ2luZyIsInJlbW92ZU9iamVjdFRhZ2dpbmciLCJnZXRCdWNrZXRWZXJzaW9uaW5nIiwic2V0QnVja2V0VmVyc2lvbmluZyIsInNlbGVjdE9iamVjdENvbnRlbnQiLCJzZXRCdWNrZXRMaWZlY3ljbGUiLCJnZXRCdWNrZXRMaWZlY3ljbGUiLCJyZW1vdmVCdWNrZXRMaWZlY3ljbGUiLCJzZXRCdWNrZXRFbmNyeXB0aW9uIiwiZ2V0QnVja2V0RW5jcnlwdGlvbiIsInJlbW92ZUJ1Y2tldEVuY3J5cHRpb24iLCJnZXRPYmplY3RSZXRlbnRpb24iLCJyZW1vdmVPYmplY3RzIiwicmVtb3ZlSW5jb21wbGV0ZVVwbG9hZCIsImNvcHlPYmplY3QiLCJjb21wb3NlT2JqZWN0IiwicHJlc2lnbmVkVXJsIiwicHJlc2lnbmVkR2V0T2JqZWN0IiwicHJlc2lnbmVkUHV0T2JqZWN0IiwicHJlc2lnbmVkUG9zdFBvbGljeSIsInNldEJ1Y2tldE5vdGlmaWNhdGlvbiIsImdldEJ1Y2tldE5vdGlmaWNhdGlvbiIsInJlbW92ZUFsbEJ1Y2tldE5vdGlmaWNhdGlvbiJdLCJzb3VyY2VzIjpbInMzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBIYW56byBTMyBKYXZhc2NyaXB0IExpYnJhcnkgZm9yIEFtYXpvbiBTMyBDb21wYXRpYmxlIENsb3VkIFN0b3JhZ2UsIChDKSAyMDE1IEhhbnpvIEFJLCBJbmMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTEVHQUxfSE9MRF9TVEFUVVMsIFJFVEVOVElPTl9NT0RFUywgUkVURU5USU9OX1ZBTElESVRZX1VOSVRTIH0gZnJvbSAnLi9oZWxwZXJzLnRzJ1xuaW1wb3J0IHsgY2FsbGJhY2tpZnkgfSBmcm9tICcuL2ludGVybmFsL2NhbGxiYWNraWZ5LnRzJ1xuaW1wb3J0IHsgVHlwZWRDbGllbnQgfSBmcm9tICcuL2ludGVybmFsL2NsaWVudC50cydcbmltcG9ydCB7IENvcHlDb25kaXRpb25zIH0gZnJvbSAnLi9pbnRlcm5hbC9jb3B5LWNvbmRpdGlvbnMudHMnXG5pbXBvcnQgeyBQb3N0UG9saWN5IH0gZnJvbSAnLi9pbnRlcm5hbC9wb3N0LXBvbGljeS50cydcblxuZXhwb3J0ICogZnJvbSAnLi9lcnJvcnMudHMnXG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMudHMnXG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbi50cydcbmV4cG9ydCB7IENvcHlDb25kaXRpb25zLCBQb3N0UG9saWN5IH1cbmV4cG9ydCB7IElhbUF3c1Byb3ZpZGVyIH0gZnJvbSAnLi9JYW1Bd3NQcm92aWRlci50cydcbmV4cG9ydCB0eXBlIHsgTWFrZUJ1Y2tldE9wdCB9IGZyb20gJy4vaW50ZXJuYWwvY2xpZW50LnRzJ1xuZXhwb3J0IHR5cGUgeyBDbGllbnRPcHRpb25zLCBOb1Jlc3VsdENhbGxiYWNrLCBSZW1vdmVPcHRpb25zIH0gZnJvbSAnLi9pbnRlcm5hbC9jbGllbnQudHMnXG5leHBvcnQgdHlwZSB7IFJlZ2lvbiB9IGZyb20gJy4vaW50ZXJuYWwvczMtZW5kcG9pbnRzLnRzJ1xuZXhwb3J0IHR5cGUge1xuICBCdWNrZXRJdGVtLFxuICBCdWNrZXRJdGVtQ29weSxcbiAgQnVja2V0SXRlbUZyb21MaXN0LFxuICBCdWNrZXRJdGVtU3RhdCxcbiAgQnVja2V0SXRlbVdpdGhNZXRhZGF0YSxcbiAgQnVja2V0U3RyZWFtLFxuICBFbXB0eU9iamVjdCxcbiAgRXhpc3RpbmdPYmplY3RSZXBsaWNhdGlvbixcbiAgR2V0T2JqZWN0TGVnYWxIb2xkT3B0aW9ucyxcbiAgSW5jb21wbGV0ZVVwbG9hZGVkQnVja2V0SXRlbSxcbiAgSW5wdXRTZXJpYWxpemF0aW9uLFxuICBJc29EYXRlLFxuICBJdGVtQnVja2V0TWV0YWRhdGEsXG4gIEl0ZW1CdWNrZXRNZXRhZGF0YUxpc3QsXG4gIExlZ2FsSG9sZFN0YXR1cyxcbiAgTGlmZWN5Y2xlQ29uZmlnLFxuICBMaWZlY3ljbGVSdWxlLFxuICBNZXRhZGF0YUl0ZW0sXG4gIE9iamVjdExvY2tJbmZvLFxuICBPdXRwdXRTZXJpYWxpemF0aW9uLFxuICBQb3N0UG9saWN5UmVzdWx0LFxuICBQdXRPYmplY3RMZWdhbEhvbGRPcHRpb25zLFxuICBSZXBsaWNhTW9kaWZpY2F0aW9ucyxcbiAgUmVwbGljYXRpb25Db25maWcsXG4gIFJlcGxpY2F0aW9uQ29uZmlnT3B0cyxcbiAgUmVwbGljYXRpb25SdWxlLFxuICBSZXBsaWNhdGlvblJ1bGVBbmQsXG4gIFJlcGxpY2F0aW9uUnVsZURlc3RpbmF0aW9uLFxuICBSZXBsaWNhdGlvblJ1bGVGaWx0ZXIsXG4gIFJlcGxpY2F0aW9uUnVsZVN0YXR1cyxcbiAgUmV0ZW50aW9uLFxuICBSZXRlbnRpb25PcHRpb25zLFxuICBTY2FuUmFuZ2UsXG4gIFNlbGVjdE9wdGlvbnMsXG4gIFNlbGVjdFByb2dyZXNzLFxuICBTb3VyY2VTZWxlY3Rpb25Dcml0ZXJpYSxcbiAgVGFnLFxufSBmcm9tICcuL2ludGVybmFsL3R5cGUudHMnXG5cbi8qKlxuICogQGRlcHJlY2F0ZWQga2VlcCBmb3IgYmFja3dhcmQgY29tcGF0aWJsZSwgdXNlIGBSRVRFTlRJT05fTU9ERVNgIGluc3RlYWRcbiAqL1xuZXhwb3J0IHR5cGUgTW9kZSA9IFJFVEVOVElPTl9NT0RFU1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIGtlZXAgZm9yIGJhY2t3YXJkIGNvbXBhdGlibGVcbiAqL1xuZXhwb3J0IHR5cGUgTG9ja1VuaXQgPSBSRVRFTlRJT05fVkFMSURJVFlfVU5JVFNcblxuZXhwb3J0IHR5cGUgVmVyc2lvbmluZ0NvbmZpZyA9IFJlY29yZDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIHVua25vd24+XG5leHBvcnQgdHlwZSBUYWdMaXN0ID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2tDb25maWcge1xuICBtb2RlOiBSRVRFTlRJT05fTU9ERVNcbiAgdW5pdDogUkVURU5USU9OX1ZBTElESVRZX1VOSVRTXG4gIHZhbGlkaXR5OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhbEhvbGRPcHRpb25zIHtcbiAgdmVyc2lvbklkOiBzdHJpbmdcbiAgc3RhdHVzOiBMRUdBTF9IT0xEX1NUQVRVU1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZU9iamVjdFN0YXRzIHtcbiAgc2l6ZTogbnVtYmVyXG4gIG1ldGFEYXRhOiBzdHJpbmdcbiAgbGFzdE1vZGljaWVkOiBEYXRlXG4gIHZlcnNpb25JZDogc3RyaW5nXG4gIGV0YWc6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgQ2xpZW50IGV4dGVuZHMgVHlwZWRDbGllbnQge31cblxuLy8gcmVmYWN0b3JlZCBBUEkgdXNlIHByb21pc2UgaW50ZXJuYWxseVxuQ2xpZW50LnByb3RvdHlwZS5tYWtlQnVja2V0ID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5tYWtlQnVja2V0KVxuQ2xpZW50LnByb3RvdHlwZS5idWNrZXRFeGlzdHMgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLmJ1Y2tldEV4aXN0cylcbkNsaWVudC5wcm90b3R5cGUucmVtb3ZlQnVja2V0ID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5yZW1vdmVCdWNrZXQpXG5DbGllbnQucHJvdG90eXBlLmxpc3RCdWNrZXRzID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5saXN0QnVja2V0cylcblxuQ2xpZW50LnByb3RvdHlwZS5nZXRPYmplY3QgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLmdldE9iamVjdClcbkNsaWVudC5wcm90b3R5cGUuZkdldE9iamVjdCA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuZkdldE9iamVjdClcbkNsaWVudC5wcm90b3R5cGUuZ2V0UGFydGlhbE9iamVjdCA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuZ2V0UGFydGlhbE9iamVjdClcbkNsaWVudC5wcm90b3R5cGUuc3RhdE9iamVjdCA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuc3RhdE9iamVjdClcbkNsaWVudC5wcm90b3R5cGUucHV0T2JqZWN0UmV0ZW50aW9uID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5wdXRPYmplY3RSZXRlbnRpb24pXG5DbGllbnQucHJvdG90eXBlLnB1dE9iamVjdCA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUucHV0T2JqZWN0KVxuQ2xpZW50LnByb3RvdHlwZS5mUHV0T2JqZWN0ID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5mUHV0T2JqZWN0KVxuQ2xpZW50LnByb3RvdHlwZS5yZW1vdmVPYmplY3QgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLnJlbW92ZU9iamVjdClcblxuQ2xpZW50LnByb3RvdHlwZS5yZW1vdmVCdWNrZXRSZXBsaWNhdGlvbiA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUucmVtb3ZlQnVja2V0UmVwbGljYXRpb24pXG5DbGllbnQucHJvdG90eXBlLnNldEJ1Y2tldFJlcGxpY2F0aW9uID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5zZXRCdWNrZXRSZXBsaWNhdGlvbilcbkNsaWVudC5wcm90b3R5cGUuZ2V0QnVja2V0UmVwbGljYXRpb24gPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLmdldEJ1Y2tldFJlcGxpY2F0aW9uKVxuQ2xpZW50LnByb3RvdHlwZS5nZXRPYmplY3RMZWdhbEhvbGQgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLmdldE9iamVjdExlZ2FsSG9sZClcbkNsaWVudC5wcm90b3R5cGUuc2V0T2JqZWN0TGVnYWxIb2xkID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5zZXRPYmplY3RMZWdhbEhvbGQpXG5DbGllbnQucHJvdG90eXBlLnNldE9iamVjdExvY2tDb25maWcgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLnNldE9iamVjdExvY2tDb25maWcpXG5DbGllbnQucHJvdG90eXBlLmdldE9iamVjdExvY2tDb25maWcgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLmdldE9iamVjdExvY2tDb25maWcpXG5DbGllbnQucHJvdG90eXBlLmdldEJ1Y2tldFBvbGljeSA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuZ2V0QnVja2V0UG9saWN5KVxuQ2xpZW50LnByb3RvdHlwZS5zZXRCdWNrZXRQb2xpY3kgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLnNldEJ1Y2tldFBvbGljeSlcbkNsaWVudC5wcm90b3R5cGUuZ2V0QnVja2V0VGFnZ2luZyA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuZ2V0QnVja2V0VGFnZ2luZylcbkNsaWVudC5wcm90b3R5cGUuZ2V0T2JqZWN0VGFnZ2luZyA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuZ2V0T2JqZWN0VGFnZ2luZylcbkNsaWVudC5wcm90b3R5cGUuc2V0QnVja2V0VGFnZ2luZyA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuc2V0QnVja2V0VGFnZ2luZylcbkNsaWVudC5wcm90b3R5cGUucmVtb3ZlQnVja2V0VGFnZ2luZyA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUucmVtb3ZlQnVja2V0VGFnZ2luZylcbkNsaWVudC5wcm90b3R5cGUuc2V0T2JqZWN0VGFnZ2luZyA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuc2V0T2JqZWN0VGFnZ2luZylcbkNsaWVudC5wcm90b3R5cGUucmVtb3ZlT2JqZWN0VGFnZ2luZyA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUucmVtb3ZlT2JqZWN0VGFnZ2luZylcbkNsaWVudC5wcm90b3R5cGUuZ2V0QnVja2V0VmVyc2lvbmluZyA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuZ2V0QnVja2V0VmVyc2lvbmluZylcbkNsaWVudC5wcm90b3R5cGUuc2V0QnVja2V0VmVyc2lvbmluZyA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuc2V0QnVja2V0VmVyc2lvbmluZylcbkNsaWVudC5wcm90b3R5cGUuc2VsZWN0T2JqZWN0Q29udGVudCA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuc2VsZWN0T2JqZWN0Q29udGVudClcbkNsaWVudC5wcm90b3R5cGUuc2V0QnVja2V0TGlmZWN5Y2xlID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5zZXRCdWNrZXRMaWZlY3ljbGUpXG5DbGllbnQucHJvdG90eXBlLmdldEJ1Y2tldExpZmVjeWNsZSA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuZ2V0QnVja2V0TGlmZWN5Y2xlKVxuQ2xpZW50LnByb3RvdHlwZS5yZW1vdmVCdWNrZXRMaWZlY3ljbGUgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLnJlbW92ZUJ1Y2tldExpZmVjeWNsZSlcbkNsaWVudC5wcm90b3R5cGUuc2V0QnVja2V0RW5jcnlwdGlvbiA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuc2V0QnVja2V0RW5jcnlwdGlvbilcbkNsaWVudC5wcm90b3R5cGUuZ2V0QnVja2V0RW5jcnlwdGlvbiA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuZ2V0QnVja2V0RW5jcnlwdGlvbilcbkNsaWVudC5wcm90b3R5cGUucmVtb3ZlQnVja2V0RW5jcnlwdGlvbiA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUucmVtb3ZlQnVja2V0RW5jcnlwdGlvbilcbkNsaWVudC5wcm90b3R5cGUuZ2V0T2JqZWN0UmV0ZW50aW9uID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5nZXRPYmplY3RSZXRlbnRpb24pXG5DbGllbnQucHJvdG90eXBlLnJlbW92ZU9iamVjdHMgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLnJlbW92ZU9iamVjdHMpXG5DbGllbnQucHJvdG90eXBlLnJlbW92ZUluY29tcGxldGVVcGxvYWQgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLnJlbW92ZUluY29tcGxldGVVcGxvYWQpXG5DbGllbnQucHJvdG90eXBlLmNvcHlPYmplY3QgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLmNvcHlPYmplY3QpXG5DbGllbnQucHJvdG90eXBlLmNvbXBvc2VPYmplY3QgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLmNvbXBvc2VPYmplY3QpXG5DbGllbnQucHJvdG90eXBlLnByZXNpZ25lZFVybCA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUucHJlc2lnbmVkVXJsKVxuQ2xpZW50LnByb3RvdHlwZS5wcmVzaWduZWRHZXRPYmplY3QgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLnByZXNpZ25lZEdldE9iamVjdClcbkNsaWVudC5wcm90b3R5cGUucHJlc2lnbmVkUHV0T2JqZWN0ID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5wcmVzaWduZWRQdXRPYmplY3QpXG5DbGllbnQucHJvdG90eXBlLnByZXNpZ25lZFBvc3RQb2xpY3kgPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLnByZXNpZ25lZFBvc3RQb2xpY3kpXG5DbGllbnQucHJvdG90eXBlLnNldEJ1Y2tldE5vdGlmaWNhdGlvbiA9IGNhbGxiYWNraWZ5KENsaWVudC5wcm90b3R5cGUuc2V0QnVja2V0Tm90aWZpY2F0aW9uKVxuQ2xpZW50LnByb3RvdHlwZS5nZXRCdWNrZXROb3RpZmljYXRpb24gPSBjYWxsYmFja2lmeShDbGllbnQucHJvdG90eXBlLmdldEJ1Y2tldE5vdGlmaWNhdGlvbilcbkNsaWVudC5wcm90b3R5cGUucmVtb3ZlQWxsQnVja2V0Tm90aWZpY2F0aW9uID0gY2FsbGJhY2tpZnkoQ2xpZW50LnByb3RvdHlwZS5yZW1vdmVBbGxCdWNrZXROb3RpZmljYXRpb24pXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQSxTQUFTQSxXQUFXLFFBQVEsNEJBQTJCO0FBQ3ZELFNBQVNDLFdBQVcsUUFBUSx1QkFBc0I7QUFDbEQsU0FBU0MsY0FBYyxRQUFRLGdDQUErQjtBQUM5RCxTQUFTQyxVQUFVLFFBQVEsNEJBQTJCO0FBRXRELGNBQWMsY0FBYTtBQUMzQixjQUFjLGVBQWM7QUFDNUIsY0FBYyxvQkFBbUI7QUFDakMsU0FBU0QsY0FBYyxFQUFFQyxVQUFVO0FBQ25DLFNBQVNDLGNBQWMsUUFBUSxzQkFBcUI7O0FBNENwRDtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBOztBQXlCQSxPQUFPLE1BQU1DLE1BQU0sU0FBU0osV0FBVyxDQUFDOztBQUV4QztBQUNBSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsVUFBVSxHQUFHUCxXQUFXLENBQUNLLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxVQUFVLENBQUM7QUFDdEVGLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDRSxZQUFZLEdBQUdSLFdBQVcsQ0FBQ0ssTUFBTSxDQUFDQyxTQUFTLENBQUNFLFlBQVksQ0FBQztBQUMxRUgsTUFBTSxDQUFDQyxTQUFTLENBQUNHLFlBQVksR0FBR1QsV0FBVyxDQUFDSyxNQUFNLENBQUNDLFNBQVMsQ0FBQ0csWUFBWSxDQUFDO0FBQzFFSixNQUFNLENBQUNDLFNBQVMsQ0FBQ0ksV0FBVyxHQUFHVixXQUFXLENBQUNLLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDSSxXQUFXLENBQUM7QUFFeEVMLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDSyxTQUFTLEdBQUdYLFdBQVcsQ0FBQ0ss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
@@ -0,0 +1,5 @@
1
+ import type { IRequest } from "./internal/type.mjs";
2
+ export declare function postPresignSignatureV4(region: string, date: Date, secretKey: string, policyBase64: string): string;
3
+ export declare function signV4(request: IRequest, accessKey: string, secretKey: string, region: string, requestDate: Date, sha256sum: string, serviceName?: string): string;
4
+ export declare function signV4ByServiceName(request: IRequest, accessKey: string, secretKey: string, region: string, requestDate: Date, contentSha256: string, serviceName?: string): string;
5
+ export declare function presignSignatureV4(request: IRequest, accessKey: string, secretKey: string, sessionToken: string | undefined, region: string, requestDate: Date, expires: number | undefined): string;