@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.
Files changed (30) hide show
  1. package/lib/cjs/facade.js +1 -1
  2. package/lib/cjs/index.js +2 -2
  3. package/lib/es/facade.js +1 -85
  4. package/lib/es/index.js +2 -627
  5. package/lib/facade.js +1 -85
  6. package/lib/index.js +2 -627
  7. package/lib/types/config/config.d.ts +16 -1
  8. package/lib/types/facade/f-network.d.ts +18 -2
  9. package/lib/types/facade/f-univer.d.ts +16 -1
  10. package/lib/types/plugin.d.ts +16 -1
  11. package/lib/types/services/http/__testing__/http-testing-utils.d.ts +17 -2
  12. package/lib/types/services/http/http.service.d.ts +22 -6
  13. package/lib/types/services/http/implementations/fetch.d.ts +18 -3
  14. package/lib/types/services/http/implementations/implementation.d.ts +19 -4
  15. package/lib/types/services/http/implementations/util.d.ts +16 -1
  16. package/lib/types/services/http/implementations/xhr.d.ts +18 -3
  17. package/lib/types/services/http/interceptor.d.ts +18 -3
  18. package/lib/types/services/http/interceptors/auth-interceptor.d.ts +16 -1
  19. package/lib/types/services/http/interceptors/merge-interceptor.d.ts +18 -3
  20. package/lib/types/services/http/interceptors/retry-interceptor.d.ts +17 -2
  21. package/lib/types/services/http/interceptors/threshold-interceptor.d.ts +17 -2
  22. package/lib/types/services/http/request.d.ts +17 -2
  23. package/lib/types/services/http/response.d.ts +17 -2
  24. package/lib/types/services/web-socket/web-socket.service.d.ts +18 -2
  25. package/lib/umd/facade.js +1 -1
  26. package/lib/umd/index.js +2 -2
  27. package/package.json +7 -6
  28. package/lib/types/services/http/__testing__/http-params.spec.d.ts +0 -16
  29. package/lib/types/services/http/__testing__/http.service.spec.d.ts +0 -16
  30. package/lib/types/services/http/__testing__/request.spec.d.ts +0 -16
package/lib/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};
@@ -1,4 +1,19 @@
1
- import { DependencyOverride } from '@univerjs/core';
1
+ /**
2
+ * Copyright 2023-present DreamNum Co., Ltd.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { DependencyOverride } from '@univerjs/core';
2
17
  export declare const NETWORK_PLUGIN_CONFIG_KEY = "network.config";
3
18
  export declare const configSymbol: unique symbol;
4
19
  export interface IUniverNetworkConfig {