@nocobase/plugin-ai-gigachat 2.3.0-beta.13 → 2.3.0-beta.15

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 (87) hide show
  1. package/dist/externalVersion.js +5 -5
  2. package/dist/node_modules/gigachat/package.json +1 -1
  3. package/dist/node_modules/langchain-gigachat/package.json +1 -1
  4. package/package.json +2 -2
  5. package/dist/node_modules/gigachat/node_modules/axios/dist/axios.js +0 -5249
  6. package/dist/node_modules/gigachat/node_modules/axios/dist/axios.min.js +0 -5
  7. package/dist/node_modules/gigachat/node_modules/axios/dist/browser/axios.cjs +0 -5146
  8. package/dist/node_modules/gigachat/node_modules/axios/dist/esm/axios.js +0 -5167
  9. package/dist/node_modules/gigachat/node_modules/axios/dist/esm/axios.min.js +0 -3
  10. package/dist/node_modules/gigachat/node_modules/axios/dist/node/axios.cjs +0 -5996
  11. package/dist/node_modules/gigachat/node_modules/axios/index.d.cts +0 -738
  12. package/dist/node_modules/gigachat/node_modules/axios/index.d.ts +0 -755
  13. package/dist/node_modules/gigachat/node_modules/axios/index.js +0 -45
  14. package/dist/node_modules/gigachat/node_modules/axios/lib/adapters/adapters.js +0 -132
  15. package/dist/node_modules/gigachat/node_modules/axios/lib/adapters/fetch.js +0 -643
  16. package/dist/node_modules/gigachat/node_modules/axios/lib/adapters/http.js +0 -1417
  17. package/dist/node_modules/gigachat/node_modules/axios/lib/adapters/xhr.js +0 -228
  18. package/dist/node_modules/gigachat/node_modules/axios/lib/axios.js +0 -89
  19. package/dist/node_modules/gigachat/node_modules/axios/lib/cancel/CancelToken.js +0 -135
  20. package/dist/node_modules/gigachat/node_modules/axios/lib/cancel/CanceledError.js +0 -22
  21. package/dist/node_modules/gigachat/node_modules/axios/lib/cancel/isCancel.js +0 -5
  22. package/dist/node_modules/gigachat/node_modules/axios/lib/core/Axios.js +0 -283
  23. package/dist/node_modules/gigachat/node_modules/axios/lib/core/AxiosError.js +0 -188
  24. package/dist/node_modules/gigachat/node_modules/axios/lib/core/AxiosHeaders.js +0 -351
  25. package/dist/node_modules/gigachat/node_modules/axios/lib/core/InterceptorManager.js +0 -72
  26. package/dist/node_modules/gigachat/node_modules/axios/lib/core/buildFullPath.js +0 -50
  27. package/dist/node_modules/gigachat/node_modules/axios/lib/core/dispatchRequest.js +0 -89
  28. package/dist/node_modules/gigachat/node_modules/axios/lib/core/mergeConfig.js +0 -159
  29. package/dist/node_modules/gigachat/node_modules/axios/lib/core/settle.js +0 -27
  30. package/dist/node_modules/gigachat/node_modules/axios/lib/core/transformData.js +0 -28
  31. package/dist/node_modules/gigachat/node_modules/axios/lib/defaults/index.js +0 -177
  32. package/dist/node_modules/gigachat/node_modules/axios/lib/defaults/transitional.js +0 -10
  33. package/dist/node_modules/gigachat/node_modules/axios/lib/env/classes/FormData.js +0 -2
  34. package/dist/node_modules/gigachat/node_modules/axios/lib/env/data.js +0 -1
  35. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/AxiosTransformStream.js +0 -156
  36. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +0 -59
  37. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/Http2Sessions.js +0 -119
  38. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/HttpStatusCode.js +0 -77
  39. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +0 -29
  40. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/bind.js +0 -14
  41. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/buildURL.js +0 -69
  42. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/callbackify.js +0 -18
  43. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/combineURLs.js +0 -15
  44. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/composeSignals.js +0 -57
  45. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/cookies.js +0 -64
  46. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/deprecatedMethod.js +0 -31
  47. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +0 -105
  48. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/formDataToJSON.js +0 -119
  49. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/formDataToStream.js +0 -119
  50. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/fromDataURI.js +0 -68
  51. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/isAbsoluteURL.js +0 -19
  52. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/isAxiosError.js +0 -14
  53. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/isURLSameOrigin.js +0 -16
  54. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/null.js +0 -2
  55. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/parseHeaders.js +0 -69
  56. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/parseProtocol.js +0 -6
  57. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/progressEventReducer.js +0 -54
  58. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/readBlob.js +0 -15
  59. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/resolveConfig.js +0 -119
  60. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/sanitizeHeaderValue.js +0 -60
  61. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/shouldBypassProxy.js +0 -210
  62. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/speedometer.js +0 -55
  63. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/spread.js +0 -28
  64. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/throttle.js +0 -44
  65. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/toFormData.js +0 -285
  66. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/toURLEncodedForm.js +0 -19
  67. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/trackStream.js +0 -89
  68. package/dist/node_modules/gigachat/node_modules/axios/lib/helpers/validator.js +0 -112
  69. package/dist/node_modules/gigachat/node_modules/axios/lib/platform/browser/classes/Blob.js +0 -3
  70. package/dist/node_modules/gigachat/node_modules/axios/lib/platform/browser/classes/FormData.js +0 -3
  71. package/dist/node_modules/gigachat/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +0 -4
  72. package/dist/node_modules/gigachat/node_modules/axios/lib/platform/browser/index.js +0 -13
  73. package/dist/node_modules/gigachat/node_modules/axios/lib/platform/common/utils.js +0 -52
  74. package/dist/node_modules/gigachat/node_modules/axios/lib/platform/index.js +0 -7
  75. package/dist/node_modules/gigachat/node_modules/axios/lib/platform/node/classes/FormData.js +0 -3
  76. package/dist/node_modules/gigachat/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +0 -4
  77. package/dist/node_modules/gigachat/node_modules/axios/lib/platform/node/index.js +0 -37
  78. package/dist/node_modules/gigachat/node_modules/axios/lib/utils.js +0 -1017
  79. package/dist/node_modules/gigachat/node_modules/axios/package.json +0 -201
  80. package/dist/node_modules/gigachat/node_modules/follow-redirects/debug.js +0 -15
  81. package/dist/node_modules/gigachat/node_modules/follow-redirects/http.js +0 -1
  82. package/dist/node_modules/gigachat/node_modules/follow-redirects/https.js +0 -1
  83. package/dist/node_modules/gigachat/node_modules/follow-redirects/index.js +0 -709
  84. package/dist/node_modules/gigachat/node_modules/follow-redirects/package.json +0 -58
  85. package/dist/node_modules/gigachat/node_modules/proxy-from-env/index.cjs +0 -105
  86. package/dist/node_modules/gigachat/node_modules/proxy-from-env/index.js +0 -103
  87. package/dist/node_modules/gigachat/node_modules/proxy-from-env/package.json +0 -43
