New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@univerjs/rpc

Package Overview
Dependencies
Maintainers
5
Versions
266
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@univerjs/rpc - npm Package Compare versions

Comparing version 0.1.7 to 0.1.8

2

lib/cjs/index.js

@@ -1,1 +0,1 @@

"use strict";var T=Object.defineProperty;var x=(i,n,e)=>n in i?T(i,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[n]=e;var l=(i,n,e)=>(x(i,typeof n!="symbol"?n+"":n,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@univerjs/core"),h=require("@wendellhu/redi"),d=require("rxjs/operators"),_=require("rxjs");var L=Object.defineProperty,k=Object.getOwnPropertyDescriptor,q=(i,n,e,t)=>{for(var r=t>1?void 0:t?k(n,e):n,s=i.length-1,c;s>=0;s--)(c=i[s])&&(r=(t?c(n,e,r):c(r))||r);return t&&r&&L(n,e,r),r},b=(i,n)=>(e,t)=>n(e,t,i);const f="univer.remote-sync-service",m=h.createIdentifier(f);exports.RemoteSyncPrimaryService=class{constructor(n){this._commandService=n}async syncMutation(n){return this._commandService.syncExecuteCommand(n.mutationInfo.id,n.mutationInfo.params,{onlyLocal:!0,fromSync:!0})}};exports.RemoteSyncPrimaryService=q([b(0,a.ICommandService)],exports.RemoteSyncPrimaryService);const R="univer.remote-instance-service",S=h.createIdentifier(R);exports.WebWorkerRemoteInstanceService=class{constructor(n,e,t){this._univerInstanceService=n,this._commandService=e,this._logService=t}whenReady(){return Promise.resolve(!0)}async syncMutation(n){return this._applyMutation(n.mutationInfo)}async createInstance(n){const{type:e,snapshot:t}=n;try{switch(e){case a.UniverInstanceType.SHEET:return!!this._univerInstanceService.createSheet(t);default:throw new Error(`[WebWorkerRemoteInstanceService]: cannot create replica for document type: ${e}.`)}}catch(r){throw r instanceof Error?r:new TypeError(`${r}`)}}async disposeInstance(n){return this._univerInstanceService.disposeDocument(n.unitID)}_applyMutation(n){const{id:e,params:t}=n;return this._commandService.hasCommand(e)?this._commandService.syncExecuteCommand(e,t,{onlyLocal:!0,fromSync:!0}):(this._logService.debug("[RemoteInstanceReplicaService]",`command "${e}" not found. Skip sync mutation.`),!0)}};exports.WebWorkerRemoteInstanceService=q([b(0,a.IUniverInstanceService),b(1,a.ICommandService),b(2,a.ILogService)],exports.WebWorkerRemoteInstanceService);function D(i){const n=i;return new class{call(e,t){const r=n[e];if(typeof r=="function"){let s=r.apply(n,[t]);return s instanceof Promise||(s=Promise.resolve(s)),s}throw new Error(`[RPC]: method not found for ${e}!`)}subscribe(e,t){const r=n[e];if(typeof r=="function"){const s=r.apply(n,t);return _.isObservable(s)?s:_.of(s)}throw new Error(`[RPC]: observable method not found for ${e}!`)}}}function M(i){return new Proxy({},{get(n,e){if(e!=="dispose")return function(...t){return N(e)?i.subscribe(e,t[0]):i.call(e,t[0])}}})}function N(i){return i.endsWith("$")}class E extends a.RxDisposable{constructor(e){super();l(this,"_initialized",new _.BehaviorSubject(!1));l(this,"_lastRequestCounter",0);l(this,"_pendingRequests",new Map);l(this,"_pendingSubscriptions",new Map);this._protocol=e,this._protocol.onMessage.pipe(d.takeUntil(this.dispose$)).subscribe(t=>this._onMessage(t))}getChannel(e){const t=this;return{call(r,s){return t._disposed?Promise.reject():t._remoteCall(e,r,s)},subscribe(r,s){if(t._disposed)throw new Error("[ChannelClient]: client is disposed!");return t._remoteSubscribe(e,r,s)}}}_whenReady(){return _.firstValueFrom(this._initialized.pipe(d.filter(e=>e),d.take(1)))}async _remoteCall(e,t,r){await this._whenReady();const s=++this._lastRequestCounter,u={seq:s,type:100,channelName:e,method:t,args:r},o=this;return new Promise((g,p)=>{const $={handle(I){switch(I.type){case 201:o._pendingRequests.delete(s),g(I.data);break;case 202:o._pendingRequests.delete(s),p(I.data);break;default:throw new Error("[ChannelClient]: unknown response type!")}}};this._pendingRequests.set(s,$),this._sendRequest(u)})}_remoteSubscribe(e,t,r){return new _.Observable(s=>{let c=-1;return this._whenReady().then(()=>{c=++this._lastRequestCounter;const o={seq:c,type:101,channelName:e,method:t,args:r},g={handle(p){switch(p.type){case 300:s.next(p.data);break;case 301:s.error(p.data);break;case 302:s.complete();break;default:throw new Error("[ChannelClient]: unknown response type!")}}};this._pendingRequests.set(c,g),this._sendRequest(o)}),()=>{if(c===-1)return;const u={type:102,seq:c,channelName:e,method:t};this._sendRequest(u)}})}_sendRequest(e){this._protocol.send(e)}_onMessage(e){var t;switch(e.type){case 0:this._initialized.next(!0);break;case 201:case 202:case 300:case 302:case 301:(t=this._pendingRequests.get(e.seq))==null||t.handle(e);break}}}class O extends a.RxDisposable{constructor(e){super();l(this,"_channels",new Map);l(this,"_subscriptions",new Map);this._protocol=e,this._protocol.onMessage.pipe(d.takeUntil(this.dispose$)).subscribe(t=>this._onRequest(t)),this._sendResponse({seq:-1,type:0})}registerChannel(e,t){this._channels.set(e,t)}_onRequest(e){switch(e.type){case 100:this._onMethodCall(e);break;case 101:this._onSubscribe(e);break;case 102:this._onUnsubscribe(e);break}}_onMethodCall(e){const{channelName:t,method:r,args:s}=e,c=this._channels.get(t);let u;try{if(!c)throw new Error(`[ChannelServer]: Channel ${t} not found!`);u=c.call(r,s)}catch(o){u=Promise.reject(o)}u.then(o=>{this._sendResponse({seq:e.seq,type:201,data:o})}).catch(o=>{o instanceof Error?this._sendResponse({seq:e.seq,type:202,data:o.message}):this._sendResponse({seq:e.seq,type:202,data:String(o)})})}_onSubscribe(e){const{channelName:t,seq:r}=e,s=this._channels.get(t);try{if(!s)throw new Error(`[ChannelServer]: Channel ${t} not found!`);const u=s.subscribe(e.method,e.args).subscribe({next:o=>{this._sendResponse({seq:r,type:300,data:o})},error:o=>{this._sendResponse({seq:r,type:301,data:o.message}),this._sendResponse({seq:r,type:302})},complete:()=>{this._sendResponse({seq:r,type:302})}});this._subscriptions.set(e.seq,u)}catch(c){c instanceof Error?this._sendResponse({seq:e.seq,type:301,data:c.message}):this._sendResponse({seq:e.seq,type:301,data:String(c)})}}_onUnsubscribe(e){const t=this._subscriptions.get(e.seq);t&&(t.unsubscribe(),this._subscriptions.delete(e.seq))}_sendResponse(e){this._protocol.send(e)}}const y=h.createIdentifier("IRPCChannelService");class U{constructor(n){l(this,"_client");l(this,"_server");this._client=new E(n),this._server=new O(n)}requestChannel(n){return this._client.getChannel(n)}registerChannel(n,e){this._server.registerChannel(n,e)}}var A=Object.defineProperty,H=Object.getOwnPropertyDescriptor,F=(i,n,e,t)=>{for(var r=t>1?void 0:t?H(n,e):n,s=i.length-1,c;s>=0;s--)(c=i[s])&&(r=(t?c(n,e,r):c(r))||r);return t&&r&&A(n,e,r),r},v=(i,n)=>(e,t)=>n(e,t,i);exports.DataSyncPrimaryController=class extends a.RxDisposable{constructor(e,t,r,s,c){super();l(this,"_remoteInstanceService");l(this,"_syncingUnits",new Set);this._injector=e,this._commandService=t,this._univerInstanceService=r,this._rpcChannelService=s,this._remoteSyncService=c,this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(f,D(this._remoteSyncService)),this._injector.add([S,{useFactory:()=>M(this._rpcChannelService.requestChannel(R))}]),this._remoteInstanceService=this._injector.get(S)}_init(){this._univerInstanceService.sheetAdded$.pipe(d.takeUntil(this.dispose$)).subscribe(e=>{this._syncingUnits.add(e.getUnitId()),this._remoteInstanceService.createInstance({unitID:e.getUnitId(),type:a.UniverInstanceType.SHEET,snapshot:e.getSnapshot()})}),this._univerInstanceService.sheetDisposed$.pipe(d.takeUntil(this.dispose$)).subscribe(e=>{this._syncingUnits.delete(e.getUnitId()),this._remoteInstanceService.disposeInstance({unitID:e.getUnitId()})}),this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{const{type:r,params:s}=e,c=(s==null?void 0:s.unitId)||"";r===a.CommandType.MUTATION&&(!c||this._syncingUnits.has(c))&&!(t!=null&&t.fromSync)&&this._remoteInstanceService.syncMutation({mutationInfo:e})}))}};exports.DataSyncPrimaryController=F([a.OnLifecycle(a.LifecycleStages.Starting,exports.DataSyncPrimaryController),v(0,h.Inject(h.Injector)),v(1,a.ICommandService),v(2,a.IUniverInstanceService),v(3,y),v(4,m)],exports.DataSyncPrimaryController);var z=Object.defineProperty,V=Object.getOwnPropertyDescriptor,G=(i,n,e,t)=>{for(var r=t>1?void 0:t?V(n,e):n,s=i.length-1,c;s>=0;s--)(c=i[s])&&(r=(t?c(n,e,r):c(r))||r);return t&&r&&z(n,e,r),r},C=(i,n)=>(e,t)=>n(e,t,i);exports.DataSyncReplicaController=class extends a.Disposable{constructor(e,t,r,s){super();l(this,"_remoteSyncService");this._injector=e,this._remoteInstanceService=t,this._commandService=r,this._rpcChannelService=s,this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(R,D(this._remoteInstanceService)),this._injector.add([m,{useFactory:()=>M(this._rpcChannelService.requestChannel(f))}]),this._remoteSyncService=this._injector.get(m)}_init(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{e.type===a.CommandType.MUTATION&&!(t!=null&&t.fromSync)&&this._remoteSyncService.syncMutation({mutationInfo:e})}))}};exports.DataSyncReplicaController=G([a.OnLifecycle(a.LifecycleStages.Starting,exports.DataSyncReplicaController),C(0,h.Inject(h.Injector)),C(1,S),C(2,a.ICommandService),C(3,y)],exports.DataSyncReplicaController);function B(){return{send(i){postMessage(i)},onMessage:new _.Observable(i=>{const n=e=>{i.next(e.data)};return addEventListener("message",n),()=>removeEventListener("message",n)}).pipe(_.shareReplay(1))}}function J(i){return{send(n){i.postMessage(n)},onMessage:new _.Observable(n=>{const e=t=>{n.next(t.data)};return i.addEventListener("message",e),()=>i.removeEventListener("message",e)}).pipe(_.shareReplay(1))}}var Q=Object.defineProperty,X=Object.getOwnPropertyDescriptor,j=(i,n,e,t)=>{for(var r=t>1?void 0:t?X(n,e):n,s=i.length-1,c;s>=0;s--)(c=i[s])&&(r=(t?c(n,e,r):c(r))||r);return t&&r&&Q(n,e,r),r},W=(i,n)=>(e,t)=>n(e,t,i),P;exports.UniverRPCMainThreadPlugin=(P=class extends a.Plugin{constructor(n,e){super("UNIVER_RPC_MAIN_THREAD_PLUGIN"),this._config=n,this._injector=e}async onStarting(n){const{workerURL:e}=this._config,t=e instanceof Worker?e:new Worker(e),r=J(t);[[y,{useFactory:()=>new U(r)}],[exports.DataSyncPrimaryController],[m,{useClass:exports.RemoteSyncPrimaryService}]].forEach(c=>n.add(c)),n.get(exports.DataSyncPrimaryController)}},l(P,"type",a.PluginType.Univer),P);exports.UniverRPCMainThreadPlugin=j([W(1,h.Inject(h.Injector))],exports.UniverRPCMainThreadPlugin);var w;exports.UniverRPCWorkerThreadPlugin=(w=class extends a.Plugin{constructor(n,e){super("UNIVER_RPC_WORKER_THREAD_PLUGIN"),this._config=n,this._injector=e}onStarting(n){[[exports.DataSyncReplicaController],[y,{useFactory:()=>new U(B())}],[S,{useClass:exports.WebWorkerRemoteInstanceService}]].forEach(e=>n.add(e)),n.get(exports.DataSyncReplicaController)}},l(w,"type",a.PluginType.Univer),w);exports.UniverRPCWorkerThreadPlugin=j([W(1,h.Inject(h.Injector))],exports.UniverRPCWorkerThreadPlugin);exports.ChannelClient=E;exports.ChannelServer=O;exports.ChannelService=U;exports.IRPCChannelService=y;exports.IRemoteInstanceService=S;exports.IRemoteSyncService=m;exports.RemoteInstanceServiceName=R;exports.RemoteSyncServiceName=f;
"use strict";var $=Object.defineProperty;var x=(i,n,e)=>n in i?$(i,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[n]=e;var l=(i,n,e)=>(x(i,typeof n!="symbol"?n+"":n,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@univerjs/core"),h=require("@wendellhu/redi"),p=require("rxjs/operators"),_=require("rxjs");var N=Object.defineProperty,L=Object.getOwnPropertyDescriptor,E=(i,n,e,t)=>{for(var r=t>1?void 0:t?L(n,e):n,s=i.length-1,c;s>=0;s--)(c=i[s])&&(r=(t?c(n,e,r):c(r))||r);return t&&r&&N(n,e,r),r},m=(i,n)=>(e,t)=>n(e,t,i);const f="rpc.remote-sync.service",S=h.createIdentifier(f);exports.RemoteSyncPrimaryService=class{constructor(n){this._commandService=n}async syncMutation(n){return this._commandService.syncExecuteCommand(n.mutationInfo.id,n.mutationInfo.params,{onlyLocal:!0,fromSync:!0})}};exports.RemoteSyncPrimaryService=E([m(0,a.ICommandService)],exports.RemoteSyncPrimaryService);const b="univer.remote-instance-service",y=h.createIdentifier(b);exports.WebWorkerRemoteInstanceService=class{constructor(n,e,t,r){this._injector=n,this._univerInstanceService=e,this._commandService=t,this._logService=r}whenReady(){return Promise.resolve(!0)}async syncMutation(n){return this._applyMutation(n.mutationInfo)}async createInstance(n){const{type:e,snapshot:t}=n;try{switch(e){case a.UniverInstanceType.UNIVER_SHEET:return this._univerInstanceService.createUnit(a.UniverInstanceType.UNIVER_SHEET,t),!0;default:throw new Error(`[WebWorkerRemoteInstanceService]: cannot create replica for document type: ${e}.`)}}catch(r){throw r instanceof Error?r:new TypeError(`${r}`)}}async disposeInstance(n){return this._univerInstanceService.disposeUnit(n.unitID)}_applyMutation(n){const{id:e,params:t}=n;return this._commandService.hasCommand(e)?this._commandService.syncExecuteCommand(e,t,{onlyLocal:!0,fromSync:!0}):(this._logService.debug("[RemoteInstanceReplicaService]",`command "${e}" not found. Skip sync mutation.`),!0)}};exports.WebWorkerRemoteInstanceService=E([m(0,h.Inject(h.Injector)),m(1,a.IUniverInstanceService),m(2,a.ICommandService),m(3,a.ILogService)],exports.WebWorkerRemoteInstanceService);function q(i){const n=i;return new class{call(e,t){const r=n[e];if(typeof r=="function"){let s=r.apply(n,[t]);return s instanceof Promise||(s=Promise.resolve(s)),s}throw new Error(`[RPC]: method not found for ${e}!`)}subscribe(e,t){const r=n[e];if(typeof r=="function"){const s=r.apply(n,t);return _.isObservable(s)?s:_.of(s)}throw new Error(`[RPC]: observable method not found for ${e}!`)}}}function M(i){return new Proxy({},{get(n,e){if(e!=="dispose")return function(...t){return k(e)?i.subscribe(e,t[0]):i.call(e,t[0])}}})}function k(i){return i.endsWith("$")}class D extends a.RxDisposable{constructor(e){super();l(this,"_initialized",new _.BehaviorSubject(!1));l(this,"_lastRequestCounter",0);l(this,"_pendingRequests",new Map);l(this,"_pendingSubscriptions",new Map);this._protocol=e,this._protocol.onMessage.pipe(p.takeUntil(this.dispose$)).subscribe(t=>this._onMessage(t))}getChannel(e){const t=this;return{call(r,s){return t._disposed?Promise.reject():t._remoteCall(e,r,s)},subscribe(r,s){if(t._disposed)throw new Error("[ChannelClient]: client is disposed!");return t._remoteSubscribe(e,r,s)}}}_whenReady(){return _.firstValueFrom(this._initialized.pipe(p.filter(e=>e),p.take(1)))}async _remoteCall(e,t,r){await this._whenReady();const s=++this._lastRequestCounter,u={seq:s,type:100,channelName:e,method:t,args:r},o=this;return new Promise((I,d)=>{const W={handle(g){switch(g.type){case 201:o._pendingRequests.delete(s),I(g.data);break;case 202:o._pendingRequests.delete(s),d(g.data);break;default:throw new Error("[ChannelClient]: unknown response type!")}}};this._pendingRequests.set(s,W),this._sendRequest(u)})}_remoteSubscribe(e,t,r){return new _.Observable(s=>{let c=-1;return this._whenReady().then(()=>{c=++this._lastRequestCounter;const o={seq:c,type:101,channelName:e,method:t,args:r},I={handle(d){switch(d.type){case 300:s.next(d.data);break;case 301:s.error(d.data);break;case 302:s.complete();break;default:throw new Error("[ChannelClient]: unknown response type!")}}};this._pendingRequests.set(c,I),this._sendRequest(o)}),()=>{if(c===-1)return;const u={type:102,seq:c,channelName:e,method:t};this._sendRequest(u)}})}_sendRequest(e){this._protocol.send(e)}_onMessage(e){var t;switch(e.type){case 0:this._initialized.next(!0);break;case 201:case 202:case 300:case 302:case 301:(t=this._pendingRequests.get(e.seq))==null||t.handle(e);break}}}class O extends a.RxDisposable{constructor(e){super();l(this,"_channels",new Map);l(this,"_subscriptions",new Map);this._protocol=e,this._protocol.onMessage.pipe(p.takeUntil(this.dispose$)).subscribe(t=>this._onRequest(t)),this._sendResponse({seq:-1,type:0})}registerChannel(e,t){this._channels.set(e,t)}_onRequest(e){switch(e.type){case 100:this._onMethodCall(e);break;case 101:this._onSubscribe(e);break;case 102:this._onUnsubscribe(e);break}}_onMethodCall(e){const{channelName:t,method:r,args:s}=e,c=this._channels.get(t);let u;try{if(!c)throw new Error(`[ChannelServer]: Channel ${t} not found!`);u=c.call(r,s)}catch(o){u=Promise.reject(o)}u.then(o=>{this._sendResponse({seq:e.seq,type:201,data:o})}).catch(o=>{o instanceof Error?this._sendResponse({seq:e.seq,type:202,data:o.message}):this._sendResponse({seq:e.seq,type:202,data:String(o)})})}_onSubscribe(e){const{channelName:t,seq:r}=e,s=this._channels.get(t);try{if(!s)throw new Error(`[ChannelServer]: Channel ${t} not found!`);const u=s.subscribe(e.method,e.args).subscribe({next:o=>{this._sendResponse({seq:r,type:300,data:o})},error:o=>{this._sendResponse({seq:r,type:301,data:o.message}),this._sendResponse({seq:r,type:302})},complete:()=>{this._sendResponse({seq:r,type:302})}});this._subscriptions.set(e.seq,u)}catch(c){c instanceof Error?this._sendResponse({seq:e.seq,type:301,data:c.message}):this._sendResponse({seq:e.seq,type:301,data:String(c)})}}_onUnsubscribe(e){const t=this._subscriptions.get(e.seq);t&&(t.unsubscribe(),this._subscriptions.delete(e.seq))}_sendResponse(e){this._protocol.send(e)}}const C=h.createIdentifier("IRPCChannelService");class U{constructor(n){l(this,"_client");l(this,"_server");this._client=new D(n),this._server=new O(n)}requestChannel(n){return this._client.getChannel(n)}registerChannel(n,e){this._server.registerChannel(n,e)}}var H=Object.defineProperty,V=Object.getOwnPropertyDescriptor,A=(i,n,e,t)=>{for(var r=t>1?void 0:t?V(n,e):n,s=i.length-1,c;s>=0;s--)(c=i[s])&&(r=(t?c(n,e,r):c(r))||r);return t&&r&&H(n,e,r),r},v=(i,n)=>(e,t)=>n(e,t,i);exports.DataSyncPrimaryController=class extends a.RxDisposable{constructor(e,t,r,s,c){super();l(this,"_remoteInstanceService");l(this,"_syncingUnits",new Set);this._injector=e,this._commandService=t,this._univerInstanceService=r,this._rpcChannelService=s,this._remoteSyncService=c,this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(f,q(this._remoteSyncService)),this._injector.add([y,{useFactory:()=>M(this._rpcChannelService.requestChannel(b))}]),this._remoteInstanceService=this._injector.get(y)}_init(){this._univerInstanceService.getTypeOfUnitAdded$(a.UniverInstanceType.UNIVER_SHEET).pipe(p.takeUntil(this.dispose$)).subscribe(e=>{this._syncingUnits.add(e.getUnitId()),this._remoteInstanceService.createInstance({unitID:e.getUnitId(),type:a.UniverInstanceType.UNIVER_SHEET,snapshot:e.getSnapshot()})}),this._univerInstanceService.getTypeOfUnitDisposed$(a.UniverInstanceType.UNIVER_SHEET).pipe(p.takeUntil(this.dispose$)).subscribe(e=>{this._syncingUnits.delete(e.getUnitId()),this._remoteInstanceService.disposeInstance({unitID:e.getUnitId()})}),this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{const{type:r,params:s}=e,c=(s==null?void 0:s.unitId)||"";r===a.CommandType.MUTATION&&(!c||this._syncingUnits.has(c))&&!(t!=null&&t.fromSync)&&this._remoteInstanceService.syncMutation({mutationInfo:e})}))}};exports.DataSyncPrimaryController=A([a.OnLifecycle(a.LifecycleStages.Starting,exports.DataSyncPrimaryController),v(0,h.Inject(h.Injector)),v(1,a.ICommandService),v(2,a.IUniverInstanceService),v(3,C),v(4,S)],exports.DataSyncPrimaryController);var F=Object.defineProperty,z=Object.getOwnPropertyDescriptor,G=(i,n,e,t)=>{for(var r=t>1?void 0:t?z(n,e):n,s=i.length-1,c;s>=0;s--)(c=i[s])&&(r=(t?c(n,e,r):c(r))||r);return t&&r&&F(n,e,r),r},R=(i,n)=>(e,t)=>n(e,t,i);exports.DataSyncReplicaController=class extends a.Disposable{constructor(e,t,r,s){super();l(this,"_remoteSyncService");this._injector=e,this._remoteInstanceService=t,this._commandService=r,this._rpcChannelService=s,this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(b,q(this._remoteInstanceService)),this._injector.add([S,{useFactory:()=>M(this._rpcChannelService.requestChannel(f))}]),this._remoteSyncService=this._injector.get(S)}_init(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{e.type===a.CommandType.MUTATION&&!(t!=null&&t.fromSync)&&this._remoteSyncService.syncMutation({mutationInfo:e})}))}};exports.DataSyncReplicaController=G([a.OnLifecycle(a.LifecycleStages.Starting,exports.DataSyncReplicaController),R(0,h.Inject(h.Injector)),R(1,y),R(2,a.ICommandService),R(3,C)],exports.DataSyncReplicaController);function B(){return{send(i){postMessage(i)},onMessage:new _.Observable(i=>{const n=e=>{i.next(e.data)};return addEventListener("message",n),()=>removeEventListener("message",n)}).pipe(_.shareReplay(1))}}function J(i){return{send(n){i.postMessage(n)},onMessage:new _.Observable(n=>{const e=t=>{n.next(t.data)};return i.addEventListener("message",e),()=>i.removeEventListener("message",e)}).pipe(_.shareReplay(1))}}var Q=Object.defineProperty,X=Object.getOwnPropertyDescriptor,j=(i,n,e,t)=>{for(var r=t>1?void 0:t?X(n,e):n,s=i.length-1,c;s>=0;s--)(c=i[s])&&(r=(t?c(n,e,r):c(r))||r);return t&&r&&Q(n,e,r),r},T=(i,n)=>(e,t)=>n(e,t,i),P;exports.UniverRPCMainThreadPlugin=(P=class extends a.Plugin{constructor(n,e){super(),this._config=n,this._injector=e}async onStarting(n){const{workerURL:e}=this._config,t=e instanceof Worker?e:new Worker(e),r=J(t);[[C,{useFactory:()=>new U(r)}],[exports.DataSyncPrimaryController],[S,{useClass:exports.RemoteSyncPrimaryService}]].forEach(c=>n.add(c)),n.get(exports.DataSyncPrimaryController)}},l(P,"pluginName","UNIVER_RPC_MAIN_THREAD_PLUGIN"),P);exports.UniverRPCMainThreadPlugin=j([T(1,h.Inject(h.Injector))],exports.UniverRPCMainThreadPlugin);var w;exports.UniverRPCWorkerThreadPlugin=(w=class extends a.Plugin{constructor(n,e){super(),this._config=n,this._injector=e}onStarting(n){[[exports.DataSyncReplicaController],[C,{useFactory:()=>new U(B())}],[y,{useClass:exports.WebWorkerRemoteInstanceService}]].forEach(e=>n.add(e)),n.get(exports.DataSyncReplicaController)}},l(w,"pluginName","UNIVER_RPC_WORKER_THREAD_PLUGIN"),w);exports.UniverRPCWorkerThreadPlugin=j([T(1,h.Inject(h.Injector))],exports.UniverRPCWorkerThreadPlugin);exports.ChannelClient=D;exports.ChannelServer=O;exports.ChannelService=U;exports.IRPCChannelService=C;exports.IRemoteInstanceService=y;exports.IRemoteSyncService=S;exports.RemoteInstanceServiceName=b;exports.RemoteSyncServiceName=f;

@@ -1,15 +0,15 @@

var Y = Object.defineProperty;
var Z = (s, t, e) => t in s ? Y(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
var a = (s, t, e) => (Z(s, typeof t != "symbol" ? t + "" : t, e), e);
import { UniverInstanceType as W, ICommandService as S, IUniverInstanceService as T, ILogService as K, RxDisposable as M, OnLifecycle as L, LifecycleStages as N, CommandType as A, Disposable as ee, Plugin as H, PluginType as F } from "@univerjs/core";
import { createIdentifier as O, Inject as b, Injector as g } from "@wendellhu/redi";
import { takeUntil as m, filter as te, take as ne } from "rxjs/operators";
import { BehaviorSubject as se, firstValueFrom as re, Observable as $, isObservable as ie, of as ce, shareReplay as z } from "rxjs";
var oe = Object.defineProperty, ae = Object.getOwnPropertyDescriptor, V = (s, t, e, n) => {
for (var r = n > 1 ? void 0 : n ? ae(t, e) : t, i = s.length - 1, c; i >= 0; i--)
var X = Object.defineProperty;
var Y = (s, t, e) => t in s ? X(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
var a = (s, t, e) => (Y(s, typeof t != "symbol" ? t + "" : t, e), e);
import { ICommandService as C, UniverInstanceType as p, IUniverInstanceService as N, ILogService as Z, RxDisposable as M, OnLifecycle as W, LifecycleStages as L, CommandType as H, Disposable as K, Plugin as V } from "@univerjs/core";
import { createIdentifier as O, Inject as m, Injector as f } from "@wendellhu/redi";
import { takeUntil as y, filter as ee, take as te } from "rxjs/operators";
import { BehaviorSubject as ne, firstValueFrom as se, Observable as $, isObservable as re, of as ie, shareReplay as A } from "rxjs";
var ce = Object.defineProperty, oe = Object.getOwnPropertyDescriptor, F = (s, t, e, n) => {
for (var r = n > 1 ? void 0 : n ? oe(t, e) : t, i = s.length - 1, c; i >= 0; i--)
(c = s[i]) && (r = (n ? c(t, e, r) : c(r)) || r);
return n && r && oe(t, e, r), r;
}, v = (s, t) => (e, n) => t(e, n, s);
const U = "univer.remote-sync-service", f = O(U);
let E = class {
return n && r && ce(t, e, r), r;
}, u = (s, t) => (e, n) => t(e, n, s);
const j = "rpc.remote-sync.service", b = O(j);
let U = class {
constructor(s) {

@@ -25,9 +25,9 @@ this._commandService = s;

};
E = V([
v(0, S)
], E);
const D = "univer.remote-instance-service", y = O(D);
U = F([
u(0, C)
], U);
const D = "univer.remote-instance-service", g = O(D);
let q = class {
constructor(s, t, e) {
this._univerInstanceService = s, this._commandService = t, this._logService = e;
constructor(s, t, e, n) {
this._injector = s, this._univerInstanceService = t, this._commandService = e, this._logService = n;
}

@@ -44,4 +44,4 @@ whenReady() {

switch (t) {
case W.SHEET:
return !!this._univerInstanceService.createSheet(e);
case p.UNIVER_SHEET:
return this._univerInstanceService.createUnit(p.UNIVER_SHEET, e), !0;
default:

@@ -57,3 +57,3 @@ throw new Error(

async disposeInstance(s) {
return this._univerInstanceService.disposeDocument(s.unitID);
return this._univerInstanceService.disposeUnit(s.unitID);
}

@@ -68,8 +68,9 @@ _applyMutation(s) {

};
q = V([
v(0, T),
v(1, S),
v(2, K)
q = F([
u(0, m(f)),
u(1, N),
u(2, C),
u(3, Z)
], q);
function G(s) {
function z(s) {
const t = s;

@@ -89,3 +90,3 @@ return new class {

const i = r.apply(t, n);
return ie(i) ? i : ce(i);
return re(i) ? i : ie(i);
}

@@ -96,3 +97,3 @@ throw new Error(`[RPC]: observable method not found for ${e}!`);

}
function k(s) {
function G(s) {
return new Proxy({}, {

@@ -102,3 +103,3 @@ get(t, e) {

return function(...n) {
return he(e) ? s.subscribe(e, n[0]) : s.call(e, n[0]);
return ae(e) ? s.subscribe(e, n[0]) : s.call(e, n[0]);
};

@@ -108,13 +109,13 @@ }

}
function he(s) {
function ae(s) {
return s.endsWith("$");
}
class le extends M {
class he extends M {
constructor(e) {
super();
a(this, "_initialized", new se(!1));
a(this, "_initialized", new ne(!1));
a(this, "_lastRequestCounter", 0);
a(this, "_pendingRequests", /* @__PURE__ */ new Map());
a(this, "_pendingSubscriptions", /* @__PURE__ */ new Map());
this._protocol = e, this._protocol.onMessage.pipe(m(this.dispose$)).subscribe((n) => this._onMessage(n));
this._protocol = e, this._protocol.onMessage.pipe(y(this.dispose$)).subscribe((n) => this._onMessage(n));
}

@@ -135,6 +136,6 @@ getChannel(e) {

_whenReady() {
return re(
return se(
this._initialized.pipe(
te((e) => e),
ne(1)
ee((e) => e),
te(1)
)

@@ -146,8 +147,8 @@ );

const i = ++this._lastRequestCounter, h = { seq: i, type: 100, channelName: e, method: n, args: r }, o = this;
return new Promise((R, l) => {
const X = {
return new Promise((I, l) => {
const Q = {
handle(w) {
switch (w.type) {
case 201:
o._pendingRequests.delete(i), R(w.data);
o._pendingRequests.delete(i), I(w.data);
break;

@@ -162,3 +163,3 @@ case 202:

};
this._pendingRequests.set(i, X), this._sendRequest(h);
this._pendingRequests.set(i, Q), this._sendRequest(h);
});

@@ -171,3 +172,3 @@ }

c = ++this._lastRequestCounter;
const o = { seq: c, type: 101, channelName: e, method: n, args: r }, R = {
const o = { seq: c, type: 101, channelName: e, method: n, args: r }, I = {
handle(l) {

@@ -189,3 +190,3 @@ switch (l.type) {

};
this._pendingRequests.set(c, R), this._sendRequest(o);
this._pendingRequests.set(c, I), this._sendRequest(o);
}), () => {

@@ -223,3 +224,3 @@ if (c === -1)

}
class _e extends M {
class le extends M {
constructor(e) {

@@ -229,3 +230,3 @@ super();

a(this, "_subscriptions", /* @__PURE__ */ new Map());
this._protocol = e, this._protocol.onMessage.pipe(m(this.dispose$)).subscribe((n) => this._onRequest(n)), this._sendResponse({
this._protocol = e, this._protocol.onMessage.pipe(y(this.dispose$)).subscribe((n) => this._onRequest(n)), this._sendResponse({
seq: -1,

@@ -305,8 +306,8 @@ type: 0

}
const C = O("IRPCChannelService");
class B {
const R = O("IRPCChannelService");
class k {
constructor(t) {
a(this, "_client");
a(this, "_server");
this._client = new le(t), this._server = new _e(t);
this._client = new he(t), this._server = new le(t);
}

@@ -320,8 +321,8 @@ requestChannel(t) {

}
var ue = Object.defineProperty, pe = Object.getOwnPropertyDescriptor, de = (s, t, e, n) => {
for (var r = n > 1 ? void 0 : n ? pe(t, e) : t, i = s.length - 1, c; i >= 0; i--)
var _e = Object.defineProperty, ue = Object.getOwnPropertyDescriptor, pe = (s, t, e, n) => {
for (var r = n > 1 ? void 0 : n ? ue(t, e) : t, i = s.length - 1, c; i >= 0; i--)
(c = s[i]) && (r = (n ? c(t, e, r) : c(r)) || r);
return n && r && ue(t, e, r), r;
return n && r && _e(t, e, r), r;
}, _ = (s, t) => (e, n) => t(e, n, s);
let u = class extends M {
let d = class extends M {
constructor(t, e, n, r, i) {

@@ -334,17 +335,17 @@ super();

_initRPCChannels() {
this._rpcChannelService.registerChannel(U, G(this._remoteSyncService)), this._injector.add([
y,
this._rpcChannelService.registerChannel(j, z(this._remoteSyncService)), this._injector.add([
g,
{
useFactory: () => k(this._rpcChannelService.requestChannel(D))
useFactory: () => G(this._rpcChannelService.requestChannel(D))
}
]), this._remoteInstanceService = this._injector.get(y);
]), this._remoteInstanceService = this._injector.get(g);
}
_init() {
this._univerInstanceService.sheetAdded$.pipe(m(this.dispose$)).subscribe((t) => {
this._univerInstanceService.getTypeOfUnitAdded$(p.UNIVER_SHEET).pipe(y(this.dispose$)).subscribe((t) => {
this._syncingUnits.add(t.getUnitId()), this._remoteInstanceService.createInstance({
unitID: t.getUnitId(),
type: W.SHEET,
type: p.UNIVER_SHEET,
snapshot: t.getSnapshot()
});
}), this._univerInstanceService.sheetDisposed$.pipe(m(this.dispose$)).subscribe((t) => {
}), this._univerInstanceService.getTypeOfUnitDisposed$(p.UNIVER_SHEET).pipe(y(this.dispose$)).subscribe((t) => {
this._syncingUnits.delete(t.getUnitId()), this._remoteInstanceService.disposeInstance({

@@ -358,3 +359,3 @@ unitID: t.getUnitId()

// only sync mutations to the worker thread
n === A.MUTATION && (!i || this._syncingUnits.has(i)) && // do not sync mutations from the web worker back to the web worker
n === H.MUTATION && (!i || this._syncingUnits.has(i)) && // do not sync mutations from the web worker back to the web worker
!(e != null && e.fromSync) && this._remoteInstanceService.syncMutation({ mutationInfo: t });

@@ -365,16 +366,16 @@ })

};
u = de([
L(N.Starting, u),
_(0, b(g)),
_(1, S),
_(2, T),
_(3, C),
_(4, f)
], u);
var ve = Object.defineProperty, me = Object.getOwnPropertyDescriptor, fe = (s, t, e, n) => {
for (var r = n > 1 ? void 0 : n ? me(t, e) : t, i = s.length - 1, c; i >= 0; i--)
d = pe([
W(L.Starting, d),
_(0, m(f)),
_(1, C),
_(2, N),
_(3, R),
_(4, b)
], d);
var de = Object.defineProperty, ve = Object.getOwnPropertyDescriptor, me = (s, t, e, n) => {
for (var r = n > 1 ? void 0 : n ? ve(t, e) : t, i = s.length - 1, c; i >= 0; i--)
(c = s[i]) && (r = (n ? c(t, e, r) : c(r)) || r);
return n && r && ve(t, e, r), r;
}, d = (s, t) => (e, n) => t(e, n, s);
let p = class extends ee {
return n && r && de(t, e, r), r;
}, S = (s, t) => (e, n) => t(e, n, s);
let v = class extends K {
constructor(t, e, n, r) {

@@ -386,8 +387,8 @@ super();

_initRPCChannels() {
this._rpcChannelService.registerChannel(D, G(this._remoteInstanceService)), this._injector.add([
f,
this._rpcChannelService.registerChannel(D, z(this._remoteInstanceService)), this._injector.add([
b,
{
useFactory: () => k(this._rpcChannelService.requestChannel(U))
useFactory: () => G(this._rpcChannelService.requestChannel(j))
}
]), this._remoteSyncService = this._injector.get(f);
]), this._remoteSyncService = this._injector.get(b);
}

@@ -398,3 +399,3 @@ _init() {

this._commandService.onCommandExecuted((t, e) => {
t.type === A.MUTATION && !(e != null && e.fromSync) && this._remoteSyncService.syncMutation({
t.type === H.MUTATION && !(e != null && e.fromSync) && this._remoteSyncService.syncMutation({
mutationInfo: t

@@ -406,10 +407,10 @@ });

};
p = fe([
L(N.Starting, p),
d(0, b(g)),
d(1, y),
d(2, S),
d(3, C)
], p);
function ye() {
v = me([
W(L.Starting, v),
S(0, m(f)),
S(1, g),
S(2, C),
S(3, R)
], v);
function fe() {
return {

@@ -424,3 +425,3 @@ send(s) {

return addEventListener("message", t), () => removeEventListener("message", t);
}).pipe(z(1))
}).pipe(A(1))
};

@@ -438,13 +439,13 @@ }

return s.addEventListener("message", e), () => s.removeEventListener("message", e);
}).pipe(z(1))
}).pipe(A(1))
};
}
var be = Object.defineProperty, ge = Object.getOwnPropertyDescriptor, J = (s, t, e, n) => {
for (var r = n > 1 ? void 0 : n ? ge(t, e) : t, i = s.length - 1, c; i >= 0; i--)
var ye = Object.defineProperty, be = Object.getOwnPropertyDescriptor, B = (s, t, e, n) => {
for (var r = n > 1 ? void 0 : n ? be(t, e) : t, i = s.length - 1, c; i >= 0; i--)
(c = s[i]) && (r = (n ? c(t, e, r) : c(r)) || r);
return n && r && be(t, e, r), r;
}, Q = (s, t) => (e, n) => t(e, n, s), I;
let j = (I = class extends H {
return n && r && ye(t, e, r), r;
}, J = (s, t) => (e, n) => t(e, n, s), P;
let x = (P = class extends V {
constructor(s, t) {
super("UNIVER_RPC_MAIN_THREAD_PLUGIN"), this._config = s, this._injector = t;
super(), this._config = s, this._injector = t;
}

@@ -455,51 +456,51 @@ async onStarting(s) {

[
C,
R,
{
useFactory: () => new B(n)
useFactory: () => new k(n)
}
],
[u],
[f, { useClass: E }]
].forEach((i) => s.add(i)), s.get(u);
[d],
[b, { useClass: U }]
].forEach((i) => s.add(i)), s.get(d);
}
}, a(I, "type", F.Univer), I);
j = J([
Q(1, b(g))
], j);
var P;
let x = (P = class extends H {
}, a(P, "pluginName", "UNIVER_RPC_MAIN_THREAD_PLUGIN"), P);
x = B([
J(1, m(f))
], x);
var E;
let T = (E = class extends V {
constructor(s, t) {
super("UNIVER_RPC_WORKER_THREAD_PLUGIN"), this._config = s, this._injector = t;
super(), this._config = s, this._injector = t;
}
onStarting(s) {
[
[p],
[v],
[
C,
R,
{
useFactory: () => new B(ye())
useFactory: () => new k(fe())
}
],
[y, { useClass: q }]
].forEach((t) => s.add(t)), s.get(p);
[g, { useClass: q }]
].forEach((t) => s.add(t)), s.get(v);
}
}, a(P, "type", F.Univer), P);
x = J([
Q(1, b(g))
], x);
}, a(E, "pluginName", "UNIVER_RPC_WORKER_THREAD_PLUGIN"), E);
T = B([
J(1, m(f))
], T);
export {
le as ChannelClient,
_e as ChannelServer,
B as ChannelService,
u as DataSyncPrimaryController,
p as DataSyncReplicaController,
C as IRPCChannelService,
y as IRemoteInstanceService,
f as IRemoteSyncService,
he as ChannelClient,
le as ChannelServer,
k as ChannelService,
d as DataSyncPrimaryController,
v as DataSyncReplicaController,
R as IRPCChannelService,
g as IRemoteInstanceService,
b as IRemoteSyncService,
D as RemoteInstanceServiceName,
E as RemoteSyncPrimaryService,
U as RemoteSyncServiceName,
j as UniverRPCMainThreadPlugin,
x as UniverRPCWorkerThreadPlugin,
U as RemoteSyncPrimaryService,
j as RemoteSyncServiceName,
x as UniverRPCMainThreadPlugin,
T as UniverRPCWorkerThreadPlugin,
q as WebWorkerRemoteInstanceService
};
import { Injector } from '@wendellhu/redi';
import { Plugin, PluginType } from '@univerjs/core';
import { Plugin } from '@univerjs/core';

@@ -14,3 +14,3 @@ export interface IUniverRPCMainThreadConfig {

protected readonly _injector: Injector;
static type: PluginType;
static pluginName: string;
constructor(_config: IUniverRPCMainThreadConfig, _injector: Injector);

@@ -27,5 +27,5 @@ onStarting(injector: Injector): Promise<void>;

protected readonly _injector: Injector;
static type: PluginType;
static pluginName: string;
constructor(_config: IUniverRPCWorkerThreadPluginConfig, _injector: Injector);
onStarting(injector: Injector): void;
}

@@ -0,1 +1,2 @@

import { Injector } from '@wendellhu/redi';
import { IExecutionOptions, IMutationInfo, IWorkbookData, ICommandService, ILogService, IUniverInstanceService, UniverInstanceType } from '@univerjs/core';

@@ -7,3 +8,3 @@

}
export declare const RemoteSyncServiceName = "univer.remote-sync-service";
export declare const RemoteSyncServiceName = "rpc.remote-sync.service";
/**

@@ -51,6 +52,7 @@ * This service is provided by the primary Univer.

export declare class WebWorkerRemoteInstanceService implements IRemoteInstanceService {
private readonly _injector;
protected readonly _univerInstanceService: IUniverInstanceService;
protected readonly _commandService: ICommandService;
protected readonly _logService: ILogService;
constructor(_univerInstanceService: IUniverInstanceService, _commandService: ICommandService, _logService: ILogService);
constructor(_injector: Injector, _univerInstanceService: IUniverInstanceService, _commandService: ICommandService, _logService: ILogService);
whenReady(): Promise<true>;

@@ -57,0 +59,0 @@ syncMutation(params: {

@@ -1,1 +0,1 @@

(function(i,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("@univerjs/core"),require("@wendellhu/redi"),require("rxjs/operators"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@wendellhu/redi","rxjs/operators","rxjs"],o):(i=typeof globalThis<"u"?globalThis:i||self,o(i.UniverRpc={},i.UniverCore,i["@wendellhu/redi"],i.rxjs.operators,i.rxjs))})(this,function(i,o,l,v,d){"use strict";var Y=Object.defineProperty;var Z=(i,o,l)=>o in i?Y(i,o,{enumerable:!0,configurable:!0,writable:!0,value:l}):i[o]=l;var u=(i,o,l)=>(Z(i,typeof o!="symbol"?o+"":o,l),l);var P,w;var $=Object.defineProperty,L=Object.getOwnPropertyDescriptor,D=(a,t,e,n)=>{for(var s=n>1?void 0:n?L(t,e):t,r=a.length-1,c;r>=0;r--)(c=a[r])&&(s=(n?c(t,e,s):c(s))||s);return n&&s&&$(t,e,s),s},C=(a,t)=>(e,n)=>t(e,n,a);const R="univer.remote-sync-service",m=l.createIdentifier(R);i.RemoteSyncPrimaryService=class{constructor(t){this._commandService=t}async syncMutation(t){return this._commandService.syncExecuteCommand(t.mutationInfo.id,t.mutationInfo.params,{onlyLocal:!0,fromSync:!0})}},i.RemoteSyncPrimaryService=D([C(0,o.ICommandService)],i.RemoteSyncPrimaryService);const b="univer.remote-instance-service",S=l.createIdentifier(b);i.WebWorkerRemoteInstanceService=class{constructor(t,e,n){this._univerInstanceService=t,this._commandService=e,this._logService=n}whenReady(){return Promise.resolve(!0)}async syncMutation(t){return this._applyMutation(t.mutationInfo)}async createInstance(t){const{type:e,snapshot:n}=t;try{switch(e){case o.UniverInstanceType.SHEET:return!!this._univerInstanceService.createSheet(n);default:throw new Error(`[WebWorkerRemoteInstanceService]: cannot create replica for document type: ${e}.`)}}catch(s){throw s instanceof Error?s:new TypeError(`${s}`)}}async disposeInstance(t){return this._univerInstanceService.disposeDocument(t.unitID)}_applyMutation(t){const{id:e,params:n}=t;return this._commandService.hasCommand(e)?this._commandService.syncExecuteCommand(e,n,{onlyLocal:!0,fromSync:!0}):(this._logService.debug("[RemoteInstanceReplicaService]",`command "${e}" not found. Skip sync mutation.`),!0)}},i.WebWorkerRemoteInstanceService=D([C(0,o.IUniverInstanceService),C(1,o.ICommandService),C(2,o.ILogService)],i.WebWorkerRemoteInstanceService);function M(a){const t=a;return new class{call(e,n){const s=t[e];if(typeof s=="function"){let r=s.apply(t,[n]);return r instanceof Promise||(r=Promise.resolve(r)),r}throw new Error(`[RPC]: method not found for ${e}!`)}subscribe(e,n){const s=t[e];if(typeof s=="function"){const r=s.apply(t,n);return d.isObservable(r)?r:d.of(r)}throw new Error(`[RPC]: observable method not found for ${e}!`)}}}function E(a){return new Proxy({},{get(t,e){if(e!=="dispose")return function(...n){return k(e)?a.subscribe(e,n[0]):a.call(e,n[0])}}})}function k(a){return a.endsWith("$")}class O extends o.RxDisposable{constructor(e){super();u(this,"_initialized",new d.BehaviorSubject(!1));u(this,"_lastRequestCounter",0);u(this,"_pendingRequests",new Map);u(this,"_pendingSubscriptions",new Map);this._protocol=e,this._protocol.onMessage.pipe(v.takeUntil(this.dispose$)).subscribe(n=>this._onMessage(n))}getChannel(e){const n=this;return{call(s,r){return n._disposed?Promise.reject():n._remoteCall(e,s,r)},subscribe(s,r){if(n._disposed)throw new Error("[ChannelClient]: client is disposed!");return n._remoteSubscribe(e,s,r)}}}_whenReady(){return d.firstValueFrom(this._initialized.pipe(v.filter(e=>e),v.take(1)))}async _remoteCall(e,n,s){await this._whenReady();const r=++this._lastRequestCounter,_={seq:r,type:100,channelName:e,method:n,args:s},h=this;return new Promise((U,f)=>{const X={handle(q){switch(q.type){case 201:h._pendingRequests.delete(r),U(q.data);break;case 202:h._pendingRequests.delete(r),f(q.data);break;default:throw new Error("[ChannelClient]: unknown response type!")}}};this._pendingRequests.set(r,X),this._sendRequest(_)})}_remoteSubscribe(e,n,s){return new d.Observable(r=>{let c=-1;return this._whenReady().then(()=>{c=++this._lastRequestCounter;const h={seq:c,type:101,channelName:e,method:n,args:s},U={handle(f){switch(f.type){case 300:r.next(f.data);break;case 301:r.error(f.data);break;case 302:r.complete();break;default:throw new Error("[ChannelClient]: unknown response type!")}}};this._pendingRequests.set(c,U),this._sendRequest(h)}),()=>{if(c===-1)return;const _={type:102,seq:c,channelName:e,method:n};this._sendRequest(_)}})}_sendRequest(e){this._protocol.send(e)}_onMessage(e){var n;switch(e.type){case 0:this._initialized.next(!0);break;case 201:case 202:case 300:case 302:case 301:(n=this._pendingRequests.get(e.seq))==null||n.handle(e);break}}}class j extends o.RxDisposable{constructor(e){super();u(this,"_channels",new Map);u(this,"_subscriptions",new Map);this._protocol=e,this._protocol.onMessage.pipe(v.takeUntil(this.dispose$)).subscribe(n=>this._onRequest(n)),this._sendResponse({seq:-1,type:0})}registerChannel(e,n){this._channels.set(e,n)}_onRequest(e){switch(e.type){case 100:this._onMethodCall(e);break;case 101:this._onSubscribe(e);break;case 102:this._onUnsubscribe(e);break}}_onMethodCall(e){const{channelName:n,method:s,args:r}=e,c=this._channels.get(n);let _;try{if(!c)throw new Error(`[ChannelServer]: Channel ${n} not found!`);_=c.call(s,r)}catch(h){_=Promise.reject(h)}_.then(h=>{this._sendResponse({seq:e.seq,type:201,data:h})}).catch(h=>{h instanceof Error?this._sendResponse({seq:e.seq,type:202,data:h.message}):this._sendResponse({seq:e.seq,type:202,data:String(h)})})}_onSubscribe(e){const{channelName:n,seq:s}=e,r=this._channels.get(n);try{if(!r)throw new Error(`[ChannelServer]: Channel ${n} not found!`);const _=r.subscribe(e.method,e.args).subscribe({next:h=>{this._sendResponse({seq:s,type:300,data:h})},error:h=>{this._sendResponse({seq:s,type:301,data:h.message}),this._sendResponse({seq:s,type:302})},complete:()=>{this._sendResponse({seq:s,type:302})}});this._subscriptions.set(e.seq,_)}catch(c){c instanceof Error?this._sendResponse({seq:e.seq,type:301,data:c.message}):this._sendResponse({seq:e.seq,type:301,data:String(c)})}}_onUnsubscribe(e){const n=this._subscriptions.get(e.seq);n&&(n.unsubscribe(),this._subscriptions.delete(e.seq))}_sendResponse(e){this._protocol.send(e)}}const p=l.createIdentifier("IRPCChannelService");class I{constructor(t){u(this,"_client");u(this,"_server");this._client=new O(t),this._server=new j(t)}requestChannel(t){return this._client.getChannel(t)}registerChannel(t,e){this._server.registerChannel(t,e)}}var N=Object.defineProperty,A=Object.getOwnPropertyDescriptor,H=(a,t,e,n)=>{for(var s=n>1?void 0:n?A(t,e):t,r=a.length-1,c;r>=0;r--)(c=a[r])&&(s=(n?c(t,e,s):c(s))||s);return n&&s&&N(t,e,s),s},y=(a,t)=>(e,n)=>t(e,n,a);i.DataSyncPrimaryController=class extends o.RxDisposable{constructor(e,n,s,r,c){super();u(this,"_remoteInstanceService");u(this,"_syncingUnits",new Set);this._injector=e,this._commandService=n,this._univerInstanceService=s,this._rpcChannelService=r,this._remoteSyncService=c,this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(R,M(this._remoteSyncService)),this._injector.add([S,{useFactory:()=>E(this._rpcChannelService.requestChannel(b))}]),this._remoteInstanceService=this._injector.get(S)}_init(){this._univerInstanceService.sheetAdded$.pipe(v.takeUntil(this.dispose$)).subscribe(e=>{this._syncingUnits.add(e.getUnitId()),this._remoteInstanceService.createInstance({unitID:e.getUnitId(),type:o.UniverInstanceType.SHEET,snapshot:e.getSnapshot()})}),this._univerInstanceService.sheetDisposed$.pipe(v.takeUntil(this.dispose$)).subscribe(e=>{this._syncingUnits.delete(e.getUnitId()),this._remoteInstanceService.disposeInstance({unitID:e.getUnitId()})}),this.disposeWithMe(this._commandService.onCommandExecuted((e,n)=>{const{type:s,params:r}=e,c=(r==null?void 0:r.unitId)||"";s===o.CommandType.MUTATION&&(!c||this._syncingUnits.has(c))&&!(n!=null&&n.fromSync)&&this._remoteInstanceService.syncMutation({mutationInfo:e})}))}},i.DataSyncPrimaryController=H([o.OnLifecycle(o.LifecycleStages.Starting,i.DataSyncPrimaryController),y(0,l.Inject(l.Injector)),y(1,o.ICommandService),y(2,o.IUniverInstanceService),y(3,p),y(4,m)],i.DataSyncPrimaryController);var F=Object.defineProperty,z=Object.getOwnPropertyDescriptor,V=(a,t,e,n)=>{for(var s=n>1?void 0:n?z(t,e):t,r=a.length-1,c;r>=0;r--)(c=a[r])&&(s=(n?c(t,e,s):c(s))||s);return n&&s&&F(t,e,s),s},g=(a,t)=>(e,n)=>t(e,n,a);i.DataSyncReplicaController=class extends o.Disposable{constructor(e,n,s,r){super();u(this,"_remoteSyncService");this._injector=e,this._remoteInstanceService=n,this._commandService=s,this._rpcChannelService=r,this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(b,M(this._remoteInstanceService)),this._injector.add([m,{useFactory:()=>E(this._rpcChannelService.requestChannel(R))}]),this._remoteSyncService=this._injector.get(m)}_init(){this.disposeWithMe(this._commandService.onCommandExecuted((e,n)=>{e.type===o.CommandType.MUTATION&&!(n!=null&&n.fromSync)&&this._remoteSyncService.syncMutation({mutationInfo:e})}))}},i.DataSyncReplicaController=V([o.OnLifecycle(o.LifecycleStages.Starting,i.DataSyncReplicaController),g(0,l.Inject(l.Injector)),g(1,S),g(2,o.ICommandService),g(3,p)],i.DataSyncReplicaController);function G(){return{send(a){postMessage(a)},onMessage:new d.Observable(a=>{const t=e=>{a.next(e.data)};return addEventListener("message",t),()=>removeEventListener("message",t)}).pipe(d.shareReplay(1))}}function B(a){return{send(t){a.postMessage(t)},onMessage:new d.Observable(t=>{const e=n=>{t.next(n.data)};return a.addEventListener("message",e),()=>a.removeEventListener("message",e)}).pipe(d.shareReplay(1))}}var J=Object.defineProperty,Q=Object.getOwnPropertyDescriptor,W=(a,t,e,n)=>{for(var s=n>1?void 0:n?Q(t,e):t,r=a.length-1,c;r>=0;r--)(c=a[r])&&(s=(n?c(t,e,s):c(s))||s);return n&&s&&J(t,e,s),s},T=(a,t)=>(e,n)=>t(e,n,a);i.UniverRPCMainThreadPlugin=(P=class extends o.Plugin{constructor(t,e){super("UNIVER_RPC_MAIN_THREAD_PLUGIN"),this._config=t,this._injector=e}async onStarting(t){const{workerURL:e}=this._config,n=e instanceof Worker?e:new Worker(e),s=B(n);[[p,{useFactory:()=>new I(s)}],[i.DataSyncPrimaryController],[m,{useClass:i.RemoteSyncPrimaryService}]].forEach(c=>t.add(c)),t.get(i.DataSyncPrimaryController)}},u(P,"type",o.PluginType.Univer),P),i.UniverRPCMainThreadPlugin=W([T(1,l.Inject(l.Injector))],i.UniverRPCMainThreadPlugin),i.UniverRPCWorkerThreadPlugin=(w=class extends o.Plugin{constructor(t,e){super("UNIVER_RPC_WORKER_THREAD_PLUGIN"),this._config=t,this._injector=e}onStarting(t){[[i.DataSyncReplicaController],[p,{useFactory:()=>new I(G())}],[S,{useClass:i.WebWorkerRemoteInstanceService}]].forEach(e=>t.add(e)),t.get(i.DataSyncReplicaController)}},u(w,"type",o.PluginType.Univer),w),i.UniverRPCWorkerThreadPlugin=W([T(1,l.Inject(l.Injector))],i.UniverRPCWorkerThreadPlugin),i.ChannelClient=O,i.ChannelServer=j,i.ChannelService=I,i.IRPCChannelService=p,i.IRemoteInstanceService=S,i.IRemoteSyncService=m,i.RemoteInstanceServiceName=b,i.RemoteSyncServiceName=R,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
(function(i,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("@univerjs/core"),require("@wendellhu/redi"),require("rxjs/operators"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@wendellhu/redi","rxjs/operators","rxjs"],o):(i=typeof globalThis<"u"?globalThis:i||self,o(i.UniverRpc={},i.UniverCore,i["@wendellhu/redi"],i.rxjs.operators,i.rxjs))})(this,function(i,o,l,v,d){"use strict";var Y=Object.defineProperty;var Z=(i,o,l)=>o in i?Y(i,o,{enumerable:!0,configurable:!0,writable:!0,value:l}):i[o]=l;var u=(i,o,l)=>(Z(i,typeof o!="symbol"?o+"":o,l),l);var P,w;var $=Object.defineProperty,N=Object.getOwnPropertyDescriptor,q=(a,t,e,n)=>{for(var s=n>1?void 0:n?N(t,e):t,r=a.length-1,c;r>=0;r--)(c=a[r])&&(s=(n?c(t,e,s):c(s))||s);return n&&s&&$(t,e,s),s},m=(a,t)=>(e,n)=>t(e,n,a);const R="rpc.remote-sync.service",p=l.createIdentifier(R);i.RemoteSyncPrimaryService=class{constructor(t){this._commandService=t}async syncMutation(t){return this._commandService.syncExecuteCommand(t.mutationInfo.id,t.mutationInfo.params,{onlyLocal:!0,fromSync:!0})}},i.RemoteSyncPrimaryService=q([m(0,o.ICommandService)],i.RemoteSyncPrimaryService);const b="univer.remote-instance-service",S=l.createIdentifier(b);i.WebWorkerRemoteInstanceService=class{constructor(t,e,n,s){this._injector=t,this._univerInstanceService=e,this._commandService=n,this._logService=s}whenReady(){return Promise.resolve(!0)}async syncMutation(t){return this._applyMutation(t.mutationInfo)}async createInstance(t){const{type:e,snapshot:n}=t;try{switch(e){case o.UniverInstanceType.UNIVER_SHEET:return this._univerInstanceService.createUnit(o.UniverInstanceType.UNIVER_SHEET,n),!0;default:throw new Error(`[WebWorkerRemoteInstanceService]: cannot create replica for document type: ${e}.`)}}catch(s){throw s instanceof Error?s:new TypeError(`${s}`)}}async disposeInstance(t){return this._univerInstanceService.disposeUnit(t.unitID)}_applyMutation(t){const{id:e,params:n}=t;return this._commandService.hasCommand(e)?this._commandService.syncExecuteCommand(e,n,{onlyLocal:!0,fromSync:!0}):(this._logService.debug("[RemoteInstanceReplicaService]",`command "${e}" not found. Skip sync mutation.`),!0)}},i.WebWorkerRemoteInstanceService=q([m(0,l.Inject(l.Injector)),m(1,o.IUniverInstanceService),m(2,o.ICommandService),m(3,o.ILogService)],i.WebWorkerRemoteInstanceService);function M(a){const t=a;return new class{call(e,n){const s=t[e];if(typeof s=="function"){let r=s.apply(t,[n]);return r instanceof Promise||(r=Promise.resolve(r)),r}throw new Error(`[RPC]: method not found for ${e}!`)}subscribe(e,n){const s=t[e];if(typeof s=="function"){const r=s.apply(t,n);return d.isObservable(r)?r:d.of(r)}throw new Error(`[RPC]: observable method not found for ${e}!`)}}}function D(a){return new Proxy({},{get(t,e){if(e!=="dispose")return function(...n){return L(e)?a.subscribe(e,n[0]):a.call(e,n[0])}}})}function L(a){return a.endsWith("$")}class O extends o.RxDisposable{constructor(e){super();u(this,"_initialized",new d.BehaviorSubject(!1));u(this,"_lastRequestCounter",0);u(this,"_pendingRequests",new Map);u(this,"_pendingSubscriptions",new Map);this._protocol=e,this._protocol.onMessage.pipe(v.takeUntil(this.dispose$)).subscribe(n=>this._onMessage(n))}getChannel(e){const n=this;return{call(s,r){return n._disposed?Promise.reject():n._remoteCall(e,s,r)},subscribe(s,r){if(n._disposed)throw new Error("[ChannelClient]: client is disposed!");return n._remoteSubscribe(e,s,r)}}}_whenReady(){return d.firstValueFrom(this._initialized.pipe(v.filter(e=>e),v.take(1)))}async _remoteCall(e,n,s){await this._whenReady();const r=++this._lastRequestCounter,_={seq:r,type:100,channelName:e,method:n,args:s},h=this;return new Promise((U,C)=>{const X={handle(E){switch(E.type){case 201:h._pendingRequests.delete(r),U(E.data);break;case 202:h._pendingRequests.delete(r),C(E.data);break;default:throw new Error("[ChannelClient]: unknown response type!")}}};this._pendingRequests.set(r,X),this._sendRequest(_)})}_remoteSubscribe(e,n,s){return new d.Observable(r=>{let c=-1;return this._whenReady().then(()=>{c=++this._lastRequestCounter;const h={seq:c,type:101,channelName:e,method:n,args:s},U={handle(C){switch(C.type){case 300:r.next(C.data);break;case 301:r.error(C.data);break;case 302:r.complete();break;default:throw new Error("[ChannelClient]: unknown response type!")}}};this._pendingRequests.set(c,U),this._sendRequest(h)}),()=>{if(c===-1)return;const _={type:102,seq:c,channelName:e,method:n};this._sendRequest(_)}})}_sendRequest(e){this._protocol.send(e)}_onMessage(e){var n;switch(e.type){case 0:this._initialized.next(!0);break;case 201:case 202:case 300:case 302:case 301:(n=this._pendingRequests.get(e.seq))==null||n.handle(e);break}}}class T extends o.RxDisposable{constructor(e){super();u(this,"_channels",new Map);u(this,"_subscriptions",new Map);this._protocol=e,this._protocol.onMessage.pipe(v.takeUntil(this.dispose$)).subscribe(n=>this._onRequest(n)),this._sendResponse({seq:-1,type:0})}registerChannel(e,n){this._channels.set(e,n)}_onRequest(e){switch(e.type){case 100:this._onMethodCall(e);break;case 101:this._onSubscribe(e);break;case 102:this._onUnsubscribe(e);break}}_onMethodCall(e){const{channelName:n,method:s,args:r}=e,c=this._channels.get(n);let _;try{if(!c)throw new Error(`[ChannelServer]: Channel ${n} not found!`);_=c.call(s,r)}catch(h){_=Promise.reject(h)}_.then(h=>{this._sendResponse({seq:e.seq,type:201,data:h})}).catch(h=>{h instanceof Error?this._sendResponse({seq:e.seq,type:202,data:h.message}):this._sendResponse({seq:e.seq,type:202,data:String(h)})})}_onSubscribe(e){const{channelName:n,seq:s}=e,r=this._channels.get(n);try{if(!r)throw new Error(`[ChannelServer]: Channel ${n} not found!`);const _=r.subscribe(e.method,e.args).subscribe({next:h=>{this._sendResponse({seq:s,type:300,data:h})},error:h=>{this._sendResponse({seq:s,type:301,data:h.message}),this._sendResponse({seq:s,type:302})},complete:()=>{this._sendResponse({seq:s,type:302})}});this._subscriptions.set(e.seq,_)}catch(c){c instanceof Error?this._sendResponse({seq:e.seq,type:301,data:c.message}):this._sendResponse({seq:e.seq,type:301,data:String(c)})}}_onUnsubscribe(e){const n=this._subscriptions.get(e.seq);n&&(n.unsubscribe(),this._subscriptions.delete(e.seq))}_sendResponse(e){this._protocol.send(e)}}const y=l.createIdentifier("IRPCChannelService");class g{constructor(t){u(this,"_client");u(this,"_server");this._client=new O(t),this._server=new T(t)}requestChannel(t){return this._client.getChannel(t)}registerChannel(t,e){this._server.registerChannel(t,e)}}var k=Object.defineProperty,H=Object.getOwnPropertyDescriptor,V=(a,t,e,n)=>{for(var s=n>1?void 0:n?H(t,e):t,r=a.length-1,c;r>=0;r--)(c=a[r])&&(s=(n?c(t,e,s):c(s))||s);return n&&s&&k(t,e,s),s},f=(a,t)=>(e,n)=>t(e,n,a);i.DataSyncPrimaryController=class extends o.RxDisposable{constructor(e,n,s,r,c){super();u(this,"_remoteInstanceService");u(this,"_syncingUnits",new Set);this._injector=e,this._commandService=n,this._univerInstanceService=s,this._rpcChannelService=r,this._remoteSyncService=c,this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(R,M(this._remoteSyncService)),this._injector.add([S,{useFactory:()=>D(this._rpcChannelService.requestChannel(b))}]),this._remoteInstanceService=this._injector.get(S)}_init(){this._univerInstanceService.getTypeOfUnitAdded$(o.UniverInstanceType.UNIVER_SHEET).pipe(v.takeUntil(this.dispose$)).subscribe(e=>{this._syncingUnits.add(e.getUnitId()),this._remoteInstanceService.createInstance({unitID:e.getUnitId(),type:o.UniverInstanceType.UNIVER_SHEET,snapshot:e.getSnapshot()})}),this._univerInstanceService.getTypeOfUnitDisposed$(o.UniverInstanceType.UNIVER_SHEET).pipe(v.takeUntil(this.dispose$)).subscribe(e=>{this._syncingUnits.delete(e.getUnitId()),this._remoteInstanceService.disposeInstance({unitID:e.getUnitId()})}),this.disposeWithMe(this._commandService.onCommandExecuted((e,n)=>{const{type:s,params:r}=e,c=(r==null?void 0:r.unitId)||"";s===o.CommandType.MUTATION&&(!c||this._syncingUnits.has(c))&&!(n!=null&&n.fromSync)&&this._remoteInstanceService.syncMutation({mutationInfo:e})}))}},i.DataSyncPrimaryController=V([o.OnLifecycle(o.LifecycleStages.Starting,i.DataSyncPrimaryController),f(0,l.Inject(l.Injector)),f(1,o.ICommandService),f(2,o.IUniverInstanceService),f(3,y),f(4,p)],i.DataSyncPrimaryController);var A=Object.defineProperty,F=Object.getOwnPropertyDescriptor,z=(a,t,e,n)=>{for(var s=n>1?void 0:n?F(t,e):t,r=a.length-1,c;r>=0;r--)(c=a[r])&&(s=(n?c(t,e,s):c(s))||s);return n&&s&&A(t,e,s),s},I=(a,t)=>(e,n)=>t(e,n,a);i.DataSyncReplicaController=class extends o.Disposable{constructor(e,n,s,r){super();u(this,"_remoteSyncService");this._injector=e,this._remoteInstanceService=n,this._commandService=s,this._rpcChannelService=r,this._initRPCChannels(),this._init()}_initRPCChannels(){this._rpcChannelService.registerChannel(b,M(this._remoteInstanceService)),this._injector.add([p,{useFactory:()=>D(this._rpcChannelService.requestChannel(R))}]),this._remoteSyncService=this._injector.get(p)}_init(){this.disposeWithMe(this._commandService.onCommandExecuted((e,n)=>{e.type===o.CommandType.MUTATION&&!(n!=null&&n.fromSync)&&this._remoteSyncService.syncMutation({mutationInfo:e})}))}},i.DataSyncReplicaController=z([o.OnLifecycle(o.LifecycleStages.Starting,i.DataSyncReplicaController),I(0,l.Inject(l.Injector)),I(1,S),I(2,o.ICommandService),I(3,y)],i.DataSyncReplicaController);function G(){return{send(a){postMessage(a)},onMessage:new d.Observable(a=>{const t=e=>{a.next(e.data)};return addEventListener("message",t),()=>removeEventListener("message",t)}).pipe(d.shareReplay(1))}}function B(a){return{send(t){a.postMessage(t)},onMessage:new d.Observable(t=>{const e=n=>{t.next(n.data)};return a.addEventListener("message",e),()=>a.removeEventListener("message",e)}).pipe(d.shareReplay(1))}}var J=Object.defineProperty,Q=Object.getOwnPropertyDescriptor,j=(a,t,e,n)=>{for(var s=n>1?void 0:n?Q(t,e):t,r=a.length-1,c;r>=0;r--)(c=a[r])&&(s=(n?c(t,e,s):c(s))||s);return n&&s&&J(t,e,s),s},W=(a,t)=>(e,n)=>t(e,n,a);i.UniverRPCMainThreadPlugin=(P=class extends o.Plugin{constructor(t,e){super(),this._config=t,this._injector=e}async onStarting(t){const{workerURL:e}=this._config,n=e instanceof Worker?e:new Worker(e),s=B(n);[[y,{useFactory:()=>new g(s)}],[i.DataSyncPrimaryController],[p,{useClass:i.RemoteSyncPrimaryService}]].forEach(c=>t.add(c)),t.get(i.DataSyncPrimaryController)}},u(P,"pluginName","UNIVER_RPC_MAIN_THREAD_PLUGIN"),P),i.UniverRPCMainThreadPlugin=j([W(1,l.Inject(l.Injector))],i.UniverRPCMainThreadPlugin),i.UniverRPCWorkerThreadPlugin=(w=class extends o.Plugin{constructor(t,e){super(),this._config=t,this._injector=e}onStarting(t){[[i.DataSyncReplicaController],[y,{useFactory:()=>new g(G())}],[S,{useClass:i.WebWorkerRemoteInstanceService}]].forEach(e=>t.add(e)),t.get(i.DataSyncReplicaController)}},u(w,"pluginName","UNIVER_RPC_WORKER_THREAD_PLUGIN"),w),i.UniverRPCWorkerThreadPlugin=j([W(1,l.Inject(l.Injector))],i.UniverRPCWorkerThreadPlugin),i.ChannelClient=O,i.ChannelServer=T,i.ChannelService=g,i.IRPCChannelService=y,i.IRemoteInstanceService=S,i.IRemoteSyncService=p,i.RemoteInstanceServiceName=b,i.RemoteSyncServiceName=R,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
{
"name": "@univerjs/rpc",
"version": "0.1.7",
"version": "0.1.8",
"private": false,

@@ -52,14 +52,14 @@ "author": "DreamNum <developer@univer.ai>",

"peerDependencies": {
"@wendellhu/redi": "0.13.0",
"@wendellhu/redi": "^0.13.3",
"rxjs": ">=7.0.0",
"@univerjs/core": "0.1.7"
"@univerjs/core": "0.1.8"
},
"devDependencies": {
"@wendellhu/redi": "^0.13.0",
"@wendellhu/redi": "^0.13.3",
"rxjs": "^7.8.1",
"typescript": "^5.4.5",
"vite": "^5.2.8",
"vitest": "^1.4.0",
"@univerjs/shared": "0.1.7",
"@univerjs/core": "0.1.7"
"vite": "^5.2.10",
"vitest": "^1.5.0",
"@univerjs/core": "0.1.8",
"@univerjs/shared": "0.1.8"
},

@@ -66,0 +66,0 @@ "scripts": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc