@xentobias/worker-rpc 1.0.12 → 1.0.13

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.
Files changed (2) hide show
  1. package/dist/types.d.ts +10 -2
  2. package/package.json +1 -1
package/dist/types.d.ts CHANGED
@@ -75,14 +75,22 @@ export interface EndpointReleaseMessage extends BaseMessage {
75
75
  export type RpcMessage = CallMessage | ResultMessage | ErrorMessage | CallbackMessage | CallbackReleaseMessage | EndpointReleaseMessage;
76
76
  /** Unwrap a Promise type */
77
77
  export type Unpromise<T> = T extends Promise<infer U> ? U : T;
78
+ /**
79
+ * Transform first-level functions in a return value to async versions.
80
+ * This matches the runtime behavior where only first-level object properties
81
+ * are scanned for functions (for performance reasons).
82
+ */
83
+ export type RemoteReturnValue<T> = T extends (...args: infer A) => infer R ? (...args: A) => Promise<Unpromise<R>> : T extends object ? {
84
+ [K in keyof T]: T[K] extends (...args: infer A) => infer R ? (...args: A) => Promise<Unpromise<R>> : T[K];
85
+ } : T;
78
86
  /** Helper to convert a single property to its remote version */
79
- export type RemoteProperty<T> = T extends (...args: infer A) => infer R ? (...args: A) => Promise<Unpromise<R>> : T extends object ? RemoteObject<T> : T;
87
+ export type RemoteProperty<T> = T extends (...args: infer A) => infer R ? (...args: A) => Promise<RemoteReturnValue<Unpromise<R>>> : T extends object ? RemoteObject<T> : T;
80
88
  /** Convert an object type to its remote callable version */
81
89
  export type RemoteObject<T> = {
82
90
  [K in keyof T]: RemoteProperty<T[K]>;
83
91
  };
84
92
  /** Helper to convert a single property to its broadcast remote version */
85
- export type RemoteBroadcastProperty<T> = T extends (...args: infer A) => infer R ? (...args: A) => Promise<BroadcastResult<Unpromise<R>>> : T extends object ? RemoteBroadcastObject<T> : T;
93
+ export type RemoteBroadcastProperty<T> = T extends (...args: infer A) => infer R ? (...args: A) => Promise<BroadcastResult<RemoteReturnValue<Unpromise<R>>>> : T extends object ? RemoteBroadcastObject<T> : T;
86
94
  /** Convert an object type to its broadcast remote version (all methods return arrays) */
87
95
  export type RemoteBroadcastObject<T> = {
88
96
  [K in keyof T]: RemoteBroadcastProperty<T[K]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xentobias/worker-rpc",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "High-performance, type-safe RPC for Workers",
5
5
  "module": "src/index.ts",
6
6
  "main": "dist/index.js",