@@ -1,643 +0,0 @@
1
- import platform from '../platform/index.js';
2
- import utils from '../utils.js';
3
- import AxiosError from '../core/AxiosError.js';
4
- import composeSignals from '../helpers/composeSignals.js';
5
- import { trackStream } from '../helpers/trackStream.js';
6
- import AxiosHeaders from '../core/AxiosHeaders.js';
7
- import {
8
- progressEventReducer,
9
- progressEventDecorator,
10
- asyncDecorator,
11
- } from '../helpers/progressEventReducer.js';
12
- import resolveConfig from '../helpers/resolveConfig.js';
13
- import settle from '../core/settle.js';
14
- import estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.js';
15
- import { VERSION } from '../env/data.js';
16
- import { toByteStringHeaderObject } from '../helpers/sanitizeHeaderValue.js';
17
-
18
- const DEFAULT_CHUNK_SIZE = 64 * 1024;
19
-
20
- const { isFunction } = utils;
21
-
22
- /**
23
- * Encode a UTF-8 string to a Latin-1 byte string for use with btoa().
24
- * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.
25
- *
26
- * @param {string} str The string to encode
27
- *
28
- * @returns {string} UTF-8 bytes as a Latin-1 string
29
- */
30
- const encodeUTF8 = (str) =>
31
- encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>
32
- String.fromCharCode(parseInt(hex, 16))
33
- );
34
-
35
- // Node's WHATWG URL parser returns `username` and `password` percent-encoded.
36
- // Decode before composing the `auth` option so credentials such as
37
- // `my%40email.com:pass` are sent as `my@email.com:pass`. Falls back to the
38
- // original value for malformed input so a bad encoding never throws.
39
- const decodeURIComponentSafe = (value) => {
40
- if (!utils.isString(value)) {
41
- return value;
42
- }
43
-
44
- try {
45
- return decodeURIComponent(value);
46
- } catch (error) {
47
- return value;
48
- }
49
- };
50
-
51
- const test = (fn, ...args) => {
52
- try {
53
- return !!fn(...args);
54
- } catch (e) {
55
- return false;
56
- }
57
- };
58
-
59
- const maybeWithAuthCredentials = (url) => {
60
- const protocolIndex = url.indexOf('://');
61
- let urlToCheck = url;
62
- if (protocolIndex !== -1) {
63
- urlToCheck = urlToCheck.slice(protocolIndex + 3);
64
- }
65
- return urlToCheck.includes('@') || urlToCheck.includes(':');
66
- };
67
-
68
- const factory = (env) => {
69
- const globalObject =
70
- utils.global !== undefined && utils.global !== null
71
- ? utils.global
72
- : globalThis;
73
- const { ReadableStream, TextEncoder } = globalObject;
74
-
75
- env = utils.merge.call(
76
- {
77
- skipUndefined: true,
78
- },
79
- {
80
- Request: globalObject.Request,
81
- Response: globalObject.Response,
82
- },
83
- env
84
- );
85
-
86
- const { fetch: envFetch, Request, Response } = env;
87
- const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';
88
- const isRequestSupported = isFunction(Request);
89
- const isResponseSupported = isFunction(Response);
90
-
91
- if (!isFetchSupported) {
92
- return false;
93
- }
94
-
95
- const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);
96
-
97
- const encodeText =
98
- isFetchSupported &&
99
- (typeof TextEncoder === 'function'
100
- ? (
101
- (encoder) => (str) =>
102
- encoder.encode(str)
103
- )(new TextEncoder())
104
- : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));
105
-
106
- const supportsRequestStream =
107
- isRequestSupported &&
108
- isReadableStreamSupported &&
109
- test(() => {
110
- let duplexAccessed = false;
111
-
112
- const request = new Request(platform.origin, {
113
- body: new ReadableStream(),
114
- method: 'POST',
115
- get duplex() {
116
- duplexAccessed = true;
117
- return 'half';
118
- },
119
- });
120
-
121
- const hasContentType = request.headers.has('Content-Type');
122
-
123
- if (request.body != null) {
124
- request.body.cancel();
125
- }
126
-
127
- return duplexAccessed && !hasContentType;
128
- });
129
-
130
- const supportsResponseStream =
131
- isResponseSupported &&
132
- isReadableStreamSupported &&
133
- test(() => utils.isReadableStream(new Response('').body));
134
-
135
- const resolvers = {
136
- stream: supportsResponseStream && ((res) => res.body),
137
- };
138
-
139
- isFetchSupported &&
140
- (() => {
141
- ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {
142
- !resolvers[type] &&
143
- (resolvers[type] = (res, config) => {
144
- let method = res && res[type];
145
-
146
- if (method) {
147
- return method.call(res);
148
- }
149
-
150
- throw new AxiosError(
151
- `Response type '${type}' is not supported`,
152
- AxiosError.ERR_NOT_SUPPORT,
153
- config
154
- );
155
- });
156
- });
157
- })();
158
-
159
- const getBodyLength = async (body) => {
160
- if (body == null) {
161
- return 0;
162
- }
163
-
164
- if (utils.isBlob(body)) {
165
- return body.size;
166
- }
167
-
168
- if (utils.isSpecCompliantForm(body)) {
169
- const _request = new Request(platform.origin, {
170
- method: 'POST',
171
- body,
172
- });
173
- return (await _request.arrayBuffer()).byteLength;
174
- }
175
-
176
- if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {
177
- return body.byteLength;
178
- }
179
-
180
- if (utils.isURLSearchParams(body)) {
181
- body = body + '';
182
- }
183
-
184
- if (utils.isString(body)) {
185
- return (await encodeText(body)).byteLength;
186
- }
187
- };
188
-
189
- const resolveBodyLength = async (headers, body) => {
190
- const length = utils.toFiniteNumber(headers.getContentLength());
191
-
192
- return length == null ? getBodyLength(body) : length;
193
- };
194
-
195
- return async (config) => {
196
- let {
197
- url,
198
- method,
199
- data,
200
- signal,
201
- cancelToken,
202
- timeout,
203
- onDownloadProgress,
204
- onUploadProgress,
205
- responseType,
206
- headers,
207
- withCredentials = 'same-origin',
208
- fetchOptions,
209
- maxContentLength,
210
- maxBodyLength,
211
- } = resolveConfig(config);
212
-
213
- const hasMaxContentLength = utils.isNumber(maxContentLength) && maxContentLength > -1;
214
- const hasMaxBodyLength = utils.isNumber(maxBodyLength) && maxBodyLength > -1;
215
- const own = (key) => (utils.hasOwnProp(config, key) ? config[key] : undefined);
216
-
217
- let _fetch = envFetch || fetch;
218
-
219
- responseType = responseType ? (responseType + '').toLowerCase() : 'text';
220
-
221
- let composedSignal = composeSignals(
222
- [signal, cancelToken && cancelToken.toAbortSignal()],
223
- timeout
224
- );
225
-
226
- let request = null;
227
-
228
- const unsubscribe =
229
- composedSignal &&
230
- composedSignal.unsubscribe &&
231
- (() => {
232
- composedSignal.unsubscribe();
233
- });
234
-
235
- let requestContentLength;
236
-
237
- // AxiosError we raise while the request body is being streamed. Captured
238
- // by identity so the catch block can surface it directly, regardless of
239
- // how the runtime wraps the resulting fetch rejection (undici exposes it
240
- // as `err.cause`; some browsers drop the original error entirely).
241
- let pendingBodyError = null;
242
-
243
- const maxBodyLengthError = () =>
244
- new AxiosError(
245
- 'Request body larger than maxBodyLength limit',
246
- AxiosError.ERR_BAD_REQUEST,
247
- config,
248
- request
249
- );
250
-
251
- try {
252
- // HTTP basic authentication
253
- let auth = undefined;
254
- const configAuth = own('auth');
255
-
256
- if (configAuth) {
257
- const username = utils.getSafeProp(configAuth, 'username') || '';
258
- const password = utils.getSafeProp(configAuth, 'password') || '';
259
- auth = {
260
- username,
261
- password
262
- };
263
- }
264
-
265
- if (maybeWithAuthCredentials(url)) {
266
- const parsedURL = new URL(url, platform.origin);
267
-
268
- if (!auth && (parsedURL.username || parsedURL.password)) {
269
- const urlUsername = decodeURIComponentSafe(parsedURL.username);
270
- const urlPassword = decodeURIComponentSafe(parsedURL.password);
271
- auth = {
272
- username: urlUsername,
273
- password: urlPassword
274
- };
275
- }
276
-
277
- if (parsedURL.username || parsedURL.password) {
278
- parsedURL.username = '';
279
- parsedURL.password = '';
280
- url = parsedURL.href;
281
- }
282
- }
283
-
284
- if (auth) {
285
- headers.delete('authorization');
286
- headers.set(
287
- 'Authorization',
288
- 'Basic ' + btoa(encodeUTF8((auth.username || '') + ':' + (auth.password || '')))
289
- );
290
- }
291
-
292
- // Enforce maxContentLength for data: URLs up-front so we never materialize
293
- // an oversized payload. The HTTP adapter applies the same check (see http.js
294
- // "if (protocol === 'data:')" branch).
295
- if (hasMaxContentLength && typeof url === 'string' && url.startsWith('data:')) {
296
- const estimated = estimateDataURLDecodedBytes(url);
297
- if (estimated > maxContentLength) {
298
- throw new AxiosError(
299
- 'maxContentLength size of ' + maxContentLength + ' exceeded',
300
- AxiosError.ERR_BAD_RESPONSE,
301
- config,
302
- request
303
- );
304
- }
305
- }
306
-
307
- // Enforce maxBodyLength against known-size bodies before dispatch using
308
- // the body's *actual* size — never a caller-declared Content-Length,
309
- // which could under-report to slip an oversized body past the check.
310
- // Unknown-size streams return undefined here and are counted per-chunk
311
- // below as fetch consumes them.
312
- if (hasMaxBodyLength && method !== 'get' && method !== 'head') {
313
- const outboundLength = await getBodyLength(data);
314
- if (typeof outboundLength === 'number' && isFinite(outboundLength)) {
315
- requestContentLength = outboundLength;
316
- if (outboundLength > maxBodyLength) {
317
- throw maxBodyLengthError();
318
- }
319
- }
320
- }
321
-
322
- // A streamed body under maxBodyLength must be counted as fetch consumes
323
- // it; its size is never trusted from a caller-declared Content-Length.
324
- const mustEnforceStreamBody =
325
- hasMaxBodyLength && (utils.isReadableStream(data) || utils.isStream(data));
326
-
327
- const trackRequestStream = (stream, onProgress, flush) =>
328
- trackStream(
329
- stream,
330
- DEFAULT_CHUNK_SIZE,
331
- (loadedBytes) => {
332
- if (hasMaxBodyLength && loadedBytes > maxBodyLength) {
333
- throw (pendingBodyError = maxBodyLengthError());
334
- }
335
- onProgress && onProgress(loadedBytes);
336
- },
337
- flush
338
- );
339
-
340
- if (
341
- supportsRequestStream &&
342
- method !== 'get' &&
343
- method !== 'head' &&
344
- (onUploadProgress || mustEnforceStreamBody)
345
- ) {
346
- requestContentLength =
347
- requestContentLength == null ? await resolveBodyLength(headers, data) : requestContentLength;
348
-
349
- // A declared length of 0 is only trusted to skip the wrap when we are
350
- // not enforcing a stream limit (which must not rely on that header).
351
- if (requestContentLength !== 0 || mustEnforceStreamBody) {
352
- let _request = new Request(url, {
353
- method: 'POST',
354
- body: data,
355
- duplex: 'half',
356
- });
357
-
358
- let contentTypeHeader;
359
-
360
- if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
361
- headers.setContentType(contentTypeHeader);
362
- }
363
-
364
- if (_request.body) {
365
- const [onProgress, flush] =
366
- (onUploadProgress &&
367
- progressEventDecorator(
368
- requestContentLength,
369
- progressEventReducer(asyncDecorator(onUploadProgress))
370
- )) ||
371
- [];
372
-
373
- data = trackRequestStream(_request.body, onProgress, flush);
374
- }
375
- }
376
- } else if (
377
- mustEnforceStreamBody &&
378
- !isRequestSupported &&
379
- isReadableStreamSupported &&
380
- method !== 'get' &&
381
- method !== 'head'
382
- ) {
383
- data = trackRequestStream(data);
384
- } else if (
385
- mustEnforceStreamBody &&
386
- isRequestSupported &&
387
- !supportsRequestStream &&
388
- method !== 'get' &&
389
- method !== 'head'
390
- ) {
391
- throw new AxiosError(
392
- 'Stream request bodies are not supported by the current fetch implementation',
393
- AxiosError.ERR_NOT_SUPPORT,
394
- config,
395
- request
396
- );
397
- }
398
-
399
- if (!utils.isString(withCredentials)) {
400
- withCredentials = withCredentials ? 'include' : 'omit';
401
- }
402
-
403
- // Cloudflare Workers throws when credentials are defined
404
- // see https://github.com/cloudflare/workerd/issues/902
405
- const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;
406
-
407
- // If data is FormData and Content-Type is multipart/form-data without boundary,
408
- // delete it so fetch can set it correctly with the boundary
409
- if (utils.isFormData(data)) {
410
- const contentType = headers.getContentType();
411
- if (
412
- contentType &&
413
- /^multipart\/form-data/i.test(contentType) &&
414
- !/boundary=/i.test(contentType)
415
- ) {
416
- headers.delete('content-type');
417
- }
418
- }
419
-
420
- // Set User-Agent header if not already set (fetch defaults to 'node' in Node.js)
421
- headers.set('User-Agent', 'axios/' + VERSION, false);
422
-
423
- const resolvedOptions = {
424
- ...fetchOptions,
425
- signal: composedSignal,
426
- method: method.toUpperCase(),
427
- headers: toByteStringHeaderObject(headers.normalize()),
428
- body: data,
429
- duplex: 'half',
430
- credentials: isCredentialsSupported ? withCredentials : undefined,
431
- };
432
-
433
- request = isRequestSupported && new Request(url, resolvedOptions);
434
-
435
- let response = await (isRequestSupported
436
- ? _fetch(request, fetchOptions)
437
- : _fetch(url, resolvedOptions));
438
-
439
- const responseHeaders = AxiosHeaders.from(response.headers);
440
-
441
- // Cheap pre-check: if the server honestly declares a content-length that
442
- // already exceeds the cap, reject before we start streaming.
443
- if (hasMaxContentLength) {
444
- const declaredLength = utils.toFiniteNumber(responseHeaders.getContentLength());
445
- if (declaredLength != null && declaredLength > maxContentLength) {
446
- throw new AxiosError(
447
- 'maxContentLength size of ' + maxContentLength + ' exceeded',
448
- AxiosError.ERR_BAD_RESPONSE,
449
- config,
450
- request
451
- );
452
- }
453
- }
454
-
455
- const isStreamResponse =
456
- supportsResponseStream && (responseType === 'stream' || responseType === 'response');
457
-
458
- if (
459
- supportsResponseStream &&
460
- response.body &&
461
- (onDownloadProgress || hasMaxContentLength || (isStreamResponse && unsubscribe))
462
- ) {
463
- const options = {};
464
-
465
- ['status', 'statusText', 'headers'].forEach((prop) => {
466
- options[prop] = response[prop];
467
- });
468
-
469
- const responseContentLength = utils.toFiniteNumber(responseHeaders.getContentLength());
470
-
471
- const [onProgress, flush] =
472
- (onDownloadProgress &&
473
- progressEventDecorator(
474
- responseContentLength,
475
- progressEventReducer(asyncDecorator(onDownloadProgress), true)
476
- )) ||
477
- [];
478
-
479
- let bytesRead = 0;
480
- const onChunkProgress = (loadedBytes) => {
481
- if (hasMaxContentLength) {
482
- bytesRead = loadedBytes;
483
- if (bytesRead > maxContentLength) {
484
- throw new AxiosError(
485
- 'maxContentLength size of ' + maxContentLength + ' exceeded',
486
- AxiosError.ERR_BAD_RESPONSE,
487
- config,
488
- request
489
- );
490
- }
491
- }
492
- onProgress && onProgress(loadedBytes);
493
- };
494
-
495
- response = new Response(
496
- trackStream(response.body, DEFAULT_CHUNK_SIZE, onChunkProgress, () => {
497
- flush && flush();
498
- unsubscribe && unsubscribe();
499
- }),
500
- options
501
- );
502
- }
503
-
504
- responseType = responseType || 'text';
505
-
506
- let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](
507
- response,
508
- config
509
- );
510
-
511
- // Fallback enforcement for environments without ReadableStream support
512
- // (legacy runtimes). Detect materialized size from typed output; skip
513
- // streams/Response passthrough since the user will read those themselves.
514
- if (hasMaxContentLength && !supportsResponseStream && !isStreamResponse) {
515
- let materializedSize;
516
- if (responseData != null) {
517
- if (typeof responseData.byteLength === 'number') {
518
- materializedSize = responseData.byteLength;
519
- } else if (typeof responseData.size === 'number') {
520
- materializedSize = responseData.size;
521
- } else if (typeof responseData === 'string') {
522
- materializedSize =
523
- typeof TextEncoder === 'function'
524
- ? new TextEncoder().encode(responseData).byteLength
525
- : responseData.length;
526
- }
527
- }
528
- if (typeof materializedSize === 'number' && materializedSize > maxContentLength) {
529
- throw new AxiosError(
530
- 'maxContentLength size of ' + maxContentLength + ' exceeded',
531
- AxiosError.ERR_BAD_RESPONSE,
532
- config,
533
- request
534
- );
535
- }
536
- }
537
-
538
- !isStreamResponse && unsubscribe && unsubscribe();
539
-
540
- return await new Promise((resolve, reject) => {
541
- settle(resolve, reject, {
542
- data: responseData,
543
- headers: AxiosHeaders.from(response.headers),
544
- status: response.status,
545
- statusText: response.statusText,
546
- config,
547
- request,
548
- });
549
- });
550
- } catch (err) {
551
- unsubscribe && unsubscribe();
552
-
553
- // Safari can surface fetch aborts as a DOMException-like object whose
554
- // branded getters throw. Prefer our composed signal reason before reading
555
- // the caught error, preserving timeout vs cancellation semantics.
556
- if (composedSignal && composedSignal.aborted && composedSignal.reason instanceof AxiosError) {
557
- const canceledError = composedSignal.reason;
558
- canceledError.config = config;
559
- request && (canceledError.request = request);
560
- if (err !== canceledError) {
561
- // Non-enumerable to match native Error `cause` semantics so loggers
562
- // don't recurse into circular fetch internals (see #7205).
563
- Object.defineProperty(canceledError, 'cause', {
564
- __proto__: null,
565
- value: err,
566
- writable: true,
567
- enumerable: false,
568
- configurable: true,
569
- });
570
- }
571
- throw canceledError;
572
- }
573
-
574
- // Surface a maxBodyLength violation we raised while the request body was
575
- // being streamed. Matching by identity (rather than reading
576
- // `err.cause.isAxiosError`) keeps the error deterministic across runtimes
577
- // and avoids both prototype-pollution reads and mis-attributing a foreign
578
- // AxiosError that merely happened to land in `err.cause`.
579
- if (pendingBodyError) {
580
- request && !pendingBodyError.request && (pendingBodyError.request = request);
581
- throw pendingBodyError;
582
- }
583
-
584
- // Re-throw AxiosErrors we raised synchronously (data: URL / content-length
585
- // pre-checks, response size enforcement) without re-wrapping them.
586
- if (err instanceof AxiosError) {
587
- request && !err.request && (err.request = request);
588
- throw err;
589
- }
590
-
591
- if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {
592
- const networkError = new AxiosError(
593
- 'Network Error',
594
- AxiosError.ERR_NETWORK,
595
- config,
596
- request,
597
- err && err.response
598
- );
599
- // Non-enumerable to match native Error `cause` semantics so loggers
600
- // don't recurse into circular fetch internals (see #7205).
601
- Object.defineProperty(networkError, 'cause', {
602
- __proto__: null,
603
- value: err.cause || err,
604
- writable: true,
605
- enumerable: false,
606
- configurable: true,
607
- });
608
- throw networkError;
609
- }
610
-
611
- throw AxiosError.from(err, err && err.code, config, request, err && err.response);
612
- }
613
- };
614
- };
615
-
616
- const seedCache = new Map();
617
-
618
- export const getFetch = (config) => {
619
- let env = (config && config.env) || {};
620
- const { fetch, Request, Response } = env;
621
- const seeds = [Request, Response, fetch];
622
-
623
- let len = seeds.length,
624
- i = len,
625
- seed,
626
- target,
627
- map = seedCache;
628
-
629
- while (i--) {
630
- seed = seeds[i];
631
- target = map.get(seed);
632
-
633
- target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));
634
-
635
- map = target;
636
- }
637
-
638
- return target;
639
- };
640
-
641
- const adapter = getFetch();
642
-
643
- export default adapter;