@trpc/client 10.0.0-proxy-alpha.72 → 10.0.0-proxy-alpha.75

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.
@@ -1,4 +1,4 @@
1
- import type { AnyRouter, OmitNeverKeys, Procedure, ProcedureArgs, ProcedureRouterRecord, inferProcedureOutput } from '@trpc/server';
1
+ import type { AnyRouter, Procedure, ProcedureArgs, ProcedureRouterRecord, inferProcedureOutput } from '@trpc/server';
2
2
  import type { Unsubscribable, inferObservableValue } from '@trpc/server/observable';
3
3
  import { LegacyV9ProcedureTag } from '@trpc/server/shared';
4
4
  import { TRPCClientError } from './TRPCClientError';
@@ -10,29 +10,31 @@ declare type SubscriptionResolver<TProcedure extends Procedure<any>, TRouter ext
10
10
  input: ProcedureArgs<TProcedure['_def']>[0],
11
11
  opts: ProcedureArgs<TProcedure['_def']>[1] & Partial<TRPCSubscriptionObserver<inferObservableValue<inferProcedureOutput<TProcedure>>, TRPCClientError<TRouter>>>
12
12
  ]) => Unsubscribable;
13
- declare type DecorateProcedure<TProcedure extends Procedure<any>, TRouter extends AnyRouter> = OmitNeverKeys<{
14
- query: TProcedure extends {
15
- _query: true;
16
- } ? Resolver<TProcedure> : never;
17
- mutate: TProcedure extends {
18
- _mutation: true;
19
- } ? Resolver<TProcedure> : never;
20
- subscribe: TProcedure extends {
21
- _subscription: true;
22
- } ? SubscriptionResolver<TProcedure, TRouter> : never;
23
- }>;
13
+ declare type DecorateProcedure<TProcedure extends Procedure<any>, TRouter extends AnyRouter> = TProcedure extends {
14
+ _type: 'query';
15
+ } ? {
16
+ query: Resolver<TProcedure>;
17
+ } : TProcedure extends {
18
+ _type: 'mutation';
19
+ } ? {
20
+ mutate: Resolver<TProcedure>;
21
+ } : TProcedure extends {
22
+ _type: 'subscription';
23
+ } ? {
24
+ subscribe: SubscriptionResolver<TProcedure, TRouter>;
25
+ } : never;
24
26
  declare type assertProcedure<T> = T extends Procedure<any> ? T : never;
25
27
  /**
26
28
  * @internal
27
29
  */
28
- declare type DecoratedProcedureRecord<TProcedures extends ProcedureRouterRecord, TRouter extends AnyRouter> = OmitNeverKeys<{
30
+ declare type DecoratedProcedureRecord<TProcedures extends ProcedureRouterRecord, TRouter extends AnyRouter> = {
29
31
  [TKey in keyof TProcedures]: TProcedures[TKey] extends LegacyV9ProcedureTag ? never : TProcedures[TKey] extends AnyRouter ? DecoratedProcedureRecord<TProcedures[TKey]['_def']['record'], TProcedures[TKey]> : DecorateProcedure<assertProcedure<TProcedures[TKey]>, TRouter>;
30
- }>;
32
+ };
31
33
  /**
32
34
  * @deprecated use `createTRPCProxyClient` instead
33
35
  * @internal
34
36
  */
35
- export declare function createTRPCClientProxy<TRouter extends AnyRouter>(client: Client<TRouter>): inferRouterProxyClient<TRouter>;
36
- export declare function createTRPCProxyClient<TRouter extends AnyRouter>(opts: CreateTRPCClientOptions<TRouter>): inferRouterProxyClient<TRouter>;
37
+ export declare function createTRPCClientProxy<TRouter extends AnyRouter>(client: Client<TRouter>): DecoratedProcedureRecord<TRouter["_def"]["record"], TRouter>;
38
+ export declare function createTRPCProxyClient<TRouter extends AnyRouter>(opts: CreateTRPCClientOptions<TRouter>): DecoratedProcedureRecord<TRouter["_def"]["record"], TRouter>;
37
39
  export {};
