@univerjs/network 0.17.0 → 0.18.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/lib/cjs/facade.js +1 -1
- package/lib/cjs/index.js +2 -2
- package/lib/es/facade.js +1 -85
- package/lib/es/index.js +2 -627
- package/lib/facade.js +1 -85
- package/lib/index.js +2 -627
- package/lib/types/config/config.d.ts +16 -1
- package/lib/types/facade/f-network.d.ts +18 -2
- package/lib/types/facade/f-univer.d.ts +16 -1
- package/lib/types/plugin.d.ts +16 -1
- package/lib/types/services/http/__testing__/http-testing-utils.d.ts +17 -2
- package/lib/types/services/http/http.service.d.ts +22 -6
- package/lib/types/services/http/implementations/fetch.d.ts +18 -3
- package/lib/types/services/http/implementations/implementation.d.ts +19 -4
- package/lib/types/services/http/implementations/util.d.ts +16 -1
- package/lib/types/services/http/implementations/xhr.d.ts +18 -3
- package/lib/types/services/http/interceptor.d.ts +18 -3
- package/lib/types/services/http/interceptors/auth-interceptor.d.ts +16 -1
- package/lib/types/services/http/interceptors/merge-interceptor.d.ts +18 -3
- package/lib/types/services/http/interceptors/retry-interceptor.d.ts +17 -2
- package/lib/types/services/http/interceptors/threshold-interceptor.d.ts +17 -2
- package/lib/types/services/http/request.d.ts +17 -2
- package/lib/types/services/http/response.d.ts +17 -2
- package/lib/types/services/web-socket/web-socket.service.d.ts +18 -2
- package/lib/umd/facade.js +1 -1
- package/lib/umd/index.js +2 -2
- package/package.json +7 -6
- package/lib/types/services/http/__testing__/http-params.spec.d.ts +0 -16
- package/lib/types/services/http/__testing__/http.service.spec.d.ts +0 -16
- package/lib/types/services/http/__testing__/request.spec.d.ts +0 -16
package/lib/es/index.js
CHANGED
|
@@ -1,627 +1,2 @@
|
|
|
1
|
-
var S = Object.defineProperty;
|
|
2
|
-
var H = (e, t, r) => t in e ? S(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
|
|
3
|
-
var p = (e, t, r) => H(e, typeof t != "symbol" ? t + "" : t, r);
|
|
4
|
-
import { createIdentifier as K, Disposable as z, toDisposable as I, remove as Y, ILogService as $, Inject as C, Injector as T, IConfigService as ee, Plugin as re, merge as te, Quantity as ne, LookUp as se, registerDependencies as oe, mergeOverrideWithDependencies as ie, DisposableCollection as ce } from "@univerjs/core";
|
|
5
|
-
import { of as M, firstValueFrom as ae, Observable as m, catchError as le, throwError as he } from "rxjs";
|
|
6
|
-
import { concatMap as B, retry as pe, share as x } from "rxjs/operators";
|
|
7
|
-
const de = "@univerjs/network", ue = "0.17.0", G = {
|
|
8
|
-
name: de,
|
|
9
|
-
version: ue
|
|
10
|
-
}, ge = "network.config", W = {}, O = "application/json";
|
|
11
|
-
function fe(e) {
|
|
12
|
-
return Array.isArray(e) ? e.some((t) => t.includes(O)) : e.includes(O);
|
|
13
|
-
}
|
|
14
|
-
class b {
|
|
15
|
-
constructor(t) {
|
|
16
|
-
p(this, "_headers", /* @__PURE__ */ new Map());
|
|
17
|
-
typeof t == "string" ? this._handleHeadersString(t) : t instanceof Headers ? this._handleHeaders(t) : t && this._handleHeadersConstructorProps(t);
|
|
18
|
-
}
|
|
19
|
-
forEach(t) {
|
|
20
|
-
this._headers.forEach((r, n) => t(n, r));
|
|
21
|
-
}
|
|
22
|
-
has(t) {
|
|
23
|
-
return !!this._headers.has(t.toLowerCase());
|
|
24
|
-
}
|
|
25
|
-
get(t) {
|
|
26
|
-
const r = t.toLowerCase();
|
|
27
|
-
return this._headers.has(r) ? this._headers.get(r) : null;
|
|
28
|
-
}
|
|
29
|
-
set(t, r) {
|
|
30
|
-
this._setHeader(t, r);
|
|
31
|
-
}
|
|
32
|
-
toHeadersInit(t) {
|
|
33
|
-
var n, s;
|
|
34
|
-
const r = {};
|
|
35
|
-
return this._headers.forEach((o, i) => {
|
|
36
|
-
r[i] = o.join(",");
|
|
37
|
-
}), (n = r.accept) != null || (r.accept = "application/json, text/plain, */*"), t instanceof FormData || (s = r["content-type"]) != null || (r["content-type"] = "application/json;charset=UTF-8"), r;
|
|
38
|
-
}
|
|
39
|
-
_setHeader(t, r) {
|
|
40
|
-
const n = t.toLowerCase();
|
|
41
|
-
this._headers.has(n) ? this._headers.get(n).push(r.toString()) : this._headers.set(n, [r.toString()]);
|
|
42
|
-
}
|
|
43
|
-
_handleHeadersString(t) {
|
|
44
|
-
t.split(`
|
|
45
|
-
`).forEach((r) => {
|
|
46
|
-
const [n, s] = r.split(":");
|
|
47
|
-
n && s && this._setHeader(n, s);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
_handleHeadersConstructorProps(t) {
|
|
51
|
-
Object.entries(t).forEach(([r, n]) => this._setHeader(r, n));
|
|
52
|
-
}
|
|
53
|
-
_handleHeaders(t) {
|
|
54
|
-
t.forEach((r, n) => this._setHeader(n, r));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const Q = K("network.http-implementation");
|
|
58
|
-
class X {
|
|
59
|
-
constructor(t) {
|
|
60
|
-
this.params = t;
|
|
61
|
-
}
|
|
62
|
-
toString() {
|
|
63
|
-
return this.params ? Object.keys(this.params).map((t) => {
|
|
64
|
-
const r = this.params[t];
|
|
65
|
-
return Array.isArray(r) ? r.map((n) => `${t}=${n}`).join("&") : `${t}=${r}`;
|
|
66
|
-
}).join("&") : "";
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
let ye = 0;
|
|
70
|
-
class V {
|
|
71
|
-
constructor(t, r, n) {
|
|
72
|
-
p(this, "uid", ye++);
|
|
73
|
-
this.method = t, this.url = r, this.requestParams = n;
|
|
74
|
-
}
|
|
75
|
-
get headers() {
|
|
76
|
-
return this.requestParams.headers;
|
|
77
|
-
}
|
|
78
|
-
get withCredentials() {
|
|
79
|
-
return this.requestParams.withCredentials;
|
|
80
|
-
}
|
|
81
|
-
get responseType() {
|
|
82
|
-
return this.requestParams.responseType;
|
|
83
|
-
}
|
|
84
|
-
getUrlWithParams() {
|
|
85
|
-
var r, n;
|
|
86
|
-
const t = (n = (r = this.requestParams) == null ? void 0 : r.params) == null ? void 0 : n.toString();
|
|
87
|
-
return t ? `${this.url}${this.url.includes("?") ? "&" : "?"}${t}` : this.url;
|
|
88
|
-
}
|
|
89
|
-
getBody() {
|
|
90
|
-
var n, s;
|
|
91
|
-
const t = (n = this.headers.get("Content-Type")) != null ? n : O, r = (s = this.requestParams) == null ? void 0 : s.body;
|
|
92
|
-
return r instanceof FormData ? r : fe(t) && r && typeof r == "object" ? JSON.stringify(r) : r ? `${r}` : null;
|
|
93
|
-
}
|
|
94
|
-
getHeadersInit() {
|
|
95
|
-
var r;
|
|
96
|
-
return this.headers.toHeadersInit((r = this.requestParams) == null ? void 0 : r.body);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
var we = Object.getOwnPropertyDescriptor, me = (e, t, r, n) => {
|
|
100
|
-
for (var s = n > 1 ? void 0 : n ? we(t, r) : t, o = e.length - 1, i; o >= 0; o--)
|
|
101
|
-
(i = e[o]) && (s = i(s) || s);
|
|
102
|
-
return s;
|
|
103
|
-
}, ve = (e, t) => (r, n) => t(r, n, e);
|
|
104
|
-
let L = class extends z {
|
|
105
|
-
constructor(t) {
|
|
106
|
-
super();
|
|
107
|
-
p(this, "_interceptors", []);
|
|
108
|
-
// eslint-disable-next-line ts/no-explicit-any
|
|
109
|
-
p(this, "_pipe");
|
|
110
|
-
this._http = t;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Register an HTTP interceptor.
|
|
114
|
-
*
|
|
115
|
-
* @param interceptor the http interceptor
|
|
116
|
-
* @returns a disposable handler to remove the interceptor
|
|
117
|
-
*/
|
|
118
|
-
registerHTTPInterceptor(t) {
|
|
119
|
-
if (this._interceptors.indexOf(t) !== -1)
|
|
120
|
-
throw new Error("[HTTPService]: The interceptor has already been registered!");
|
|
121
|
-
return this._interceptors.push(t), this._interceptors = this._interceptors.sort((r, n) => {
|
|
122
|
-
var s, o;
|
|
123
|
-
return ((s = r.priority) != null ? s : 0) - ((o = n.priority) != null ? o : 0);
|
|
124
|
-
}), this._pipe = null, I(() => Y(this._interceptors, t));
|
|
125
|
-
}
|
|
126
|
-
get(t, r) {
|
|
127
|
-
return this.request("GET", t, r);
|
|
128
|
-
}
|
|
129
|
-
post(t, r) {
|
|
130
|
-
return this.request("POST", t, r);
|
|
131
|
-
}
|
|
132
|
-
put(t, r) {
|
|
133
|
-
return this.request("PUT", t, r);
|
|
134
|
-
}
|
|
135
|
-
delete(t, r) {
|
|
136
|
-
return this.request("DELETE", t, r);
|
|
137
|
-
}
|
|
138
|
-
patch(t, r) {
|
|
139
|
-
return this.request("PATCH", t, r);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* The HTTP request implementations. Normally you should use the `get`, `post`, `put`, `delete`,
|
|
143
|
-
* `patch` methods instead.
|
|
144
|
-
* @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
|
|
145
|
-
* @param url The URL to send the request to.
|
|
146
|
-
* @param options Optional parameters for the request.
|
|
147
|
-
* @returns A promise that resolves to the HTTP response.
|
|
148
|
-
*/
|
|
149
|
-
async request(t, r, n) {
|
|
150
|
-
var l, h;
|
|
151
|
-
const s = new b(n == null ? void 0 : n.headers), o = new X(n == null ? void 0 : n.params), i = new V(t, r, {
|
|
152
|
-
headers: s,
|
|
153
|
-
params: o,
|
|
154
|
-
withCredentials: (l = n == null ? void 0 : n.withCredentials) != null ? l : !1,
|
|
155
|
-
// default value for withCredentials is false by MDN
|
|
156
|
-
responseType: (h = n == null ? void 0 : n.responseType) != null ? h : "json",
|
|
157
|
-
body: ["GET", "DELETE"].includes(t) || n == null ? void 0 : n.body
|
|
158
|
-
}), c = M(i).pipe(
|
|
159
|
-
B((a) => this._runInterceptorsAndImplementation(a))
|
|
160
|
-
);
|
|
161
|
-
return await ae(c);
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Send an HTTP request. It returns an observable that emits HTTP events. For example, it can be used to
|
|
165
|
-
* send Server-Sent Events (SSE) requests.
|
|
166
|
-
* @deprecated Please use `stream` method instead.
|
|
167
|
-
* @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
|
|
168
|
-
* @param url The URL to send the request to.
|
|
169
|
-
* @param _params Optional parameters for the request.
|
|
170
|
-
* @returns An observable of the HTTP event.
|
|
171
|
-
*/
|
|
172
|
-
stream(t, r, n) {
|
|
173
|
-
return this.getSSE(t, r, n);
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Send a Server-Sent Events (SSE) request. It returns an observable that emits HTTP events. It is the observable
|
|
177
|
-
* pair of the `request` method.
|
|
178
|
-
* @deprecated Please use `stream` method instead.
|
|
179
|
-
* @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
|
|
180
|
-
* @param url The URL to send the request to.
|
|
181
|
-
* @param _params Optional parameters for the request.
|
|
182
|
-
* @returns An observable of the HTTP event.
|
|
183
|
-
*/
|
|
184
|
-
getSSE(t, r, n) {
|
|
185
|
-
var c, u;
|
|
186
|
-
const s = new b(n == null ? void 0 : n.headers), o = new X(n == null ? void 0 : n.params), i = new V(t, r, {
|
|
187
|
-
headers: s,
|
|
188
|
-
params: o,
|
|
189
|
-
withCredentials: (c = n == null ? void 0 : n.withCredentials) != null ? c : !1,
|
|
190
|
-
reportProgress: !0,
|
|
191
|
-
responseType: (u = n == null ? void 0 : n.responseType) != null ? u : "json",
|
|
192
|
-
body: ["GET", "DELETE"].includes(t) || n == null ? void 0 : n.body
|
|
193
|
-
});
|
|
194
|
-
return M(i).pipe(B((l) => this._runInterceptorsAndImplementation(l)));
|
|
195
|
-
}
|
|
196
|
-
// eslint-disable-next-line ts/no-explicit-any
|
|
197
|
-
_runInterceptorsAndImplementation(t) {
|
|
198
|
-
return this._pipe || (this._pipe = this._interceptors.map((r) => r.interceptor).reduceRight(
|
|
199
|
-
(r, n) => _e(r, n),
|
|
200
|
-
(r, n) => n(r)
|
|
201
|
-
)), this._pipe(
|
|
202
|
-
t,
|
|
203
|
-
(r) => this._http.send(r)
|
|
204
|
-
/* final handler */
|
|
205
|
-
);
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
L = me([
|
|
209
|
-
ve(0, Q)
|
|
210
|
-
], L);
|
|
211
|
-
function _e(e, t) {
|
|
212
|
-
return (r, n) => t(r, (s) => e(s, n));
|
|
213
|
-
}
|
|
214
|
-
const Ee = 200, Re = 300;
|
|
215
|
-
var N = /* @__PURE__ */ ((e) => (e[e.Continue = 100] = "Continue", e[e.SwitchingProtocols = 101] = "SwitchingProtocols", e[e.Processing = 102] = "Processing", e[e.EarlyHints = 103] = "EarlyHints", e[e.Ok = 200] = "Ok", e[e.Created = 201] = "Created", e[e.Accepted = 202] = "Accepted", e[e.NonAuthoritativeInformation = 203] = "NonAuthoritativeInformation", e[e.NoContent = 204] = "NoContent", e[e.ResetContent = 205] = "ResetContent", e[e.PartialContent = 206] = "PartialContent", e[e.MultiStatus = 207] = "MultiStatus", e[e.AlreadyReported = 208] = "AlreadyReported", e[e.ImUsed = 226] = "ImUsed", e[e.MultipleChoices = 300] = "MultipleChoices", e[e.MovedPermanently = 301] = "MovedPermanently", e[e.Found = 302] = "Found", e[e.SeeOther = 303] = "SeeOther", e[e.NotModified = 304] = "NotModified", e[e.UseProxy = 305] = "UseProxy", e[e.Unused = 306] = "Unused", e[e.TemporaryRedirect = 307] = "TemporaryRedirect", e[e.PermanentRedirect = 308] = "PermanentRedirect", e[e.BadRequest = 400] = "BadRequest", e[e.Unauthorized = 401] = "Unauthorized", e[e.PaymentRequired = 402] = "PaymentRequired", e[e.Forbidden = 403] = "Forbidden", e[e.NotFound = 404] = "NotFound", e[e.MethodNotAllowed = 405] = "MethodNotAllowed", e[e.NotAcceptable = 406] = "NotAcceptable", e[e.ProxyAuthenticationRequired = 407] = "ProxyAuthenticationRequired", e[e.RequestTimeout = 408] = "RequestTimeout", e[e.Conflict = 409] = "Conflict", e[e.Gone = 410] = "Gone", e[e.LengthRequired = 411] = "LengthRequired", e[e.PreconditionFailed = 412] = "PreconditionFailed", e[e.PayloadTooLarge = 413] = "PayloadTooLarge", e[e.UriTooLong = 414] = "UriTooLong", e[e.UnsupportedMediaType = 415] = "UnsupportedMediaType", e[e.RangeNotSatisfiable = 416] = "RangeNotSatisfiable", e[e.ExpectationFailed = 417] = "ExpectationFailed", e[e.ImATeapot = 418] = "ImATeapot", e[e.MisdirectedRequest = 421] = "MisdirectedRequest", e[e.UnprocessableEntity = 422] = "UnprocessableEntity", e[e.Locked = 423] = "Locked", e[e.FailedDependency = 424] = "FailedDependency", e[e.TooEarly = 425] = "TooEarly", e[e.UpgradeRequired = 426] = "UpgradeRequired", e[e.PreconditionRequired = 428] = "PreconditionRequired", e[e.TooManyRequests = 429] = "TooManyRequests", e[e.RequestHeaderFieldsTooLarge = 431] = "RequestHeaderFieldsTooLarge", e[e.UnavailableForLegalReasons = 451] = "UnavailableForLegalReasons", e[e.InternalServerError = 500] = "InternalServerError", e[e.NotImplemented = 501] = "NotImplemented", e[e.BadGateway = 502] = "BadGateway", e[e.ServiceUnavailable = 503] = "ServiceUnavailable", e[e.GatewayTimeout = 504] = "GatewayTimeout", e[e.HttpVersionNotSupported = 505] = "HttpVersionNotSupported", e[e.VariantAlsoNegotiates = 506] = "VariantAlsoNegotiates", e[e.InsufficientStorage = 507] = "InsufficientStorage", e[e.LoopDetected = 508] = "LoopDetected", e[e.NotExtended = 510] = "NotExtended", e[e.NetworkAuthenticationRequired = 511] = "NetworkAuthenticationRequired", e))(N || {}), Z = /* @__PURE__ */ ((e) => (e[e.DownloadProgress = 0] = "DownloadProgress", e[e.Response = 1] = "Response", e))(Z || {});
|
|
216
|
-
class q {
|
|
217
|
-
constructor({
|
|
218
|
-
body: t,
|
|
219
|
-
headers: r,
|
|
220
|
-
status: n,
|
|
221
|
-
statusText: s
|
|
222
|
-
}) {
|
|
223
|
-
p(this, "type", 1);
|
|
224
|
-
p(this, "body");
|
|
225
|
-
p(this, "headers");
|
|
226
|
-
p(this, "status");
|
|
227
|
-
p(this, "statusText");
|
|
228
|
-
this.body = t, this.headers = r, this.status = n, this.statusText = s;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
class Ie {
|
|
232
|
-
constructor(t, r, n) {
|
|
233
|
-
p(this, "type", 0);
|
|
234
|
-
this.total = t, this.loaded = r, this.partialText = n;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
class be {
|
|
238
|
-
constructor(t, r, n) {
|
|
239
|
-
this.headers = t, this.status = r, this.statusText = n;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
class v {
|
|
243
|
-
constructor({
|
|
244
|
-
request: t,
|
|
245
|
-
headers: r,
|
|
246
|
-
status: n,
|
|
247
|
-
statusText: s,
|
|
248
|
-
error: o
|
|
249
|
-
}) {
|
|
250
|
-
p(this, "request");
|
|
251
|
-
p(this, "headers");
|
|
252
|
-
p(this, "status");
|
|
253
|
-
p(this, "statusText");
|
|
254
|
-
p(this, "error");
|
|
255
|
-
this.request = t, this.headers = r, this.status = n, this.statusText = s, this.error = o;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
function P(e) {
|
|
259
|
-
return {
|
|
260
|
-
method: e.method,
|
|
261
|
-
headers: e.getHeadersInit(),
|
|
262
|
-
body: e.getBody(),
|
|
263
|
-
credentials: e.withCredentials ? "include" : void 0
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
var xe = Object.getOwnPropertyDescriptor, Le = (e, t, r, n) => {
|
|
267
|
-
for (var s = n > 1 ? void 0 : n ? xe(t, r) : t, o = e.length - 1, i; o >= 0; o--)
|
|
268
|
-
(i = e[o]) && (s = i(s) || s);
|
|
269
|
-
return s;
|
|
270
|
-
}, Ne = (e, t) => (r, n) => t(r, n, e);
|
|
271
|
-
let k = class {
|
|
272
|
-
constructor(e) {
|
|
273
|
-
this._logService = e;
|
|
274
|
-
}
|
|
275
|
-
send(e) {
|
|
276
|
-
return new m((t) => {
|
|
277
|
-
const r = new AbortController();
|
|
278
|
-
return this._send(e, t, r).catch((n) => {
|
|
279
|
-
t.error(new v({
|
|
280
|
-
error: n,
|
|
281
|
-
request: e
|
|
282
|
-
}));
|
|
283
|
-
}), () => r.abort();
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
async _send(e, t, r) {
|
|
287
|
-
var l, h;
|
|
288
|
-
let n;
|
|
289
|
-
try {
|
|
290
|
-
const a = P(e), g = e.getUrlWithParams(), d = fetch(g, {
|
|
291
|
-
signal: r.signal,
|
|
292
|
-
...a
|
|
293
|
-
});
|
|
294
|
-
this._logService.debug(`[FetchHTTPImplementation]: sending request to url ${g} with params ${a}`), n = await d;
|
|
295
|
-
} catch (a) {
|
|
296
|
-
const g = new v({
|
|
297
|
-
request: e,
|
|
298
|
-
error: a,
|
|
299
|
-
status: (l = a.status) != null ? l : 0,
|
|
300
|
-
statusText: (h = a.statusText) != null ? h : "Unknown Error",
|
|
301
|
-
headers: a.headers
|
|
302
|
-
});
|
|
303
|
-
this._logService.error("[FetchHTTPImplementation]: network error", g), t.error(g);
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
const s = new b(n.headers), o = n.status, i = n.statusText;
|
|
307
|
-
let c = null;
|
|
308
|
-
if (n.body && (c = await this._readBody(e, n, t)), o >= N.Ok && o < N.MultipleChoices)
|
|
309
|
-
t.next(new q({
|
|
310
|
-
body: c,
|
|
311
|
-
headers: s,
|
|
312
|
-
status: o,
|
|
313
|
-
statusText: i
|
|
314
|
-
}));
|
|
315
|
-
else {
|
|
316
|
-
const a = new v({
|
|
317
|
-
request: e,
|
|
318
|
-
error: c,
|
|
319
|
-
status: o,
|
|
320
|
-
statusText: i,
|
|
321
|
-
headers: s
|
|
322
|
-
});
|
|
323
|
-
this._logService.error("[FetchHTTPImplementation]: network error", a), t.error(a);
|
|
324
|
-
}
|
|
325
|
-
t.complete();
|
|
326
|
-
}
|
|
327
|
-
async _readBody(e, t, r) {
|
|
328
|
-
var g, d;
|
|
329
|
-
const n = [], s = t.body.getReader(), o = t.headers.get("content-length");
|
|
330
|
-
let i = 0;
|
|
331
|
-
const c = (g = e.requestParams) == null ? void 0 : g.reportProgress, u = e.responseType;
|
|
332
|
-
let l, h;
|
|
333
|
-
for (; ; ) {
|
|
334
|
-
const { done: f, value: y } = await s.read();
|
|
335
|
-
if (f) break;
|
|
336
|
-
n.push(y), i += y.length, c && u === "text" && (l = (l != null ? l : "") + (h != null ? h : h = new TextDecoder()).decode(y, { stream: !0 }), r.next(new Ie(
|
|
337
|
-
o ? Number.parseInt(o, 10) : void 0,
|
|
338
|
-
i,
|
|
339
|
-
l
|
|
340
|
-
)));
|
|
341
|
-
}
|
|
342
|
-
const a = ke(n, i);
|
|
343
|
-
try {
|
|
344
|
-
const f = (d = t.headers.get("content-type")) != null ? d : "";
|
|
345
|
-
return Fe(e, a, f);
|
|
346
|
-
} catch (f) {
|
|
347
|
-
const y = new v({
|
|
348
|
-
request: e,
|
|
349
|
-
error: f,
|
|
350
|
-
status: t.status,
|
|
351
|
-
statusText: t.statusText,
|
|
352
|
-
headers: new b(t.headers)
|
|
353
|
-
});
|
|
354
|
-
return this._logService.error("[FetchHTTPImplementation]: network error", y), r.error(y), null;
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
};
|
|
358
|
-
k = Le([
|
|
359
|
-
Ne(0, $)
|
|
360
|
-
], k);
|
|
361
|
-
function ke(e, t) {
|
|
362
|
-
const r = new Uint8Array(t);
|
|
363
|
-
let n = 0;
|
|
364
|
-
for (const s of e)
|
|
365
|
-
r.set(s, n), n += s.length;
|
|
366
|
-
return r;
|
|
367
|
-
}
|
|
368
|
-
const Ae = /^\)\]\}',?\n/;
|
|
369
|
-
function Fe(e, t, r) {
|
|
370
|
-
switch (e.responseType) {
|
|
371
|
-
case "json":
|
|
372
|
-
const n = new TextDecoder().decode(t).replace(Ae, "");
|
|
373
|
-
return n === "" ? null : JSON.parse(n);
|
|
374
|
-
case "text":
|
|
375
|
-
return new TextDecoder().decode(t);
|
|
376
|
-
case "blob":
|
|
377
|
-
return new Blob([t.buffer], { type: r });
|
|
378
|
-
case "arraybuffer":
|
|
379
|
-
return t.buffer;
|
|
380
|
-
default:
|
|
381
|
-
throw new Error(`[FetchHTTPImplementation]: unknown response type: ${e.responseType}.`);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
var Ue = Object.getOwnPropertyDescriptor, Oe = (e, t, r, n) => {
|
|
385
|
-
for (var s = n > 1 ? void 0 : n ? Ue(t, r) : t, o = e.length - 1, i; o >= 0; o--)
|
|
386
|
-
(i = e[o]) && (s = i(s) || s);
|
|
387
|
-
return s;
|
|
388
|
-
}, De = (e, t) => (r, n) => t(r, n, e);
|
|
389
|
-
let D = class {
|
|
390
|
-
constructor(e) {
|
|
391
|
-
this._logService = e;
|
|
392
|
-
}
|
|
393
|
-
send(e) {
|
|
394
|
-
return new m((t) => {
|
|
395
|
-
const r = new XMLHttpRequest(), n = e.getUrlWithParams(), s = P(e), { responseType: o } = e;
|
|
396
|
-
r.open(e.method, n), e.withCredentials && (r.withCredentials = !0), s.headers && Object.entries(s.headers).forEach(([h, a]) => r.setRequestHeader(h, a));
|
|
397
|
-
const i = () => {
|
|
398
|
-
const h = r.statusText || "OK", a = new b(r.getAllResponseHeaders());
|
|
399
|
-
return new be(a, r.status, h);
|
|
400
|
-
}, c = () => {
|
|
401
|
-
const { headers: h, statusText: a, status: g } = i();
|
|
402
|
-
let d = null, f = null;
|
|
403
|
-
g !== N.NoContent && (d = typeof r.response > "u" ? r.responseText : r.response);
|
|
404
|
-
let y = g >= Ee && g < Re;
|
|
405
|
-
if (o === "json" && typeof d == "string") {
|
|
406
|
-
const w = d;
|
|
407
|
-
try {
|
|
408
|
-
d = d ? JSON.parse(d) : null;
|
|
409
|
-
} catch (_) {
|
|
410
|
-
y = !1, d = w, f = _;
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
if (o === "blob" && !(d instanceof Blob) && (y = !1, f = new Error("Response is not a Blob object")), y)
|
|
414
|
-
t.next(
|
|
415
|
-
new q({
|
|
416
|
-
body: d,
|
|
417
|
-
headers: h,
|
|
418
|
-
status: g,
|
|
419
|
-
statusText: a
|
|
420
|
-
})
|
|
421
|
-
);
|
|
422
|
-
else {
|
|
423
|
-
const w = new v({
|
|
424
|
-
request: e,
|
|
425
|
-
error: f,
|
|
426
|
-
headers: h,
|
|
427
|
-
status: g,
|
|
428
|
-
statusText: a
|
|
429
|
-
});
|
|
430
|
-
this._logService.error("[XHRHTTPImplementation]: network error", w), t.error(w);
|
|
431
|
-
}
|
|
432
|
-
}, u = (h) => {
|
|
433
|
-
const a = new v({
|
|
434
|
-
request: e,
|
|
435
|
-
error: h,
|
|
436
|
-
status: r.status || 0,
|
|
437
|
-
statusText: r.statusText || "Unknown Error",
|
|
438
|
-
headers: i().headers
|
|
439
|
-
});
|
|
440
|
-
this._logService.error("[XHRHTTPImplementation]: network error", a), t.error(a);
|
|
441
|
-
};
|
|
442
|
-
r.responseType = o || "", r.addEventListener("load", c), r.addEventListener("error", u), r.addEventListener("abort", u), r.addEventListener("timeout", u);
|
|
443
|
-
const l = e.getBody();
|
|
444
|
-
return r.send(l), this._logService.debug("[XHRHTTPImplementation]", `sending request to url ${n} with params ${s}`), () => {
|
|
445
|
-
r.readyState !== r.DONE && r.abort(), r.removeEventListener("load", c), r.removeEventListener("error", u), r.removeEventListener("abort", u), r.removeEventListener("timeout", u);
|
|
446
|
-
};
|
|
447
|
-
});
|
|
448
|
-
}
|
|
449
|
-
};
|
|
450
|
-
D = Oe([
|
|
451
|
-
De(0, $)
|
|
452
|
-
], D);
|
|
453
|
-
var $e = Object.getOwnPropertyDescriptor, qe = (e, t, r, n) => {
|
|
454
|
-
for (var s = n > 1 ? void 0 : n ? $e(t, r) : t, o = e.length - 1, i; o >= 0; o--)
|
|
455
|
-
(i = e[o]) && (s = i(s) || s);
|
|
456
|
-
return s;
|
|
457
|
-
}, U = (e, t) => (r, n) => t(r, n, e), R;
|
|
458
|
-
let J = (R = class extends re {
|
|
459
|
-
constructor(e = W, t, r, n) {
|
|
460
|
-
super(), this._config = e, this._logger = t, this._injector = r, this._configService = n;
|
|
461
|
-
const { ...s } = te(
|
|
462
|
-
{},
|
|
463
|
-
W,
|
|
464
|
-
this._config
|
|
465
|
-
);
|
|
466
|
-
this._configService.setConfig(ge, s);
|
|
467
|
-
}
|
|
468
|
-
onStarting() {
|
|
469
|
-
var r, n, s;
|
|
470
|
-
if (this._injector.get(L, ne.OPTIONAL, se.SKIP_SELF) && !((r = this._config) != null && r.forceUseNewInstance)) {
|
|
471
|
-
this._logger.warn(
|
|
472
|
-
"[UniverNetworkPlugin]",
|
|
473
|
-
'HTTPService is already registered in an ancestor interceptor. Skipping registration. If you want to force a new instance, set "forceUseNewInstance" to true in the plugin configuration.'
|
|
474
|
-
);
|
|
475
|
-
return;
|
|
476
|
-
}
|
|
477
|
-
const t = (n = this._config) != null && n.useFetchImpl ? k : typeof window < "u" ? D : k;
|
|
478
|
-
oe(this._injector, ie([
|
|
479
|
-
[L],
|
|
480
|
-
[Q, { useClass: t }]
|
|
481
|
-
], (s = this._config) == null ? void 0 : s.override));
|
|
482
|
-
}
|
|
483
|
-
}, p(R, "pluginName", "UNIVER_NETWORK_PLUGIN"), p(R, "packageName", G.name), p(R, "version", G.version), R);
|
|
484
|
-
J = qe([
|
|
485
|
-
U(1, $),
|
|
486
|
-
U(2, C(T)),
|
|
487
|
-
U(3, ee)
|
|
488
|
-
], J);
|
|
489
|
-
const Ke = (e) => {
|
|
490
|
-
const { errorStatusCodes: t, onAuthError: r } = e;
|
|
491
|
-
return (s, o) => o(s).pipe(
|
|
492
|
-
le((i) => (i instanceof v && t.some((c) => c === i.status) && r(), he(() => i)))
|
|
493
|
-
);
|
|
494
|
-
}, je = (e = 300) => {
|
|
495
|
-
let r = () => {
|
|
496
|
-
};
|
|
497
|
-
return (n) => new Promise((s) => {
|
|
498
|
-
r();
|
|
499
|
-
const o = setTimeout(() => {
|
|
500
|
-
s(!0);
|
|
501
|
-
}, e);
|
|
502
|
-
r = () => {
|
|
503
|
-
clearTimeout(o), s(!1);
|
|
504
|
-
};
|
|
505
|
-
});
|
|
506
|
-
}, Me = () => (e, t) => t.map((r) => ({ config: r, result: e })), ze = (e, t = {}) => {
|
|
507
|
-
const { isMatch: r, getParamsFromRequest: n, mergeParamsToRequest: s } = e, { fetchCheck: o = je(300), distributeResult: i = Me() } = t, c = [], u = (l) => l.map((h) => h.config);
|
|
508
|
-
return (l, h) => r(l) ? new m((a) => {
|
|
509
|
-
const g = n(l);
|
|
510
|
-
c.push({
|
|
511
|
-
next: (f) => a.next(f),
|
|
512
|
-
error: (f) => a.error(f),
|
|
513
|
-
config: g
|
|
514
|
-
});
|
|
515
|
-
const d = u(c);
|
|
516
|
-
o(l).then((f) => {
|
|
517
|
-
if (f) {
|
|
518
|
-
const y = [];
|
|
519
|
-
d.forEach((w) => {
|
|
520
|
-
const _ = c.findIndex((E) => E.config === w);
|
|
521
|
-
if (_ >= 0) {
|
|
522
|
-
const [E] = c.splice(_, 1);
|
|
523
|
-
y.push(E);
|
|
524
|
-
}
|
|
525
|
-
}), h(s(d, l)).subscribe({
|
|
526
|
-
next: (w) => {
|
|
527
|
-
if (w.type === Z.Response) {
|
|
528
|
-
const _ = w.body, E = i(_, d);
|
|
529
|
-
y.forEach((A) => {
|
|
530
|
-
const j = E.find((F) => F.config === A.config);
|
|
531
|
-
if (j) {
|
|
532
|
-
const F = new q({
|
|
533
|
-
body: j.result,
|
|
534
|
-
headers: w.headers,
|
|
535
|
-
status: w.status,
|
|
536
|
-
statusText: w.statusText
|
|
537
|
-
});
|
|
538
|
-
A.next(F);
|
|
539
|
-
} else
|
|
540
|
-
A.error("batch error");
|
|
541
|
-
});
|
|
542
|
-
}
|
|
543
|
-
},
|
|
544
|
-
complete: () => a.complete(),
|
|
545
|
-
error: (w) => a.error(w)
|
|
546
|
-
});
|
|
547
|
-
}
|
|
548
|
-
});
|
|
549
|
-
}) : h(l);
|
|
550
|
-
}, Be = 3, Ge = 1e3, Ye = (e) => {
|
|
551
|
-
var n, s;
|
|
552
|
-
const t = (n = e == null ? void 0 : e.maxRetryAttempts) != null ? n : Be, r = (s = e == null ? void 0 : e.delayInterval) != null ? s : Ge;
|
|
553
|
-
return (o, i) => i(o).pipe(pe({ delay: r, count: t }));
|
|
554
|
-
}, Qe = (e) => {
|
|
555
|
-
const t = [], r = /* @__PURE__ */ new Set(), n = () => {
|
|
556
|
-
var s;
|
|
557
|
-
for (; r.size < ((s = e == null ? void 0 : e.maxParallel) != null ? s : 1) && t.length > 0; ) {
|
|
558
|
-
const o = t.shift();
|
|
559
|
-
r.add(o), o();
|
|
560
|
-
}
|
|
561
|
-
};
|
|
562
|
-
return (s, o) => new m((i) => {
|
|
563
|
-
const c = () => o(s).subscribe({
|
|
564
|
-
next: (l) => i.next(l),
|
|
565
|
-
error: (l) => i.error(l),
|
|
566
|
-
complete: () => i.complete()
|
|
567
|
-
}), u = () => {
|
|
568
|
-
r.delete(c), Y(t, c), n();
|
|
569
|
-
};
|
|
570
|
-
return t.push(c), n(), u;
|
|
571
|
-
});
|
|
572
|
-
}, Ze = K("univer.network.socket.service");
|
|
573
|
-
class Pe extends z {
|
|
574
|
-
createSocket(t) {
|
|
575
|
-
try {
|
|
576
|
-
const r = new WebSocket(t), n = new ce();
|
|
577
|
-
return {
|
|
578
|
-
URL: t,
|
|
579
|
-
close: (o, i) => {
|
|
580
|
-
r.close(o, i), n.dispose();
|
|
581
|
-
},
|
|
582
|
-
send: (o) => {
|
|
583
|
-
r.send(o);
|
|
584
|
-
},
|
|
585
|
-
open$: new m((o) => {
|
|
586
|
-
const i = (c) => o.next(c);
|
|
587
|
-
r.addEventListener("open", i), n.add(I(() => r.removeEventListener("open", i)));
|
|
588
|
-
}).pipe(x()),
|
|
589
|
-
close$: new m((o) => {
|
|
590
|
-
const i = (c) => o.next(c);
|
|
591
|
-
r.addEventListener("close", i), n.add(I(() => r.removeEventListener("close", i)));
|
|
592
|
-
}).pipe(x()),
|
|
593
|
-
error$: new m((o) => {
|
|
594
|
-
const i = (c) => o.next(c);
|
|
595
|
-
r.addEventListener("error", i), n.add(I(() => r.removeEventListener("error", i)));
|
|
596
|
-
}).pipe(x()),
|
|
597
|
-
message$: new m((o) => {
|
|
598
|
-
const i = (c) => o.next(c);
|
|
599
|
-
r.addEventListener("message", i), n.add(I(() => r.removeEventListener("message", i)));
|
|
600
|
-
}).pipe(x())
|
|
601
|
-
};
|
|
602
|
-
} catch (r) {
|
|
603
|
-
return console.error(r), null;
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
export {
|
|
608
|
-
Ke as AuthInterceptorFactory,
|
|
609
|
-
k as FetchHTTPImplementation,
|
|
610
|
-
Z as HTTPEventType,
|
|
611
|
-
b as HTTPHeaders,
|
|
612
|
-
Ie as HTTPProgress,
|
|
613
|
-
V as HTTPRequest,
|
|
614
|
-
q as HTTPResponse,
|
|
615
|
-
v as HTTPResponseError,
|
|
616
|
-
L as HTTPService,
|
|
617
|
-
N as HTTPStatusCode,
|
|
618
|
-
Q as IHTTPImplementation,
|
|
619
|
-
Ze as ISocketService,
|
|
620
|
-
ze as MergeInterceptorFactory,
|
|
621
|
-
be as ResponseHeader,
|
|
622
|
-
Ye as RetryInterceptorFactory,
|
|
623
|
-
Qe as ThresholdInterceptorFactory,
|
|
624
|
-
J as UniverNetworkPlugin,
|
|
625
|
-
Pe as WebSocketService,
|
|
626
|
-
D as XHRHTTPImplementation
|
|
627
|
-
};
|
|
1
|
+
import{Disposable as e,DisposableCollection as t,IConfigService as n,ILogService as r,Inject as i,Injector as a,LookUp as o,Plugin as s,Quantity as c,createIdentifier as l,merge as u,mergeOverrideWithDependencies as d,registerDependencies as f,remove as p,toDisposable as m}from"@univerjs/core";import{Observable as h,catchError as g,firstValueFrom as _,of as v,throwError as ee}from"rxjs";import{concatMap as y,retry as b,share as x}from"rxjs/operators";var S=`@univerjs/network`,C=`0.18.0`;const w=`network.config`;Symbol(w);const T={};function E(e){"@babel/helpers - typeof";return E=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},E(e)}function D(e,t){if(E(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(E(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function O(e){var t=D(e,`string`);return E(t)==`symbol`?t:t+``}function k(e,t,n){return(t=O(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const A=`application/json`;function j(e){return Array.isArray(e)?e.some(e=>e.includes(A)):e.includes(A)}var M=class{constructor(e){k(this,`_headers`,new Map),typeof e==`string`?this._handleHeadersString(e):e instanceof Headers?this._handleHeaders(e):e&&this._handleHeadersConstructorProps(e)}forEach(e){this._headers.forEach((t,n)=>e(n,t))}has(e){return!!this._headers.has(e.toLowerCase())}get(e){let t=e.toLowerCase();return this._headers.has(t)?this._headers.get(t):null}set(e,t){this._setHeader(e,t)}toHeadersInit(e){let t={};return this._headers.forEach((e,n)=>{t[n]=e.join(`,`)}),t.accept!=null||(t.accept=`application/json, text/plain, */*`),!(e instanceof FormData)&&(t[`content-type`]!=null||(t[`content-type`]=`application/json;charset=UTF-8`)),t}_setHeader(e,t){let n=e.toLowerCase();this._headers.has(n)?this._headers.get(n).push(t.toString()):this._headers.set(n,[t.toString()])}_handleHeadersString(e){e.split(`
|
|
2
|
+
`).forEach(e=>{let[t,n]=e.split(`:`);t&&n&&this._setHeader(t,n)})}_handleHeadersConstructorProps(e){Object.entries(e).forEach(([e,t])=>this._setHeader(e,t))}_handleHeaders(e){e.forEach((e,t)=>this._setHeader(t,e))}};const N=l(`network.http-implementation`);var P=class{constructor(e){this.params=e}toString(){return this.params?Object.keys(this.params).map(e=>{let t=this.params[e];return Array.isArray(t)?t.map(t=>`${e}=${t}`).join(`&`):`${e}=${t}`}).join(`&`):``}};let F=0;var I=class{get headers(){return this.requestParams.headers}get withCredentials(){return this.requestParams.withCredentials}get responseType(){return this.requestParams.responseType}constructor(e,t,n){this.method=e,this.url=t,this.requestParams=n,k(this,`uid`,F++)}getUrlWithParams(){var e;let t=(e=this.requestParams)==null||(e=e.params)==null?void 0:e.toString();return t?`${this.url}${this.url.includes(`?`)?`&`:`?`}${t}`:this.url}getBody(){var e,t;let n=(e=this.headers.get(`Content-Type`))==null?A:e,r=(t=this.requestParams)==null?void 0:t.body;return r instanceof FormData?r:j(n)&&r&&typeof r==`object`?JSON.stringify(r):r?`${r}`:null}getHeadersInit(){var e;return this.headers.toHeadersInit((e=this.requestParams)==null?void 0:e.body)}};function L(e,t){return function(n,r){t(n,r,e)}}function R(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let z=class extends e{constructor(e){super(),this._http=e,k(this,`_interceptors`,[]),k(this,`_pipe`,void 0)}registerHTTPInterceptor(e){if(this._interceptors.indexOf(e)!==-1)throw Error(`[HTTPService]: The interceptor has already been registered!`);return this._interceptors.push(e),this._interceptors=this._interceptors.sort((e,t)=>{var n,r;return((n=e.priority)==null?0:n)-((r=t.priority)==null?0:r)}),this._pipe=null,m(()=>p(this._interceptors,e))}get(e,t){return this.request(`GET`,e,t)}post(e,t){return this.request(`POST`,e,t)}put(e,t){return this.request(`PUT`,e,t)}delete(e,t){return this.request(`DELETE`,e,t)}patch(e,t){return this.request(`PATCH`,e,t)}async request(e,t,n){var r,i;return await _(v(new I(e,t,{headers:new M(n==null?void 0:n.headers),params:new P(n==null?void 0:n.params),withCredentials:(r=n==null?void 0:n.withCredentials)==null?!1:r,responseType:(i=n==null?void 0:n.responseType)==null?`json`:i,body:[`GET`,`DELETE`].includes(e)||n==null?void 0:n.body})).pipe(y(e=>this._runInterceptorsAndImplementation(e))))}stream(e,t,n){return this.getSSE(e,t,n)}getSSE(e,t,n){var r,i;return v(new I(e,t,{headers:new M(n==null?void 0:n.headers),params:new P(n==null?void 0:n.params),withCredentials:(r=n==null?void 0:n.withCredentials)==null?!1:r,reportProgress:!0,responseType:(i=n==null?void 0:n.responseType)==null?`json`:i,body:[`GET`,`DELETE`].includes(e)||n==null?void 0:n.body})).pipe(y(e=>this._runInterceptorsAndImplementation(e)))}_runInterceptorsAndImplementation(e){return this._pipe||(this._pipe=this._interceptors.map(e=>e.interceptor).reduceRight((e,t)=>B(e,t),(e,t)=>t(e))),this._pipe(e,e=>this._http.send(e))}};z=R([L(0,N)],z);function B(e,t){return(n,r)=>t(n,t=>e(t,r))}let V=function(e){return e[e.Continue=100]=`Continue`,e[e.SwitchingProtocols=101]=`SwitchingProtocols`,e[e.Processing=102]=`Processing`,e[e.EarlyHints=103]=`EarlyHints`,e[e.Ok=200]=`Ok`,e[e.Created=201]=`Created`,e[e.Accepted=202]=`Accepted`,e[e.NonAuthoritativeInformation=203]=`NonAuthoritativeInformation`,e[e.NoContent=204]=`NoContent`,e[e.ResetContent=205]=`ResetContent`,e[e.PartialContent=206]=`PartialContent`,e[e.MultiStatus=207]=`MultiStatus`,e[e.AlreadyReported=208]=`AlreadyReported`,e[e.ImUsed=226]=`ImUsed`,e[e.MultipleChoices=300]=`MultipleChoices`,e[e.MovedPermanently=301]=`MovedPermanently`,e[e.Found=302]=`Found`,e[e.SeeOther=303]=`SeeOther`,e[e.NotModified=304]=`NotModified`,e[e.UseProxy=305]=`UseProxy`,e[e.Unused=306]=`Unused`,e[e.TemporaryRedirect=307]=`TemporaryRedirect`,e[e.PermanentRedirect=308]=`PermanentRedirect`,e[e.BadRequest=400]=`BadRequest`,e[e.Unauthorized=401]=`Unauthorized`,e[e.PaymentRequired=402]=`PaymentRequired`,e[e.Forbidden=403]=`Forbidden`,e[e.NotFound=404]=`NotFound`,e[e.MethodNotAllowed=405]=`MethodNotAllowed`,e[e.NotAcceptable=406]=`NotAcceptable`,e[e.ProxyAuthenticationRequired=407]=`ProxyAuthenticationRequired`,e[e.RequestTimeout=408]=`RequestTimeout`,e[e.Conflict=409]=`Conflict`,e[e.Gone=410]=`Gone`,e[e.LengthRequired=411]=`LengthRequired`,e[e.PreconditionFailed=412]=`PreconditionFailed`,e[e.PayloadTooLarge=413]=`PayloadTooLarge`,e[e.UriTooLong=414]=`UriTooLong`,e[e.UnsupportedMediaType=415]=`UnsupportedMediaType`,e[e.RangeNotSatisfiable=416]=`RangeNotSatisfiable`,e[e.ExpectationFailed=417]=`ExpectationFailed`,e[e.ImATeapot=418]=`ImATeapot`,e[e.MisdirectedRequest=421]=`MisdirectedRequest`,e[e.UnprocessableEntity=422]=`UnprocessableEntity`,e[e.Locked=423]=`Locked`,e[e.FailedDependency=424]=`FailedDependency`,e[e.TooEarly=425]=`TooEarly`,e[e.UpgradeRequired=426]=`UpgradeRequired`,e[e.PreconditionRequired=428]=`PreconditionRequired`,e[e.TooManyRequests=429]=`TooManyRequests`,e[e.RequestHeaderFieldsTooLarge=431]=`RequestHeaderFieldsTooLarge`,e[e.UnavailableForLegalReasons=451]=`UnavailableForLegalReasons`,e[e.InternalServerError=500]=`InternalServerError`,e[e.NotImplemented=501]=`NotImplemented`,e[e.BadGateway=502]=`BadGateway`,e[e.ServiceUnavailable=503]=`ServiceUnavailable`,e[e.GatewayTimeout=504]=`GatewayTimeout`,e[e.HttpVersionNotSupported=505]=`HttpVersionNotSupported`,e[e.VariantAlsoNegotiates=506]=`VariantAlsoNegotiates`,e[e.InsufficientStorage=507]=`InsufficientStorage`,e[e.LoopDetected=508]=`LoopDetected`,e[e.NotExtended=510]=`NotExtended`,e[e.NetworkAuthenticationRequired=511]=`NetworkAuthenticationRequired`,e}({}),H=function(e){return e[e.DownloadProgress=0]=`DownloadProgress`,e[e.Response=1]=`Response`,e}({});var U=class{constructor({body:e,headers:t,status:n,statusText:r}){k(this,`type`,H.Response),k(this,`body`,void 0),k(this,`headers`,void 0),k(this,`status`,void 0),k(this,`statusText`,void 0),this.body=e,this.headers=t,this.status=n,this.statusText=r}},W=class{constructor(e,t,n){this.total=e,this.loaded=t,this.partialText=n,k(this,`type`,H.DownloadProgress)}},G=class{constructor(e,t,n){this.headers=e,this.status=t,this.statusText=n}},K=class{constructor({request:e,headers:t,status:n,statusText:r,error:i}){k(this,`request`,void 0),k(this,`headers`,void 0),k(this,`status`,void 0),k(this,`statusText`,void 0),k(this,`error`,void 0),this.request=e,this.headers=t,this.status=n,this.statusText=r,this.error=i}};function q(e){return{method:e.method,headers:e.getHeadersInit(),body:e.getBody(),credentials:e.withCredentials?`include`:void 0}}let J=class{constructor(e){this._logService=e}send(e){return new h(t=>{let n=new AbortController;return this._send(e,t,n).catch(n=>{t.error(new K({error:n,request:e}))}),()=>n.abort()})}async _send(e,t,n){let r;try{let t=q(e),i=e.getUrlWithParams(),a=fetch(i,{signal:n.signal,...t});this._logService.debug(`[FetchHTTPImplementation]: sending request to url ${i} with params ${t}`),r=await a}catch(n){var i,a;let r=new K({request:e,error:n,status:(i=n.status)==null?0:i,statusText:(a=n.statusText)==null?`Unknown Error`:a,headers:n.headers});this._logService.error(`[FetchHTTPImplementation]: network error`,r),t.error(r);return}let o=new M(r.headers),s=r.status,c=r.statusText,l=null;if(r.body&&(l=await this._readBody(e,r,t)),s>=V.Ok&&s<V.MultipleChoices)t.next(new U({body:l,headers:o,status:s,statusText:c}));else{let n=new K({request:e,error:l,status:s,statusText:c,headers:o});this._logService.error(`[FetchHTTPImplementation]: network error`,n),t.error(n)}t.complete()}async _readBody(e,t,n){var r;let i=[],a=t.body.getReader(),o=t.headers.get(`content-length`),s=0,c=(r=e.requestParams)==null?void 0:r.reportProgress,l=e.responseType,u,d;for(;;){let{done:e,value:t}=await a.read();if(e)break;if(i.push(t),s+=t.length,c&&l===`text`){var f,p;u=((f=u)==null?``:f)+((p=d)==null?d=new TextDecoder:p).decode(t,{stream:!0}),n.next(new W(o?Number.parseInt(o,10):void 0,s,u))}}let m=Y(i,s);try{var h;return Z(e,m,(h=t.headers.get(`content-type`))==null?``:h)}catch(r){let i=new K({request:e,error:r,status:t.status,statusText:t.statusText,headers:new M(t.headers)});return this._logService.error(`[FetchHTTPImplementation]: network error`,i),n.error(i),null}}};J=R([L(0,r)],J);function Y(e,t){let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}const X=/^\)\]\}',?\n/;function Z(e,t,n){switch(e.responseType){case`json`:let r=new TextDecoder().decode(t).replace(X,``);return r===``?null:JSON.parse(r);case`text`:return new TextDecoder().decode(t);case`blob`:return new Blob([t.buffer],{type:n});case`arraybuffer`:return t.buffer;default:throw Error(`[FetchHTTPImplementation]: unknown response type: ${e.responseType}.`)}}let Q=class{constructor(e){this._logService=e}send(e){return new h(t=>{let n=new XMLHttpRequest,r=e.getUrlWithParams(),i=q(e),{responseType:a}=e;n.open(e.method,r),e.withCredentials&&(n.withCredentials=!0),i.headers&&Object.entries(i.headers).forEach(([e,t])=>n.setRequestHeader(e,t));let o=()=>{let e=n.statusText||`OK`;return new G(new M(n.getAllResponseHeaders()),n.status,e)},s=()=>{let{headers:r,statusText:i,status:s}=o(),c=null,l=null;s!==V.NoContent&&(c=n.response===void 0?n.responseText:n.response);let u=s>=200&&s<300;if(a===`json`&&typeof c==`string`){let e=c;try{c=c?JSON.parse(c):null}catch(t){u=!1,c=e,l=t}}if(a===`blob`&&!(c instanceof Blob)&&(u=!1,l=Error(`Response is not a Blob object`)),u)t.next(new U({body:c,headers:r,status:s,statusText:i}));else{let n=new K({request:e,error:l,headers:r,status:s,statusText:i});this._logService.error(`[XHRHTTPImplementation]: network error`,n),t.error(n)}},c=r=>{let i=new K({request:e,error:r,status:n.status||0,statusText:n.statusText||`Unknown Error`,headers:o().headers});this._logService.error(`[XHRHTTPImplementation]: network error`,i),t.error(i)};n.responseType=a||``,n.addEventListener(`load`,s),n.addEventListener(`error`,c),n.addEventListener(`abort`,c),n.addEventListener(`timeout`,c);let l=e.getBody();return n.send(l),this._logService.debug(`[XHRHTTPImplementation]`,`sending request to url ${r} with params ${i}`),()=>{n.readyState!==n.DONE&&n.abort(),n.removeEventListener(`load`,s),n.removeEventListener(`error`,c),n.removeEventListener(`abort`,c),n.removeEventListener(`timeout`,c)}})}};Q=R([L(0,r)],Q);let $=class extends s{constructor(e=T,t,n,r){super(),this._config=e,this._logger=t,this._injector=n,this._configService=r;let{...i}=u({},T,this._config);this._configService.setConfig(w,i)}onStarting(){var e,t,n;if(this._injector.get(z,c.OPTIONAL,o.SKIP_SELF)&&!((e=this._config)!=null&&e.forceUseNewInstance)){this._logger.warn(`[UniverNetworkPlugin]`,`HTTPService is already registered in an ancestor interceptor. Skipping registration. If you want to force a new instance, set "forceUseNewInstance" to true in the plugin configuration.`);return}let r=(t=this._config)!=null&&t.useFetchImpl?J:typeof window<`u`?Q:J;f(this._injector,d([[z],[N,{useClass:r}]],(n=this._config)==null?void 0:n.override))}};k($,`pluginName`,`UNIVER_NETWORK_PLUGIN`),k($,`packageName`,S),k($,`version`,C),$=R([L(1,r),L(2,i(a)),L(3,n)],$);const te=e=>{let{errorStatusCodes:t,onAuthError:n}=e;return(e,r)=>r(e).pipe(g(e=>(e instanceof K&&t.some(t=>t===e.status)&&n(),ee(()=>e))))},ne=(e=300)=>{let t=()=>{};return n=>new Promise(n=>{t();let r=setTimeout(()=>{n(!0)},e);t=()=>{clearTimeout(r),n(!1)}})},re=()=>(e,t)=>t.map(t=>({config:t,result:e})),ie=(e,t={})=>{let{isMatch:n,getParamsFromRequest:r,mergeParamsToRequest:i}=e,{fetchCheck:a=ne(300),distributeResult:o=re()}=t,s=[],c=e=>e.map(e=>e.config);return(e,t)=>n(e)?new h(n=>{let l=r(e);s.push({next:e=>n.next(e),error:e=>n.error(e),config:l});let u=c(s);a(e).then(r=>{if(r){let r=[];u.forEach(e=>{let t=s.findIndex(t=>t.config===e);if(t>=0){let[e]=s.splice(t,1);r.push(e)}}),t(i(u,e)).subscribe({next:e=>{if(e.type===H.Response){let t=e.body,n=o(t,u);r.forEach(t=>{let r=n.find(e=>e.config===t.config);if(r){let n=new U({body:r.result,headers:e.headers,status:e.status,statusText:e.statusText});t.next(n)}else t.error(`batch error`)})}},complete:()=>n.complete(),error:e=>n.error(e)})}})}):t(e)},ae=e=>{var t,n;let r=(t=e==null?void 0:e.maxRetryAttempts)==null?3:t,i=(n=e==null?void 0:e.delayInterval)==null?1e3:n;return(e,t)=>t(e).pipe(b({delay:i,count:r}))},oe=e=>{let t=[],n=new Set,r=()=>{for(var r;n.size<((r=e==null?void 0:e.maxParallel)==null?1:r)&&t.length>0;){let e=t.shift();n.add(e),e()}};return(e,i)=>new h(a=>{let o=()=>i(e).subscribe({next:e=>a.next(e),error:e=>a.error(e),complete:()=>a.complete()});return t.push(o),r(),()=>{n.delete(o),p(t,o),r()}})},se=l(`univer.network.socket.service`);var ce=class extends e{createSocket(e){try{let n=new WebSocket(e),r=new t;return{URL:e,close:(e,t)=>{n.close(e,t),r.dispose()},send:e=>{n.send(e)},open$:new h(e=>{let t=t=>e.next(t);n.addEventListener(`open`,t),r.add(m(()=>n.removeEventListener(`open`,t)))}).pipe(x()),close$:new h(e=>{let t=t=>e.next(t);n.addEventListener(`close`,t),r.add(m(()=>n.removeEventListener(`close`,t)))}).pipe(x()),error$:new h(e=>{let t=t=>e.next(t);n.addEventListener(`error`,t),r.add(m(()=>n.removeEventListener(`error`,t)))}).pipe(x()),message$:new h(e=>{let t=t=>e.next(t);n.addEventListener(`message`,t),r.add(m(()=>n.removeEventListener(`message`,t)))}).pipe(x())}}catch(e){return console.error(e),null}}};export{te as AuthInterceptorFactory,J as FetchHTTPImplementation,H as HTTPEventType,M as HTTPHeaders,W as HTTPProgress,I as HTTPRequest,U as HTTPResponse,K as HTTPResponseError,z as HTTPService,V as HTTPStatusCode,N as IHTTPImplementation,se as ISocketService,ie as MergeInterceptorFactory,G as ResponseHeader,ae as RetryInterceptorFactory,oe as ThresholdInterceptorFactory,$ as UniverNetworkPlugin,ce as WebSocketService,Q as XHRHTTPImplementation};
|