@univerjs/rpc 0.21.1 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,31 +1,43 @@
1
1
  # @univerjs/rpc
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/@univerjs/rpc?style=flat-square)](https://npmjs.com/package/@univerjs/rpc)
4
+ [![license](https://img.shields.io/npm/l/@univerjs/rpc?style=flat-square)](https://npmjs.com/package/@univerjs/rpc)
5
+ [![downloads](https://img.shields.io/npm/dm/@univerjs/rpc?style=flat-square)](https://npmjs.com/package/@univerjs/rpc)
6
+
7
+ `@univerjs/rpc` provides a browser-friendly RPC layer for communicating between the main thread and workers or other message-based runtimes.
8
+
3
9
  ## Package Overview
4
10
 
5
- | Package Name | UMD Namespace | Version | License | Downloads | Contains CSS | Contains i18n locales |
6
- | --- | --- | --- | --- | --- | :---: | :---: |
7
- | `@univerjs/rpc` | `UniverRpc` | [![][npm-version-shield]][npm-version-link] | ![][npm-license-shield] | ![][npm-downloads-shield] | ❌ | ❌ |
11
+ | Package | UMD global | CSS | Locales | Facade entry |
12
+ | --- | --- | :---: | :---: | :---: |
13
+ | `@univerjs/rpc` | `UniverRpc` | No | No | No |
8
14
 
9
- ## Introduction
15
+ ## Installation
10
16
 
11
- When handling some time-intensive tasks, such as formula computation, Univer can offload them to a location outside of the main thread, such as a Web Worker thread. The `@univerjs/rpc` library provides an RPC mechanism that simplifies communication between the main thread and other threads.
17
+ ```sh
18
+ pnpm add @univerjs/rpc
19
+ # or
20
+ npm install @univerjs/rpc
21
+ ```
12
22
 
13
- For more information, see the [Architecture of Web Worker](https://docs.univer.ai/guides/recipes/architecture/web-worker).
23
+ Keep all `@univerjs/*` packages on the same version.
14
24
 
15
25
  ## Usage
16
26
 
17
- ### Installation
18
-
19
- ```shell
20
- # Using npm
21
- npm install @univerjs/rpc
27
+ ```ts
28
+ import { UniverRPCMainThreadPlugin } from '@univerjs/rpc';
22
29
 
23
- # Using pnpm
24
- pnpm add @univerjs/rpc
30
+ univer.registerPlugin(UniverRPCMainThreadPlugin);
25
31
  ```
26
32
 
27
- <!-- Links -->
28
- [npm-version-shield]: https://img.shields.io/npm/v/@univerjs/rpc?style=flat-square
29
- [npm-version-link]: https://npmjs.com/package/@univerjs/rpc
30
- [npm-license-shield]: https://img.shields.io/npm/l/@univerjs/rpc?style=flat-square
31
- [npm-downloads-shield]: https://img.shields.io/npm/dm/@univerjs/rpc?style=flat-square
33
+ Exported plugin classes:
34
+
35
+ - `UniverRPCMainThreadPlugin`
36
+ - `UniverRPCWorkerThreadPlugin`
37
+
38
+ ## Resources
39
+
40
+ - [Documentation](https://docs.univer.ai)
41
+ - [NPM package](https://npmjs.com/package/@univerjs/rpc)
42
+ - [GitHub repository](https://github.com/dream-num/univer)
43
+
package/lib/cjs/index.js CHANGED
@@ -27,7 +27,7 @@ const configSymbolWorkerThread = Symbol(PLUGIN_CONFIG_KEY_WORKER_THREAD);
27
27
  const defaultPluginWorkerThreadConfig = {};
28
28
 
29
29
  //#endregion
30
- //#region \0@oxc-project+runtime@0.124.0/helpers/decorateParam.js
30
+ //#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
31
31
  function __decorateParam(paramIndex, decorator) {
32
32
  return function(target, key) {
33
33
  decorator(target, key, paramIndex);
@@ -35,7 +35,7 @@ function __decorateParam(paramIndex, decorator) {
35
35
  }
36
36
 
37
37
  //#endregion
38
- //#region \0@oxc-project+runtime@0.124.0/helpers/decorate.js
38
+ //#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
39
39
  function __decorate(decorators, target, key, desc) {
40
40
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
41
41
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -122,7 +122,7 @@ WebWorkerRemoteInstanceService = __decorate([
122
122
  ], WebWorkerRemoteInstanceService);
123
123
 
124
124
  //#endregion
125
- //#region \0@oxc-project+runtime@0.124.0/helpers/typeof.js
125
+ //#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
126
126
  function _typeof(o) {
127
127
  "@babel/helpers - typeof";
128
128
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -133,7 +133,7 @@ function _typeof(o) {
133
133
  }
134
134
 
135
135
  //#endregion
136
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPrimitive.js
136
+ //#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
137
137
  function toPrimitive(t, r) {
138
138
  if ("object" != _typeof(t) || !t) return t;
139
139
  var e = t[Symbol.toPrimitive];
@@ -146,14 +146,14 @@ function toPrimitive(t, r) {
146
146
  }
147
147
 
148
148
  //#endregion
149
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPropertyKey.js
149
+ //#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
150
150
  function toPropertyKey(t) {
151
151
  var i = toPrimitive(t, "string");
152
152
  return "symbol" == _typeof(i) ? i : i + "";
153
153
  }
154
154
 
155
155
  //#endregion
156
- //#region \0@oxc-project+runtime@0.124.0/helpers/defineProperty.js
156
+ //#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
157
157
  function _defineProperty(e, r, t) {
158
158
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
159
159
  value: t,
@@ -216,39 +216,6 @@ function toModule(channel) {
216
216
  function propertyIsEventSource(name) {
217
217
  return name.endsWith("$");
218
218
  }
219
- var RequestType = /* @__PURE__ */ function(RequestType) {
220
- /**
221
- * In Univer, we cannot make sure that when IPCServer constructs, the process (or thread)
222
- * where the corresponding IPCClient residents has bootstrapped and been ready to recieve messages.
223
- * This may result in the IPCClient hanging there, waiting for the `INITIALIZE` message that it has
224
- * already missed. So the client should send a REQUEST_INITIALIZATION in case of that.
225
- *
226
- * Later, we may want a more sophisticated RPC system where the server can serve more than
227
- * one clients, and this event may be removed.
228
- */
229
- RequestType[RequestType["REQUEST_INITIALIZATION"] = 50] = "REQUEST_INITIALIZATION";
230
- /** A simple remote calling wrapper in a Promise. */
231
- RequestType[RequestType["CALL"] = 100] = "CALL";
232
- /** Subscribe to a remote Observable. */
233
- RequestType[RequestType["SUBSCRIBE"] = 101] = "SUBSCRIBE";
234
- /** Cancel subscription to that remove Observable. */
235
- RequestType[RequestType["UNSUBSCRIBE"] = 102] = "UNSUBSCRIBE";
236
- return RequestType;
237
- }(RequestType || {});
238
- var ResponseType = /* @__PURE__ */ function(ResponseType) {
239
- /**
240
- * When underlying protocol is established. The server should send the
241
- * client an `INITIALIZE` response to indicate that the server is up
242
- * and ready to provide services.
243
- */
244
- ResponseType[ResponseType["INITIALIZE"] = 0] = "INITIALIZE";
245
- ResponseType[ResponseType["CALL_SUCCESS"] = 201] = "CALL_SUCCESS";
246
- ResponseType[ResponseType["CALL_FAILURE"] = 202] = "CALL_FAILURE";
247
- ResponseType[ResponseType["SUBSCRIBE_NEXT"] = 300] = "SUBSCRIBE_NEXT";
248
- ResponseType[ResponseType["SUBSCRIBE_ERROR"] = 301] = "SUBSCRIBE_ERROR";
249
- ResponseType[ResponseType["SUBSCRIBE_COMPLETE"] = 302] = "SUBSCRIBE_COMPLETE";
250
- return ResponseType;
251
- }(ResponseType || {});
252
219
  /**
253
220
  * This method provides implementation for `IChannel` and is responsible for
254
221
  * transforming a local calling to a RPC calling.
@@ -260,7 +227,7 @@ var ChannelClient = class extends _univerjs_core.RxDisposable {
260
227
  _defineProperty(this, "_initialized", new rxjs.BehaviorSubject(false));
261
228
  _defineProperty(this, "_lastRequestCounter", 0);
262
229
  _defineProperty(this, "_pendingRequests", /* @__PURE__ */ new Map());
263
- this._protocol.send({ type: RequestType.REQUEST_INITIALIZATION });
230
+ this._protocol.send({ type: 50 });
264
231
  this._protocol.onMessage.pipe((0, rxjs_operators.takeUntil)(this.dispose$)).subscribe((message) => this._onMessage(message));
265
232
  }
266
233
  dispose() {
@@ -289,7 +256,7 @@ var ChannelClient = class extends _univerjs_core.RxDisposable {
289
256
  const sequence = ++this._lastRequestCounter;
290
257
  const request = {
291
258
  seq: sequence,
292
- type: RequestType.CALL,
259
+ type: 100,
293
260
  channelName,
294
261
  method,
295
262
  args
@@ -298,11 +265,11 @@ var ChannelClient = class extends _univerjs_core.RxDisposable {
298
265
  return new Promise((resolve, reject) => {
299
266
  this._pendingRequests.set(sequence, { handle(response) {
300
267
  switch (response.type) {
301
- case ResponseType.CALL_SUCCESS:
268
+ case 201:
302
269
  pendingRequests.delete(sequence);
303
270
  resolve(response.data);
304
271
  break;
305
- case ResponseType.CALL_FAILURE:
272
+ case 202:
306
273
  pendingRequests.delete(sequence);
307
274
  reject(response.data);
308
275
  break;
@@ -317,23 +284,22 @@ var ChannelClient = class extends _univerjs_core.RxDisposable {
317
284
  let sequence = -1;
318
285
  const doSubscribe = () => {
319
286
  sequence = ++this._lastRequestCounter;
320
- const type = RequestType.SUBSCRIBE;
321
287
  const request = {
322
288
  seq: sequence,
323
- type,
289
+ type: 101,
324
290
  channelName,
325
291
  method,
326
292
  args
327
293
  };
328
294
  this._pendingRequests.set(sequence, { handle(response) {
329
295
  switch (response.type) {
330
- case ResponseType.SUBSCRIBE_NEXT:
296
+ case 300:
331
297
  subscriber.next(response.data);
332
298
  break;
333
- case ResponseType.SUBSCRIBE_ERROR:
299
+ case 301:
334
300
  subscriber.error(response.data);
335
301
  break;
336
- case ResponseType.SUBSCRIBE_COMPLETE:
302
+ case 302:
337
303
  subscriber.complete();
338
304
  break;
339
305
  default: throw new Error("[ChannelClient]: unknown response type!");
@@ -346,7 +312,7 @@ var ChannelClient = class extends _univerjs_core.RxDisposable {
346
312
  return () => {
347
313
  if (sequence === -1) return;
348
314
  const cancelSubscriptionRequest = {
349
- type: RequestType.UNSUBSCRIBE,
315
+ type: 102,
350
316
  seq: sequence,
351
317
  channelName,
352
318
  method
@@ -361,18 +327,18 @@ var ChannelClient = class extends _univerjs_core.RxDisposable {
361
327
  _onMessage(response) {
362
328
  const { type: responseType, seq } = response;
363
329
  switch (responseType) {
364
- case ResponseType.INITIALIZE:
330
+ case 0:
365
331
  this._initialized.next(true);
366
332
  break;
367
- case ResponseType.CALL_SUCCESS:
368
- case ResponseType.CALL_FAILURE:
369
- case ResponseType.SUBSCRIBE_NEXT:
370
- case ResponseType.SUBSCRIBE_COMPLETE:
371
- case ResponseType.SUBSCRIBE_ERROR: {
333
+ case 201:
334
+ case 202:
335
+ case 300:
336
+ case 302:
337
+ case 301: {
372
338
  var _pendingRequests$get;
373
339
  const { _pendingRequests } = this;
374
340
  (_pendingRequests$get = _pendingRequests.get(seq)) === null || _pendingRequests$get === void 0 || _pendingRequests$get.handle(response);
375
- responseType !== ResponseType.SUBSCRIBE_NEXT && _pendingRequests.delete(seq);
341
+ responseType !== 300 && _pendingRequests.delete(seq);
376
342
  break;
377
343
  }
378
344
  }
@@ -397,16 +363,16 @@ var ChannelServer = class extends _univerjs_core.RxDisposable {
397
363
  }
398
364
  _onRequest(request) {
399
365
  switch (request.type) {
400
- case RequestType.REQUEST_INITIALIZATION:
366
+ case 50:
401
367
  this._sendInitialize();
402
368
  break;
403
- case RequestType.CALL:
369
+ case 100:
404
370
  this._onMethodCall(request);
405
371
  break;
406
- case RequestType.SUBSCRIBE:
372
+ case 101:
407
373
  this._onSubscribe(request);
408
374
  break;
409
- case RequestType.UNSUBSCRIBE:
375
+ case 102:
410
376
  this._onUnsubscribe(request);
411
377
  break;
412
378
  default: break;
@@ -415,7 +381,7 @@ var ChannelServer = class extends _univerjs_core.RxDisposable {
415
381
  _sendInitialize() {
416
382
  this._sendResponse({
417
383
  seq: -1,
418
- type: ResponseType.INITIALIZE
384
+ type: 0
419
385
  });
420
386
  }
421
387
  _onMethodCall(request) {
@@ -431,18 +397,18 @@ var ChannelServer = class extends _univerjs_core.RxDisposable {
431
397
  promise.then((data) => {
432
398
  this._sendResponse({
433
399
  seq: request.seq,
434
- type: ResponseType.CALL_SUCCESS,
400
+ type: 201,
435
401
  data
436
402
  });
437
403
  }).catch((err) => {
438
404
  if (err instanceof Error) this._sendResponse({
439
405
  seq: request.seq,
440
- type: ResponseType.CALL_FAILURE,
406
+ type: 202,
441
407
  data: err.message
442
408
  });
443
409
  else this._sendResponse({
444
410
  seq: request.seq,
445
- type: ResponseType.CALL_FAILURE,
411
+ type: 202,
446
412
  data: String(err)
447
413
  });
448
414
  });
@@ -456,25 +422,25 @@ var ChannelServer = class extends _univerjs_core.RxDisposable {
456
422
  next: (data) => {
457
423
  this._sendResponse({
458
424
  seq,
459
- type: ResponseType.SUBSCRIBE_NEXT,
425
+ type: 300,
460
426
  data
461
427
  });
462
428
  },
463
429
  error: (err) => {
464
430
  this._sendResponse({
465
431
  seq,
466
- type: ResponseType.SUBSCRIBE_ERROR,
432
+ type: 301,
467
433
  data: err.message
468
434
  });
469
435
  this._sendResponse({
470
436
  seq,
471
- type: ResponseType.SUBSCRIBE_COMPLETE
437
+ type: 302
472
438
  });
473
439
  },
474
440
  complete: () => {
475
441
  this._sendResponse({
476
442
  seq,
477
- type: ResponseType.SUBSCRIBE_COMPLETE
443
+ type: 302
478
444
  });
479
445
  }
480
446
  });
@@ -482,12 +448,12 @@ var ChannelServer = class extends _univerjs_core.RxDisposable {
482
448
  } catch (err) {
483
449
  if (err instanceof Error) this._sendResponse({
484
450
  seq: request.seq,
485
- type: ResponseType.SUBSCRIBE_ERROR,
451
+ type: 301,
486
452
  data: err.message
487
453
  });
488
454
  else this._sendResponse({
489
455
  seq: request.seq,
490
- type: ResponseType.SUBSCRIBE_ERROR,
456
+ type: 301,
491
457
  data: String(err)
492
458
  });
493
459
  }
@@ -624,7 +590,7 @@ DataSyncReplicaController = __decorate([
624
590
  //#endregion
625
591
  //#region package.json
626
592
  var name = "@univerjs/rpc";
627
- var version = "0.21.1";
593
+ var version = "0.22.0";
628
594
 
629
595
  //#endregion
630
596
  //#region src/services/rpc/implementations/web-worker-rpc.service.ts
package/lib/es/index.js CHANGED
@@ -26,7 +26,7 @@ const configSymbolWorkerThread = Symbol(PLUGIN_CONFIG_KEY_WORKER_THREAD);
26
26
  const defaultPluginWorkerThreadConfig = {};
27
27
 
28
28
  //#endregion
29
- //#region \0@oxc-project+runtime@0.124.0/helpers/decorateParam.js
29
+ //#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
30
30
  function __decorateParam(paramIndex, decorator) {
31
31
  return function(target, key) {
32
32
  decorator(target, key, paramIndex);
@@ -34,7 +34,7 @@ function __decorateParam(paramIndex, decorator) {
34
34
  }
35
35
 
36
36
  //#endregion
37
- //#region \0@oxc-project+runtime@0.124.0/helpers/decorate.js
37
+ //#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
38
38
  function __decorate(decorators, target, key, desc) {
39
39
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40
40
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -121,7 +121,7 @@ WebWorkerRemoteInstanceService = __decorate([
121
121
  ], WebWorkerRemoteInstanceService);
122
122
 
123
123
  //#endregion
124
- //#region \0@oxc-project+runtime@0.124.0/helpers/typeof.js
124
+ //#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
125
125
  function _typeof(o) {
126
126
  "@babel/helpers - typeof";
127
127
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -132,7 +132,7 @@ function _typeof(o) {
132
132
  }
133
133
 
134
134
  //#endregion
135
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPrimitive.js
135
+ //#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
136
136
  function toPrimitive(t, r) {
137
137
  if ("object" != _typeof(t) || !t) return t;
138
138
  var e = t[Symbol.toPrimitive];
@@ -145,14 +145,14 @@ function toPrimitive(t, r) {
145
145
  }
146
146
 
147
147
  //#endregion
148
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPropertyKey.js
148
+ //#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
149
149
  function toPropertyKey(t) {
150
150
  var i = toPrimitive(t, "string");
151
151
  return "symbol" == _typeof(i) ? i : i + "";
152
152
  }
153
153
 
154
154
  //#endregion
155
- //#region \0@oxc-project+runtime@0.124.0/helpers/defineProperty.js
155
+ //#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
156
156
  function _defineProperty(e, r, t) {
157
157
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
158
158
  value: t,
@@ -215,39 +215,6 @@ function toModule(channel) {
215
215
  function propertyIsEventSource(name) {
216
216
  return name.endsWith("$");
217
217
  }
218
- var RequestType = /* @__PURE__ */ function(RequestType) {
219
- /**
220
- * In Univer, we cannot make sure that when IPCServer constructs, the process (or thread)
221
- * where the corresponding IPCClient residents has bootstrapped and been ready to recieve messages.
222
- * This may result in the IPCClient hanging there, waiting for the `INITIALIZE` message that it has
223
- * already missed. So the client should send a REQUEST_INITIALIZATION in case of that.
224
- *
225
- * Later, we may want a more sophisticated RPC system where the server can serve more than
226
- * one clients, and this event may be removed.
227
- */
228
- RequestType[RequestType["REQUEST_INITIALIZATION"] = 50] = "REQUEST_INITIALIZATION";
229
- /** A simple remote calling wrapper in a Promise. */
230
- RequestType[RequestType["CALL"] = 100] = "CALL";
231
- /** Subscribe to a remote Observable. */
232
- RequestType[RequestType["SUBSCRIBE"] = 101] = "SUBSCRIBE";
233
- /** Cancel subscription to that remove Observable. */
234
- RequestType[RequestType["UNSUBSCRIBE"] = 102] = "UNSUBSCRIBE";
235
- return RequestType;
236
- }(RequestType || {});
237
- var ResponseType = /* @__PURE__ */ function(ResponseType) {
238
- /**
239
- * When underlying protocol is established. The server should send the
240
- * client an `INITIALIZE` response to indicate that the server is up
241
- * and ready to provide services.
242
- */
243
- ResponseType[ResponseType["INITIALIZE"] = 0] = "INITIALIZE";
244
- ResponseType[ResponseType["CALL_SUCCESS"] = 201] = "CALL_SUCCESS";
245
- ResponseType[ResponseType["CALL_FAILURE"] = 202] = "CALL_FAILURE";
246
- ResponseType[ResponseType["SUBSCRIBE_NEXT"] = 300] = "SUBSCRIBE_NEXT";
247
- ResponseType[ResponseType["SUBSCRIBE_ERROR"] = 301] = "SUBSCRIBE_ERROR";
248
- ResponseType[ResponseType["SUBSCRIBE_COMPLETE"] = 302] = "SUBSCRIBE_COMPLETE";
249
- return ResponseType;
250
- }(ResponseType || {});
251
218
  /**
252
219
  * This method provides implementation for `IChannel` and is responsible for
253
220
  * transforming a local calling to a RPC calling.
@@ -259,7 +226,7 @@ var ChannelClient = class extends RxDisposable {
259
226
  _defineProperty(this, "_initialized", new BehaviorSubject(false));
260
227
  _defineProperty(this, "_lastRequestCounter", 0);
261
228
  _defineProperty(this, "_pendingRequests", /* @__PURE__ */ new Map());
262
- this._protocol.send({ type: RequestType.REQUEST_INITIALIZATION });
229
+ this._protocol.send({ type: 50 });
263
230
  this._protocol.onMessage.pipe(takeUntil(this.dispose$)).subscribe((message) => this._onMessage(message));
264
231
  }
265
232
  dispose() {
@@ -288,7 +255,7 @@ var ChannelClient = class extends RxDisposable {
288
255
  const sequence = ++this._lastRequestCounter;
289
256
  const request = {
290
257
  seq: sequence,
291
- type: RequestType.CALL,
258
+ type: 100,
292
259
  channelName,
293
260
  method,
294
261
  args
@@ -297,11 +264,11 @@ var ChannelClient = class extends RxDisposable {
297
264
  return new Promise((resolve, reject) => {
298
265
  this._pendingRequests.set(sequence, { handle(response) {
299
266
  switch (response.type) {
300
- case ResponseType.CALL_SUCCESS:
267
+ case 201:
301
268
  pendingRequests.delete(sequence);
302
269
  resolve(response.data);
303
270
  break;
304
- case ResponseType.CALL_FAILURE:
271
+ case 202:
305
272
  pendingRequests.delete(sequence);
306
273
  reject(response.data);
307
274
  break;
@@ -316,23 +283,22 @@ var ChannelClient = class extends RxDisposable {
316
283
  let sequence = -1;
317
284
  const doSubscribe = () => {
318
285
  sequence = ++this._lastRequestCounter;
319
- const type = RequestType.SUBSCRIBE;
320
286
  const request = {
321
287
  seq: sequence,
322
- type,
288
+ type: 101,
323
289
  channelName,
324
290
  method,
325
291
  args
326
292
  };
327
293
  this._pendingRequests.set(sequence, { handle(response) {
328
294
  switch (response.type) {
329
- case ResponseType.SUBSCRIBE_NEXT:
295
+ case 300:
330
296
  subscriber.next(response.data);
331
297
  break;
332
- case ResponseType.SUBSCRIBE_ERROR:
298
+ case 301:
333
299
  subscriber.error(response.data);
334
300
  break;
335
- case ResponseType.SUBSCRIBE_COMPLETE:
301
+ case 302:
336
302
  subscriber.complete();
337
303
  break;
338
304
  default: throw new Error("[ChannelClient]: unknown response type!");
@@ -345,7 +311,7 @@ var ChannelClient = class extends RxDisposable {
345
311
  return () => {
346
312
  if (sequence === -1) return;
347
313
  const cancelSubscriptionRequest = {
348
- type: RequestType.UNSUBSCRIBE,
314
+ type: 102,
349
315
  seq: sequence,
350
316
  channelName,
351
317
  method
@@ -360,18 +326,18 @@ var ChannelClient = class extends RxDisposable {
360
326
  _onMessage(response) {
361
327
  const { type: responseType, seq } = response;
362
328
  switch (responseType) {
363
- case ResponseType.INITIALIZE:
329
+ case 0:
364
330
  this._initialized.next(true);
365
331
  break;
366
- case ResponseType.CALL_SUCCESS:
367
- case ResponseType.CALL_FAILURE:
368
- case ResponseType.SUBSCRIBE_NEXT:
369
- case ResponseType.SUBSCRIBE_COMPLETE:
370
- case ResponseType.SUBSCRIBE_ERROR: {
332
+ case 201:
333
+ case 202:
334
+ case 300:
335
+ case 302:
336
+ case 301: {
371
337
  var _pendingRequests$get;
372
338
  const { _pendingRequests } = this;
373
339
  (_pendingRequests$get = _pendingRequests.get(seq)) === null || _pendingRequests$get === void 0 || _pendingRequests$get.handle(response);
374
- responseType !== ResponseType.SUBSCRIBE_NEXT && _pendingRequests.delete(seq);
340
+ responseType !== 300 && _pendingRequests.delete(seq);
375
341
  break;
376
342
  }
377
343
  }
@@ -396,16 +362,16 @@ var ChannelServer = class extends RxDisposable {
396
362
  }
397
363
  _onRequest(request) {
398
364
  switch (request.type) {
399
- case RequestType.REQUEST_INITIALIZATION:
365
+ case 50:
400
366
  this._sendInitialize();
401
367
  break;
402
- case RequestType.CALL:
368
+ case 100:
403
369
  this._onMethodCall(request);
404
370
  break;
405
- case RequestType.SUBSCRIBE:
371
+ case 101:
406
372
  this._onSubscribe(request);
407
373
  break;
408
- case RequestType.UNSUBSCRIBE:
374
+ case 102:
409
375
  this._onUnsubscribe(request);
410
376
  break;
411
377
  default: break;
@@ -414,7 +380,7 @@ var ChannelServer = class extends RxDisposable {
414
380
  _sendInitialize() {
415
381
  this._sendResponse({
416
382
  seq: -1,
417
- type: ResponseType.INITIALIZE
383
+ type: 0
418
384
  });
419
385
  }
420
386
  _onMethodCall(request) {
@@ -430,18 +396,18 @@ var ChannelServer = class extends RxDisposable {
430
396
  promise.then((data) => {
431
397
  this._sendResponse({
432
398
  seq: request.seq,
433
- type: ResponseType.CALL_SUCCESS,
399
+ type: 201,
434
400
  data
435
401
  });
436
402
  }).catch((err) => {
437
403
  if (err instanceof Error) this._sendResponse({
438
404
  seq: request.seq,
439
- type: ResponseType.CALL_FAILURE,
405
+ type: 202,
440
406
  data: err.message
441
407
  });
442
408
  else this._sendResponse({
443
409
  seq: request.seq,
444
- type: ResponseType.CALL_FAILURE,
410
+ type: 202,
445
411
  data: String(err)
446
412
  });
447
413
  });
@@ -455,25 +421,25 @@ var ChannelServer = class extends RxDisposable {
455
421
  next: (data) => {
456
422
  this._sendResponse({
457
423
  seq,
458
- type: ResponseType.SUBSCRIBE_NEXT,
424
+ type: 300,
459
425
  data
460
426
  });
461
427
  },
462
428
  error: (err) => {
463
429
  this._sendResponse({
464
430
  seq,
465
- type: ResponseType.SUBSCRIBE_ERROR,
431
+ type: 301,
466
432
  data: err.message
467
433
  });
468
434
  this._sendResponse({
469
435
  seq,
470
- type: ResponseType.SUBSCRIBE_COMPLETE
436
+ type: 302
471
437
  });
472
438
  },
473
439
  complete: () => {
474
440
  this._sendResponse({
475
441
  seq,
476
- type: ResponseType.SUBSCRIBE_COMPLETE
442
+ type: 302
477
443
  });
478
444
  }
479
445
  });
@@ -481,12 +447,12 @@ var ChannelServer = class extends RxDisposable {
481
447
  } catch (err) {
482
448
  if (err instanceof Error) this._sendResponse({
483
449
  seq: request.seq,
484
- type: ResponseType.SUBSCRIBE_ERROR,
450
+ type: 301,
485
451
  data: err.message
486
452
  });
487
453
  else this._sendResponse({
488
454
  seq: request.seq,
489
- type: ResponseType.SUBSCRIBE_ERROR,
455
+ type: 301,
490
456
  data: String(err)
491
457
  });
492
458
  }
@@ -623,7 +589,7 @@ DataSyncReplicaController = __decorate([
623
589
  //#endregion
624
590
  //#region package.json
625
591
  var name = "@univerjs/rpc";
626
- var version = "0.21.1";
592
+ var version = "0.22.0";
627
593
 
628
594
  //#endregion
629
595
  //#region src/services/rpc/implementations/web-worker-rpc.service.ts
package/lib/index.js CHANGED
@@ -26,7 +26,7 @@ const configSymbolWorkerThread = Symbol(PLUGIN_CONFIG_KEY_WORKER_THREAD);
26
26
  const defaultPluginWorkerThreadConfig = {};
27
27
 
28
28
  //#endregion
29
- //#region \0@oxc-project+runtime@0.124.0/helpers/decorateParam.js
29
+ //#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
30
30
  function __decorateParam(paramIndex, decorator) {
31
31
  return function(target, key) {
32
32
  decorator(target, key, paramIndex);
@@ -34,7 +34,7 @@ function __decorateParam(paramIndex, decorator) {
34
34
  }
35
35
 
36
36
  //#endregion
37
- //#region \0@oxc-project+runtime@0.124.0/helpers/decorate.js
37
+ //#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
38
38
  function __decorate(decorators, target, key, desc) {
39
39
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40
40
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -121,7 +121,7 @@ WebWorkerRemoteInstanceService = __decorate([
121
121
  ], WebWorkerRemoteInstanceService);
122
122
 
123
123
  //#endregion
124
- //#region \0@oxc-project+runtime@0.124.0/helpers/typeof.js
124
+ //#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
125
125
  function _typeof(o) {
126
126
  "@babel/helpers - typeof";
127
127
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -132,7 +132,7 @@ function _typeof(o) {
132
132
  }
133
133
 
134
134
  //#endregion
135
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPrimitive.js
135
+ //#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
136
136
  function toPrimitive(t, r) {
137
137
  if ("object" != _typeof(t) || !t) return t;
138
138
  var e = t[Symbol.toPrimitive];
@@ -145,14 +145,14 @@ function toPrimitive(t, r) {
145
145
  }
146
146
 
147
147
  //#endregion
148
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPropertyKey.js
148
+ //#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
149
149
  function toPropertyKey(t) {
150
150
  var i = toPrimitive(t, "string");
151
151
  return "symbol" == _typeof(i) ? i : i + "";
152
152
  }
153
153
 
154
154
  //#endregion
155
- //#region \0@oxc-project+runtime@0.124.0/helpers/defineProperty.js
155
+ //#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
156
156
  function _defineProperty(e, r, t) {
157
157
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
158
158
  value: t,
@@ -215,39 +215,6 @@ function toModule(channel) {
215
215
  function propertyIsEventSource(name) {
216
216
  return name.endsWith("$");
217
217
  }
218
- var RequestType = /* @__PURE__ */ function(RequestType) {
219
- /**
220
- * In Univer, we cannot make sure that when IPCServer constructs, the process (or thread)
221
- * where the corresponding IPCClient residents has bootstrapped and been ready to recieve messages.
222
- * This may result in the IPCClient hanging there, waiting for the `INITIALIZE` message that it has
223
- * already missed. So the client should send a REQUEST_INITIALIZATION in case of that.
224
- *
225
- * Later, we may want a more sophisticated RPC system where the server can serve more than
226
- * one clients, and this event may be removed.
227
- */
228
- RequestType[RequestType["REQUEST_INITIALIZATION"] = 50] = "REQUEST_INITIALIZATION";
229
- /** A simple remote calling wrapper in a Promise. */
230
- RequestType[RequestType["CALL"] = 100] = "CALL";
231
- /** Subscribe to a remote Observable. */
232
- RequestType[RequestType["SUBSCRIBE"] = 101] = "SUBSCRIBE";
233
- /** Cancel subscription to that remove Observable. */
234
- RequestType[RequestType["UNSUBSCRIBE"] = 102] = "UNSUBSCRIBE";
235
- return RequestType;
236
- }(RequestType || {});
237
- var ResponseType = /* @__PURE__ */ function(ResponseType) {
238
- /**
239
- * When underlying protocol is established. The server should send the
240
- * client an `INITIALIZE` response to indicate that the server is up
241
- * and ready to provide services.
242
- */
243
- ResponseType[ResponseType["INITIALIZE"] = 0] = "INITIALIZE";
244
- ResponseType[ResponseType["CALL_SUCCESS"] = 201] = "CALL_SUCCESS";
245
- ResponseType[ResponseType["CALL_FAILURE"] = 202] = "CALL_FAILURE";
246
- ResponseType[ResponseType["SUBSCRIBE_NEXT"] = 300] = "SUBSCRIBE_NEXT";
247
- ResponseType[ResponseType["SUBSCRIBE_ERROR"] = 301] = "SUBSCRIBE_ERROR";
248
- ResponseType[ResponseType["SUBSCRIBE_COMPLETE"] = 302] = "SUBSCRIBE_COMPLETE";
249
- return ResponseType;
250
- }(ResponseType || {});
251
218
  /**
252
219
  * This method provides implementation for `IChannel` and is responsible for
253
220
  * transforming a local calling to a RPC calling.
@@ -259,7 +226,7 @@ var ChannelClient = class extends RxDisposable {
259
226
  _defineProperty(this, "_initialized", new BehaviorSubject(false));
260
227
  _defineProperty(this, "_lastRequestCounter", 0);
261
228
  _defineProperty(this, "_pendingRequests", /* @__PURE__ */ new Map());
262
- this._protocol.send({ type: RequestType.REQUEST_INITIALIZATION });
229
+ this._protocol.send({ type: 50 });
263
230
  this._protocol.onMessage.pipe(takeUntil(this.dispose$)).subscribe((message) => this._onMessage(message));
264
231
  }
265
232
  dispose() {
@@ -288,7 +255,7 @@ var ChannelClient = class extends RxDisposable {
288
255
  const sequence = ++this._lastRequestCounter;
289
256
  const request = {
290
257
  seq: sequence,
291
- type: RequestType.CALL,
258
+ type: 100,
292
259
  channelName,
293
260
  method,
294
261
  args
@@ -297,11 +264,11 @@ var ChannelClient = class extends RxDisposable {
297
264
  return new Promise((resolve, reject) => {
298
265
  this._pendingRequests.set(sequence, { handle(response) {
299
266
  switch (response.type) {
300
- case ResponseType.CALL_SUCCESS:
267
+ case 201:
301
268
  pendingRequests.delete(sequence);
302
269
  resolve(response.data);
303
270
  break;
304
- case ResponseType.CALL_FAILURE:
271
+ case 202:
305
272
  pendingRequests.delete(sequence);
306
273
  reject(response.data);
307
274
  break;
@@ -316,23 +283,22 @@ var ChannelClient = class extends RxDisposable {
316
283
  let sequence = -1;
317
284
  const doSubscribe = () => {
318
285
  sequence = ++this._lastRequestCounter;
319
- const type = RequestType.SUBSCRIBE;
320
286
  const request = {
321
287
  seq: sequence,
322
- type,
288
+ type: 101,
323
289
  channelName,
324
290
  method,
325
291
  args
326
292
  };
327
293
  this._pendingRequests.set(sequence, { handle(response) {
328
294
  switch (response.type) {
329
- case ResponseType.SUBSCRIBE_NEXT:
295
+ case 300:
330
296
  subscriber.next(response.data);
331
297
  break;
332
- case ResponseType.SUBSCRIBE_ERROR:
298
+ case 301:
333
299
  subscriber.error(response.data);
334
300
  break;
335
- case ResponseType.SUBSCRIBE_COMPLETE:
301
+ case 302:
336
302
  subscriber.complete();
337
303
  break;
338
304
  default: throw new Error("[ChannelClient]: unknown response type!");
@@ -345,7 +311,7 @@ var ChannelClient = class extends RxDisposable {
345
311
  return () => {
346
312
  if (sequence === -1) return;
347
313
  const cancelSubscriptionRequest = {
348
- type: RequestType.UNSUBSCRIBE,
314
+ type: 102,
349
315
  seq: sequence,
350
316
  channelName,
351
317
  method
@@ -360,18 +326,18 @@ var ChannelClient = class extends RxDisposable {
360
326
  _onMessage(response) {
361
327
  const { type: responseType, seq } = response;
362
328
  switch (responseType) {
363
- case ResponseType.INITIALIZE:
329
+ case 0:
364
330
  this._initialized.next(true);
365
331
  break;
366
- case ResponseType.CALL_SUCCESS:
367
- case ResponseType.CALL_FAILURE:
368
- case ResponseType.SUBSCRIBE_NEXT:
369
- case ResponseType.SUBSCRIBE_COMPLETE:
370
- case ResponseType.SUBSCRIBE_ERROR: {
332
+ case 201:
333
+ case 202:
334
+ case 300:
335
+ case 302:
336
+ case 301: {
371
337
  var _pendingRequests$get;
372
338
  const { _pendingRequests } = this;
373
339
  (_pendingRequests$get = _pendingRequests.get(seq)) === null || _pendingRequests$get === void 0 || _pendingRequests$get.handle(response);
374
- responseType !== ResponseType.SUBSCRIBE_NEXT && _pendingRequests.delete(seq);
340
+ responseType !== 300 && _pendingRequests.delete(seq);
375
341
  break;
376
342
  }
377
343
  }
@@ -396,16 +362,16 @@ var ChannelServer = class extends RxDisposable {
396
362
  }
397
363
  _onRequest(request) {
398
364
  switch (request.type) {
399
- case RequestType.REQUEST_INITIALIZATION:
365
+ case 50:
400
366
  this._sendInitialize();
401
367
  break;
402
- case RequestType.CALL:
368
+ case 100:
403
369
  this._onMethodCall(request);
404
370
  break;
405
- case RequestType.SUBSCRIBE:
371
+ case 101:
406
372
  this._onSubscribe(request);
407
373
  break;
408
- case RequestType.UNSUBSCRIBE:
374
+ case 102:
409
375
  this._onUnsubscribe(request);
410
376
  break;
411
377
  default: break;
@@ -414,7 +380,7 @@ var ChannelServer = class extends RxDisposable {
414
380
  _sendInitialize() {
415
381
  this._sendResponse({
416
382
  seq: -1,
417
- type: ResponseType.INITIALIZE
383
+ type: 0
418
384
  });
419
385
  }
420
386
  _onMethodCall(request) {
@@ -430,18 +396,18 @@ var ChannelServer = class extends RxDisposable {
430
396
  promise.then((data) => {
431
397
  this._sendResponse({
432
398
  seq: request.seq,
433
- type: ResponseType.CALL_SUCCESS,
399
+ type: 201,
434
400
  data
435
401
  });
436
402
  }).catch((err) => {
437
403
  if (err instanceof Error) this._sendResponse({
438
404
  seq: request.seq,
439
- type: ResponseType.CALL_FAILURE,
405
+ type: 202,
440
406
  data: err.message
441
407
  });
442
408
  else this._sendResponse({
443
409
  seq: request.seq,
444
- type: ResponseType.CALL_FAILURE,
410
+ type: 202,
445
411
  data: String(err)
446
412
  });
447
413
  });
@@ -455,25 +421,25 @@ var ChannelServer = class extends RxDisposable {
455
421
  next: (data) => {
456
422
  this._sendResponse({
457
423
  seq,
458
- type: ResponseType.SUBSCRIBE_NEXT,
424
+ type: 300,
459
425
  data
460
426
  });
461
427
  },
462
428
  error: (err) => {
463
429
  this._sendResponse({
464
430
  seq,
465
- type: ResponseType.SUBSCRIBE_ERROR,
431
+ type: 301,
466
432
  data: err.message
467
433
  });
468
434
  this._sendResponse({
469
435
  seq,
470
- type: ResponseType.SUBSCRIBE_COMPLETE
436
+ type: 302
471
437
  });
472
438
  },
473
439
  complete: () => {
474
440
  this._sendResponse({
475
441
  seq,
476
- type: ResponseType.SUBSCRIBE_COMPLETE
442
+ type: 302
477
443
  });
478
444
  }
479
445
  });
@@ -481,12 +447,12 @@ var ChannelServer = class extends RxDisposable {
481
447
  } catch (err) {
482
448
  if (err instanceof Error) this._sendResponse({
483
449
  seq: request.seq,
484
- type: ResponseType.SUBSCRIBE_ERROR,
450
+ type: 301,
485
451
  data: err.message
486
452
  });
487
453
  else this._sendResponse({
488
454
  seq: request.seq,
489
- type: ResponseType.SUBSCRIBE_ERROR,
455
+ type: 301,
490
456
  data: String(err)
491
457
  });
492
458
  }
@@ -623,7 +589,7 @@ DataSyncReplicaController = __decorate([
623
589
  //#endregion
624
590
  //#region package.json
625
591
  var name = "@univerjs/rpc";
626
- var version = "0.21.1";
592
+ var version = "0.22.0";
627
593
 
628
594
  //#endregion
629
595
  //#region src/services/rpc/implementations/web-worker-rpc.service.ts
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@univerjs/core`),require(`rxjs/operators`),require(`rxjs`)):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`rxjs/operators`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverRpc={},e.UniverCore,e.rxjs.operators,e.rxjs))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i=`rpc.main-thread.config`;Symbol(i);let a={},o=`rpc.worker-thread.config`;Symbol(o);let s={};function c(e,t){return function(n,r){t(n,r,e)}}function l(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 u=`rpc.remote-sync.service`,d=(0,t.createIdentifier)(u),f=class{constructor(e){this._commandService=e}async syncMutation(e,t){let{fromCollab:n,...r}=t||{};return this._commandService.syncExecuteCommand(e.mutationInfo.id,e.mutationInfo.params,{...r,onlyLocal:!0,fromSync:!0})}};f=l([c(0,t.ICommandService)],f);let p=`univer.remote-instance-service`,m=(0,t.createIdentifier)(p),h=class{constructor(e,t,n){this._univerInstanceService=e,this._commandService=t,this._logService=n}whenReady(){return Promise.resolve(!0)}async syncMutation(e,t){return this._applyMutation(e.mutationInfo,t)}async createInstance(e){this._logService.debug(`[WebWorkerRemoteInstanceService]: Creating instance with id ${e.unitID}`);let{type:n,snapshot:r}=e;try{switch(n){case t.UniverInstanceType.UNIVER_SHEET:return this._univerInstanceService.createUnit(t.UniverInstanceType.UNIVER_SHEET,r),!0;default:throw Error(`[WebWorkerRemoteInstanceService]: cannot create replica for document type: ${n}.`)}}catch(e){throw e instanceof Error?e:TypeError(`${e}`)}}async disposeInstance(e){return this._logService.debug(`[WebWorkerRemoteInstanceService]: Disposing instance with id ${e.unitID}`),this._univerInstanceService.disposeUnit(e.unitID)}_applyMutation(e,t){let{id:n,params:r}=e,{fromCollab:i,...a}=t||{};return this._commandService.syncExecuteCommand(n,r,{...a,onlyLocal:!0,fromSync:!0})}};h=l([c(0,t.IUniverInstanceService),c(1,t.ICommandService),c(2,t.ILogService)],h);function g(e){"@babel/helpers - typeof";return g=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},g(e)}function _(e,t){if(g(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(g(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function v(e){var t=_(e,`string`);return g(t)==`symbol`?t:t+``}function y(e,t,n){return(t=v(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){let t=e;return new class{call(e,n){let r=t[e];if(typeof r==`function`){let e=n?r.apply(t,n):r.call(t);return e instanceof Promise||(e=Promise.resolve(e)),e}throw Error(`[RPC]: method not found for ${e}!`)}subscribe(e,n){let i=t[e];if(typeof i==`function`){let e=n?i.apply(t,n):i.call(t);return(0,r.isObservable)(e)?e:(0,r.of)(e)}throw Error(`[RPC]: observable method not found for ${e}!`)}}}function x(e){return new Proxy({},{get(t,n){if(n!==`dispose`)return function(...t){return S(n)?e.subscribe(n,t):e.call(n,t)}}})}function S(e){return e.endsWith(`$`)}var C=function(e){return e[e.REQUEST_INITIALIZATION=50]=`REQUEST_INITIALIZATION`,e[e.CALL=100]=`CALL`,e[e.SUBSCRIBE=101]=`SUBSCRIBE`,e[e.UNSUBSCRIBE=102]=`UNSUBSCRIBE`,e}(C||{}),w=function(e){return e[e.INITIALIZE=0]=`INITIALIZE`,e[e.CALL_SUCCESS=201]=`CALL_SUCCESS`,e[e.CALL_FAILURE=202]=`CALL_FAILURE`,e[e.SUBSCRIBE_NEXT=300]=`SUBSCRIBE_NEXT`,e[e.SUBSCRIBE_ERROR=301]=`SUBSCRIBE_ERROR`,e[e.SUBSCRIBE_COMPLETE=302]=`SUBSCRIBE_COMPLETE`,e}(w||{}),T=class extends t.RxDisposable{constructor(e){super(),this._protocol=e,y(this,`_initialized`,new r.BehaviorSubject(!1)),y(this,`_lastRequestCounter`,0),y(this,`_pendingRequests`,new Map),this._protocol.send({type:C.REQUEST_INITIALIZATION}),this._protocol.onMessage.pipe((0,n.takeUntil)(this.dispose$)).subscribe(e=>this._onMessage(e))}dispose(){this._pendingRequests.clear()}getChannel(e){return{call:(t,n)=>this._disposed?Promise.reject(Error(`[ChannelClient]: client is disposed!`)):this._remoteCall(e,t,n),subscribe:(t,n)=>{if(this._disposed)throw Error(`[ChannelClient]: client is disposed!`);return this._remoteSubscribe(e,t,n)}}}_whenReady(){return(0,r.firstValueFrom)(this._initialized.pipe((0,n.filter)(e=>e),(0,n.take)(1)))}_remoteCall(e,t,n){return this._initialized.getValue()?this._doRemoteCall(e,t,n):this._whenReady().then(()=>this._doRemoteCall(e,t,n))}_doRemoteCall(e,t,n){let r=++this._lastRequestCounter,i={seq:r,type:C.CALL,channelName:e,method:t,args:n},a=this._pendingRequests;return new Promise((e,t)=>{this._pendingRequests.set(r,{handle(n){switch(n.type){case w.CALL_SUCCESS:a.delete(r),e(n.data);break;case w.CALL_FAILURE:a.delete(r),t(n.data);break;default:throw Error(`[ChannelClient]: unknown response type!`)}}}),this._sendRequest(i)})}_remoteSubscribe(e,t,n){return new r.Observable(r=>{let i=-1,a=()=>{i=++this._lastRequestCounter;let a=C.SUBSCRIBE,o={seq:i,type:a,channelName:e,method:t,args:n};this._pendingRequests.set(i,{handle(e){switch(e.type){case w.SUBSCRIBE_NEXT:r.next(e.data);break;case w.SUBSCRIBE_ERROR:r.error(e.data);break;case w.SUBSCRIBE_COMPLETE:r.complete();break;default:throw Error(`[ChannelClient]: unknown response type!`)}}}),this._sendRequest(o)};return this._initialized.getValue()?a():this._whenReady().then(a),()=>{if(i===-1)return;let n={type:C.UNSUBSCRIBE,seq:i,channelName:e,method:t};this._sendRequest(n)}})}_sendRequest(e){this._protocol.send(e)}_onMessage(e){let{type:t,seq:n}=e;switch(t){case w.INITIALIZE:this._initialized.next(!0);break;case w.CALL_SUCCESS:case w.CALL_FAILURE:case w.SUBSCRIBE_NEXT:case w.SUBSCRIBE_COMPLETE:case w.SUBSCRIBE_ERROR:{var r;let{_pendingRequests:i}=this;(r=i.get(n))==null||r.handle(e),t!==w.SUBSCRIBE_NEXT&&i.delete(n);break}}}},E=class extends t.RxDisposable{constructor(e){super(),this._protocol=e,y(this,`_channels`,new Map),y(this,`_subscriptions`,new Map),this._protocol.onMessage.pipe((0,n.takeUntil)(this.dispose$)).subscribe(e=>this._onRequest(e)),this._sendInitialize()}dispose(){super.dispose(),this._subscriptions.clear(),this._channels.clear()}registerChannel(e,t){this._channels.set(e,t)}_onRequest(e){switch(e.type){case C.REQUEST_INITIALIZATION:this._sendInitialize();break;case C.CALL:this._onMethodCall(e);break;case C.SUBSCRIBE:this._onSubscribe(e);break;case C.UNSUBSCRIBE:this._onUnsubscribe(e);break;default:break}}_sendInitialize(){this._sendResponse({seq:-1,type:w.INITIALIZE})}_onMethodCall(e){let{channelName:t,method:n,args:r}=e,i=this._channels.get(t),a;try{if(!i)throw Error(`[ChannelServer]: Channel ${t} not found!`);a=r?i.call(n,r):i.call(n)}catch(e){a=Promise.reject(e instanceof Error?e:Error(String(e)))}a.then(t=>{this._sendResponse({seq:e.seq,type:w.CALL_SUCCESS,data:t})}).catch(t=>{t instanceof Error?this._sendResponse({seq:e.seq,type:w.CALL_FAILURE,data:t.message}):this._sendResponse({seq:e.seq,type:w.CALL_FAILURE,data:String(t)})})}_onSubscribe(e){let{channelName:t,seq:n}=e,r=this._channels.get(t);try{if(!r)throw Error(`[ChannelServer]: Channel ${t} not found!`);let i=r.subscribe(e.method,e.args).subscribe({next:e=>{this._sendResponse({seq:n,type:w.SUBSCRIBE_NEXT,data:e})},error:e=>{this._sendResponse({seq:n,type:w.SUBSCRIBE_ERROR,data:e.message}),this._sendResponse({seq:n,type:w.SUBSCRIBE_COMPLETE})},complete:()=>{this._sendResponse({seq:n,type:w.SUBSCRIBE_COMPLETE})}});this._subscriptions.set(e.seq,i)}catch(t){t instanceof Error?this._sendResponse({seq:e.seq,type:w.SUBSCRIBE_ERROR,data:t.message}):this._sendResponse({seq:e.seq,type:w.SUBSCRIBE_ERROR,data:String(t)})}}_onUnsubscribe(e){let t=this._subscriptions.get(e.seq);t&&(t.unsubscribe(),this._subscriptions.delete(e.seq))}_sendResponse(e){this._protocol.send(e)}};let D=(0,t.createIdentifier)(`IRPCChannelService`);var O=class{constructor(e){y(this,`_client`,void 0),y(this,`_server`,void 0),this._client=new T(e),this._server=new E(e)}dispose(){this._client.dispose(),this._server.dispose()}requestChannel(e){return this._client.getChannel(e)}registerChannel(e,t){this._server.registerChannel(e,t)}};let k=class extends t.RxDisposable{constructor(e,t,n,r,i){super(),this._injector=e,this._commandService=t,this._univerInstanceService=n,this._rpcChannelService=r,this._remoteSyncService=i,y(this,`_remoteInstanceService`,void 0),y(this,`_syncingUnits`,new Set),y(this,`_syncingMutations`,new Set),this._initRPCChannels(),this._init()}registerSyncingMutations(e){this._syncingMutations.add(e.id)}syncUnit(e){return this._syncingUnits.add(e),(0,t.toDisposable)(()=>this._syncingUnits.delete(e))}_initRPCChannels(){this._rpcChannelService.registerChannel(u,b(this._remoteSyncService)),this._injector.add([m,{useFactory:()=>x(this._rpcChannelService.requestChannel(p))}]),this._remoteInstanceService=this._injector.get(m)}_init(){this._univerInstanceService.getTypeOfUnitAdded$(t.UniverInstanceType.UNIVER_SHEET).pipe((0,n.takeUntil)(this.dispose$)).subscribe(e=>{let{unit:n}=e;this._syncingUnits.add(n.getUnitId()),this._remoteInstanceService.createInstance({unitID:n.getUnitId(),type:t.UniverInstanceType.UNIVER_SHEET,snapshot:n.getSnapshot()})}),this._univerInstanceService.getTypeOfUnitDisposed$(t.UniverInstanceType.UNIVER_SHEET).pipe((0,n.takeUntil)(this.dispose$)).subscribe(e=>{this._syncingUnits.delete(e.getUnitId()),this._remoteInstanceService.disposeInstance({unitID:e.getUnitId()})}),this.disposeWithMe(this._commandService.onCommandExecuted((e,n)=>{let{type:r,params:i,id:a}=e,o=(i==null?void 0:i.unitId)||``;r===t.CommandType.MUTATION&&(!o||this._syncingUnits.has(o))&&!(n!=null&&n.fromSync)&&this._syncingMutations.has(a)&&this._remoteInstanceService.syncMutation({mutationInfo:e},n)}))}};k=l([c(0,(0,t.Inject)(t.Injector)),c(1,t.ICommandService),c(2,t.IUniverInstanceService),c(3,D),c(4,d)],k);let A=class extends t.Disposable{constructor(e,t,n,r){super(),this._injector=e,this._remoteInstanceService=t,this._commandService=n,this._rpcChannelService=r,y(this,`_remoteSyncService`,void 0),this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(p,b(this._remoteInstanceService)),this._injector.add([d,{useFactory:()=>x(this._rpcChannelService.requestChannel(u))}]),this._remoteSyncService=this._injector.get(d)}_init(){this.disposeWithMe(this._commandService.onCommandExecuted((e,n)=>{e.type===t.CommandType.MUTATION&&!(n!=null&&n.fromSync)&&this._remoteSyncService.syncMutation({mutationInfo:e},n)}))}};A=l([c(0,(0,t.Inject)(t.Injector)),c(1,m),c(2,t.ICommandService),c(3,D)],A);var j=`@univerjs/rpc`,M=`0.21.1`;function N(){return{send(e){postMessage(e)},onMessage:new r.Observable(e=>{let t=t=>{e.next(t.data)};return addEventListener(`message`,t),()=>removeEventListener(`message`,t)}).pipe((0,r.shareReplay)(1))}}function P(e){return{send(t){e.postMessage(t)},onMessage:new r.Observable(t=>{let n=e=>{t.next(e.data)};return e.addEventListener(`message`,n),()=>e.removeEventListener(`message`,n)}).pipe((0,r.shareReplay)(1))}}let F=class extends t.Plugin{constructor(e=a,n,r){super(),this._config=e,this._injector=n,this._configService=r,y(this,`_internalWorker`,null);let{...o}=(0,t.merge)({},a,this._config);this._configService.setConfig(i,o)}dispose(){super.dispose(),this._internalWorker&&(this._internalWorker.terminate(),this._internalWorker=null)}onStarting(){let{workerURL:e}=this._config;if(!e)throw Error(`[UniverRPCMainThreadPlugin]: The workerURL is required for the RPC main thread plugin.`);let t=e instanceof Worker?e:new Worker(e);this._internalWorker=e instanceof Worker?null:t;let n=P(t);[[D,{useFactory:()=>new O(n)}],[k],[d,{useClass:f}]].forEach(e=>this._injector.add(e)),this._injector.get(k)}};y(F,`pluginName`,`UNIVER_RPC_MAIN_THREAD_PLUGIN`),y(F,`packageName`,j),y(F,`version`,M),F=l([c(1,(0,t.Inject)(t.Injector)),c(2,t.IConfigService)],F);let I=class extends t.Plugin{constructor(e=s,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},s,this._config);this._configService.setConfig(o,i)}onStarting(){[[A],[D,{useFactory:()=>new O(N())}],[m,{useClass:h}]].forEach(e=>this._injector.add(e)),this._injector.get(A)}};y(I,`pluginName`,`UNIVER_RPC_WORKER_THREAD_PLUGIN`),y(I,`packageName`,j),y(I,`version`,M),I=l([c(1,(0,t.Inject)(t.Injector)),c(2,t.IConfigService)],I),e.ChannelClient=T,e.ChannelServer=E,e.ChannelService=O,Object.defineProperty(e,`DataSyncPrimaryController`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(e,`DataSyncReplicaController`,{enumerable:!0,get:function(){return A}}),e.IRPCChannelService=D,e.IRemoteInstanceService=m,e.IRemoteSyncService=d,e.PLUGIN_CONFIG_KEY_MAIN_THREAD=i,e.PLUGIN_CONFIG_KEY_WORKER_THREAD=o,e.RemoteInstanceServiceName=p,Object.defineProperty(e,`RemoteSyncPrimaryService`,{enumerable:!0,get:function(){return f}}),e.RemoteSyncServiceName=u,Object.defineProperty(e,`UniverRPCMainThreadPlugin`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(e,`UniverRPCWorkerThreadPlugin`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,`WebWorkerRemoteInstanceService`,{enumerable:!0,get:function(){return h}}),e.fromModule=b,e.toModule=x});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@univerjs/core`),require(`rxjs/operators`),require(`rxjs`)):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`rxjs/operators`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverRpc={},e.UniverCore,e.rxjs.operators,e.rxjs))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i=`rpc.main-thread.config`;Symbol(i);let a={},o=`rpc.worker-thread.config`;Symbol(o);let s={};function c(e,t){return function(n,r){t(n,r,e)}}function l(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 u=`rpc.remote-sync.service`,d=(0,t.createIdentifier)(u),f=class{constructor(e){this._commandService=e}async syncMutation(e,t){let{fromCollab:n,...r}=t||{};return this._commandService.syncExecuteCommand(e.mutationInfo.id,e.mutationInfo.params,{...r,onlyLocal:!0,fromSync:!0})}};f=l([c(0,t.ICommandService)],f);let p=`univer.remote-instance-service`,m=(0,t.createIdentifier)(p),h=class{constructor(e,t,n){this._univerInstanceService=e,this._commandService=t,this._logService=n}whenReady(){return Promise.resolve(!0)}async syncMutation(e,t){return this._applyMutation(e.mutationInfo,t)}async createInstance(e){this._logService.debug(`[WebWorkerRemoteInstanceService]: Creating instance with id ${e.unitID}`);let{type:n,snapshot:r}=e;try{switch(n){case t.UniverInstanceType.UNIVER_SHEET:return this._univerInstanceService.createUnit(t.UniverInstanceType.UNIVER_SHEET,r),!0;default:throw Error(`[WebWorkerRemoteInstanceService]: cannot create replica for document type: ${n}.`)}}catch(e){throw e instanceof Error?e:TypeError(`${e}`)}}async disposeInstance(e){return this._logService.debug(`[WebWorkerRemoteInstanceService]: Disposing instance with id ${e.unitID}`),this._univerInstanceService.disposeUnit(e.unitID)}_applyMutation(e,t){let{id:n,params:r}=e,{fromCollab:i,...a}=t||{};return this._commandService.syncExecuteCommand(n,r,{...a,onlyLocal:!0,fromSync:!0})}};h=l([c(0,t.IUniverInstanceService),c(1,t.ICommandService),c(2,t.ILogService)],h);function g(e){"@babel/helpers - typeof";return g=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},g(e)}function _(e,t){if(g(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(g(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function v(e){var t=_(e,`string`);return g(t)==`symbol`?t:t+``}function y(e,t,n){return(t=v(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){let t=e;return new class{call(e,n){let r=t[e];if(typeof r==`function`){let e=n?r.apply(t,n):r.call(t);return e instanceof Promise||(e=Promise.resolve(e)),e}throw Error(`[RPC]: method not found for ${e}!`)}subscribe(e,n){let i=t[e];if(typeof i==`function`){let e=n?i.apply(t,n):i.call(t);return(0,r.isObservable)(e)?e:(0,r.of)(e)}throw Error(`[RPC]: observable method not found for ${e}!`)}}}function x(e){return new Proxy({},{get(t,n){if(n!==`dispose`)return function(...t){return S(n)?e.subscribe(n,t):e.call(n,t)}}})}function S(e){return e.endsWith(`$`)}var C=class extends t.RxDisposable{constructor(e){super(),this._protocol=e,y(this,`_initialized`,new r.BehaviorSubject(!1)),y(this,`_lastRequestCounter`,0),y(this,`_pendingRequests`,new Map),this._protocol.send({type:50}),this._protocol.onMessage.pipe((0,n.takeUntil)(this.dispose$)).subscribe(e=>this._onMessage(e))}dispose(){this._pendingRequests.clear()}getChannel(e){return{call:(t,n)=>this._disposed?Promise.reject(Error(`[ChannelClient]: client is disposed!`)):this._remoteCall(e,t,n),subscribe:(t,n)=>{if(this._disposed)throw Error(`[ChannelClient]: client is disposed!`);return this._remoteSubscribe(e,t,n)}}}_whenReady(){return(0,r.firstValueFrom)(this._initialized.pipe((0,n.filter)(e=>e),(0,n.take)(1)))}_remoteCall(e,t,n){return this._initialized.getValue()?this._doRemoteCall(e,t,n):this._whenReady().then(()=>this._doRemoteCall(e,t,n))}_doRemoteCall(e,t,n){let r=++this._lastRequestCounter,i={seq:r,type:100,channelName:e,method:t,args:n},a=this._pendingRequests;return new Promise((e,t)=>{this._pendingRequests.set(r,{handle(n){switch(n.type){case 201:a.delete(r),e(n.data);break;case 202:a.delete(r),t(n.data);break;default:throw Error(`[ChannelClient]: unknown response type!`)}}}),this._sendRequest(i)})}_remoteSubscribe(e,t,n){return new r.Observable(r=>{let i=-1,a=()=>{i=++this._lastRequestCounter;let a={seq:i,type:101,channelName:e,method:t,args:n};this._pendingRequests.set(i,{handle(e){switch(e.type){case 300:r.next(e.data);break;case 301:r.error(e.data);break;case 302:r.complete();break;default:throw Error(`[ChannelClient]: unknown response type!`)}}}),this._sendRequest(a)};return this._initialized.getValue()?a():this._whenReady().then(a),()=>{if(i===-1)return;let n={type:102,seq:i,channelName:e,method:t};this._sendRequest(n)}})}_sendRequest(e){this._protocol.send(e)}_onMessage(e){let{type:t,seq:n}=e;switch(t){case 0:this._initialized.next(!0);break;case 201:case 202:case 300:case 302:case 301:{var r;let{_pendingRequests:i}=this;(r=i.get(n))==null||r.handle(e),t!==300&&i.delete(n);break}}}},w=class extends t.RxDisposable{constructor(e){super(),this._protocol=e,y(this,`_channels`,new Map),y(this,`_subscriptions`,new Map),this._protocol.onMessage.pipe((0,n.takeUntil)(this.dispose$)).subscribe(e=>this._onRequest(e)),this._sendInitialize()}dispose(){super.dispose(),this._subscriptions.clear(),this._channels.clear()}registerChannel(e,t){this._channels.set(e,t)}_onRequest(e){switch(e.type){case 50:this._sendInitialize();break;case 100:this._onMethodCall(e);break;case 101:this._onSubscribe(e);break;case 102:this._onUnsubscribe(e);break;default:break}}_sendInitialize(){this._sendResponse({seq:-1,type:0})}_onMethodCall(e){let{channelName:t,method:n,args:r}=e,i=this._channels.get(t),a;try{if(!i)throw Error(`[ChannelServer]: Channel ${t} not found!`);a=r?i.call(n,r):i.call(n)}catch(e){a=Promise.reject(e instanceof Error?e:Error(String(e)))}a.then(t=>{this._sendResponse({seq:e.seq,type:201,data:t})}).catch(t=>{t instanceof Error?this._sendResponse({seq:e.seq,type:202,data:t.message}):this._sendResponse({seq:e.seq,type:202,data:String(t)})})}_onSubscribe(e){let{channelName:t,seq:n}=e,r=this._channels.get(t);try{if(!r)throw Error(`[ChannelServer]: Channel ${t} not found!`);let i=r.subscribe(e.method,e.args).subscribe({next:e=>{this._sendResponse({seq:n,type:300,data:e})},error:e=>{this._sendResponse({seq:n,type:301,data:e.message}),this._sendResponse({seq:n,type:302})},complete:()=>{this._sendResponse({seq:n,type:302})}});this._subscriptions.set(e.seq,i)}catch(t){t instanceof Error?this._sendResponse({seq:e.seq,type:301,data:t.message}):this._sendResponse({seq:e.seq,type:301,data:String(t)})}}_onUnsubscribe(e){let t=this._subscriptions.get(e.seq);t&&(t.unsubscribe(),this._subscriptions.delete(e.seq))}_sendResponse(e){this._protocol.send(e)}};let T=(0,t.createIdentifier)(`IRPCChannelService`);var E=class{constructor(e){y(this,`_client`,void 0),y(this,`_server`,void 0),this._client=new C(e),this._server=new w(e)}dispose(){this._client.dispose(),this._server.dispose()}requestChannel(e){return this._client.getChannel(e)}registerChannel(e,t){this._server.registerChannel(e,t)}};let D=class extends t.RxDisposable{constructor(e,t,n,r,i){super(),this._injector=e,this._commandService=t,this._univerInstanceService=n,this._rpcChannelService=r,this._remoteSyncService=i,y(this,`_remoteInstanceService`,void 0),y(this,`_syncingUnits`,new Set),y(this,`_syncingMutations`,new Set),this._initRPCChannels(),this._init()}registerSyncingMutations(e){this._syncingMutations.add(e.id)}syncUnit(e){return this._syncingUnits.add(e),(0,t.toDisposable)(()=>this._syncingUnits.delete(e))}_initRPCChannels(){this._rpcChannelService.registerChannel(u,b(this._remoteSyncService)),this._injector.add([m,{useFactory:()=>x(this._rpcChannelService.requestChannel(p))}]),this._remoteInstanceService=this._injector.get(m)}_init(){this._univerInstanceService.getTypeOfUnitAdded$(t.UniverInstanceType.UNIVER_SHEET).pipe((0,n.takeUntil)(this.dispose$)).subscribe(e=>{let{unit:n}=e;this._syncingUnits.add(n.getUnitId()),this._remoteInstanceService.createInstance({unitID:n.getUnitId(),type:t.UniverInstanceType.UNIVER_SHEET,snapshot:n.getSnapshot()})}),this._univerInstanceService.getTypeOfUnitDisposed$(t.UniverInstanceType.UNIVER_SHEET).pipe((0,n.takeUntil)(this.dispose$)).subscribe(e=>{this._syncingUnits.delete(e.getUnitId()),this._remoteInstanceService.disposeInstance({unitID:e.getUnitId()})}),this.disposeWithMe(this._commandService.onCommandExecuted((e,n)=>{let{type:r,params:i,id:a}=e,o=(i==null?void 0:i.unitId)||``;r===t.CommandType.MUTATION&&(!o||this._syncingUnits.has(o))&&!(n!=null&&n.fromSync)&&this._syncingMutations.has(a)&&this._remoteInstanceService.syncMutation({mutationInfo:e},n)}))}};D=l([c(0,(0,t.Inject)(t.Injector)),c(1,t.ICommandService),c(2,t.IUniverInstanceService),c(3,T),c(4,d)],D);let O=class extends t.Disposable{constructor(e,t,n,r){super(),this._injector=e,this._remoteInstanceService=t,this._commandService=n,this._rpcChannelService=r,y(this,`_remoteSyncService`,void 0),this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(p,b(this._remoteInstanceService)),this._injector.add([d,{useFactory:()=>x(this._rpcChannelService.requestChannel(u))}]),this._remoteSyncService=this._injector.get(d)}_init(){this.disposeWithMe(this._commandService.onCommandExecuted((e,n)=>{e.type===t.CommandType.MUTATION&&!(n!=null&&n.fromSync)&&this._remoteSyncService.syncMutation({mutationInfo:e},n)}))}};O=l([c(0,(0,t.Inject)(t.Injector)),c(1,m),c(2,t.ICommandService),c(3,T)],O);var k=`@univerjs/rpc`,A=`0.22.0`;function j(){return{send(e){postMessage(e)},onMessage:new r.Observable(e=>{let t=t=>{e.next(t.data)};return addEventListener(`message`,t),()=>removeEventListener(`message`,t)}).pipe((0,r.shareReplay)(1))}}function M(e){return{send(t){e.postMessage(t)},onMessage:new r.Observable(t=>{let n=e=>{t.next(e.data)};return e.addEventListener(`message`,n),()=>e.removeEventListener(`message`,n)}).pipe((0,r.shareReplay)(1))}}let N=class extends t.Plugin{constructor(e=a,n,r){super(),this._config=e,this._injector=n,this._configService=r,y(this,`_internalWorker`,null);let{...o}=(0,t.merge)({},a,this._config);this._configService.setConfig(i,o)}dispose(){super.dispose(),this._internalWorker&&(this._internalWorker.terminate(),this._internalWorker=null)}onStarting(){let{workerURL:e}=this._config;if(!e)throw Error(`[UniverRPCMainThreadPlugin]: The workerURL is required for the RPC main thread plugin.`);let t=e instanceof Worker?e:new Worker(e);this._internalWorker=e instanceof Worker?null:t;let n=M(t);[[T,{useFactory:()=>new E(n)}],[D],[d,{useClass:f}]].forEach(e=>this._injector.add(e)),this._injector.get(D)}};y(N,`pluginName`,`UNIVER_RPC_MAIN_THREAD_PLUGIN`),y(N,`packageName`,k),y(N,`version`,A),N=l([c(1,(0,t.Inject)(t.Injector)),c(2,t.IConfigService)],N);let P=class extends t.Plugin{constructor(e=s,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},s,this._config);this._configService.setConfig(o,i)}onStarting(){[[O],[T,{useFactory:()=>new E(j())}],[m,{useClass:h}]].forEach(e=>this._injector.add(e)),this._injector.get(O)}};y(P,`pluginName`,`UNIVER_RPC_WORKER_THREAD_PLUGIN`),y(P,`packageName`,k),y(P,`version`,A),P=l([c(1,(0,t.Inject)(t.Injector)),c(2,t.IConfigService)],P),e.ChannelClient=C,e.ChannelServer=w,e.ChannelService=E,Object.defineProperty(e,`DataSyncPrimaryController`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,`DataSyncReplicaController`,{enumerable:!0,get:function(){return O}}),e.IRPCChannelService=T,e.IRemoteInstanceService=m,e.IRemoteSyncService=d,e.PLUGIN_CONFIG_KEY_MAIN_THREAD=i,e.PLUGIN_CONFIG_KEY_WORKER_THREAD=o,e.RemoteInstanceServiceName=p,Object.defineProperty(e,`RemoteSyncPrimaryService`,{enumerable:!0,get:function(){return f}}),e.RemoteSyncServiceName=u,Object.defineProperty(e,`UniverRPCMainThreadPlugin`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(e,`UniverRPCWorkerThreadPlugin`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(e,`WebWorkerRemoteInstanceService`,{enumerable:!0,get:function(){return h}}),e.fromModule=b,e.toModule=x});
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@univerjs/rpc",
3
- "version": "0.21.1",
3
+ "version": "0.22.0",
4
4
  "private": false,
5
- "author": "DreamNum <developer@univer.ai>",
5
+ "description": "Browser RPC layer for Univer main-thread and worker communication.",
6
+ "author": "DreamNum Co., Ltd. <developer@univer.ai>",
6
7
  "license": "Apache-2.0",
7
8
  "funding": {
8
9
  "type": "opencollective",
@@ -17,7 +18,11 @@
17
18
  "url": "https://github.com/dream-num/univer/issues"
18
19
  },
19
20
  "keywords": [
20
- "univer"
21
+ "univer",
22
+ "rpc",
23
+ "worker",
24
+ "message-channel",
25
+ "plugin"
21
26
  ],
22
27
  "exports": {
23
28
  ".": {
@@ -47,13 +52,13 @@
47
52
  "rxjs": ">=7.0.0"
48
53
  },
49
54
  "dependencies": {
50
- "@univerjs/core": "0.21.1"
55
+ "@univerjs/core": "0.22.0"
51
56
  },
52
57
  "devDependencies": {
53
58
  "rxjs": "^7.8.2",
54
- "typescript": "^6.0.2",
55
- "vitest": "^4.1.4",
56
- "@univerjs-infra/shared": "0.21.1"
59
+ "typescript": "^6.0.3",
60
+ "vitest": "^4.1.5",
61
+ "@univerjs-infra/shared": "0.22.0"
57
62
  },
58
63
  "scripts": {
59
64
  "test": "vitest run",