@@ -4,16 +4,19 @@ import type {
44 CommandResult ,
55 Commands ,
66} from './call'
7- import { useRef } from '../utils/use-ref'
8-
9- export interface RPC < C extends Commands = any > {
10- id : number ,
11- name : C ,
12- args : CommandArgs < C > ,
7+ import useRef from 'sref'
8+ import { v7 as uuid } from 'uuid'
9+
10+ export interface RPCRequest < C extends Commands = any > {
11+ jsonrpc : '2.0' ,
12+ id : number | string ,
13+ method : C ,
14+ params : CommandArgs < C > ,
1315}
1416
15- export interface RPCResult < C extends Commands = any > {
16- id : number ,
17+ export interface RPCResponse < C extends Commands = any > {
18+ jsonrpc : '2.0' ,
19+ id : number | string ,
1720 result : CommandResult < C > ,
1821 error ?: undefined ,
1922}
@@ -29,7 +32,7 @@ export async function useWorkerRPC () {
2932 isLoading . value = true
3033
3134 try {
32- const { default : RpcWorker } = await import ( './worker?worker&inline ' )
35+ const { default : RpcWorker } = await import ( './worker?worker' )
3336
3437 worker . value = new RpcWorker ( { name : 'rpc-worker' } )
3538 } finally {
@@ -44,12 +47,12 @@ export function setWorkerRPC (worker_: Worker) {
4447 worker . value = worker_
4548}
4649
47- export async function callWorkerRPC < C extends Commands , A extends CommandArgs < C > > ( name : C , args : A ) {
48- const id = Date . now ( )
50+ export async function callWorkerRPC < C extends Commands , A extends CommandArgs < C > > ( method : C , params : A ) {
51+ const id = uuid ( )
4952 const worker = await useWorkerRPC ( )
5053
5154 return await new Promise < CommandResult < C > > ( ( resolve , reject ) => {
52- const onMessage = ( event : MessageEvent < RPCResult < C > > ) => {
55+ const onMessage = ( event : MessageEvent < RPCResponse < C > > ) => {
5356 if ( event . data . id === id ) {
5457 cleanUp ( )
5558
@@ -74,9 +77,10 @@ export async function callWorkerRPC<C extends Commands, A extends CommandArgs<C>
7477 worker . addEventListener ( 'error' , onError )
7578
7679 worker . postMessage ( {
77- id : id ,
78- name : name ,
79- args : args ,
80+ jsonrpc : '2.0' ,
81+ id : id ,
82+ method : method ,
83+ params : params ,
8084 } )
8185 } )
8286}
0 commit comments