@univerjs/network 1.0.0-alpha.6 → 1.0.0-alpha.8

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 CHANGED
@@ -2,7 +2,7 @@ let _univerjs_core_facade = require("@univerjs/core/facade");
2
2
  let _univerjs_network = require("@univerjs/network");
3
3
  let _univerjs_core = require("@univerjs/core");
4
4
 
5
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
5
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
6
6
  function __decorateParam(paramIndex, decorator) {
7
7
  return function(target, key) {
8
8
  decorator(target, key, paramIndex);
@@ -10,7 +10,7 @@ function __decorateParam(paramIndex, decorator) {
10
10
  }
11
11
 
12
12
  //#endregion
13
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
13
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
14
14
  function __decorate(decorators, target, key, desc) {
15
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
16
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -80,7 +80,7 @@ let FNetwork = class FNetwork extends _univerjs_core_facade.FBase {
80
80
  * @returns {Observable<HTTPEvent>} An observable that emits the network response.
81
81
  */
82
82
  getSSE(method, url, params) {
83
- return this._httpService.getSSE(method, url, params);
83
+ return this._httpService.stream(method, url, params);
84
84
  }
85
85
  };
86
86
  FNetwork = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_core.Injector)), __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_network.HTTPService))], FNetwork);
package/lib/cjs/index.js CHANGED
@@ -5,7 +5,7 @@ let rxjs_operators = require("rxjs/operators");
5
5
 
6
6
  //#region package.json
7
7
  var name = "@univerjs/network";
8
- var version = "1.0.0-alpha.6";
8
+ var version = "1.0.0-alpha.8";
9
9
 
10
10
  //#endregion
11
11
  //#region src/config/config.ts
@@ -14,7 +14,7 @@ const configSymbol = Symbol(NETWORK_PLUGIN_CONFIG_KEY);
14
14
  const defaultPluginConfig = {};
15
15
 
16
16
  //#endregion