38
40
  //# sourceMappingURL=createTRPCClientProxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createTRPCClientProxy.d.ts","sourceRoot":"","sources":["../src/createTRPCClientProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createTRPCClientProxy.d.ts","sourceRoot":"","sources":["../src/createTRPCClientProxy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,qBAAqB,EAErB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAe,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAoB,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EACL,UAAU,IAAI,MAAM,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,oBAAY,sBAAsB,CAAC,OAAO,SAAS,SAAS,IAC1D,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;AAE/D,aAAK,QAAQ,CAAC,UAAU,SAAS,SAAS,CAAC,GAAG,CAAC,IAAI,CACjD,GAAG,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KACvC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;AAE/C,aAAK,oBAAoB,CACvB,UAAU,SAAS,SAAS,CAAC,GAAG,CAAC,EACjC,OAAO,SAAS,SAAS,IACvB,CACF,GAAG,IAAI,EAAE;IACP,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GACxC,OAAO,CACL,wBAAwB,CACtB,oBAAoB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,EACtD,eAAe,CAAC,OAAO,CAAC,CACzB,CACF;CACJ,KACE,cAAc,CAAC;AAEpB,aAAK,iBAAiB,CACpB,UAAU,SAAS,SAAS,CAAC,GAAG,CAAC,EACjC,OAAO,SAAS,SAAS,IACvB,UAAU,SAAS;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GACrC;IACE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;CAC7B,GACD,UAAU,SAAS;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,GACxC;IACE,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;CAC9B,GACD,UAAU,SAAS;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,GAC5C;IACE,SAAS,EAAE,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;CACtD,GACD,KAAK,CAAC;AAEV,aAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE/D;;GAEG;AACH,aAAK,wBAAwB,CAC3B,WAAW,SAAS,qBAAqB,EACzC,OAAO,SAAS,SAAS,IACvB;KACD,IAAI,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,oBAAoB,GACvE,KAAK,GACL,WAAW,CAAC,IAAI,CAAC,SAAS,SAAS,GACnC,wBAAwB,CACtB,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EACnC,WAAW,CAAC,IAAI,CAAC,CAClB,GACD,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;CACnE,CAAC;AAWF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,SAAS,EAC7D,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,gEAWxB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,SAAS,EAC7D,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC,gEAKvC"}
package/dist/index.js CHANGED
@@ -163,28 +163,22 @@ class TRPCClient {
163
163
  });
164
164
  return abortablePromise;
165
165
  }
166
- query(path, ...args) {
167
- // FIXME: Should be inferred from `args`
168
- const context = args[1]?.context;
169
- const signal = args[1]?.signal;
166
+ query(path, input, opts) {
170
167
  return this.requestAsPromise({
171
168
  type: 'query',
172
169
  path,
173
- input: args[0],
174
- context,
175
- signal
170
+ input: input,
171
+ context: opts?.context,
172
+ signal: opts?.signal
176
173
  });
177
174
  }
178
- mutation(path, ...args) {
179
- // FIXME: Should be inferred from `args`
180
- const context = args[1]?.context;
181
- const signal = args[1]?.signal;
175
+ mutation(path, input, opts) {
182
176
  return this.requestAsPromise({
183
177
  type: 'mutation',
184
178
  path,
185
- input: args[0],
186
- context,
187
- signal
179
+ input: input,
180
+ context: opts?.context,
181
+ signal: opts?.signal
188
182
  });
189
183
  }
190
184
  subscription(path, input, opts) {
@@ -223,28 +217,34 @@ class TRPCClient {
223
217
  }
224
218
  return ()=>({});
225
219
  }
226
- const transformer = opts.transformer ? 'input' in opts.transformer ? {
227
- serialize: opts.transformer.input.serialize,
228
- deserialize: opts.transformer.output.deserialize
229
- } : opts.transformer : {
230
- serialize: (data)=>data,
231
- deserialize: (data)=>data
232
- };
220
+ function getTransformer() {
221
+ if (!opts.transformer) return {
222
+ serialize: (data)=>data,
223
+ deserialize: (data)=>data
224
+ };
225
+ if ('input' in opts.transformer) return {
226
+ serialize: opts.transformer.input.serialize,
227
+ deserialize: opts.transformer.output.deserialize
228
+ };
229
+ return opts.transformer;
230
+ }
233
231
  this.runtime = {
234
232
  AbortController: AC,
235
233
  fetch: _fetch,
236
234
  headers: getHeadersFn(),
237
- transformer
235
+ transformer: getTransformer()
238
236
  };
239
- if ('links' in opts) {
240
- this.links = opts.links.map((link)=>link(this.runtime));
241
- } else {
242
- this.links = [
237
+ const getLinks = ()=>{
238
+ if (opts.links) {
239
+ return opts.links.map((link)=>link(this.runtime));
240
+ }
241
+ return [
243
242
  links_httpBatchLink.httpBatchLink({
244
243
  url: opts.url
245
- })(this.runtime),
244
+ })(this.runtime)
246
245
  ];
247
- }
246
+ };
247
+ this.links = getLinks();
248
248
  }
