@toyz/loom-rpc 0.2.2 → 0.3.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.
package/README.md CHANGED
@@ -61,7 +61,7 @@ class UserProfile extends LoomElement {
61
61
  fn: el => [el.userId], // args from element state — re-fetches on change
62
62
  staleTime: 60_000, // SWR: cache for 1 minute
63
63
  })
64
- accessor user!: ApiState<User>;
64
+ accessor user!: RpcQuery<[string], User>;
65
65
 
66
66
  update() {
67
67
  return this.user.match({
@@ -110,7 +110,7 @@ class EditProfile extends LoomElement {
110
110
 
111
111
  ### `@rpc(Router, method, opts?)`
112
112
 
113
- Auto-accessor decorator for queries. Returns `ApiState<T>` with `.match()`, `.unwrap()`, `.refetch()`, `.invalidate()`.
113
+ Auto-accessor decorator for queries. Returns `RpcQuery<TArgs, TReturn>` with `.match()`, `.unwrap()`, `.refetch()`, `.invalidate()`. Also accepts `ApiState<T>` for backwards compatibility.
114
114
 
115
115
  | Option | Type | Default | Description |
116
116
  | ----------- | -------------- | ------- | ----------------------------------------- |
@@ -232,13 +232,14 @@ Everything is inferred from the contract class:
232
232
  ```ts
233
233
  @rpc(UserRouter, "getUser", { fn: el => [el.userId] })
234
234
  // ↑ autocompleted ↑ must be [string]
235
- accessor user!: ApiState<User>;
235
+ accessor user!: RpcQuery<[string], User>;
236
236
  // ↑ inferred from UserRouter.getUser return type
237
237
  ```
238
238
 
239
239
  - Method names are autocompleted and type-checked
240
240
  - Argument types are inferred from the contract method parameters
241
- - Return types flow into `ApiState<T>` automatically
241
+ - Return types flow into `RpcQuery<TArgs, TReturn>` automatically
242
+ - `ApiState<T>` still accepted for backwards compatibility
242
243
  - Pass the wrong types? Compile error.
243
244
 
244
245
  ---
package/dist/index.d.ts CHANGED
@@ -8,5 +8,5 @@ export { rpc } from "./rpc";
8
8
  export { mutate } from "./mutate";
9
9
  export { service, SERVICE_NAME } from "./service";
10
10
  export { RpcTransport, HttpTransport, RpcError } from "./transport";
11
- export type { RpcMethods, InferArgs, InferReturn, RpcQueryOptions, RpcMutator, RpcRequest, RpcResponse, } from "./types";
11
+ export type { RpcMethods, InferArgs, InferReturn, RpcQueryOptions, RpcMutator, RpcQuery, RpcRequest, RpcResponse, } from "./types";
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGpE,YAAY,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGpE,YAAY,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,EACf,UAAU,EACV,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK9E,yCAAyC;AACzC,eAAO,MAAM,aAAa,0CAAgC,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CACpB,OAAO,SAAS,MAAM,EACtB,OAAO,SAAS,UAAU,CAAC,OAAO,CAAC,EAEnC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EACvC,MAAM,EAAE,OAAO,IAMP,IAAI,SAAS,MAAM,EACzB,SAAS,4BAA4B,CAAC,IAAI,EAAE,UAAU,CAAC,oCAAc,GAAG,EAAE,iCAAW,6BAAO,gCAAU,CAAC,EACvG,SAAS,6BAA6B,CAAC,IAAI,EAAE,UAAU,CAAC,oCAAc,GAAG,EAAE,iCAAW,6BAAO,gCAAU,CAAC,KACvG,4BAA4B,CAAC,IAAI,EAAE,UAAU,CAAC,oCAAc,GAAG,EAAE,iCAAW,6BAAO,gCAAU,CAAC,CAkClG"}
1
+ {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK9E,yCAAyC;AACzC,eAAO,MAAM,aAAa,0CAAgC,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CACpB,OAAO,SAAS,MAAM,EACtB,OAAO,SAAS,UAAU,CAAC,OAAO,CAAC,EAEnC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EACvC,MAAM,EAAE,OAAO,IAMP,IAAI,SAAS,MAAM,EACzB,SAAS,4BAA4B,CAAC,IAAI,EAAE,UAAU,CAAC,oCAAc,GAAG,EAAE,iCAAW,6BAAO,gCAAU,CAAC,EACvG,SAAS,6BAA6B,CAAC,IAAI,EAAE,UAAU,CAAC,oCAAc,GAAG,EAAE,iCAAW,6BAAO,gCAAU,CAAC,KACvG,4BAA4B,CAAC,IAAI,EAAE,UAAU,CAAC,oCAAc,GAAG,EAAE,iCAAW,6BAAO,gCAAU,CAAC,CA6ClG"}
package/dist/mutate.js CHANGED
@@ -51,6 +51,16 @@ export function mutate(router, method) {
51
51
  sentinel.subscribe(() => this.scheduleUpdate?.());
52
52
  const notify = () => { sentinel.set((v) => v + 1); };
53
53
  this[stateKey] = createMutator(routerName, method, notify);
54
+ // Wire @watch handlers for this accessor
55
+ const WATCHERS = createSymbol("watch");
56
+ const watchers = this[WATCHERS.key];
57
+ if (watchers) {
58
+ for (const w of watchers) {
59
+ if (w.field === accessorName) {
60
+ sentinel.subscribe(() => this[w.key](this[stateKey], undefined));
61
+ }
62
+ }
63
+ }
54
64
  }
55
65
  // Read sentinel so traced update() sees the dependency
56
66
  this[traceKey].value;
@@ -1 +1 @@
1
- {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"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"}
package/dist/rpc.d.ts CHANGED
@@ -2,37 +2,36 @@
2
2
  * LoomRPC — @rpc query decorator
3
3
  *
4
4
  * Auto-accessor decorator for type-safe RPC queries.
5
- * Reuses Loom's ApiState pattern under the hood.
5
+ * Returns an RpcQuery<TArgs, TReturn> with .match(), .unwrap(), .refetch(), etc.
6
6
  *
7
7
  * ```ts
8
8
  * @rpc(UserRouter, "getUser", {
9
9
  * fn: el => [el.userId],
10
10
  * staleTime: 60_000,
11
11
  * })
12
- * accessor user!: ApiState<User>;
12
+ * accessor user!: RpcQuery<[string], User>;
13
13
  * ```
14
14
  *
15
15
  * The contract class is passed as a runtime value (not just a type)
16
16
  * so the router name survives TypeScript erasure.
17
17
  */
18
- import type { ApiState } from "@toyz/loom";
19
- import type { RpcMethods, InferReturn, RpcQueryOptions } from "./types";
18
+ import type { RpcMethods, InferArgs, InferReturn, RpcQueryOptions, RpcQuery } from "./types";
20
19
  /** Symbol for inspect() introspection */
21
20
  export declare const RPC_QUERIES: import("@toyz/loom").LoomSymbol<unknown>;
22
21
  /**
23
22
  * @rpc(Router, method, opts?) — Query decorator
24
23
  *
25
24
  * Fetches data from the server via the registered RpcTransport.
26
- * Returns an ApiState<T> with .match(), .unwrap(), .refetch(), etc.
25
+ * Returns an RpcQuery<TArgs, TReturn> with .match(), .unwrap(), .refetch(), etc.
27
26
  *
28
27
  * ```ts
29
28
  * @rpc(UserRouter, "getUser", { fn: el => [el.userId], staleTime: 60_000 })
30
- * accessor user!: ApiState<User>;
29
+ * accessor user!: RpcQuery<[string], User>;
31
30
  * ```
32
31
  *
33
32
  * @param router - The contract class (used for router name + type inference)
34
33
  * @param method - The method name on the contract to call
35
34
  * @param opts - Optional configuration (fn, staleTime, retry, eager)
36
35
  */
37
- export declare function rpc<TRouter extends object, TMethod extends RpcMethods<TRouter>>(router: new (...args: any[]) => TRouter, method: TMethod, opts?: RpcQueryOptions<TRouter, TMethod>): <This extends object>(_target: ClassAccessorDecoratorTarget<This, ApiState<InferReturn<TRouter, TMethod>>>, context: ClassAccessorDecoratorContext<This, ApiState<InferReturn<TRouter, TMethod>>>) => ClassAccessorDecoratorResult<This, ApiState<InferReturn<TRouter, TMethod>>>;
36
+ export declare function rpc<TRouter extends object, TMethod extends RpcMethods<TRouter>>(router: new (...args: any[]) => TRouter, method: TMethod, opts?: RpcQueryOptions<TRouter, TMethod>): <This extends object>(_target: ClassAccessorDecoratorTarget<This, RpcQuery<InferArgs<TRouter, TMethod> extends any[] ? InferArgs<TRouter, TMethod> : [InferArgs<TRouter, TMethod>], InferReturn<TRouter, TMethod>>>, context: ClassAccessorDecoratorContext<This, RpcQuery<InferArgs<TRouter, TMethod> extends any[] ? InferArgs<TRouter, TMethod> : [InferArgs<TRouter, TMethod>], InferReturn<TRouter, TMethod>>>) => ClassAccessorDecoratorResult<This, RpcQuery<InferArgs<TRouter, TMethod> extends any[] ? InferArgs<TRouter, TMethod> : [InferArgs<TRouter, TMethod>], InferReturn<TRouter, TMethod>>>;
38
37
  //# sourceMappingURL=rpc.d.ts.map
package/dist/rpc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAKxE,yCAAyC;AACzC,eAAO,MAAM,WAAW,0CAA8B,CAAC;AAEvD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CACjB,OAAO,SAAS,MAAM,EACtB,OAAO,SAAS,UAAU,CAAC,OAAO,CAAC,EAEnC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EACvC,MAAM,EAAE,OAAO,EACf,IAAI,CAAC,EAAE,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,IAKhC,IAAI,SAAS,MAAM,EACzB,SAAS,4BAA4B,CAAC,IAAI,EAAE,QAAQ,+BAAS,CAAC,EAC9D,SAAS,6BAA6B,CAAC,IAAI,EAAE,QAAQ,+BAAS,CAAC,KAC9D,4BAA4B,CAAC,IAAI,EAAE,QAAQ,+BAAS,CAAC,CAoCzD"}
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK7F,yCAAyC;AACzC,eAAO,MAAM,WAAW,0CAA8B,CAAC;AAEvD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CACjB,OAAO,SAAS,MAAM,EACtB,OAAO,SAAS,UAAU,CAAC,OAAO,CAAC,EAEnC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EACvC,MAAM,EAAE,OAAO,EACf,IAAI,CAAC,EAAE,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,IAMhC,IAAI,SAAS,MAAM,EACzB,SAAS,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC,oCAAc,GAAG,EAAE,iCAAW,6BAAO,gCAAU,CAAC,EACrG,SAAS,6BAA6B,CAAC,IAAI,EAAE,QAAQ,CAAC,oCAAc,GAAG,EAAE,iCAAW,6BAAO,gCAAU,CAAC,KACrG,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC,oCAAc,GAAG,EAAE,iCAAW,6BAAO,gCAAU,CAAC,CA+ChG"}
package/dist/rpc.js CHANGED
@@ -2,14 +2,14 @@
2
2
  * LoomRPC — @rpc query decorator
3
3
  *
4
4
  * Auto-accessor decorator for type-safe RPC queries.
5
- * Reuses Loom's ApiState pattern under the hood.
5
+ * Returns an RpcQuery<TArgs, TReturn> with .match(), .unwrap(), .refetch(), etc.
6
6
  *
7
7
  * ```ts
8
8
  * @rpc(UserRouter, "getUser", {
9
9
  * fn: el => [el.userId],
10
10
  * staleTime: 60_000,
11
11
  * })
12
- * accessor user!: ApiState<User>;
12
+ * accessor user!: RpcQuery<[string], User>;
13
13
  * ```
14
14
  *
15
15
  * The contract class is passed as a runtime value (not just a type)
@@ -26,11 +26,11 @@ export const RPC_QUERIES = createSymbol("rpc:queries");
26
26
  * @rpc(Router, method, opts?) — Query decorator
27
27
  *
28
28
  * Fetches data from the server via the registered RpcTransport.
29
- * Returns an ApiState<T> with .match(), .unwrap(), .refetch(), etc.
29
+ * Returns an RpcQuery<TArgs, TReturn> with .match(), .unwrap(), .refetch(), etc.
30
30
  *
31
31
  * ```ts
32
32
  * @rpc(UserRouter, "getUser", { fn: el => [el.userId], staleTime: 60_000 })
33
- * accessor user!: ApiState<User>;
33
+ * accessor user!: RpcQuery<[string], User>;
34
34
  * ```
35
35
  *
36
36
  * @param router - The contract class (used for router name + type inference)
@@ -56,6 +56,16 @@ export function rpc(router, method, opts) {
56
56
  sentinel.subscribe(() => this.scheduleUpdate?.());
57
57
  const notify = () => { sentinel.set((v) => v + 1); };
58
58
  this[stateKey] = createRpcState(routerName, method, opts, notify, this);
59
+ // Wire @watch handlers for this accessor
60
+ const WATCHERS = createSymbol("watch");
61
+ const watchers = this[WATCHERS.key];
62
+ if (watchers) {
63
+ for (const w of watchers) {
64
+ if (w.field === accessorName) {
65
+ sentinel.subscribe(() => this[w.key](this[stateKey], undefined));
66
+ }
67
+ }
68
+ }
59
69
  }
60
70
  // Read sentinel so traced update() sees the dependency
61
71
  this[traceKey].value;
@@ -68,7 +78,7 @@ export function rpc(router, method, opts) {
68
78
  };
69
79
  }
70
80
  /**
71
- * Internal state factory — mirrors createApiState but uses RpcTransport.
81
+ * Internal state factory — creates an RpcQuery via RpcTransport.
72
82
  */
73
83
  function createRpcState(routerName, method, opts, scheduleUpdate, host) {
74
84
  let data;
@@ -78,10 +88,15 @@ function createRpcState(routerName, method, opts, scheduleUpdate, host) {
78
88
  let lastFetchTime = 0;
79
89
  let lastArgs;
80
90
  let fetching = false;
91
+ let controller = null;
81
92
  const staleTime = opts?.staleTime ?? 0;
82
93
  const maxRetries = opts?.retry ?? 0;
83
94
  const eager = opts?.eager ?? true;
84
95
  async function runFetch() {
96
+ // Abort any in-flight request
97
+ controller?.abort();
98
+ controller = new AbortController();
99
+ const { signal } = controller;
85
100
  let transport;
86
101
  try {
87
102
  transport = app.get(RpcTransport);
@@ -109,7 +124,7 @@ function createRpcState(routerName, method, opts, scheduleUpdate, host) {
109
124
  let attempt = 0;
110
125
  while (true) {
111
126
  try {
112
- data = await transport.call(routerName, method, args);
127
+ data = await transport.call(routerName, method, args, signal);
113
128
  error = undefined;
114
129
  loading = false;
115
130
  fetching = false;
@@ -118,6 +133,10 @@ function createRpcState(routerName, method, opts, scheduleUpdate, host) {
118
133
  return;
119
134
  }
120
135
  catch (e) {
136
+ if (signal.aborted) {
137
+ fetching = false;
138
+ return; // Superseded by a newer fetch — silently stop
139
+ }
121
140
  attempt++;
122
141
  if (attempt > maxRetries) {
123
142
  error = e instanceof Error ? e : new Error(String(e));
package/dist/rpc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
package/dist/testing.d.ts CHANGED
@@ -40,7 +40,7 @@ export declare class MockTransport extends RpcTransport {
40
40
  assertCalled(router: RouterIdent, method: string, args?: any[]): void;
41
41
  /** Assert a specific call was NOT made */
42
42
  assertNotCalled(router: RouterIdent, method: string): void;
43
- call<T>(router: string, method: string, args: any[]): Promise<T>;
43
+ call<T>(router: string, method: string, args: any[], _signal?: AbortSignal): Promise<T>;
44
44
  }
45
45
  export {};
46
46
  //# sourceMappingURL=testing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,KAAK,WAAW,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAE1D,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,KAAK,CAA8D;IAC3E,OAAO,CAAC,MAAM,CAA6B;IAE3C,OAAO,CAAC,aAAa;IAIrB,4DAA4D;IAC5D,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;IAK/D,yDAAyD;IACzD,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKlE,gEAAgE;IAChE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAK5D,2DAA2D;IAC3D,IAAI,OAAO;gBA1BoB,MAAM;gBAAU,MAAM;cAAQ,GAAG,EAAE;QA4BjE;IAED,uCAAuC;IACvC,KAAK,IAAI,IAAI;IAOb,sCAAsC;IACtC,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI;IAcrE,0CAA0C;IAC1C,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpD,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;CA0BvE"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,KAAK,WAAW,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAE1D,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,KAAK,CAA8D;IAC3E,OAAO,CAAC,MAAM,CAA6B;IAE3C,OAAO,CAAC,aAAa;IAIrB,4DAA4D;IAC5D,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;IAK/D,yDAAyD;IACzD,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKlE,gEAAgE;IAChE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAK5D,2DAA2D;IAC3D,IAAI,OAAO;gBA1BoB,MAAM;gBAAU,MAAM;cAAQ,GAAG,EAAE;QA4BjE;IAED,uCAAuC;IACvC,KAAK,IAAI,IAAI;IAOb,sCAAsC;IACtC,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI;IAcrE,0CAA0C;IAC1C,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpD,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CA0B9F"}
package/dist/testing.js CHANGED
@@ -68,7 +68,7 @@ export class MockTransport extends RpcTransport {
68
68
  throw new Error(`Expected ${rName}.${method} to NOT have been called, but it was.`);
69
69
  }
70
70
  }
71
- async call(router, method, args) {
71
+ async call(router, method, args, _signal) {
72
72
  this.calls.push({ router, method, args });
73
73
  const key = `${router}.${method}`;
74
74
  // Simulate network delay if configured
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@
14
14
  * Registered as a DI service via `app.provide(RpcTransport, impl)`.
15
15
  */
16
16
  export declare abstract class RpcTransport {
17
- abstract call<T>(router: string, method: string, args: any[]): Promise<T>;
17
+ abstract call<T>(router: string, method: string, args: any[], signal?: AbortSignal): Promise<T>;
18
18
  }
19
19
  /**
20
20
  * Default HTTP transport — POST JSON to `/rpc/{router}/{method}`.
@@ -32,7 +32,7 @@ export declare class HttpTransport extends RpcTransport {
32
32
  private readonly baseUrl;
33
33
  private readonly headers;
34
34
  constructor(baseUrl?: string, headers?: Record<string, string>);
35
- call<T>(router: string, method: string, args: any[]): Promise<T>;
35
+ call<T>(router: string, method: string, args: any[], signal?: AbortSignal): Promise<T>;
36
36
  }
37
37
  /**
38
38
  * Structured error from an RPC call.
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;GAIG;AACH,8BAAsB,YAAY;IAChC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;CAC1E;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,SAAS,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAO5D,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;CAqCvE;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,MAAM,CAAC,EAAE,MAAM;aACf,MAAM,CAAC,EAAE,MAAM;aACf,MAAM,CAAC,EAAE,MAAM;aACf,IAAI,CAAC,EAAE,MAAM;gBAJ7B,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;GAIG;AACH,8BAAsB,YAAY;IAChC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CAChG;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,SAAS,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAO5D,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CAsC7F;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,MAAM,CAAC,EAAE,MAAM;aACf,MAAM,CAAC,EAAE,MAAM;aACf,MAAM,CAAC,EAAE,MAAM;aACf,IAAI,CAAC,EAAE,MAAM;gBAJ7B,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC"}
package/dist/transport.js CHANGED
@@ -36,7 +36,7 @@ export class HttpTransport extends RpcTransport {
36
36
  this.baseUrl = baseUrl.replace(/\/+$/, "");
37
37
  this.headers = headers;
38
38
  }
39
- async call(router, method, args) {
39
+ async call(router, method, args, signal) {
40
40
  const url = `${this.baseUrl}/${router}/${method}`;
41
41
  const body = { args };
42
42
  const res = await fetch(url, {
@@ -46,6 +46,7 @@ export class HttpTransport extends RpcTransport {
46
46
  ...this.headers,
47
47
  },
48
48
  body: JSON.stringify(body),
49
+ signal,
49
50
  });
50
51
  if (!res.ok) {
51
52
  const text = await res.text().catch(() => res.statusText);
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;GAIG;AACH,MAAM,OAAgB,YAAY;CAEjC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC5B,OAAO,CAAS;IAChB,OAAO,CAAyB;IAEjD,YAAY,OAAO,GAAG,MAAM,EAAE,UAAkC,EAAE;QAChE,KAAK,EAAE,CAAC;QACR,uBAAuB;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,MAAc,EAAE,MAAc,EAAE,IAAW;QACvD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,CAAC;QAElC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,IAAI,CAAC,OAAO;aAChB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,IAAI,QAAQ,CAChB,OAAO,MAAM,IAAI,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,EACvD,GAAG,CAAC,MAAM,EACV,MAAM,EACN,MAAM,CACP,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAmB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAElD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,QAAQ,CAChB,QAAQ,CAAC,KAAK,CAAC,OAAO,EACtB,SAAS,EACT,MAAM,EACN,MAAM,EACN,QAAQ,CAAC,KAAK,CAAC,IAAI,CACpB,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC,IAAS,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IACA;IACA;IACA;IALlB,YACE,OAAe,EACC,MAAe,EACf,MAAe,EACf,MAAe,EACf,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,WAAM,GAAN,MAAM,CAAS;QACf,WAAM,GAAN,MAAM,CAAS;QACf,WAAM,GAAN,MAAM,CAAS;QACf,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;GAIG;AACH,MAAM,OAAgB,YAAY;CAEjC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC5B,OAAO,CAAS;IAChB,OAAO,CAAyB;IAEjD,YAAY,OAAO,GAAG,MAAM,EAAE,UAAkC,EAAE;QAChE,KAAK,EAAE,CAAC;QACR,uBAAuB;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,MAAc,EAAE,MAAc,EAAE,IAAW,EAAE,MAAoB;QAC7E,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,CAAC;QAElC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,IAAI,CAAC,OAAO;aAChB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,IAAI,QAAQ,CAChB,OAAO,MAAM,IAAI,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,EACvD,GAAG,CAAC,MAAM,EACV,MAAM,EACN,MAAM,CACP,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAmB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAElD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,QAAQ,CAChB,QAAQ,CAAC,KAAK,CAAC,OAAO,EACtB,SAAS,EACT,MAAM,EACN,MAAM,EACN,QAAQ,CAAC,KAAK,CAAC,IAAI,CACpB,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC,IAAS,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IACA;IACA;IACA;IALlB,YACE,OAAe,EACC,MAAe,EACf,MAAe,EACf,MAAe,EACf,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,WAAM,GAAN,MAAM,CAAS;QACf,WAAM,GAAN,MAAM,CAAS;QACf,WAAM,GAAN,MAAM,CAAS;QACf,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
package/dist/types.d.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  * Extract method names, parameter types, and return types from contract classes.
5
5
  * Powers the type-safe @rpc and @mutate decorators.
6
6
  */
7
+ import type { ApiState } from "@toyz/loom";
7
8
  /**
8
9
  * Extract callable method names from a contract class.
9
10
  * Filters out non-function properties so only procedure names are valid.
@@ -56,6 +57,17 @@ export interface RpcMutator<TArgs extends any[], TReturn> {
56
57
  /** Reset the mutator state (clear data, error, loading) */
57
58
  reset(): void;
58
59
  }
60
+ /**
61
+ * State container for a query — auto-fetched, reactive, with SWR.
62
+ * Extends ApiState for backwards compatibility.
63
+ *
64
+ * ```ts
65
+ * @rpc(UserRouter, "getUser", { fn: el => [el.userId] })
66
+ * accessor user!: RpcQuery<[string], User>;
67
+ * ```
68
+ */
69
+ export interface RpcQuery<TArgs extends any[], TReturn> extends ApiState<TReturn> {
70
+ }
59
71
  /**
60
72
  * Wire protocol envelope for RPC requests.
61
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK;CACjE,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IACxC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAC1C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GACrD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,EAAE,OAAO,SAAS,UAAU,CAAC,OAAO,CAAC;IAC3E,mFAAmF;IACnF,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO;IACtD,oDAAoD;IACpD,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,2DAA2D;IAC3D,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK;CACjE,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IACxC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAC1C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GACrD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,EAAE,OAAO,SAAS,UAAU,CAAC,OAAO,CAAC;IAC3E,mFAAmF;IACnF,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO;IACtD,oDAAoD;IACpD,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,2DAA2D;IAC3D,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;CAKhF;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toyz/loom-rpc",
3
- "version": "0.2.2",
3
+ "version": "0.3.1",
4
4
  "type": "module",
5
5
  "description": "Type-safe, decorator-driven RPC for Loom — server-agnostic, transport-swappable",
6
6
  "license": "MIT",