17
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
17
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
18
18
  function _typeof(o) {
19
19
  "@babel/helpers - typeof";
20
20
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -25,7 +25,7 @@ function _typeof(o) {
25
25
  }
26
26
 
27
27
  //#endregion
28
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
28
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
29
29
  function toPrimitive(t, r) {
30
30
  if ("object" != _typeof(t) || !t) return t;
31
31
  var e = t[Symbol.toPrimitive];
@@ -38,14 +38,14 @@ function toPrimitive(t, r) {
38
38
  }
39
39
 
40
40
  //#endregion
41
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
41
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
42
42
  function toPropertyKey(t) {
43
43
  var i = toPrimitive(t, "string");
44
44
  return "symbol" == _typeof(i) ? i : i + "";
45
45
  }
46
46
 
47
47
  //#endregion
48
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
48
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
49
49
  function _defineProperty(e, r, t) {
50
50
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
51
51
  value: t,
@@ -182,7 +182,7 @@ var HTTPRequest = class {
182
182
  };
183
183
 
184
184
  //#endregion
185
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
185
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
186
186
  function __decorateParam(paramIndex, decorator) {
187
187
  return function(target, key) {
188
188
  decorator(target, key, paramIndex);
@@ -190,7 +190,7 @@ function __decorateParam(paramIndex, decorator) {
190
190
  }
191
191
 
192
192
  //#endregion
193
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
193
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
194
194
  function __decorate(decorators, target, key, desc) {
195
195
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
196
196
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -259,25 +259,12 @@ let HTTPService = class HTTPService extends _univerjs_core.Disposable {
259
259
  /**
260
260
  * Send an HTTP request. It returns an observable that emits HTTP events. For example, it can be used to
261
261
  * send Server-Sent Events (SSE) requests.
262
- * @deprecated Please use `stream` method instead.
263
262
  * @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
264
263
  * @param url The URL to send the request to.
265
264
  * @param _params Optional parameters for the request.
266
265
  * @returns An observable of the HTTP event.
267
266
  */
268
267
  stream(method, url, _params) {
269
- return this.getSSE(method, url, _params);
270
- }
271
- /**
272
- * Send a Server-Sent Events (SSE) request. It returns an observable that emits HTTP events. It is the observable
273
- * pair of the `request` method.
274
- * @deprecated Please use `stream` method instead.
275
- * @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
276
- * @param url The URL to send the request to.
277
- * @param _params Optional parameters for the request.
278
- * @returns An observable of the HTTP event.
279
- */
280
- getSSE(method, url, _params) {
281
268
  var _params$withCredentia, _params$responseType;
282
269
  return (0, rxjs.of)(new HTTPRequest(method, url, {
283
270
  headers: new HTTPHeaders(_params === null || _params === void 0 ? void 0 : _params.headers),
@@ -732,12 +719,13 @@ const MergeInterceptorFactory = (config, options = {}) => {
732
719
  return (requestConfig, next) => {
733
720
  if (!isMatch(requestConfig)) return next(requestConfig);
734
721
  return new rxjs.Observable((observer) => {
735
- const params = getParamsFromRequest(requestConfig);
736
- hookList.push({
722
+ const hook = {
737
723
  next: (v) => observer.next(v),
738
724
  error: (error) => observer.error(error),
739
- config: params
740
- });
725
+ config: getParamsFromRequest(requestConfig),
726
+ active: true
727
+ };
728
+ hookList.push(hook);
741
729
  const list = getPlainList(hookList);
742
730
  fetchCheck(requestConfig).then((isFetch) => {
743
731
  if (isFetch) {
@@ -749,11 +737,15 @@ const MergeInterceptorFactory = (config, options = {}) => {
749
737
  currentHookList.push(hook);
750
738
  }
751
739
  });
752
- next(mergeParamsToRequest(list, requestConfig)).subscribe({
740
+ const currentList = getPlainList(currentHookList);
741
+ if (!currentList.length) return;
742
+ const batch = { hooks: currentHookList };
743
+ currentHookList.forEach((hookItem) => hookItem.batch = batch);
744
+ batch.subscription = next(mergeParamsToRequest(currentList, requestConfig)).subscribe({
753
745
  next: (e) => {
754
746
  if (e.type === 1) {
755
747
  const body = e.body;
756
- const configList = distributeResult(body, list);
748
+ const configList = distributeResult(body, currentList);
757
749
  currentHookList.forEach((hookItem) => {
758
750
  const res = configList.find((item) => item.config === hookItem.config);
759
751
  if (res) {
@@ -773,6 +765,15 @@ const MergeInterceptorFactory = (config, options = {}) => {
773
765
  });
774
766
  }
775
767
  });
768
+ return () => {
769
+ var _hook$batch;
770
+ hook.active = false;
771
+ (0, _univerjs_core.remove)(hookList, hook);
772
+ if ((_hook$batch = hook.batch) === null || _hook$batch === void 0 ? void 0 : _hook$batch.hooks.every((hookItem) => !hookItem.active)) {
773
+ var _hook$batch$subscript;
774
+ (_hook$batch$subscript = hook.batch.subscription) === null || _hook$batch$subscript === void 0 || _hook$batch$subscript.unsubscribe();
775
+ }
776
+ };
776
777
  });
777
778
  };
778
779
  };
@@ -809,12 +810,16 @@ const ThresholdInterceptorFactory = (params) => {
809
810
  };
810
811
  return (request, next) => {
811
812
  return new rxjs.Observable((observer) => {
812
- const handler = () => next(request).subscribe({
813
- next: (event) => observer.next(event),
814
- error: (err) => observer.error(err),
815
- complete: () => observer.complete()
816
- });
813
+ let requestSubscription;
814
+ const handler = () => {
815
+ requestSubscription = next(request).subscribe({
816
+ next: (event) => observer.next(event),
817
+ error: (err) => observer.error(err),
818
+ complete: () => observer.complete()
819
+ });
820
+ };
817
821
  const teardown = () => {
822
+ requestSubscription === null || requestSubscription === void 0 || requestSubscription.unsubscribe();
818
823
  ongoingHandlers.delete(handler);
819
824
  (0, _univerjs_core.remove)(handlers, handler);
820
825
  tick();
package/lib/es/facade.js CHANGED
@@ -2,7 +2,7 @@ import { FBase, FUniver } from "@univerjs/core/facade";
2
2
  import { HTTPService, WebSocketService } from "@univerjs/network";
3
3
  import { Inject, Injector } from "@univerjs/core";
4
4
 
5
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
5
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
6
6
  function __decorateParam(paramIndex, decorator) {
7
7
  return function(target, key) {
8
8
  decorator(target, key, paramIndex);
@@ -10,7 +10,7 @@ function __decorateParam(paramIndex, decorator) {
10
10
  }
11
11
 
12
12
  //#endregion
13
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
13
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
14
14
  function __decorate(decorators, target, key, desc) {
15
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
16
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -80,7 +80,7 @@ let FNetwork = class FNetwork extends FBase {
80
80
  * @returns {Observable<HTTPEvent>} An observable that emits the network response.
81
81
  */
82
82
  getSSE(method, url, params) {
83
- return this._httpService.getSSE(method, url, params);
83
+ return this._httpService.stream(method, url, params);
84
84
  }
85
85
  };
86
86
  FNetwork = __decorate([__decorateParam(0, Inject(Injector)), __decorateParam(1, Inject(HTTPService))], FNetwork);
package/lib/es/index.js CHANGED
@@ -4,7 +4,7 @@ import { concatMap, retry, share } from "rxjs/operators";
4
4
 
5
5
  //#region package.json
6
6
  var name = "@univerjs/network";
7
- var version = "1.0.0-alpha.6";
7
+ var version = "1.0.0-alpha.8";
8
8
 
9
9
  //#endregion
10
10
  //#region src/config/config.ts
@@ -13,7 +13,7 @@ const configSymbol = Symbol(NETWORK_PLUGIN_CONFIG_KEY);
13
13
  const defaultPluginConfig = {};
14
14
 
15
15
  //#endregion
16
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
16
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
17
17
  function _typeof(o) {
18
18
  "@babel/helpers - typeof";
19
19
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -24,7 +24,7 @@ function _typeof(o) {
24
24
  }
25
25
 
26
26
  //#endregion
27
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
27
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
28
28
  function toPrimitive(t, r) {
29
29
  if ("object" != _typeof(t) || !t) return t;
30
30
  var e = t[Symbol.toPrimitive];
@@ -37,14 +37,14 @@ function toPrimitive(t, r) {
37
37
  }
38
38
 
39
39
  //#endregion
40
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
40
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
41
41
  function toPropertyKey(t) {
42
42
  var i = toPrimitive(t, "string");
43
43
  return "symbol" == _typeof(i) ? i : i + "";
44
44
  }
45
45
 
46
46
  //#endregion
47
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
47
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
48
48
  function _defineProperty(e, r, t) {
49
49
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
50
50
  value: t,
@@ -181,7 +181,7 @@ var HTTPRequest = class {
181
181
  };
182
182
 
183
183
  //#endregion
184
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
184
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
185
185
  function __decorateParam(paramIndex, decorator) {
186
186
  return function(target, key) {
187
187
  decorator(target, key, paramIndex);
@@ -189,7 +189,7 @@ function __decorateParam(paramIndex, decorator) {
189
189
  }
190
190
 
191
191
  //#endregion
192
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
192
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
193
193
  function __decorate(decorators, target, key, desc) {
194
194
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
195
195
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -258,25 +258,12 @@ let HTTPService = class HTTPService extends Disposable {
258
258
  /**
259
259
  * Send an HTTP request. It returns an observable that emits HTTP events. For example, it can be used to
260
260
  * send Server-Sent Events (SSE) requests.
261
- * @deprecated Please use `stream` method instead.
262
261
  * @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
263
262
  * @param url The URL to send the request to.
264
263
  * @param _params Optional parameters for the request.
265
264
  * @returns An observable of the HTTP event.
266
265
  */
267
266
  stream(method, url, _params) {
268
- return this.getSSE(method, url, _params);
269
- }
270
- /**
271
- * Send a Server-Sent Events (SSE) request. It returns an observable that emits HTTP events. It is the observable
272
- * pair of the `request` method.
273
- * @deprecated Please use `stream` method instead.
274
- * @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
275
- * @param url The URL to send the request to.
276
- * @param _params Optional parameters for the request.
277
- * @returns An observable of the HTTP event.
278
- */
279
- getSSE(method, url, _params) {
280
267
  var _params$withCredentia, _params$responseType;
281
268
  return of(new HTTPRequest(method, url, {
282
269
  headers: new HTTPHeaders(_params === null || _params === void 0 ? void 0 : _params.headers),
@@ -731,12 +718,13 @@ const MergeInterceptorFactory = (config, options = {}) => {
731
718
  return (requestConfig, next) => {
732
719
  if (!isMatch(requestConfig)) return next(requestConfig);
733
720
  return new Observable((observer) => {
734
- const params = getParamsFromRequest(requestConfig);
735
- hookList.push({
721
+ const hook = {
736
722
  next: (v) => observer.next(v),
737
723
  error: (error) => observer.error(error),
738
- config: params
739
- });
724
+ config: getParamsFromRequest(requestConfig),
725
+ active: true
726
+ };
727
+ hookList.push(hook);
740
728
  const list = getPlainList(hookList);
741
729
  fetchCheck(requestConfig).then((isFetch) => {
742
730
  if (isFetch) {
@@ -748,11 +736,15 @@ const MergeInterceptorFactory = (config, options = {}) => {
748
736
  currentHookList.push(hook);
749
737
  }
750
738
  });
751
- next(mergeParamsToRequest(list, requestConfig)).subscribe({
739
+ const currentList = getPlainList(currentHookList);
740
+ if (!currentList.length) return;
741
+ const batch = { hooks: currentHookList };
742
+ currentHookList.forEach((hookItem) => hookItem.batch = batch);
743
+ batch.subscription = next(mergeParamsToRequest(currentList, requestConfig)).subscribe({
752
744
  next: (e) => {
753
745
  if (e.type === 1) {
754
746
  const body = e.body;
755
- const configList = distributeResult(body, list);
747
+ const configList = distributeResult(body, currentList);
756
748
  currentHookList.forEach((hookItem) => {
757
749
  const res = configList.find((item) => item.config === hookItem.config);
758
750
  if (res) {
@@ -772,6 +764,15 @@ const MergeInterceptorFactory = (config, options = {}) => {
772
764
  });
773
765
  }
774
766
  });
767
+ return () => {
768
+ var _hook$batch;
769
+ hook.active = false;
770
+ remove(hookList, hook);
771
+ if ((_hook$batch = hook.batch) === null || _hook$batch === void 0 ? void 0 : _hook$batch.hooks.every((hookItem) => !hookItem.active)) {
772
+ var _hook$batch$subscript;
773
+ (_hook$batch$subscript = hook.batch.subscription) === null || _hook$batch$subscript === void 0 || _hook$batch$subscript.unsubscribe();
774
+ }
775
+ };
775
776
  });
776
777
  };
777
778
  };
@@ -808,12 +809,16 @@ const ThresholdInterceptorFactory = (params) => {
808
809
  };
809
810
  return (request, next) => {
810
811
  return new Observable((observer) => {
811
- const handler = () => next(request).subscribe({
812
- next: (event) => observer.next(event),
813
- error: (err) => observer.error(err),
814
- complete: () => observer.complete()
815
- });
812
+ let requestSubscription;
813
+ const handler = () => {
814
+ requestSubscription = next(request).subscribe({
815
+ next: (event) => observer.next(event),
816
+ error: (err) => observer.error(err),
817
+ complete: () => observer.complete()
818
+ });
819
+ };
816
820
  const teardown = () => {
821
+ requestSubscription === null || requestSubscription === void 0 || requestSubscription.unsubscribe();
817
822
  ongoingHandlers.delete(handler);
818
823
  remove(handlers, handler);
819
824
  tick();
package/lib/facade.js CHANGED
@@ -2,7 +2,7 @@ import { FBase, FUniver } from "@univerjs/core/facade";
2
2
  import { HTTPService, WebSocketService } from "@univerjs/network";
3
3
  import { Inject, Injector } from "@univerjs/core";
4
4
 
5
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
5
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
6
6
  function __decorateParam(paramIndex, decorator) {
7
7
  return function(target, key) {
8
8
  decorator(target, key, paramIndex);
@@ -10,7 +10,7 @@ function __decorateParam(paramIndex, decorator) {
10
10
  }
11
11
 
12
12
  //#endregion
13
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
13
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
14
14
  function __decorate(decorators, target, key, desc) {
15
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
16
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -80,7 +80,7 @@ let FNetwork = class FNetwork extends FBase {
80
80
  * @returns {Observable<HTTPEvent>} An observable that emits the network response.
81
81
  */
82
82
  getSSE(method, url, params) {
83
- return this._httpService.getSSE(method, url, params);
83
+ return this._httpService.stream(method, url, params);
84
84
  }
85
85
  };
86
86
  FNetwork = __decorate([__decorateParam(0, Inject(Injector)), __decorateParam(1, Inject(HTTPService))], FNetwork);
package/lib/index.js CHANGED
@@ -4,7 +4,7 @@ import { concatMap, retry, share } from "rxjs/operators";
4
4
 
5
5
  //#region package.json
6
6
  var name = "@univerjs/network";
7
- var version = "1.0.0-alpha.6";
7
+ var version = "1.0.0-alpha.8";
8
8
 
9
9
  //#endregion
10
10
  //#region src/config/config.ts
@@ -13,7 +13,7 @@ const configSymbol = Symbol(NETWORK_PLUGIN_CONFIG_KEY);
13
13
  const defaultPluginConfig = {};
14
14
 
15
15
  //#endregion
16
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
16
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
17
17
  function _typeof(o) {
18
18
  "@babel/helpers - typeof";
19
19
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -24,7 +24,7 @@ function _typeof(o) {
24
24
  }
25
25
 
26
26
  //#endregion
27
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
27
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
28
28
  function toPrimitive(t, r) {
29
29
  if ("object" != _typeof(t) || !t) return t;
30
30
  var e = t[Symbol.toPrimitive];
@@ -37,14 +37,14 @@ function toPrimitive(t, r) {
37
37
  }
38
38
 
39
39
  //#endregion
40
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
40
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
41
41
  function toPropertyKey(t) {
42
42
  var i = toPrimitive(t, "string");
43
43
  return "symbol" == _typeof(i) ? i : i + "";
44
44
  }
45
45
 
46
46
  //#endregion
47
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
47
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
48
48
  function _defineProperty(e, r, t) {
49
49
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
50
50
  value: t,
@@ -181,7 +181,7 @@ var HTTPRequest = class {
181
181
  };
182
182
 
183
183
  //#endregion
184
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
184
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
185
185
  function __decorateParam(paramIndex, decorator) {
186
186
  return function(target, key) {
187
187
  decorator(target, key, paramIndex);
@@ -189,7 +189,7 @@ function __decorateParam(paramIndex, decorator) {
189
189
  }
190
190
 
191
191
  //#endregion
192
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
192
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
193
193
  function __decorate(decorators, target, key, desc) {
194
194
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
195
195
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -258,25 +258,12 @@ let HTTPService = class HTTPService extends Disposable {
258
258
  /**
259
259
  * Send an HTTP request. It returns an observable that emits HTTP events. For example, it can be used to
260
260
  * send Server-Sent Events (SSE) requests.
261
- * @deprecated Please use `stream` method instead.
262
261
  * @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
263
262
  * @param url The URL to send the request to.
264
263
  * @param _params Optional parameters for the request.
265
264
  * @returns An observable of the HTTP event.
266
265
  */
267
266
  stream(method, url, _params) {
268
- return this.getSSE(method, url, _params);
269
- }
270
- /**
271
- * Send a Server-Sent Events (SSE) request. It returns an observable that emits HTTP events. It is the observable
272
- * pair of the `request` method.
273
- * @deprecated Please use `stream` method instead.
274
- * @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
275
- * @param url The URL to send the request to.
276
- * @param _params Optional parameters for the request.
277
- * @returns An observable of the HTTP event.
278
- */
279
- getSSE(method, url, _params) {
280
267
  var _params$withCredentia, _params$responseType;
281
268
  return of(new HTTPRequest(method, url, {
282
269
  headers: new HTTPHeaders(_params === null || _params === void 0 ? void 0 : _params.headers),
@@ -731,12 +718,13 @@ const MergeInterceptorFactory = (config, options = {}) => {
731
718
  return (requestConfig, next) => {
732
719
  if (!isMatch(requestConfig)) return next(requestConfig);
733
720
  return new Observable((observer) => {
734
- const params = getParamsFromRequest(requestConfig);
735
- hookList.push({
721
+ const hook = {
736
722
  next: (v) => observer.next(v),
737
723
  error: (error) => observer.error(error),
738
- config: params
739
- });
724
+ config: getParamsFromRequest(requestConfig),
725
+ active: true
726
+ };
727
+ hookList.push(hook);
740
728
  const list = getPlainList(hookList);
741
729
  fetchCheck(requestConfig).then((isFetch) => {
742
730
  if (isFetch) {
@@ -748,11 +736,15 @@ const MergeInterceptorFactory = (config, options = {}) => {
748
736
  currentHookList.push(hook);
749
737
  }
750
738
  });
751
- next(mergeParamsToRequest(list, requestConfig)).subscribe({
739
+ const currentList = getPlainList(currentHookList);
740
+ if (!currentList.length) return;
741
+ const batch = { hooks: currentHookList };
742
+ currentHookList.forEach((hookItem) => hookItem.batch = batch);
743
+ batch.subscription = next(mergeParamsToRequest(currentList, requestConfig)).subscribe({
752
744
  next: (e) => {
753
745
  if (e.type === 1) {
754
746
  const body = e.body;
755
- const configList = distributeResult(body, list);
747
+ const configList = distributeResult(body, currentList);
756
748
  currentHookList.forEach((hookItem) => {
757
749
  const res = configList.find((item) => item.config === hookItem.config);
758
750
  if (res) {
@@ -772,6 +764,15 @@ const MergeInterceptorFactory = (config, options = {}) => {
772
764
  });
773
765
  }
774
766
  });
767
+ return () => {
768
+ var _hook$batch;
769
+ hook.active = false;
770
+ remove(hookList, hook);
771
+ if ((_hook$batch = hook.batch) === null || _hook$batch === void 0 ? void 0 : _hook$batch.hooks.every((hookItem) => !hookItem.active)) {
772
+ var _hook$batch$subscript;
773
+ (_hook$batch$subscript = hook.batch.subscription) === null || _hook$batch$subscript === void 0 || _hook$batch$subscript.unsubscribe();
774
+ }
775
+ };
775
776
  });
776
777
  };
777
778
  };
@@ -808,12 +809,16 @@ const ThresholdInterceptorFactory = (params) => {
808
809
  };
809
810
  return (request, next) => {
810
811
  return new Observable((observer) => {
811
- const handler = () => next(request).subscribe({
812
- next: (event) => observer.next(event),
813
- error: (err) => observer.error(err),
814
- complete: () => observer.complete()
815
- });
812
+ let requestSubscription;
813
+ const handler = () => {
814
+ requestSubscription = next(request).subscribe({
815
+ next: (event) => observer.next(event),
816
+ error: (err) => observer.error(err),
817
+ complete: () => observer.complete()
818
+ });
819
+ };
816
820
  const teardown = () => {
821
+ requestSubscription === null || requestSubscription === void 0 || requestSubscription.unsubscribe();
817
822
  ongoingHandlers.delete(handler);
818
823
  remove(handlers, handler);
819
824
  tick();
@@ -62,13 +62,13 @@ interface IFUniverNetworkMixin {
62
62
  * console.log('websocket error', error);
63
63
  * });
64
64
  *
65
- * univerAPI.onCommandExecuted((command, options) => {
65
+ * univerAPI.addEvent(univerAPI.Event.CommandExecuted, ({ id, type, params, options }) => {
66
66
  * // Only synchronize local mutations
67
- * if (command.type !== 2 || options?.fromCollab || options?.onlyLocal || command.id === 'doc.mutation.rich-text-editing') {
67
+ * if (type !== univerAPI.Enum.CommandType.MUTATION || options?.fromCollab || options?.onlyLocal || id === 'doc.mutation.rich-text-editing') {
68
68
  * return;
69
69
  * }
70
70
  *
71
- * const commandInfo = JSON.stringify({ command, options: { fromCollab: true } });
71
+ * const commandInfo = JSON.stringify({ command: { id, type, params }, options: { fromCollab: true } });
72
72
  * ws.send(commandInfo);
73
73
  * });
74
74
  * ```
@@ -89,22 +89,11 @@ export declare class HTTPService extends Disposable {
89
89
  /**
90
90
  * Send an HTTP request. It returns an observable that emits HTTP events. For example, it can be used to
91
91
  * send Server-Sent Events (SSE) requests.
92
- * @deprecated Please use `stream` method instead.
93
92
  * @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
94
93
  * @param url The URL to send the request to.
95
94
  * @param _params Optional parameters for the request.
96
95
  * @returns An observable of the HTTP event.
97
96
  */
98
- stream<T>(method: HTTPRequestMethod, url: string, _params?: IRequestParams): Observable<HTTPEvent<T>>;
99
- /**
100
- * Send a Server-Sent Events (SSE) request. It returns an observable that emits HTTP events. It is the observable
101
- * pair of the `request` method.
102
- * @deprecated Please use `stream` method instead.
103
- * @param method HTTP request method, e.g. GET, POST, PUT, DELETE, etc.
104
- * @param url The URL to send the request to.
105
- * @param _params Optional parameters for the request.
106
- * @returns An observable of the HTTP event.
107
- */
108
- getSSE<T>(method: HTTPRequestMethod, url: string, _params?: IPostRequestParams): Observable<HTTPEvent<T>>;
97
+ stream<T>(method: HTTPRequestMethod, url: string, _params?: IPostRequestParams): Observable<HTTPEvent<T>>;
109
98
  private _runInterceptorsAndImplementation;
110
99
  }
package/lib/umd/facade.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(require("@univerjs/core/facade"),require("@univerjs/network"),require("@univerjs/core")):typeof define==`function`&&define.amd?define([`@univerjs/core/facade`,`@univerjs/network`,`@univerjs/core`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverCoreFacade,e.UniverNetwork,e.UniverCore))})(this,function(e,t,n){function r(e,t){return function(n,r){t(n,r,e)}}function i(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 a=class extends e.FBase{constructor(e,t){super(),this._injector=e,this._httpService=t}get(e,t){return this._httpService.get(e,t)}post(e,t){return this._httpService.post(e,t)}put(e,t){return this._httpService.put(e,t)}delete(e,t){return this._httpService.delete(e,t)}patch(e,t){return this._httpService.patch(e,t)}getSSE(e,t,n){return this._httpService.getSSE(e,t,n)}};a=i([r(0,(0,n.Inject)(n.Injector)),r(1,(0,n.Inject)(t.HTTPService))],a);var o=class extends e.FUniver{getNetwork(){return this._injector.createInstance(a)}createSocket(e){let n=this._injector.createInstance(t.WebSocketService).createSocket(e);if(!n)throw Error(`[WebSocketService]: failed to create socket!`);return n}};e.FUniver.extend(o)});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(require("@univerjs/core/facade"),require("@univerjs/network"),require("@univerjs/core")):typeof define==`function`&&define.amd?define([`@univerjs/core/facade`,`@univerjs/network`,`@univerjs/core`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverCoreFacade,e.UniverNetwork,e.UniverCore))})(this,function(e,t,n){function r(e,t){return function(n,r){t(n,r,e)}}function i(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 a=class extends e.FBase{constructor(e,t){super(),this._injector=e,this._httpService=t}get(e,t){return this._httpService.get(e,t)}post(e,t){return this._httpService.post(e,t)}put(e,t){return this._httpService.put(e,t)}delete(e,t){return this._httpService.delete(e,t)}patch(e,t){return this._httpService.patch(e,t)}getSSE(e,t,n){return this._httpService.stream(e,t,n)}};a=i([r(0,(0,n.Inject)(n.Injector)),r(1,(0,n.Inject)(t.HTTPService))],a);var o=class extends e.FUniver{getNetwork(){return this._injector.createInstance(a)}createSocket(e){let n=this._injector.createInstance(t.WebSocketService).createSocket(e);if(!n)throw Error(`[WebSocketService]: failed to create socket!`);return n}};e.FUniver.extend(o)});
package/lib/umd/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("rxjs"),require("rxjs/operators")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`rxjs`,`rxjs/operators`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverNetwork={},e.UniverCore,e.rxjs,e.rxjs.operators))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var i=`@univerjs/network`,a=`1.0.0-alpha.6`;let o={};function s(e){"@babel/helpers - typeof";return s=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},s(e)}function c(e,t){if(s(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(s(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e){var t=c(e,`string`);return s(t)==`symbol`?t:t+``}function u(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let d=`application/json`;function f(e){return Array.isArray(e)?e.some(e=>e.includes(d)):e.includes(d)}var p=class{constructor(e){u(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))}};let m=(0,t.createIdentifier)(`network.http-implementation`);var h=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 g=0;var _=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,u(this,`uid`,g++)}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?d:e,r=(t=this.requestParams)==null?void 0:t.body;return r instanceof FormData?r:f(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 v(e,t){return function(n,r){t(n,r,e)}}function y(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 b=class extends t.Disposable{constructor(e){super(),this._http=e,u(this,`_interceptors`,[]),u(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,(0,t.toDisposable)(()=>(0,t.remove)(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,i){var a,o;return await(0,n.firstValueFrom)((0,n.of)(new _(e,t,{headers:new p(i==null?void 0:i.headers),params:new h(i==null?void 0:i.params),withCredentials:(a=i==null?void 0:i.withCredentials)==null?!1:a,responseType:(o=i==null?void 0:i.responseType)==null?`json`:o,body:[`GET`,`DELETE`].includes(e)||i==null?void 0:i.body})).pipe((0,r.concatMap)(e=>this._runInterceptorsAndImplementation(e))))}stream(e,t,n){return this.getSSE(e,t,n)}getSSE(e,t,i){var a,o;return(0,n.of)(new _(e,t,{headers:new p(i==null?void 0:i.headers),params:new h(i==null?void 0:i.params),withCredentials:(a=i==null?void 0:i.withCredentials)==null?!1:a,reportProgress:!0,responseType:(o=i==null?void 0:i.responseType)==null?`json`:o,body:[`GET`,`DELETE`].includes(e)||i==null?void 0:i.body})).pipe((0,r.concatMap)(e=>this._runInterceptorsAndImplementation(e)))}_runInterceptorsAndImplementation(e){return this._pipe||(this._pipe=this._interceptors.map(e=>e.interceptor).reduceRight((e,t)=>x(e,t),(e,t)=>t(e))),this._pipe(e,e=>this._http.send(e))}};b=y([v(0,m)],b);function x(e,t){return(n,r)=>t(n,t=>e(t,r))}let S=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}({}),C=function(e){return e[e.DownloadProgress=0]=`DownloadProgress`,e[e.Response=1]=`Response`,e}({});var w=class{constructor({body:e,headers:t,status:n,statusText:r}){u(this,`type`,1),u(this,`body`,void 0),u(this,`headers`,void 0),u(this,`status`,void 0),u(this,`statusText`,void 0),this.body=e,this.headers=t,this.status=n,this.statusText=r}},T=class{constructor(e,t,n){this.total=e,this.loaded=t,this.partialText=n,u(this,`type`,0)}},E=class{constructor(e,t,n){this.headers=e,this.status=t,this.statusText=n}},D=class{constructor({request:e,headers:t,status:n,statusText:r,error:i}){u(this,`request`,void 0),u(this,`headers`,void 0),u(this,`status`,void 0),u(this,`statusText`,void 0),u(this,`error`,void 0),this.request=e,this.headers=t,this.status=n,this.statusText=r,this.error=i}};function O(e){return{method:e.method,headers:e.getHeadersInit(),body:e.getBody(),credentials:e.withCredentials?`include`:void 0}}let k=class{constructor(e){this._logService=e}send(e){return new n.Observable(t=>{let n=new AbortController;return this._send(e,t,n).catch(n=>{t.error(new D({error:n,request:e}))}),()=>n.abort()})}async _send(e,t,n){let r;try{let t=O(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 D({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 p(r.headers),s=r.status,c=r.statusText,l=null;if(r.body&&(l=await this._readBody(e,r,t)),s>=200&&s<300)t.next(new w({body:l,headers:o,status:s,statusText:c}));else{let n=new D({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,m;u=((f=u)==null?``:f)+((m=d)==null?d=new TextDecoder:m).decode(t,{stream:!0}),n.next(new T(o?Number.parseInt(o,10):void 0,s,u))}}let h=A(i,s);try{var g;return M(e,h,(g=t.headers.get(`content-type`))==null?``:g)}catch(r){let i=new D({request:e,error:r,status:t.status,statusText:t.statusText,headers:new p(t.headers)});return this._logService.error(`[FetchHTTPImplementation]: network error`,i),n.error(i),null}}};k=y([v(0,t.ILogService)],k);function A(e,t){let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}let j=/^\)\]\}',?\n/;function M(e,t,n){switch(e.responseType){case`json`:let r=new TextDecoder().decode(t).replace(j,``);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 N=class{constructor(e){this._logService=e}send(e){return new n.Observable(t=>{let n=new XMLHttpRequest,r=e.getUrlWithParams(),i=O(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 E(new p(n.getAllResponseHeaders()),n.status,e)},s=()=>{let{headers:r,statusText:i,status:s}=o(),c=null,l=null;s!==204&&(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 w({body:c,headers:r,status:s,statusText:i}));else{let n=new D({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 D({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)}})}};N=y([v(0,t.ILogService)],N);let P=class extends t.Plugin{constructor(e=o,n,r,i){super(),this._config=e,this._logger=n,this._injector=r,this._configService=i;let{...a}=(0,t.merge)({},o,this._config);this._configService.setConfig(`network.config`,a)}onStarting(){var e,n,r;if(this._injector.get(b,t.Quantity.OPTIONAL,t.LookUp.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 i=(n=this._config)!=null&&n.useFetchImpl?k:typeof window<`u`?N:k;(0,t.registerDependencies)(this._injector,(0,t.mergeOverrideWithDependencies)([[b],[m,{useClass:i}]],(r=this._config)==null?void 0:r.override))}};u(P,`pluginName`,`UNIVER_NETWORK_PLUGIN`),u(P,`packageName`,i),u(P,`version`,a),P=y([v(1,t.ILogService),v(2,(0,t.Inject)(t.Injector)),v(3,t.IConfigService)],P);let F=e=>{let{errorStatusCodes:t,onAuthError:r}=e;return(e,i)=>i(e).pipe((0,n.catchError)(e=>(e instanceof D&&t.some(t=>t===e.status)&&r(),(0,n.throwError)(()=>e))))},I=(e=300)=>{let n=t.noop;return t=>new Promise(t=>{n();let r=setTimeout(()=>{t(!0)},e);n=()=>{clearTimeout(r),t(!1)}})},L=()=>(e,t)=>t.map(t=>({config:t,result:e})),R=(e,t={})=>{let{isMatch:r,getParamsFromRequest:i,mergeParamsToRequest:a}=e,{fetchCheck:o=I(300),distributeResult:s=L()}=t,c=[],l=e=>e.map(e=>e.config);return(e,t)=>r(e)?new n.Observable(n=>{let r=i(e);c.push({next:e=>n.next(e),error:e=>n.error(e),config:r});let u=l(c);o(e).then(r=>{if(r){let r=[];u.forEach(e=>{let t=c.findIndex(t=>t.config===e);if(t>=0){let[e]=c.splice(t,1);r.push(e)}}),t(a(u,e)).subscribe({next:e=>{if(e.type===1){let t=e.body,n=s(t,u);r.forEach(t=>{let r=n.find(e=>e.config===t.config);if(r){let n=new w({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)},z=e=>{var t,n;let i=(t=e==null?void 0:e.maxRetryAttempts)==null?3:t,a=(n=e==null?void 0:e.delayInterval)==null?1e3:n;return(e,t)=>t(e).pipe((0,r.retry)({delay:a,count:i}))},B=e=>{let r=[],i=new Set,a=()=>{for(var t;i.size<((t=e==null?void 0:e.maxParallel)==null?1:t)&&r.length>0;){let e=r.shift();i.add(e),e()}};return(e,o)=>new n.Observable(n=>{let s=()=>o(e).subscribe({next:e=>n.next(e),error:e=>n.error(e),complete:()=>n.complete()});return r.push(s),a(),()=>{i.delete(s),(0,t.remove)(r,s),a()}})},V=(0,t.createIdentifier)(`univer.network.socket.service`);var H=class extends t.Disposable{createSocket(e){try{let i=new WebSocket(e),a=new t.DisposableCollection;return{URL:e,close:(e,t)=>{i.close(e,t),a.dispose()},send:e=>{i.send(e)},open$:new n.Observable(e=>{let n=t=>e.next(t);i.addEventListener(`open`,n),a.add((0,t.toDisposable)(()=>i.removeEventListener(`open`,n)))}).pipe((0,r.share)()),close$:new n.Observable(e=>{let n=t=>e.next(t);i.addEventListener(`close`,n),a.add((0,t.toDisposable)(()=>i.removeEventListener(`close`,n)))}).pipe((0,r.share)()),error$:new n.Observable(e=>{let n=t=>e.next(t);i.addEventListener(`error`,n),a.add((0,t.toDisposable)(()=>i.removeEventListener(`error`,n)))}).pipe((0,r.share)()),message$:new n.Observable(e=>{let n=t=>e.next(t);i.addEventListener(`message`,n),a.add((0,t.toDisposable)(()=>i.removeEventListener(`message`,n)))}).pipe((0,r.share)())}}catch(e){return console.error(e),null}}};e.AuthInterceptorFactory=F,Object.defineProperty(e,"FetchHTTPImplementation",{enumerable:!0,get:function(){return k}}),e.HTTPEventType=C,e.HTTPHeaders=p,e.HTTPProgress=T,e.HTTPRequest=_,e.HTTPResponse=w,e.HTTPResponseError=D,Object.defineProperty(e,"HTTPService",{enumerable:!0,get:function(){return b}}),e.HTTPStatusCode=S,e.IHTTPImplementation=m,e.ISocketService=V,e.MergeInterceptorFactory=R,e.ResponseHeader=E,e.RetryInterceptorFactory=z,e.ThresholdInterceptorFactory=B,Object.defineProperty(e,"UniverNetworkPlugin",{enumerable:!0,get:function(){return P}}),e.WebSocketService=H,Object.defineProperty(e,"XHRHTTPImplementation",{enumerable:!0,get:function(){return N}})});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("rxjs"),require("rxjs/operators")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`rxjs`,`rxjs/operators`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverNetwork={},e.UniverCore,e.rxjs,e.rxjs.operators))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var i=`@univerjs/network`,a=`1.0.0-alpha.8`;let o={};function s(e){"@babel/helpers - typeof";return s=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},s(e)}function c(e,t){if(s(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(s(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e){var t=c(e,`string`);return s(t)==`symbol`?t:t+``}function u(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let d=`application/json`;function f(e){return Array.isArray(e)?e.some(e=>e.includes(d)):e.includes(d)}var p=class{constructor(e){u(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))}};let m=(0,t.createIdentifier)(`network.http-implementation`);var h=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 g=0;var _=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,u(this,`uid`,g++)}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?d:e,r=(t=this.requestParams)==null?void 0:t.body;return r instanceof FormData?r:f(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 v(e,t){return function(n,r){t(n,r,e)}}function y(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 b=class extends t.Disposable{constructor(e){super(),this._http=e,u(this,`_interceptors`,[]),u(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,(0,t.toDisposable)(()=>(0,t.remove)(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,i){var a,o;return await(0,n.firstValueFrom)((0,n.of)(new _(e,t,{headers:new p(i==null?void 0:i.headers),params:new h(i==null?void 0:i.params),withCredentials:(a=i==null?void 0:i.withCredentials)!=null&&a,responseType:(o=i==null?void 0:i.responseType)==null?`json`:o,body:[`GET`,`DELETE`].includes(e)||i==null?void 0:i.body})).pipe((0,r.concatMap)(e=>this._runInterceptorsAndImplementation(e))))}stream(e,t,i){var a,o;return(0,n.of)(new _(e,t,{headers:new p(i==null?void 0:i.headers),params:new h(i==null?void 0:i.params),withCredentials:(a=i==null?void 0:i.withCredentials)!=null&&a,reportProgress:!0,responseType:(o=i==null?void 0:i.responseType)==null?`json`:o,body:[`GET`,`DELETE`].includes(e)||i==null?void 0:i.body})).pipe((0,r.concatMap)(e=>this._runInterceptorsAndImplementation(e)))}_runInterceptorsAndImplementation(e){return this._pipe||(this._pipe=this._interceptors.map(e=>e.interceptor).reduceRight((e,t)=>x(e,t),(e,t)=>t(e))),this._pipe(e,e=>this._http.send(e))}};b=y([v(0,m)],b);function x(e,t){return(n,r)=>t(n,t=>e(t,r))}let S=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}({}),C=function(e){return e[e.DownloadProgress=0]=`DownloadProgress`,e[e.Response=1]=`Response`,e}({});var w=class{constructor({body:e,headers:t,status:n,statusText:r}){u(this,`type`,1),u(this,`body`,void 0),u(this,`headers`,void 0),u(this,`status`,void 0),u(this,`statusText`,void 0),this.body=e,this.headers=t,this.status=n,this.statusText=r}},T=class{constructor(e,t,n){this.total=e,this.loaded=t,this.partialText=n,u(this,`type`,0)}},E=class{constructor(e,t,n){this.headers=e,this.status=t,this.statusText=n}},D=class{constructor({request:e,headers:t,status:n,statusText:r,error:i}){u(this,`request`,void 0),u(this,`headers`,void 0),u(this,`status`,void 0),u(this,`statusText`,void 0),u(this,`error`,void 0),this.request=e,this.headers=t,this.status=n,this.statusText=r,this.error=i}};function O(e){return{method:e.method,headers:e.getHeadersInit(),body:e.getBody(),credentials:e.withCredentials?`include`:void 0}}let k=class{constructor(e){this._logService=e}send(e){return new n.Observable(t=>{let n=new AbortController;return this._send(e,t,n).catch(n=>{t.error(new D({error:n,request:e}))}),()=>n.abort()})}async _send(e,t,n){let r;try{let t=O(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 D({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 p(r.headers),s=r.status,c=r.statusText,l=null;if(r.body&&(l=await this._readBody(e,r,t)),s>=200&&s<300)t.next(new w({body:l,headers:o,status:s,statusText:c}));else{let n=new D({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,m;u=((f=u)==null?``:f)+((m=d)==null?d=new TextDecoder:m).decode(t,{stream:!0}),n.next(new T(o?Number.parseInt(o,10):void 0,s,u))}}let h=A(i,s);try{var g;return M(e,h,(g=t.headers.get(`content-type`))==null?``:g)}catch(r){let i=new D({request:e,error:r,status:t.status,statusText:t.statusText,headers:new p(t.headers)});return this._logService.error(`[FetchHTTPImplementation]: network error`,i),n.error(i),null}}};k=y([v(0,t.ILogService)],k);function A(e,t){let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}let j=/^\)\]\}',?\n/;function M(e,t,n){switch(e.responseType){case`json`:let r=new TextDecoder().decode(t).replace(j,``);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 N=class{constructor(e){this._logService=e}send(e){return new n.Observable(t=>{let n=new XMLHttpRequest,r=e.getUrlWithParams(),i=O(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 E(new p(n.getAllResponseHeaders()),n.status,e)},s=()=>{let{headers:r,statusText:i,status:s}=o(),c=null,l=null;s!==204&&(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 w({body:c,headers:r,status:s,statusText:i}));else{let n=new D({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 D({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)}})}};N=y([v(0,t.ILogService)],N);let P=class extends t.Plugin{constructor(e=o,n,r,i){super(),this._config=e,this._logger=n,this._injector=r,this._configService=i;let{...a}=(0,t.merge)({},o,this._config);this._configService.setConfig(`network.config`,a)}onStarting(){var e,n,r;if(this._injector.get(b,t.Quantity.OPTIONAL,t.LookUp.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 i=(n=this._config)!=null&&n.useFetchImpl?k:typeof window<`u`?N:k;(0,t.registerDependencies)(this._injector,(0,t.mergeOverrideWithDependencies)([[b],[m,{useClass:i}]],(r=this._config)==null?void 0:r.override))}};u(P,`pluginName`,`UNIVER_NETWORK_PLUGIN`),u(P,`packageName`,i),u(P,`version`,a),P=y([v(1,t.ILogService),v(2,(0,t.Inject)(t.Injector)),v(3,t.IConfigService)],P);let F=e=>{let{errorStatusCodes:t,onAuthError:r}=e;return(e,i)=>i(e).pipe((0,n.catchError)(e=>(e instanceof D&&t.some(t=>t===e.status)&&r(),(0,n.throwError)(()=>e))))},I=(e=300)=>{let n=t.noop;return t=>new Promise(t=>{n();let r=setTimeout(()=>{t(!0)},e);n=()=>{clearTimeout(r),t(!1)}})},L=()=>(e,t)=>t.map(t=>({config:t,result:e})),R=(e,r={})=>{let{isMatch:i,getParamsFromRequest:a,mergeParamsToRequest:o}=e,{fetchCheck:s=I(300),distributeResult:c=L()}=r,l=[],u=e=>e.map(e=>e.config);return(e,r)=>i(e)?new n.Observable(n=>{let i={next:e=>n.next(e),error:e=>n.error(e),config:a(e),active:!0};l.push(i);let d=u(l);return s(e).then(t=>{if(t){let t=[];d.forEach(e=>{let n=l.findIndex(t=>t.config===e);if(n>=0){let[e]=l.splice(n,1);t.push(e)}});let i=u(t);if(!i.length)return;let a={hooks:t};t.forEach(e=>e.batch=a),a.subscription=r(o(i,e)).subscribe({next:e=>{if(e.type===1){let n=e.body,r=c(n,i);t.forEach(t=>{let n=r.find(e=>e.config===t.config);if(n){let r=new w({body:n.result,headers:e.headers,status:e.status,statusText:e.statusText});t.next(r)}else t.error(`batch error`)})}},complete:()=>n.complete(),error:e=>n.error(e)})}}),()=>{var e;if(i.active=!1,(0,t.remove)(l,i),(e=i.batch)!=null&&e.hooks.every(e=>!e.active)){var n;(n=i.batch.subscription)==null||n.unsubscribe()}}}):r(e)},z=e=>{var t,n;let i=(t=e==null?void 0:e.maxRetryAttempts)==null?3:t,a=(n=e==null?void 0:e.delayInterval)==null?1e3:n;return(e,t)=>t(e).pipe((0,r.retry)({delay:a,count:i}))},B=e=>{let r=[],i=new Set,a=()=>{for(var t;i.size<((t=e==null?void 0:e.maxParallel)==null?1:t)&&r.length>0;){let e=r.shift();i.add(e),e()}};return(e,o)=>new n.Observable(n=>{let s,c=()=>{s=o(e).subscribe({next:e=>n.next(e),error:e=>n.error(e),complete:()=>n.complete()})};return r.push(c),a(),()=>{s==null||s.unsubscribe(),i.delete(c),(0,t.remove)(r,c),a()}})},V=(0,t.createIdentifier)(`univer.network.socket.service`);var H=class extends t.Disposable{createSocket(e){try{let i=new WebSocket(e),a=new t.DisposableCollection;return{URL:e,close:(e,t)=>{i.close(e,t),a.dispose()},send:e=>{i.send(e)},open$:new n.Observable(e=>{let n=t=>e.next(t);i.addEventListener(`open`,n),a.add((0,t.toDisposable)(()=>i.removeEventListener(`open`,n)))}).pipe((0,r.share)()),close$:new n.Observable(e=>{let n=t=>e.next(t);i.addEventListener(`close`,n),a.add((0,t.toDisposable)(()=>i.removeEventListener(`close`,n)))}).pipe((0,r.share)()),error$:new n.Observable(e=>{let n=t=>e.next(t);i.addEventListener(`error`,n),a.add((0,t.toDisposable)(()=>i.removeEventListener(`error`,n)))}).pipe((0,r.share)()),message$:new n.Observable(e=>{let n=t=>e.next(t);i.addEventListener(`message`,n),a.add((0,t.toDisposable)(()=>i.removeEventListener(`message`,n)))}).pipe((0,r.share)())}}catch(e){return console.error(e),null}}};e.AuthInterceptorFactory=F,Object.defineProperty(e,"FetchHTTPImplementation",{enumerable:!0,get:function(){return k}}),e.HTTPEventType=C,e.HTTPHeaders=p,e.HTTPProgress=T,e.HTTPRequest=_,e.HTTPResponse=w,e.HTTPResponseError=D,Object.defineProperty(e,"HTTPService",{enumerable:!0,get:function(){return b}}),e.HTTPStatusCode=S,e.IHTTPImplementation=m,e.ISocketService=V,e.MergeInterceptorFactory=R,e.ResponseHeader=E,e.RetryInterceptorFactory=z,e.ThresholdInterceptorFactory=B,Object.defineProperty(e,"UniverNetworkPlugin",{enumerable:!0,get:function(){return P}}),e.WebSocketService=H,Object.defineProperty(e,"XHRHTTPImplementation",{enumerable:!0,get:function(){return N}})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/network",
3
- "version": "1.0.0-alpha.6",
3
+ "version": "1.0.0-alpha.8",
4
4
  "private": false,
5
5
  "description": "Network service abstractions for Univer runtime integrations.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -62,13 +62,13 @@
62
62
  "rxjs": ">=7.0.0"
63
63
  },
64
64
  "dependencies": {
65
- "@univerjs/core": "1.0.0-alpha.6"
65
+ "@univerjs/core": "1.0.0-alpha.8"
66
66
  },
67
67
  "devDependencies": {
68
68
  "rxjs": "^7.8.2",
69
69
  "typescript": "^6.0.3",
70
70
  "vitest": "^4.1.10",
71
- "@univerjs-infra/shared": "1.0.0-alpha.6"
71
+ "@univerjs-infra/shared": "1.0.0-alpha.8"
72
72
  },
73
73
  "scripts": {
74
74
  "test": "vitest run",