249
249
  }
250
250
 
package/dist/index.mjs CHANGED
@@ -162,28 +162,22 @@ class TRPCClient {
162
162
  });
163
163
  return abortablePromise;
164
164
  }
165
- query(path, ...args) {
166
- // FIXME: Should be inferred from `args`
167
- const context = args[1]?.context;
168
- const signal = args[1]?.signal;
165
+ query(path, input, opts) {
169
166
  return this.requestAsPromise({
170
167
  type: 'query',
171
168
  path,
172
- input: args[0],
173
- context,
174
- signal
169
+ input: input,
170
+ context: opts?.context,
171
+ signal: opts?.signal
175
172
  });
176
173
  }
177
- mutation(path, ...args) {
178
- // FIXME: Should be inferred from `args`
179
- const context = args[1]?.context;
180
- const signal = args[1]?.signal;
174
+ mutation(path, input, opts) {
181
175
  return this.requestAsPromise({
182
176
  type: 'mutation',
183
177
  path,
184
- input: args[0],
185
- context,
186
- signal
178
+ input: input,
179
+ context: opts?.context,
180
+ signal: opts?.signal
187
181
  });
188
182
  }
189
183
  subscription(path, input, opts) {
@@ -222,28 +216,34 @@ class TRPCClient {
222
216
  }
223
217
  return ()=>({});
224
218
  }
225
- const transformer = opts.transformer ? 'input' in opts.transformer ? {
226
- serialize: opts.transformer.input.serialize,
227
- deserialize: opts.transformer.output.deserialize
228
- } : opts.transformer : {
229
- serialize: (data)=>data,
230
- deserialize: (data)=>data
231
- };
219
+ function getTransformer() {
220
+ if (!opts.transformer) return {
221
+ serialize: (data)=>data,
222
+ deserialize: (data)=>data
223
+ };
224
+ if ('input' in opts.transformer) return {
225
+ serialize: opts.transformer.input.serialize,
226
+ deserialize: opts.transformer.output.deserialize
227
+ };
228
+ return opts.transformer;
229
+ }
232
230
  this.runtime = {
233
231
  AbortController: AC,
234
232
  fetch: _fetch,
235
233
  headers: getHeadersFn(),
236
- transformer
234
+ transformer: getTransformer()
237
235
  };
238
- if ('links' in opts) {
239
- this.links = opts.links.map((link)=>link(this.runtime));
240
- } else {
241
- this.links = [
236
+ const getLinks = ()=>{
237
+ if (opts.links) {
238
+ return opts.links.map((link)=>link(this.runtime));
239
+ }
240
+ return [
242
241
  httpBatchLink({
243
242
  url: opts.url
244
- })(this.runtime),
243
+ })(this.runtime)
245
244
  ];
246
- }
245
+ };
246
+ this.links = getLinks();
247
247
  }
248
248
  }
249
249
 
