@univerjs/rpc-node 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 +34 -7
- package/lib/cjs/index.js +7 -7
- package/lib/es/index.js +7 -7
- package/lib/index.js +7 -7
- package/lib/umd/index.js +1 -1
- package/package.json +15 -9
package/README.md
CHANGED
|
@@ -1,16 +1,43 @@
|
|
|
1
1
|
# @univerjs/rpc-node
|
|
2
2
|
|
|
3
|
-
[](https://npmjs.
|
|
4
|
-
[](https://
|
|
3
|
+
[](https://npmjs.com/package/@univerjs/rpc-node)
|
|
4
|
+
[](https://npmjs.com/package/@univerjs/rpc-node)
|
|
5
|
+
[](https://npmjs.com/package/@univerjs/rpc-node)
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
`@univerjs/rpc-node` provides the Node.js counterpart for Univer RPC scenarios, allowing main-thread and worker-side plugins to communicate outside the browser.
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
## Package Overview
|
|
10
|
+
|
|
11
|
+
| Package | UMD global | CSS | Locales | Facade entry |
|
|
12
|
+
| --- | --- | :---: | :---: | :---: |
|
|
13
|
+
| `@univerjs/rpc-node` | `UniverRpcNode` | No | No | No |
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
pnpm add @univerjs/rpc-node
|
|
19
|
+
# or
|
|
20
|
+
npm install @univerjs/rpc-node
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Keep all `@univerjs/*` packages on the same version.
|
|
9
24
|
|
|
10
25
|
## Usage
|
|
11
26
|
|
|
12
|
-
|
|
27
|
+
```ts
|
|
28
|
+
import { UniverRPCNodeMainPlugin } from '@univerjs/rpc-node';
|
|
13
29
|
|
|
14
|
-
|
|
15
|
-
npm i @univerjs/rpc-node
|
|
30
|
+
univer.registerPlugin(UniverRPCNodeMainPlugin);
|
|
16
31
|
```
|
|
32
|
+
|
|
33
|
+
Exported plugin classes:
|
|
34
|
+
|
|
35
|
+
- `UniverRPCNodeMainPlugin`
|
|
36
|
+
- `UniverRPCNodeWorkerPlugin`
|
|
37
|
+
|
|
38
|
+
## Resources
|
|
39
|
+
|
|
40
|
+
- [Documentation](https://docs.univer.ai)
|
|
41
|
+
- [NPM package](https://npmjs.com/package/@univerjs/rpc-node)
|
|
42
|
+
- [GitHub repository](https://github.com/dream-num/univer)
|
|
43
|
+
|
package/lib/cjs/index.js
CHANGED
|
@@ -35,7 +35,7 @@ let rxjs = require("rxjs");
|
|
|
35
35
|
|
|
36
36
|
//#region package.json
|
|
37
37
|
var name = "@univerjs/rpc-node";
|
|
38
|
-
var version = "0.
|
|
38
|
+
var version = "0.22.0";
|
|
39
39
|
|
|
40
40
|
//#endregion
|
|
41
41
|
//#region src/config/config.ts
|
|
@@ -62,7 +62,7 @@ const configSymbolWorkerThread = Symbol(PLUGIN_CONFIG_KEY_WORKER_THREAD);
|
|
|
62
62
|
const defaultPluginWorkerThreadConfig = {};
|
|
63
63
|
|
|
64
64
|
//#endregion
|
|
65
|
-
//#region \0@oxc-project+runtime@0.
|
|
65
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
|
|
66
66
|
function _typeof(o) {
|
|
67
67
|
"@babel/helpers - typeof";
|
|
68
68
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -73,7 +73,7 @@ function _typeof(o) {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
//#endregion
|
|
76
|
-
//#region \0@oxc-project+runtime@0.
|
|
76
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
|
|
77
77
|
function toPrimitive(t, r) {
|
|
78
78
|
if ("object" != _typeof(t) || !t) return t;
|
|
79
79
|
var e = t[Symbol.toPrimitive];
|
|
@@ -86,14 +86,14 @@ function toPrimitive(t, r) {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
//#endregion
|
|
89
|
-
//#region \0@oxc-project+runtime@0.
|
|
89
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
|
|
90
90
|
function toPropertyKey(t) {
|
|
91
91
|
var i = toPrimitive(t, "string");
|
|
92
92
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
//#endregion
|
|
96
|
-
//#region \0@oxc-project+runtime@0.
|
|
96
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
|
|
97
97
|
function _defineProperty(e, r, t) {
|
|
98
98
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
99
99
|
value: t,
|
|
@@ -104,7 +104,7 @@ function _defineProperty(e, r, t) {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
//#endregion
|
|
107
|
-
//#region \0@oxc-project+runtime@0.
|
|
107
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
|
|
108
108
|
function __decorateParam(paramIndex, decorator) {
|
|
109
109
|
return function(target, key) {
|
|
110
110
|
decorator(target, key, paramIndex);
|
|
@@ -112,7 +112,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
//#endregion
|
|
115
|
-
//#region \0@oxc-project+runtime@0.
|
|
115
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
|
|
116
116
|
function __decorate(decorators, target, key, desc) {
|
|
117
117
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
118
118
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
package/lib/es/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { Observable, shareReplay } from "rxjs";
|
|
|
6
6
|
|
|
7
7
|
//#region package.json
|
|
8
8
|
var name = "@univerjs/rpc-node";
|
|
9
|
-
var version = "0.
|
|
9
|
+
var version = "0.22.0";
|
|
10
10
|
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/config/config.ts
|
|
@@ -33,7 +33,7 @@ const configSymbolWorkerThread = Symbol(PLUGIN_CONFIG_KEY_WORKER_THREAD);
|
|
|
33
33
|
const defaultPluginWorkerThreadConfig = {};
|
|
34
34
|
|
|
35
35
|
//#endregion
|
|
36
|
-
//#region \0@oxc-project+runtime@0.
|
|
36
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
|
|
37
37
|
function _typeof(o) {
|
|
38
38
|
"@babel/helpers - typeof";
|
|
39
39
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -44,7 +44,7 @@ function _typeof(o) {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
//#endregion
|
|
47
|
-
//#region \0@oxc-project+runtime@0.
|
|
47
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
|
|
48
48
|
function toPrimitive(t, r) {
|
|
49
49
|
if ("object" != _typeof(t) || !t) return t;
|
|
50
50
|
var e = t[Symbol.toPrimitive];
|
|
@@ -57,14 +57,14 @@ function toPrimitive(t, r) {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
//#endregion
|
|
60
|
-
//#region \0@oxc-project+runtime@0.
|
|
60
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
|
|
61
61
|
function toPropertyKey(t) {
|
|
62
62
|
var i = toPrimitive(t, "string");
|
|
63
63
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
//#endregion
|
|
67
|
-
//#region \0@oxc-project+runtime@0.
|
|
67
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
|
|
68
68
|
function _defineProperty(e, r, t) {
|
|
69
69
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
70
70
|
value: t,
|
|
@@ -75,7 +75,7 @@ function _defineProperty(e, r, t) {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
//#endregion
|
|
78
|
-
//#region \0@oxc-project+runtime@0.
|
|
78
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
|
|
79
79
|
function __decorateParam(paramIndex, decorator) {
|
|
80
80
|
return function(target, key) {
|
|
81
81
|
decorator(target, key, paramIndex);
|
|
@@ -83,7 +83,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
//#endregion
|
|
86
|
-
//#region \0@oxc-project+runtime@0.
|
|
86
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
|
|
87
87
|
function __decorate(decorators, target, key, desc) {
|
|
88
88
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
89
89
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
package/lib/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { Observable, shareReplay } from "rxjs";
|
|
|
6
6
|
|
|
7
7
|
//#region package.json
|
|
8
8
|
var name = "@univerjs/rpc-node";
|
|
9
|
-
var version = "0.
|
|
9
|
+
var version = "0.22.0";
|
|
10
10
|
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/config/config.ts
|
|
@@ -33,7 +33,7 @@ const configSymbolWorkerThread = Symbol(PLUGIN_CONFIG_KEY_WORKER_THREAD);
|
|
|
33
33
|
const defaultPluginWorkerThreadConfig = {};
|
|
34
34
|
|
|
35
35
|
//#endregion
|
|
36
|
-
//#region \0@oxc-project+runtime@0.
|
|
36
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
|
|
37
37
|
function _typeof(o) {
|
|
38
38
|
"@babel/helpers - typeof";
|
|
39
39
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -44,7 +44,7 @@ function _typeof(o) {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
//#endregion
|
|
47
|
-
//#region \0@oxc-project+runtime@0.
|
|
47
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
|
|
48
48
|
function toPrimitive(t, r) {
|
|
49
49
|
if ("object" != _typeof(t) || !t) return t;
|
|
50
50
|
var e = t[Symbol.toPrimitive];
|
|
@@ -57,14 +57,14 @@ function toPrimitive(t, r) {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
//#endregion
|
|
60
|
-
//#region \0@oxc-project+runtime@0.
|
|
60
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
|
|
61
61
|
function toPropertyKey(t) {
|
|
62
62
|
var i = toPrimitive(t, "string");
|
|
63
63
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
//#endregion
|
|
67
|
-
//#region \0@oxc-project+runtime@0.
|
|
67
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
|
|
68
68
|
function _defineProperty(e, r, t) {
|
|
69
69
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
70
70
|
value: t,
|
|
@@ -75,7 +75,7 @@ function _defineProperty(e, r, t) {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
//#endregion
|
|
78
|
-
//#region \0@oxc-project+runtime@0.
|
|
78
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
|
|
79
79
|
function __decorateParam(paramIndex, decorator) {
|
|
80
80
|
return function(target, key) {
|
|
81
81
|
decorator(target, key, paramIndex);
|
|
@@ -83,7 +83,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
//#endregion
|
|
86
|
-
//#region \0@oxc-project+runtime@0.
|
|
86
|
+
//#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
|
|
87
87
|
function __decorate(decorators, target, key, desc) {
|
|
88
88
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
89
89
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`node:child_process`),require(`node:process`),require(`@univerjs/core`),require(`@univerjs/rpc`),require(`rxjs`)):typeof define==`function`&&define.amd?define([`exports`,`node:child_process`,`node:process`,`@univerjs/core`,`@univerjs/rpc`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverRpcNode={},e[`Node:child_process`],e[`Node:process`],e.UniverCore,e.UniverRpc,e.rxjs))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e};n=((e,t,n)=>(n=e==null?{}:o(u(e)),f(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(n);var p=`@univerjs/rpc-node`,m=`0.
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`node:child_process`),require(`node:process`),require(`@univerjs/core`),require(`@univerjs/rpc`),require(`rxjs`)):typeof define==`function`&&define.amd?define([`exports`,`node:child_process`,`node:process`,`@univerjs/core`,`@univerjs/rpc`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverRpcNode={},e[`Node:child_process`],e[`Node:process`],e.UniverCore,e.UniverRpc,e.rxjs))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e};n=((e,t,n)=>(n=e==null?{}:o(u(e)),f(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(n);var p=`@univerjs/rpc-node`,m=`0.22.0`;let h=`rpc-node.main-thread.config`;Symbol(h);let g={},_=`rpc-node.worker-thread.config`;Symbol(_);let v={};function y(e){"@babel/helpers - typeof";return y=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},y(e)}function b(e,t){if(y(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(y(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function x(e){var t=b(e,`string`);return y(t)==`symbol`?t:t+``}function S(e,t,n){return(t=x(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(e,t){return function(n,r){t(n,r,e)}}function w(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 T=class extends r.Plugin{constructor(e=g,t,n){super(),this._config=e,this._injector=t,this._configService=n,S(this,`_child`,null);let{...i}=(0,r.merge)({},g,this._config);this._configService.setConfig(h,i)}onStarting(){let{workerSrc:e}=this._config;if(!e)throw Error(`[UniverRPCNodeMainPlugin] workerSrc is required for UniverRPCNodeMainPlugin`);let[t,n]=D(this._injector,e);[[i.IRPCChannelService,{useFactory:()=>new i.ChannelService(t)}],[i.DataSyncPrimaryController],[i.IRemoteSyncService,{useClass:i.RemoteSyncPrimaryService}]].forEach(e=>this._injector.add(e)),this._injector.get(i.DataSyncPrimaryController),this._child=n}dispose(){if(super.dispose(),this._child){try{this._child.kill()}catch(e){console.error(`Failed to kill child process:`,e)}this._child=null}}};S(T,`pluginName`,`UNIVER_RPC_NODE_MAIN_PLUGIN`),S(T,`packageName`,p),S(T,`version`,m),T=w([C(1,(0,r.Inject)(r.Injector)),C(2,r.IConfigService)],T);let E=class extends r.Plugin{constructor(e=v,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...i}=(0,r.merge)({},v,this._config);this._configService.setConfig(_,i)}onStarting(){[[i.DataSyncReplicaController],[i.IRPCChannelService,{useFactory:()=>new i.ChannelService(O())}],[i.IRemoteInstanceService,{useClass:i.WebWorkerRemoteInstanceService}]].forEach(e=>this._injector.add(e)),this._injector.get(i.DataSyncReplicaController)}};S(E,`pluginName`,`UNIVER_RPC_NODE_WORKER_PLUGIN`),S(E,`packageName`,p),S(E,`version`,m),E=w([C(1,(0,r.Inject)(r.Injector)),C(2,r.IConfigService)],E);function D(e,n){let i=e.get(r.ILogService),o=(0,t.fork)(n);return o.on(`spawn`,()=>i.log(`Child computing process spawned!`)),o.on(`error`,e=>i.error(e)),[{send(e){o.send(e)},onMessage:new a.Observable(e=>{let t=t=>{e.next(t)};return o.on(`message`,t),()=>o.off(`message`,t)}).pipe((0,a.shareReplay)(1))},o]}function O(){return{send(e){n.default.send(e)},onMessage:new a.Observable(e=>{let t=t=>{e.next(t)};return n.default.on(`message`,t),()=>n.default.off(`message`,t)}).pipe((0,a.shareReplay)(1))}}Object.defineProperty(e,`UniverRPCNodeMainPlugin`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(e,`UniverRPCNodeWorkerPlugin`,{enumerable:!0,get:function(){return E}})});
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/rpc-node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"private": false,
|
|
5
|
-
"description": "",
|
|
6
|
-
"author": "DreamNum <developer@univer.ai>",
|
|
5
|
+
"description": "Node.js RPC plugins for Univer main-thread and worker communication.",
|
|
6
|
+
"author": "DreamNum Co., Ltd. <developer@univer.ai>",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"funding": {
|
|
9
9
|
"type": "opencollective",
|
|
@@ -17,7 +17,13 @@
|
|
|
17
17
|
"bugs": {
|
|
18
18
|
"url": "https://github.com/dream-num/univer/issues"
|
|
19
19
|
},
|
|
20
|
-
"keywords": [
|
|
20
|
+
"keywords": [
|
|
21
|
+
"univer",
|
|
22
|
+
"rpc",
|
|
23
|
+
"nodejs",
|
|
24
|
+
"worker",
|
|
25
|
+
"plugin"
|
|
26
|
+
],
|
|
21
27
|
"exports": {
|
|
22
28
|
".": {
|
|
23
29
|
"import": "./lib/es/index.js",
|
|
@@ -46,14 +52,14 @@
|
|
|
46
52
|
"rxjs": ">=7.0.0"
|
|
47
53
|
},
|
|
48
54
|
"dependencies": {
|
|
49
|
-
"@univerjs/core": "0.
|
|
50
|
-
"@univerjs/rpc": "0.
|
|
55
|
+
"@univerjs/core": "0.22.0",
|
|
56
|
+
"@univerjs/rpc": "0.22.0"
|
|
51
57
|
},
|
|
52
58
|
"devDependencies": {
|
|
53
59
|
"rxjs": "^7.8.2",
|
|
54
|
-
"typescript": "^6.0.
|
|
55
|
-
"vitest": "^4.1.
|
|
56
|
-
"@univerjs-infra/shared": "0.
|
|
60
|
+
"typescript": "^6.0.3",
|
|
61
|
+
"vitest": "^4.1.5",
|
|
62
|
+
"@univerjs-infra/shared": "0.22.0"
|
|
57
63
|
},
|
|
58
64
|
"scripts": {
|
|
59
65
|
"test": "vitest run",
|