@univerjs/rpc 0.1.0-alpha.1

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.
@@ -0,0 +1,15 @@
1
+ import { ICommandService, IUniverInstanceService, RxDisposable } from '@univerjs/core';
2
+ import { IRemoteInstanceService } from '../../services/remote-instance/remote-instance.service';
3
+ /**
4
+ * This controller is responsible for syncing data from the primary thread to
5
+ * the worker thread.
6
+ */
7
+ export declare class DataSyncPrimaryController extends RxDisposable {
8
+ private readonly _unsyncMutations;
9
+ private readonly _univerInstanceService;
10
+ private readonly _remoteInstanceService;
11
+ private readonly _commandService;
12
+ constructor(_unsyncMutations: Set<string>, _univerInstanceService: IUniverInstanceService, _remoteInstanceService: IRemoteInstanceService, _commandService: ICommandService);
13
+ private _init;
14
+ }
15
+ //# sourceMappingURL=data-sync-primary.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-sync-primary.controller.d.ts","sourceRoot":"","sources":["../../../../src/controllers/data-sync/data-sync-primary.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,eAAe,EACf,sBAAsB,EAGtB,YAAY,EACf,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAEhG;;;GAGG;AACH,qBACa,yBAA0B,SAAQ,YAAY;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACT,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAHhC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EACL,sBAAsB,EAAE,sBAAsB,EAC9C,sBAAsB,EAAE,sBAAsB,EACrD,eAAe,EAAE,eAAe;IAOtE,OAAO,CAAC,KAAK;CAgChB"}
@@ -0,0 +1,14 @@
1
+ import { Disposable, ICommandService, IUniverInstanceService } from '@univerjs/core';
2
+ import { IRemoteSyncService } from '../../services/remote-instance/remote-instance.service';
3
+ /**
4
+ * This controller is responsible for syncing data from the worker thread to
5
+ * the primary thread.
6
+ */
7
+ export declare class DataSyncReplicaController extends Disposable {
8
+ private readonly _commandService;
9
+ private readonly _remoteInstanceService;
10
+ private readonly _univerInstanceService;
11
+ constructor(_commandService: ICommandService, _remoteInstanceService: IRemoteSyncService, _univerInstanceService: IUniverInstanceService);
12
+ private _init;
13
+ }
14
+ //# sourceMappingURL=data-sync-replica.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-sync-replica.controller.d.ts","sourceRoot":"","sources":["../../../../src/controllers/data-sync/data-sync-replica.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,UAAU,EACV,eAAe,EACf,sBAAsB,EAGzB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAE5F;;;GAGG;AACH,qBACa,yBAA0B,SAAQ,UAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAC7B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACnC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;gBAF7B,eAAe,EAAE,eAAe,EAC7B,sBAAsB,EAAE,kBAAkB,EACtC,sBAAsB,EAAE,sBAAsB;IAO3F,OAAO,CAAC,KAAK;CAYhB"}
@@ -0,0 +1,2 @@
1
+ export { type IUniverRPCMainThreadPluginConfig, type IUniverRPCWorkerThreadPluginConfig, UniverRPCMainThreadPlugin, UniverRPCWorkerThreadPlugin, } from './plugin';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,gCAAgC,EACrC,KAAK,kCAAkC,EACvC,yBAAyB,EACzB,2BAA2B,GAC9B,MAAM,UAAU,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Plugin, PluginType } from '@univerjs/core';
2
+ import { Injector } from '@wendellhu/redi';
3
+ export interface IUniverRPCMainThreadPluginConfig {
4
+ workerURL: string | URL;
5
+ unsyncMutations?: Set<string>;
6
+ }
7
+ /**
8
+ * This plugin is used to register the RPC services on the main thread. It
9
+ * is also responsible for booting up the Web Worker instance of Univer.
10
+ */
11
+ export declare class UniverRPCMainThreadPlugin extends Plugin {
12
+ private readonly _config;
13
+ protected readonly _injector: Injector;
14
+ static type: PluginType;
15
+ constructor(_config: IUniverRPCMainThreadPluginConfig, _injector: Injector);
16
+ onStarting(injector: Injector): Promise<void>;
17
+ }
18
+ export interface IUniverRPCWorkerThreadPluginConfig {
19
+ }
20
+ /**
21
+ * This plugin is used to register the RPC services on the worker thread.
22
+ */
23
+ export declare class UniverRPCWorkerThreadPlugin extends Plugin {
24
+ private readonly _config;
25
+ protected readonly _injector: Injector;
26
+ static type: PluginType;
27
+ constructor(_config: UniverRPCWorkerThreadPlugin, _injector: Injector);
28
+ onStarting(injector: Injector): void;
29
+ }
30
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAA4B,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAkBrE,MAAM,WAAW,gCAAgC;IAC7C,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;IACxB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACjC;AAOD;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,MAAM;IAI7C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACN,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ;IAJ5D,OAAgB,IAAI,aAAqB;gBAGpB,OAAO,EAAE,gCAAgC,EACrB,SAAS,EAAE,QAAQ;IAK7C,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAwB/D;AAED,MAAM,WAAW,kCAAkC;CAAG;AAEtD;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,MAAM;IAI/C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACN,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ;IAJ5D,OAAgB,IAAI,aAAqB;gBAGpB,OAAO,EAAE,2BAA2B,EAChB,SAAS,EAAE,QAAQ;IAKnD,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAiBhD"}
@@ -0,0 +1,12 @@
1
+ import type { IMessageProtocol } from '../rpc/rpc.service';
2
+ /**
3
+ * Generate an `IMessageProtocol` on the web worker.
4
+ */
5
+ export declare function createWebWorkerMessagePortOnWorker(): IMessageProtocol;
6
+ /**
7
+ * Generate an `IMessageProtocol` on the main thread side.
8
+ * @param worker The Web Worker object
9
+ * @returns
10
+ */
11
+ export declare function createWebWorkerMessagePortOnMain(worker: Worker): IMessageProtocol;
12
+ //# sourceMappingURL=web-worker-rpc.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-worker-rpc.service.d.ts","sourceRoot":"","sources":["../../../../src/services/implementations/web-worker-rpc.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,wBAAgB,kCAAkC,IAAI,gBAAgB,CAarE;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAajF"}
@@ -0,0 +1,63 @@
1
+ import type { IExecutionOptions, IMutationInfo, IWorkbookData } from '@univerjs/core';
2
+ import { DocumentType, ICommandService, IUniverInstanceService } from '@univerjs/core';
3
+ export interface IRemoteSyncMutationOptions extends IExecutionOptions {
4
+ /** If this mutation is executed after it was sent from the peer univer instance. */
5
+ fromSync?: boolean;
6
+ }
7
+ export declare const RemoteSyncServiceName = "univer.remote-sync-service";
8
+ /**
9
+ * This service is provided by the primary Univer.
10
+ *
11
+ * Replica Univer could call this service to update mutations back to the primary Univer.
12
+ */
13
+ export declare const IRemoteSyncService: import("@wendellhu/redi").IdentifierDecorator<IRemoteSyncService>;
14
+ export interface IRemoteSyncService {
15
+ syncMutation(params: {
16
+ mutationInfo: IMutationInfo;
17
+ }): Promise<boolean>;
18
+ }
19
+ export declare class RemoteSyncPrimaryService implements IRemoteSyncService {
20
+ private readonly _commandService;
21
+ constructor(_commandService: ICommandService);
22
+ syncMutation(params: {
23
+ mutationInfo: IMutationInfo;
24
+ }): Promise<boolean>;
25
+ }
26
+ export declare const RemoteInstanceServiceName = "univer.remote-instance-service";
27
+ /**
28
+ * This service is provided by the replica Univer.
29
+ *
30
+ * Primary univer could call this service to init and dispose univer business instances
31
+ * and sync mutations to replica univer.
32
+ */
33
+ export declare const IRemoteInstanceService: import("@wendellhu/redi").IdentifierDecorator<IRemoteInstanceService>;
34
+ export interface IRemoteInstanceService {
35
+ createInstance(params: {
36
+ unitID: string;
37
+ type: DocumentType;
38
+ snapshot: IWorkbookData;
39
+ }): Promise<boolean>;
40
+ disposeInstance(params: {
41
+ unitID: string;
42
+ }): Promise<boolean>;
43
+ syncMutation(params: {
44
+ mutationInfo: IMutationInfo;
45
+ }): Promise<boolean>;
46
+ }
47
+ export declare class RemoteInstanceReplicaService implements IRemoteInstanceService {
48
+ private readonly _univerInstanceService;
49
+ private readonly _commandService;
50
+ constructor(_univerInstanceService: IUniverInstanceService, _commandService: ICommandService);
51
+ syncMutation(params: {
52
+ mutationInfo: IMutationInfo;
53
+ }): Promise<boolean>;
54
+ createInstance(params: {
55
+ unitID: string;
56
+ type: DocumentType;
57
+ snapshot: IWorkbookData;
58
+ }): Promise<boolean>;
59
+ disposeInstance(params: {
60
+ unitID: string;
61
+ }): Promise<boolean>;
62
+ }
63
+ //# sourceMappingURL=remote-instance.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-instance.service.d.ts","sourceRoot":"","sources":["../../../../src/services/remote-instance/remote-instance.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAGvF,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACjE,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,+BAA+B,CAAC;AAClE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,mEAA8D,CAAC;AAC9F,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AACD,qBAAa,wBAAyB,YAAW,kBAAkB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAExE,YAAY,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAMhF;AAED,eAAO,MAAM,yBAAyB,mCAAmC,CAAC;AAC1E;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,uEAAsE,CAAC;AAC1G,MAAM,WAAW,sBAAsB;IACnC,cAAc,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1G,eAAe,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,YAAY,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AACD,qBAAa,4BAA6B,YAAW,sBAAsB;IAE3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe;gBADR,sBAAsB,EAAE,sBAAsB,EACrD,eAAe,EAAE,eAAe;IAGhE,YAAY,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAOvE,cAAc,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBzG,eAAe,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAGtE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rpc.service.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.service.spec.d.ts","sourceRoot":"","sources":["../../../../../src/services/rpc/__tests__/rpc.service.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ import { RxDisposable } from '@univerjs/core';
2
+ import { Observable } from 'rxjs';
3
+ /** This protocol is for transferring data from the two peer univer instance running in different locations. */
4
+ export interface IMessageProtocol {
5
+ send(message: any): void;
6
+ onMessage: Observable<any>;
7
+ }
8
+ /**
9
+ * Channel is a combination of methods and event sources. These methods and
10
+ * event sources are usually provided by the same service or controller.
11
+ */
12
+ export interface IChannel {
13
+ call<T>(method: string, args?: any): Promise<T>;
14
+ subscribe<T>(event: string, args?: any): Observable<T>;
15
+ }
16
+ /**
17
+ * Wrapper a service or a controller into a channel so it could be invoked by
18
+ * a remote client. When the protocol is called, it would forward to the
19
+ * underlying service or controller.
20
+ *
21
+ * @param module the wrapper service or controller
22
+ * @returns the channel instance
23
+ */
24
+ export declare function fromModule(module: unknown): IChannel;
25
+ /**
26
+ * Wrap a channel into a service or a controller so it could be invoked by
27
+ * the upper layer modules. When the service or controller is called, it would
28
+ * request the remote server by calling the channel.
29
+ *
30
+ * @param channel
31
+ * @returns
32
+ */
33
+ export declare function toModule<T extends object>(channel: IChannel): T;
34
+ export interface IChannelClient {
35
+ getChannel<T extends IChannel>(channelName: string): T;
36
+ }
37
+ /**
38
+ *
39
+ */
40
+ export interface IChannelServer {
41
+ registerChannel<T extends IChannel>(channelName: string, channel: T): void;
42
+ }
43
+ /**
44
+ * This method provides implementation for `IChannel` and is responsible for
45
+ * transforming a local calling to a RPC calling.
46
+ */
47
+ export declare class ChannelClient extends RxDisposable implements IChannelClient {
48
+ private readonly _protocol;
49
+ private _initialized;
50
+ private _lastRequestCounter;
51
+ private _pendingRequests;
52
+ private _pendingSubscriptions;
53
+ constructor(_protocol: IMessageProtocol);
54
+ getChannel<T extends IChannel>(channelName: string): T;
55
+ private _whenReady;
56
+ private _remoteCall;
57
+ private _remoteSubscribe;
58
+ private _sendRequest;
59
+ private _onResponse;
60
+ }
61
+ export declare class ChannelServer extends RxDisposable implements IChannelServer {
62
+ private readonly _protocol;
63
+ private _channels;
64
+ private _subscriptions;
65
+ constructor(_protocol: IMessageProtocol);
66
+ registerChannel(channelName: string, channel: IChannel): void;
67
+ private _onRequest;
68
+ private _onMethodCall;
69
+ private _onSubscribe;
70
+ private _onUnsubscribe;
71
+ private _sendResponse;
72
+ }
73
+ /**
74
+ * This service is for other service to register channels to the RPC framework.
75
+ */
76
+ export interface IRPCService {
77
+ }
78
+ export declare const IRPCService: import("@wendellhu/redi").IdentifierDecorator<IRPCService>;
79
+ //# sourceMappingURL=rpc.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.service.d.ts","sourceRoot":"","sources":["../../../../src/services/rpc/rpc.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAiD,UAAU,EAAM,MAAM,MAAM,CAAC;AAGrF,+GAA+G;AAC/G,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAiCpD;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,CAe/D;AAMD,MAAM,WAAW,cAAc;IAC3B,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;CAC9E;AAkDD;;;GAGG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,cAAc;IAMzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IALtC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,qBAAqB,CAAsC;gBAEtC,SAAS,EAAE,gBAAgB;IAQxD,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;IAqBtD,OAAO,CAAC,UAAU;YASJ,WAAW;IAiCzB,OAAO,CAAC,gBAAgB;IA8CxB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;CActB;AAED,qBAAa,aAAc,SAAQ,YAAa,YAAW,cAAc;IAKzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJtC,OAAO,CAAC,SAAS,CAA+B;IAEhD,OAAO,CAAC,cAAc,CAAmC;gBAE5B,SAAS,EAAE,gBAAgB;IAOxD,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAI7D,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,aAAa;CAGxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;CAAG;AAC/B,eAAO,MAAM,WAAW,4DAA+C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@univerjs/rpc",
3
+ "version": "0.1.0-alpha.1",
4
+ "keywords": [],
5
+ "author": "DreamNum <developer@univer.ai>",
6
+ "license": "MIT",
7
+ "main": "./lib/cjs/index.js",
8
+ "module": "./lib/esm/index.js",
9
+ "types": "./lib/types/index.d.ts",
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "exports": {
14
+ ".": {
15
+ "import": "./lib/esm/index.js",
16
+ "require": "./lib/cjs/index.js",
17
+ "types": "./lib/types/index.d.ts"
18
+ },
19
+ "./*": {
20
+ "import": "./lib/esm/*",
21
+ "require": "./lib/cjs/*",
22
+ "types": "./lib/types/index.d.ts"
23
+ }
24
+ },
25
+ "directories": {
26
+ "lib": "lib"
27
+ },
28
+ "files": [
29
+ "lib"
30
+ ],
31
+ "private": false,
32
+ "dependencies": {
33
+ "@wendellhu/redi": "^0.12.11",
34
+ "rxjs": "^7.8.1",
35
+ "@univerjs/core": "0.1.0-alpha.1"
36
+ },
37
+ "devDependencies": {
38
+ "@types/numeral": "^2.0.5",
39
+ "@vitest/coverage-istanbul": "^0.34.6",
40
+ "esbuild": "^0.19.8",
41
+ "ts-node": "^10.9.1",
42
+ "typescript": "^5.3.2",
43
+ "vitest": "^0.34.6"
44
+ },
45
+ "scripts": {
46
+ "esbuild": "node ./esbuild.config.mjs && tsc -p tsconfig.esbuild.json"
47
+ }
48
+ }