@@ -1,4 +1,4 @@
1
- import { AnyRouter, ClientDataTransformerOptions, inferHandlerInput, inferProcedureInput, inferProcedureOutput, inferSubscriptionOutput } from '@trpc/server';
1
+ import { AnyRouter, ClientDataTransformerOptions, inferProcedureInput, inferProcedureOutput, inferSubscriptionOutput } from '@trpc/server';
2
2
  import { ProcedureRecord } from '@trpc/server';
3
3
  import { Unsubscribable } from '@trpc/server/observable';
4
4
  import { TRPCClientError } from '../TRPCClientError';
@@ -9,11 +9,12 @@ interface CreateTRPCClientBaseOptions {
9
9
  */
10
10
  fetch?: typeof fetch;
11
11
  /**
12
- * add polyfill for AbortController
12
+ * Add ponyfill for AbortController
13
13
  */
14
14
  AbortController?: typeof AbortController;
15
15
  /**
16
- * headers to be set on outgoing requests / callback that of said headers
16
+ * Headers to be set on outgoing requests or a callback that of said headers
17
+ * @link http://localhost:3000/docs/v10/header
17
18
  */
18
19
  headers?: HTTPHeaders | (() => HTTPHeaders | Promise<HTTPHeaders>);
19
20
  /**
@@ -22,20 +23,6 @@ interface CreateTRPCClientBaseOptions {
22
23
  **/
23
24
  transformer?: ClientDataTransformerOptions;
24
25
  }
