diff --git a/packages/client/package.json b/packages/client/package.json index 52f96bbc..b2f9b6c4 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@rspc/client", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "A blazingly fast and easy to use TRPC-like server for Rust.", "keywords": [], "author": "Oscar Beaumont", diff --git a/packages/client/src/links/wsLink.ts b/packages/client/src/links/wsLink.ts index 9960288b..071a44f0 100644 --- a/packages/client/src/links/wsLink.ts +++ b/packages/client/src/links/wsLink.ts @@ -72,6 +72,7 @@ export function _internal_wsLinkInternal([activeMap, send]: ReturnType< return { exec: async (resolve, reject) => { activeMap.set(id, { + oneshot: op.method !== "subscription", resolve, reject, }); @@ -115,6 +116,8 @@ function newWsManager(opts: WsLinkOpts) { const activeMap = new Map< number, { + // Should delete after first response + oneshot: boolean; resolve: (result: any) => void; reject: (error: Error | RSPCError) => void; } @@ -138,7 +141,10 @@ function newWsManager(opts: WsLinkOpts) { resolve: item.resolve, reject: item.reject, }); - if (result.type === "value" || result.type === "complete") + if ( + (item.oneshot && result.type === "value") || + result.type === "complete" + ) activeMap.delete(result.id); } }); diff --git a/packages/react/package.json b/packages/react/package.json index e853c49b..03c1a848 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@rspc/react", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "A blazingly fast and easy to use TRPC-like server for Rust.", "keywords": [], "author": "Oscar Beaumont", diff --git a/packages/tauri/package.json b/packages/tauri/package.json index 199a76a4..6b949a23 100644 --- a/packages/tauri/package.json +++ b/packages/tauri/package.json @@ -1,6 +1,6 @@ { "name": "@rspc/tauri", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "A blazingly fast and easy to use TRPC-like server for Rust.", "keywords": [], "author": "Oscar Beaumont", diff --git a/packages/tauri/src/index.ts b/packages/tauri/src/index.ts index 20eaa00c..cec71ca6 100644 --- a/packages/tauri/src/index.ts +++ b/packages/tauri/src/index.ts @@ -20,6 +20,7 @@ function newWsManager() { const activeMap = new Map< number, { + oneshot: boolean; resolve: (result: any) => void; reject: (error: Error | RSPCError) => void; } @@ -42,7 +43,10 @@ function newWsManager() { resolve: item.resolve, reject: item.reject, }); - if (result.type === "value" || result.type === "complete") + if ( + (item.oneshot && result.type === "value") || + result.type === "complete" + ) activeMap.delete(result.id); } });