@aws-sdk/xhr-http-handler 3.901.0 → 3.914.0
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.
- package/dist-cjs/index.js +217 -265
- package/package.json +6 -6
package/dist-cjs/index.js
CHANGED
|
@@ -1,282 +1,234 @@
|
|
|
1
|
-
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
|
|
21
|
-
// src/index.ts
|
|
22
|
-
var index_exports = {};
|
|
23
|
-
__export(index_exports, {
|
|
24
|
-
XhrHttpHandler: () => XhrHttpHandler
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(index_exports);
|
|
1
|
+
'use strict';
|
|
27
2
|
|
|
28
|
-
|
|
29
|
-
var
|
|
30
|
-
var
|
|
31
|
-
var import_events = require("events");
|
|
3
|
+
var protocolHttp = require('@smithy/protocol-http');
|
|
4
|
+
var querystringBuilder = require('@smithy/querystring-builder');
|
|
5
|
+
var events = require('events');
|
|
32
6
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
}), "requestTimeout");
|
|
7
|
+
const requestTimeout = (timeoutInMs = 0) => new Promise((resolve, reject) => {
|
|
8
|
+
if (timeoutInMs) {
|
|
9
|
+
setTimeout(() => {
|
|
10
|
+
const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`);
|
|
11
|
+
timeoutError.name = "TimeoutError";
|
|
12
|
+
reject(timeoutError);
|
|
13
|
+
}, timeoutInMs);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
43
16
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
17
|
+
const EVENTS = {
|
|
18
|
+
get PROGRESS() {
|
|
19
|
+
return "xhr.progress";
|
|
20
|
+
},
|
|
21
|
+
get UPLOAD_PROGRESS() {
|
|
22
|
+
return "xhr.upload.progress";
|
|
23
|
+
},
|
|
24
|
+
get XHR_INSTANTIATED() {
|
|
25
|
+
return "after.xhr.new";
|
|
26
|
+
},
|
|
27
|
+
get BEFORE_XHR_SEND() {
|
|
28
|
+
return "before.xhr.send";
|
|
29
|
+
},
|
|
58
30
|
};
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
* or instantiates a new instance of this handler.
|
|
70
|
-
*/
|
|
71
|
-
static create(instanceOrOptions) {
|
|
72
|
-
if (typeof instanceOrOptions?.handle === "function") {
|
|
73
|
-
return instanceOrOptions;
|
|
31
|
+
class XhrHttpHandler extends events.EventEmitter {
|
|
32
|
+
static EVENTS = EVENTS;
|
|
33
|
+
static ERROR_IDENTIFIER = "XHR_HTTP_HANDLER_ERROR";
|
|
34
|
+
config;
|
|
35
|
+
configProvider;
|
|
36
|
+
static create(instanceOrOptions) {
|
|
37
|
+
if (typeof instanceOrOptions?.handle === "function") {
|
|
38
|
+
return instanceOrOptions;
|
|
39
|
+
}
|
|
40
|
+
return new XhrHttpHandler(instanceOrOptions);
|
|
74
41
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
42
|
+
constructor(options) {
|
|
43
|
+
super();
|
|
44
|
+
if (typeof options === "function") {
|
|
45
|
+
this.configProvider = options();
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.config = options ?? {};
|
|
49
|
+
this.configProvider = Promise.resolve(this.config);
|
|
50
|
+
}
|
|
84
51
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
httpHandlerConfigs() {
|
|
94
|
-
return this.config ?? {};
|
|
95
|
-
}
|
|
96
|
-
destroy() {
|
|
97
|
-
}
|
|
98
|
-
async handle(request, { abortSignal, requestTimeout: requestTimeout2 } = {}) {
|
|
99
|
-
if (!this.config) {
|
|
100
|
-
this.config = await this.configProvider;
|
|
52
|
+
updateHttpClientConfig(key, value) {
|
|
53
|
+
this.config = undefined;
|
|
54
|
+
this.configProvider = this.configProvider.then((config) => {
|
|
55
|
+
config[key] = value;
|
|
56
|
+
return config;
|
|
57
|
+
});
|
|
101
58
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const abortError = new Error("Request aborted");
|
|
105
|
-
abortError.name = "AbortError";
|
|
106
|
-
throw abortError;
|
|
59
|
+
httpHandlerConfigs() {
|
|
60
|
+
return this.config ?? {};
|
|
107
61
|
}
|
|
108
|
-
|
|
109
|
-
if (request.query) {
|
|
110
|
-
const queryString = (0, import_querystring_builder.buildQueryString)(request.query);
|
|
111
|
-
if (queryString) {
|
|
112
|
-
path += `?${queryString}`;
|
|
113
|
-
}
|
|
62
|
+
destroy() {
|
|
114
63
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const xhr = new XMLHttpRequest();
|
|
119
|
-
this.emit(EVENTS.XHR_INSTANTIATED, xhr);
|
|
120
|
-
const raceOfPromises = [
|
|
121
|
-
new Promise((resolve, reject) => {
|
|
122
|
-
let streamCursor = 0;
|
|
123
|
-
let stream;
|
|
124
|
-
let writer;
|
|
125
|
-
xhr.upload.addEventListener("progress", (event) => {
|
|
126
|
-
this.emit(_XhrHttpHandler.EVENTS.UPLOAD_PROGRESS, event, request);
|
|
127
|
-
});
|
|
128
|
-
xhr.addEventListener("progress", (event) => {
|
|
129
|
-
this.emit(_XhrHttpHandler.EVENTS.PROGRESS, event, request);
|
|
130
|
-
});
|
|
131
|
-
xhr.addEventListener("error", (err) => {
|
|
132
|
-
const error = new Error(_XhrHttpHandler.ERROR_IDENTIFIER + ": " + err);
|
|
133
|
-
reject(error);
|
|
134
|
-
});
|
|
135
|
-
xhr.addEventListener("timeout", () => {
|
|
136
|
-
reject(new Error("XMLHttpRequest timed out."));
|
|
137
|
-
});
|
|
138
|
-
xhr.addEventListener("readystatechange", () => {
|
|
139
|
-
const isArrayBuffer = xhr.responseType === "arraybuffer" && xhr.response;
|
|
140
|
-
const isText = !isArrayBuffer && typeof xhr.responseText === "string";
|
|
141
|
-
if (isText && !stream) {
|
|
142
|
-
({ stream, writer } = this.initializeTransformStream());
|
|
143
|
-
}
|
|
144
|
-
switch (xhr.readyState) {
|
|
145
|
-
case XMLHttpRequest.LOADING:
|
|
146
|
-
if (isText) {
|
|
147
|
-
writer.write(streamCursor > 0 ? xhr.responseText.slice(streamCursor) : xhr.responseText);
|
|
148
|
-
streamCursor = xhr.responseText.length;
|
|
149
|
-
}
|
|
150
|
-
break;
|
|
151
|
-
case XMLHttpRequest.DONE:
|
|
152
|
-
const body2 = (() => {
|
|
153
|
-
if (isArrayBuffer) {
|
|
154
|
-
return new Blob([xhr.response]);
|
|
155
|
-
}
|
|
156
|
-
if (isText) {
|
|
157
|
-
streamCursor !== xhr.responseText.length && writer.write?.(streamCursor > 0 ? xhr.responseText.slice(streamCursor) : xhr.responseText);
|
|
158
|
-
writer.releaseLock();
|
|
159
|
-
stream.writable.close();
|
|
160
|
-
return stream.readable;
|
|
161
|
-
}
|
|
162
|
-
reject(new Error(`Unexpected XHR response type ${xhr.responseType}. Expected string or arraybuffer.`));
|
|
163
|
-
})();
|
|
164
|
-
resolve({
|
|
165
|
-
response: new import_protocol_http.HttpResponse({
|
|
166
|
-
headers: this.responseHeaders(xhr.getAllResponseHeaders()),
|
|
167
|
-
statusCode: xhr.status,
|
|
168
|
-
body: body2
|
|
169
|
-
})
|
|
170
|
-
});
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
xhr.open(method, url);
|
|
175
|
-
for (const [header, value] of Object.entries(request.headers)) {
|
|
176
|
-
if (!isForbiddenRequestHeader(header)) {
|
|
177
|
-
xhr.setRequestHeader(header, value);
|
|
178
|
-
}
|
|
64
|
+
async handle(request, { abortSignal, requestTimeout: requestTimeout$1 } = {}) {
|
|
65
|
+
if (!this.config) {
|
|
66
|
+
this.config = await this.configProvider;
|
|
179
67
|
}
|
|
180
|
-
this.
|
|
181
|
-
|
|
182
|
-
}),
|
|
183
|
-
requestTimeout(requestTimeoutInMs)
|
|
184
|
-
];
|
|
185
|
-
let removeSignalEventListener = /* @__PURE__ */ __name(() => {
|
|
186
|
-
}, "removeSignalEventListener");
|
|
187
|
-
if (abortSignal) {
|
|
188
|
-
raceOfPromises.push(
|
|
189
|
-
new Promise((resolve, reject) => {
|
|
190
|
-
const onAbort = /* @__PURE__ */ __name(() => {
|
|
191
|
-
xhr.abort();
|
|
68
|
+
const requestTimeoutInMs = Number(requestTimeout$1 ?? this.config.requestTimeout) | 0;
|
|
69
|
+
if (abortSignal?.aborted) {
|
|
192
70
|
const abortError = new Error("Request aborted");
|
|
193
71
|
abortError.name = "AbortError";
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
|
|
72
|
+
throw abortError;
|
|
73
|
+
}
|
|
74
|
+
let path = request.path;
|
|
75
|
+
if (request.query) {
|
|
76
|
+
const queryString = querystringBuilder.buildQueryString(request.query);
|
|
77
|
+
if (queryString) {
|
|
78
|
+
path += `?${queryString}`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const { port, method } = request;
|
|
82
|
+
const url = `${request.protocol}//${request.hostname}${port ? `:${port}` : ""}${path}`;
|
|
83
|
+
const body = method === "GET" || method === "HEAD" ? undefined : request.body;
|
|
84
|
+
const xhr = new XMLHttpRequest();
|
|
85
|
+
this.emit(EVENTS.XHR_INSTANTIATED, xhr);
|
|
86
|
+
const raceOfPromises = [
|
|
87
|
+
new Promise((resolve, reject) => {
|
|
88
|
+
let streamCursor = 0;
|
|
89
|
+
let stream;
|
|
90
|
+
let writer;
|
|
91
|
+
xhr.upload.addEventListener("progress", (event) => {
|
|
92
|
+
this.emit(XhrHttpHandler.EVENTS.UPLOAD_PROGRESS, event, request);
|
|
93
|
+
});
|
|
94
|
+
xhr.addEventListener("progress", (event) => {
|
|
95
|
+
this.emit(XhrHttpHandler.EVENTS.PROGRESS, event, request);
|
|
96
|
+
});
|
|
97
|
+
xhr.addEventListener("error", (err) => {
|
|
98
|
+
const error = new Error(XhrHttpHandler.ERROR_IDENTIFIER + ": " + err);
|
|
99
|
+
reject(error);
|
|
100
|
+
});
|
|
101
|
+
xhr.addEventListener("timeout", () => {
|
|
102
|
+
reject(new Error("XMLHttpRequest timed out."));
|
|
103
|
+
});
|
|
104
|
+
xhr.addEventListener("readystatechange", () => {
|
|
105
|
+
const isArrayBuffer = xhr.responseType === "arraybuffer" && xhr.response;
|
|
106
|
+
const isText = !isArrayBuffer && typeof xhr.responseText === "string";
|
|
107
|
+
if (isText && !stream) {
|
|
108
|
+
({ stream, writer } = this.initializeTransformStream());
|
|
109
|
+
}
|
|
110
|
+
switch (xhr.readyState) {
|
|
111
|
+
case XMLHttpRequest.LOADING:
|
|
112
|
+
if (isText) {
|
|
113
|
+
writer.write(streamCursor > 0 ? xhr.responseText.slice(streamCursor) : xhr.responseText);
|
|
114
|
+
streamCursor = xhr.responseText.length;
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
case XMLHttpRequest.DONE:
|
|
118
|
+
const body = (() => {
|
|
119
|
+
if (isArrayBuffer) {
|
|
120
|
+
return new Blob([xhr.response]);
|
|
121
|
+
}
|
|
122
|
+
if (isText) {
|
|
123
|
+
streamCursor !== xhr.responseText.length &&
|
|
124
|
+
writer.write?.(streamCursor > 0 ? xhr.responseText.slice(streamCursor) : xhr.responseText);
|
|
125
|
+
writer.releaseLock();
|
|
126
|
+
stream.writable.close();
|
|
127
|
+
return stream.readable;
|
|
128
|
+
}
|
|
129
|
+
reject(new Error(`Unexpected XHR response type ${xhr.responseType}. Expected string or arraybuffer.`));
|
|
130
|
+
})();
|
|
131
|
+
resolve({
|
|
132
|
+
response: new protocolHttp.HttpResponse({
|
|
133
|
+
headers: this.responseHeaders(xhr.getAllResponseHeaders()),
|
|
134
|
+
statusCode: xhr.status,
|
|
135
|
+
body,
|
|
136
|
+
}),
|
|
137
|
+
});
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
xhr.open(method, url);
|
|
142
|
+
for (const [header, value] of Object.entries(request.headers)) {
|
|
143
|
+
if (!isForbiddenRequestHeader(header)) {
|
|
144
|
+
xhr.setRequestHeader(header, value);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
this.emit(EVENTS.BEFORE_XHR_SEND, xhr);
|
|
148
|
+
xhr.send(body);
|
|
149
|
+
}),
|
|
150
|
+
requestTimeout(requestTimeoutInMs),
|
|
151
|
+
];
|
|
152
|
+
let removeSignalEventListener = () => { };
|
|
153
|
+
if (abortSignal) {
|
|
154
|
+
raceOfPromises.push(new Promise((resolve, reject) => {
|
|
155
|
+
const onAbort = () => {
|
|
156
|
+
xhr.abort();
|
|
157
|
+
const abortError = new Error("Request aborted");
|
|
158
|
+
abortError.name = "AbortError";
|
|
159
|
+
reject(abortError);
|
|
160
|
+
};
|
|
161
|
+
if (typeof abortSignal.addEventListener === "function") {
|
|
162
|
+
const signal = abortSignal;
|
|
163
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
164
|
+
removeSignalEventListener = () => signal.removeEventListener("abort", onAbort);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
abortSignal.onabort = onAbort;
|
|
168
|
+
}
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
171
|
+
return Promise.race(raceOfPromises).finally(removeSignalEventListener);
|
|
205
172
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
173
|
+
responseHeaders(xhrHeaders) {
|
|
174
|
+
if (!xhrHeaders) {
|
|
175
|
+
return {};
|
|
176
|
+
}
|
|
177
|
+
return xhrHeaders.split("\r\n").reduce((headerMap, line) => {
|
|
178
|
+
const parts = line.split(": ");
|
|
179
|
+
const header = parts.shift();
|
|
180
|
+
const value = parts.join(": ");
|
|
181
|
+
headerMap[header] = value;
|
|
182
|
+
return headerMap;
|
|
183
|
+
}, {});
|
|
184
|
+
}
|
|
185
|
+
initializeTransformStream() {
|
|
186
|
+
const textEncoder = new TextEncoder();
|
|
187
|
+
const stream = new TransformStream({
|
|
188
|
+
start() { },
|
|
189
|
+
async transform(chunk, controller) {
|
|
190
|
+
controller.enqueue(textEncoder.encode(String(chunk)));
|
|
191
|
+
},
|
|
192
|
+
flush() { },
|
|
193
|
+
});
|
|
194
|
+
const writer = stream.writable.getWriter();
|
|
195
|
+
return {
|
|
196
|
+
stream,
|
|
197
|
+
writer,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const isForbiddenRequestHeader = (header) => {
|
|
202
|
+
header = header.toLowerCase();
|
|
203
|
+
if (header.startsWith("proxy-")) {
|
|
204
|
+
return true;
|
|
215
205
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
headerMap[header] = value;
|
|
221
|
-
return headerMap;
|
|
222
|
-
}, {});
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* @returns a stream and its default writer to be used to map the xhr response text to a readable stream.
|
|
226
|
-
*/
|
|
227
|
-
initializeTransformStream() {
|
|
228
|
-
const textEncoder = new TextEncoder();
|
|
229
|
-
const stream = new TransformStream({
|
|
230
|
-
start() {
|
|
231
|
-
},
|
|
232
|
-
async transform(chunk, controller) {
|
|
233
|
-
controller.enqueue(textEncoder.encode(String(chunk)));
|
|
234
|
-
},
|
|
235
|
-
flush() {
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
const writer = stream.writable.getWriter();
|
|
239
|
-
return {
|
|
240
|
-
stream,
|
|
241
|
-
writer
|
|
242
|
-
};
|
|
243
|
-
}
|
|
206
|
+
if (header.startsWith("sec-")) {
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
return forbiddenHeaders.includes(header);
|
|
244
210
|
};
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
"Feature-Policy",
|
|
267
|
-
"Host",
|
|
268
|
-
"Keep-Alive",
|
|
269
|
-
"Origin",
|
|
270
|
-
"Referer",
|
|
271
|
-
"TE",
|
|
272
|
-
"Trailer",
|
|
273
|
-
"Transfer-Encoding",
|
|
274
|
-
"Upgrade",
|
|
275
|
-
"Via"
|
|
211
|
+
const forbiddenHeaders = [
|
|
212
|
+
"Accept-Charset",
|
|
213
|
+
"Accept-Encoding",
|
|
214
|
+
"Access-Control-Request-Headers",
|
|
215
|
+
"Access-Control-Request-Method",
|
|
216
|
+
"Connection",
|
|
217
|
+
"Content-Length",
|
|
218
|
+
"Cookie",
|
|
219
|
+
"Date",
|
|
220
|
+
"DNT",
|
|
221
|
+
"Expect",
|
|
222
|
+
"Feature-Policy",
|
|
223
|
+
"Host",
|
|
224
|
+
"Keep-Alive",
|
|
225
|
+
"Origin",
|
|
226
|
+
"Referer",
|
|
227
|
+
"TE",
|
|
228
|
+
"Trailer",
|
|
229
|
+
"Transfer-Encoding",
|
|
230
|
+
"Upgrade",
|
|
231
|
+
"Via",
|
|
276
232
|
].map((_) => _.toLowerCase());
|
|
277
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
278
|
-
|
|
279
|
-
0 && (module.exports = {
|
|
280
|
-
XhrHttpHandler
|
|
281
|
-
});
|
|
282
233
|
|
|
234
|
+
exports.XhrHttpHandler = XhrHttpHandler;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-sdk/xhr-http-handler",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.914.0",
|
|
4
4
|
"description": "Provides a way to make requests using XMLHttpRequest",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
|
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
"module": "./dist-es/index.js",
|
|
22
22
|
"types": "./dist-types/index.d.ts",
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@aws-sdk/types": "3.
|
|
25
|
-
"@smithy/protocol-http": "^5.3.
|
|
26
|
-
"@smithy/querystring-builder": "^4.2.
|
|
27
|
-
"@smithy/types": "^4.
|
|
24
|
+
"@aws-sdk/types": "3.914.0",
|
|
25
|
+
"@smithy/protocol-http": "^5.3.3",
|
|
26
|
+
"@smithy/querystring-builder": "^4.2.3",
|
|
27
|
+
"@smithy/types": "^4.8.0",
|
|
28
28
|
"events": "3.3.0",
|
|
29
29
|
"tslib": "^2.6.2"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@smithy/abort-controller": "^4.2.
|
|
32
|
+
"@smithy/abort-controller": "^4.2.3",
|
|
33
33
|
"@tsconfig/recommended": "1.0.1",
|
|
34
34
|
"concurrently": "7.0.0",
|
|
35
35
|
"downlevel-dts": "0.10.1",
|