25
- /** @internal */
26
- export interface CreateTRPCClientWithURLOptions extends CreateTRPCClientBaseOptions {
27
- /**
28
- * HTTP URL of API
29
- **/
30
- url: string;
31
- }
32
- /** @internal */
33
- export interface CreateTRPCClientWithLinksOptions<TRouter extends AnyRouter> extends CreateTRPCClientBaseOptions {
34
- /**
35
- * @link https://trpc.io/docs/links
36
- **/
37
- links: TRPCLink<TRouter>[];
38
- }
39
26
  export interface TRPCRequestOptions {
40
27
  /**
41
28
  * Pass additional context to links
@@ -50,8 +37,16 @@ export interface TRPCSubscriptionObserver<TValue, TError> {
50
37
  onStopped: () => void;
51
38
  onComplete: () => void;
52
39
  }
53
- /** @internal */
54
- export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientWithLinksOptions<TRouter> | CreateTRPCClientWithURLOptions;
40
+ /**
41
+ * This type prohibits `url` from being provided along with `links`
42
+ * @internal
43
+ */
44
+ export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientBaseOptions & ({
45
+ links: TRPCLink<TRouter>[];
46
+ } | {
47
+ url: string;
48
+ links?: never;
49
+ });
55
50
  export declare type AssertType<T, K> = T extends K ? T : never;
56
51
  /**
57
52
  * @deprecated
@@ -69,14 +64,8 @@ export declare class TRPCClient<TRouter extends AnyRouter> {
69
64
  constructor(opts: CreateTRPCClientOptions<TRouter>);
70
65
  private $request;
71
66
  private requestAsPromise;
72
- query<TQueries extends AssertLegacyDef<TRouter>['queries'], TPath extends string & keyof TQueries>(path: TPath, ...args: [
73
- ...inferHandlerInput<AssertType<TQueries, ProcedureRecord>[TPath]>,
74
- TRPCRequestOptions?
75
- ]): Promise<inferProcedureOutput<TQueries[TPath]>>;
76
- mutation<TMutations extends AssertLegacyDef<TRouter>['mutations'], TPath extends string & keyof TMutations>(path: TPath, ...args: [
77
- ...inferHandlerInput<AssertType<TMutations, ProcedureRecord>[TPath]>,
78
- TRPCRequestOptions?
79
- ]): Promise<inferProcedureOutput<TMutations[TPath]>>;
67
+ query<TQueries extends AssertLegacyDef<TRouter>['queries'], TPath extends string & keyof TQueries, TInput extends inferProcedureInput<AssertType<TQueries, ProcedureRecord>[TPath]>>(path: TPath, input?: TInput, opts?: TRPCRequestOptions): Promise<inferProcedureOutput<TQueries[TPath]>>;
68
+ mutation<TMutations extends AssertLegacyDef<TRouter>['mutations'], TPath extends string & keyof TMutations, TInput extends inferProcedureInput<AssertType<TMutations, ProcedureRecord>[TPath]>>(path: TPath, input?: TInput, opts?: TRPCRequestOptions): Promise<inferProcedureOutput<TMutations[TPath]>>;
80
69
  subscription<TSubscriptions extends AssertLegacyDef<TRouter>['subscriptions'], TPath extends string & keyof TSubscriptions, TOutput extends inferSubscriptionOutput<TRouter, TPath>, TInput extends inferProcedureInput<AssertType<TSubscriptions, ProcedureRecord>[TPath]>>(path: TPath, input: TInput, opts: TRPCRequestOptions & Partial<TRPCSubscriptionObserver<TOutput, TRPCClientError<TRouter>>>): Unsubscribable;
81
70
  }
82
71
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../../../packages/client/src/internals/TRPCClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../../../packages/client/src/internals/TRPCClient.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,9 @@ export interface WebSocketClientOptions {
11
11
  WebSocket?: typeof WebSocket;
12
12
  retryDelayMs?: typeof retryDelay;
13
13
  onOpen?: () => void;
14
- onClose?: () => void;
14
+ onClose?: (cause?: {
15
+ code?: number;
16
+ }) => void;
15
17
  }
16
18
  export declare function createWSClient(opts: WebSocketClientOptions): {
17
19
  close: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"wsLink.d.ts","sourceRoot":"","sources":["../../../../packages/client/src/links/wsLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAc,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAKL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,aAAK,gBAAgB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,mBAAmB,CAC7E,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CAAC;AAEF,aAAK,kBAAkB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,QAAQ,CACpE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClC,eAAe,CAAC,OAAO,CAAC,CACzB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,UAAU,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,sBAAsB;;kBAuMpC,SAAS,wDAA0B,aAAa;;EAiDtE;AACD,oBAAY,mBAAmB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAiBD,wBAAgB,MAAM,CAAC,OAAO,SAAS,SAAS,EAC9C,IAAI,EAAE,oBAAoB,GACzB,QAAQ,CAAC,OAAO,CAAC,CA4DnB"}
1
+ {"version":3,"file":"wsLink.d.ts","sourceRoot":"","sources":["../../../../packages/client/src/links/wsLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAc,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAKL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,aAAK,gBAAgB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,mBAAmB,CAC7E,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CAAC;AAEF,aAAK,kBAAkB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,QAAQ,CACpE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClC,eAAe,CAAC,OAAO,CAAC,CACzB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,UAAU,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,sBAAsB;;kBAuMpC,SAAS,wDAA0B,aAAa;;EAiDtE;AACD,oBAAY,mBAAmB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAiBD,wBAAgB,MAAM,CAAC,OAAO,SAAS,SAAS,EAC9C,IAAI,EAAE,oBAAoB,GACzB,QAAQ,CAAC,OAAO,CAAC,CA4DnB"}
@@ -134,9 +134,11 @@ function createWSClient(opts) {
134
134
  closeIfNoPending(conn);
135
135
  }
136
136
  });
137
- conn.addEventListener('close', ()=>{
137
+ conn.addEventListener('close', ({ code })=>{
138
138
  if (state === 'open') {
139
- onClose?.();
139
+ onClose?.({
140
+ code
141
+ });
140
142
  }
141
143
  if (activeConnection === conn) {
142
144
  // connection might have been replaced already
@@ -130,9 +130,11 @@ function createWSClient(opts) {
130
130
  closeIfNoPending(conn);
131
131
  }
132
132
  });
133
- conn.addEventListener('close', ()=>{
133
+ conn.addEventListener('close', ({ code })=>{
134
134
  if (state === 'open') {
135
- onClose?.();
135
+ onClose?.({
136
+ code
137
+ });
136
138
  }
137
139
  if (activeConnection === conn) {
138
140
  // connection might have been replaced already
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/client",
3
- "version": "10.0.0-proxy-alpha.72",
3
+ "version": "10.0.0-proxy-alpha.75",
4
4
  "description": "tRPC Client lib",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -63,13 +63,13 @@
63
63
  "ts-watch": "tsc --project tsconfig.watch.json"
64
64
  },
65
65
  "peerDependencies": {
66
- "@trpc/server": "10.0.0-proxy-alpha.72"
66
+ "@trpc/server": "10.0.0-proxy-alpha.75"
67
67
  },
68
68
  "devDependencies": {
69
- "@trpc/server": "10.0.0-proxy-alpha.72"
69
+ "@trpc/server": "10.0.0-proxy-alpha.75"
70
70
  },
71
71
  "publishConfig": {
72
72
  "access": "public"
73
73
  },
74
- "gitHead": "211511c11992741a1a3a48cc424ebd5870757146"
74
+ "gitHead": "462c77f9c422fd44aa065566b317cd4e1a090848"
75
75
  }
@@ -3,7 +3,6 @@
3
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
4
  import type {
5
5
  AnyRouter,
6
- OmitNeverKeys,
7
6
  Procedure,
8
7
  ProcedureArgs,
9
8
  ProcedureRouterRecord,
@@ -48,15 +47,19 @@ type SubscriptionResolver<
48
47
  type DecorateProcedure<
49
48
  TProcedure extends Procedure<any>,
50
49
  TRouter extends AnyRouter,
51
- > = OmitNeverKeys<{
52
- query: TProcedure extends { _query: true } ? Resolver<TProcedure> : never;
53
-
54
- mutate: TProcedure extends { _mutation: true } ? Resolver<TProcedure> : never;
55
-
56
- subscribe: TProcedure extends { _subscription: true }
57
- ? SubscriptionResolver<TProcedure, TRouter>
58
- : never;
59
- }>;
50
+ > = TProcedure extends { _type: 'query' }
51
+ ? {
52
+ query: Resolver<TProcedure>;
53
+ }
54
+ : TProcedure extends { _type: 'mutation' }
55
+ ? {
56
+ mutate: Resolver<TProcedure>;
57
+ }
58
+ : TProcedure extends { _type: 'subscription' }
59
+ ? {
60
+ subscribe: SubscriptionResolver<TProcedure, TRouter>;
61
+ }
62
+ : never;
60
63
 
61
64
  type assertProcedure<T> = T extends Procedure<any> ? T : never;
62
65
 
@@ -66,7 +69,7 @@ type assertProcedure<T> = T extends Procedure<any> ? T : never;
66
69
  type DecoratedProcedureRecord<
67
70
  TProcedures extends ProcedureRouterRecord,
68
71
  TRouter extends AnyRouter,
69
- > = OmitNeverKeys<{
72
+ > = {
70
73
  [TKey in keyof TProcedures]: TProcedures[TKey] extends LegacyV9ProcedureTag
71
74
  ? never
72
75
  : TProcedures[TKey] extends AnyRouter
@@ -75,7 +78,7 @@ type DecoratedProcedureRecord<
75
78
  TProcedures[TKey]
76
79
  >
77
80
  : DecorateProcedure<assertProcedure<TProcedures[TKey]>, TRouter>;
78
- }>;
81
+ };
79
82
 
80
83
  const clientCallTypeMap: Record<
81
84
  keyof DecorateProcedure<any, any>,
@@ -2,7 +2,6 @@ import {
2
2
  AnyRouter,
3
3
  ClientDataTransformerOptions,
4
4
  DataTransformer,
5
- inferHandlerInput,
6
5
  inferProcedureInput,
7
6
  inferProcedureOutput,
8
7
  inferSubscriptionOutput,
@@ -33,11 +32,12 @@ interface CreateTRPCClientBaseOptions {
33
32
  */
34
33
  fetch?: typeof fetch;
35
34
  /**
36
- * add polyfill for AbortController
35
+ * Add ponyfill for AbortController
37
36
  */
38
37
  AbortController?: typeof AbortController;
39
38
  /**
40
- * headers to be set on outgoing requests / callback that of said headers
39
+ * Headers to be set on outgoing requests or a callback that of said headers
40
+ * @link http://localhost:3000/docs/v10/header
41
41
  */
42
42
  headers?: HTTPHeaders | (() => HTTPHeaders | Promise<HTTPHeaders>);
43
43
  /**
@@ -47,24 +47,6 @@ interface CreateTRPCClientBaseOptions {
47
47
  transformer?: ClientDataTransformerOptions;
48
48
  }
49
49
 
50
- /** @internal */
51
- export interface CreateTRPCClientWithURLOptions
52
- extends CreateTRPCClientBaseOptions {
53
- /**
54
- * HTTP URL of API
55
- **/
56
- url: string;
57
- }
58
-
59
- /** @internal */
60
- export interface CreateTRPCClientWithLinksOptions<TRouter extends AnyRouter>
61
- extends CreateTRPCClientBaseOptions {
62
- /**
63
- * @link https://trpc.io/docs/links
64
- **/
65
- links: TRPCLink<TRouter>[];
66
- }
67
-
68
50
  type TRPCType = 'subscription' | 'query' | 'mutation';
69
51
  export interface TRPCRequestOptions {
70
52
  /**
@@ -82,10 +64,21 @@ export interface TRPCSubscriptionObserver<TValue, TError> {
82
64
  onComplete: () => void;
83
65
  }
84
66
 
85
- /** @internal */
67
+ /**
68
+ * This type prohibits `url` from being provided along with `links`
69
+ * @internal
70
+ */
86
71
  export type CreateTRPCClientOptions<TRouter extends AnyRouter> =
87
- | CreateTRPCClientWithLinksOptions<TRouter>
88
- | CreateTRPCClientWithURLOptions;
72
+ | CreateTRPCClientBaseOptions &
73
+ (
74
+ | {
75
+ links: TRPCLink<TRouter>[];
76
+ }
77
+ | {
78
+ url: string;
79
+ links?: never;
80
+ }
81
+ );
89
82
 
90
83
  export type AssertType<T, K> = T extends K ? T : never;
91
84
  /**
@@ -124,34 +117,35 @@ export class TRPCClient<TRouter extends AnyRouter> {
124
117
  return () => ({});
125
118
  }
126
119
 
127
- const transformer: DataTransformer = opts.transformer
128
- ? 'input' in opts.transformer
129
- ? {
130
- serialize: opts.transformer.input.serialize,
131
- deserialize: opts.transformer.output.deserialize,
132
- }
133
- : opts.transformer
134
- : {
120
+ function getTransformer(): DataTransformer {
121
+ if (!opts.transformer)
122
+ return {
135
123
  serialize: (data) => data,
136
124
  deserialize: (data) => data,
137
125
  };
126
+ if ('input' in opts.transformer)
127
+ return {
128
+ serialize: opts.transformer.input.serialize,
129
+ deserialize: opts.transformer.output.deserialize,
130
+ };
131
+ return opts.transformer;
132
+ }
138
133
 
139
134
  this.runtime = {
140
135
  AbortController: AC,
141
136
  fetch: _fetch,
142
137
  headers: getHeadersFn(),
143
- transformer,
138
+ transformer: getTransformer(),
144
139
  };
145
140
 
146
- if ('links' in opts) {
147
- this.links = opts.links.map((link) => link(this.runtime));
148
- } else {
149
- this.links = [
150
- httpBatchLink({
151
- url: opts.url,
152
- })(this.runtime),
153
- ];
154
- }
141
+ const getLinks = (): OperationLink<TRouter>[] => {
142
+ if (opts.links) {
143
+ return opts.links.map((link) => link(this.runtime));
144
+ }
145
+ return [httpBatchLink({ url: opts.url })(this.runtime)];
146
+ };
147
+
148
+ this.links = getLinks();
155
149
  }
156
150
 
157
151
  private $request<TInput = unknown, TOutput = unknown>({
@@ -205,51 +199,33 @@ export class TRPCClient<TRouter extends AnyRouter> {
205
199
  public query<
206
200
  TQueries extends AssertLegacyDef<TRouter>['queries'],
207
201
  TPath extends string & keyof TQueries,
208
- >(
209
- path: TPath,
210
- ...args: [
211
- ...inferHandlerInput<AssertType<TQueries, ProcedureRecord>[TPath]>,
212
- TRPCRequestOptions?,
213
- ]
214
- ) {
215
- // FIXME: Should be inferred from `args`
216
- const context = (args[1] as TRPCRequestOptions | undefined)?.context;
217
- const signal = (args[1] as TRPCRequestOptions | undefined)?.signal;
218
-
219
- return this.requestAsPromise<
220
- inferHandlerInput<AssertType<TQueries, ProcedureRecord>[TPath]>,
221
- inferProcedureOutput<TQueries[TPath]>
222
- >({
202
+ TInput extends inferProcedureInput<
203
+ AssertType<TQueries, ProcedureRecord>[TPath]
204
+ >,
205
+ >(path: TPath, input?: TInput, opts?: TRPCRequestOptions) {
206
+ type TOutput = inferProcedureOutput<TQueries[TPath]>;
207
+ return this.requestAsPromise<TInput, TOutput>({
223
208
  type: 'query',
224
209
  path,
225
- input: args[0] as any,
226
- context,
227
- signal,
210
+ input: input as TInput,
211
+ context: opts?.context,
212
+ signal: opts?.signal,
228
213
  });
229
214
  }
230
215
  public mutation<
231
216
  TMutations extends AssertLegacyDef<TRouter>['mutations'],
232
217
  TPath extends string & keyof TMutations,
233
- >(
234
- path: TPath,
235
- ...args: [
236
- ...inferHandlerInput<AssertType<TMutations, ProcedureRecord>[TPath]>,
237
- TRPCRequestOptions?,
238
- ]
239
- ) {
240
- // FIXME: Should be inferred from `args`
241
- const context = (args[1] as TRPCRequestOptions | undefined)?.context;
242
- const signal = (args[1] as TRPCRequestOptions | undefined)?.signal;
243
-
244
- return this.requestAsPromise<
245
- inferHandlerInput<AssertType<TMutations, ProcedureRecord>[TPath]>,
246
- inferProcedureOutput<TMutations[TPath]>
247
- >({
218
+ TInput extends inferProcedureInput<
219
+ AssertType<TMutations, ProcedureRecord>[TPath]
220
+ >,
221
+ >(path: TPath, input?: TInput, opts?: TRPCRequestOptions) {
222
+ type TOutput = inferProcedureOutput<TMutations[TPath]>;
223
+ return this.requestAsPromise<TInput, TOutput>({
248
224
  type: 'mutation',
249
225
  path,
250
- input: args[0] as any,
251
- context,
252
- signal,
226
+ input: input as TInput,
227
+ context: opts?.context,
228
+ signal: opts?.signal,
253
229
  });
254
230
  }
255
231
  public subscription<
@@ -27,7 +27,7 @@ export interface WebSocketClientOptions {
27
27
  WebSocket?: typeof WebSocket;
28
28
  retryDelayMs?: typeof retryDelay;
29
29
  onOpen?: () => void;
30
- onClose?: () => void;
30
+ onClose?: (cause?: { code?: number }) => void;
31
31
  }
32
32
 
33
33
  export function createWSClient(opts: WebSocketClientOptions) {
@@ -198,9 +198,9 @@ export function createWSClient(opts: WebSocketClientOptions) {
198
198
  }
199
199
  });
200
200
 
201
- conn.addEventListener('close', () => {
201
+ conn.addEventListener('close', ({ code }) => {
202
202
  if (state === 'open') {
203
- onClose?.();
203
+ onClose?.({ code });
204
204
  }
205
205
 
206
206
  if (activeConnection === conn) {