@trpc/client 10.6.0 → 10.7.0

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/dist/index.js CHANGED
@@ -85,14 +85,20 @@ class TRPCClient {
85
85
  constructor(opts){
86
86
  this.requestId = 0;
87
87
  function getTransformer() {
88
- if (!opts.transformer) return {
88
+ if (!opts.transformer || typeof opts.transformer === 'string') return {
89
89
  serialize: (data)=>data,
90
90
  deserialize: (data)=>data
91
91
  };
92
- if ('input' in opts.transformer) return {
93
- serialize: opts.transformer.input.serialize,
94
- deserialize: opts.transformer.output.deserialize
95
- };
92
+ // Type guard for `opts.transformer` because it can be `any`
93
+ function isTransformer(obj) {
94
+ return true;
95
+ }
96
+ if (isTransformer(opts.transformer)) {
97
+ if ('input' in opts.transformer) return {
98
+ serialize: opts.transformer.input.serialize,
99
+ deserialize: opts.transformer.output.deserialize
100
+ };
101
+ }
96
102
  return opts.transformer;
97
103
  }
98
104
  this.runtime = {
@@ -115,7 +121,7 @@ class TRPCClient {
115
121
  ];
116
122
  };
117
123
  const client = new TRPCClient({
118
- transformer: opts.transformer,
124
+ ...opts,
119
125
  links: getLinks()
120
126
  });
121
127
  return client;
package/dist/index.mjs CHANGED
@@ -84,14 +84,20 @@ class TRPCClient {
84
84
  constructor(opts){
85
85
  this.requestId = 0;
86
86
  function getTransformer() {
87
- if (!opts.transformer) return {
87
+ if (!opts.transformer || typeof opts.transformer === 'string') return {
88
88
  serialize: (data)=>data,
89
89
  deserialize: (data)=>data
90
90
  };
91
- if ('input' in opts.transformer) return {
92
- serialize: opts.transformer.input.serialize,
93
- deserialize: opts.transformer.output.deserialize
94
- };
91
+ // Type guard for `opts.transformer` because it can be `any`
92
+ function isTransformer(obj) {
93
+ return true;
94
+ }
95
+ if (isTransformer(opts.transformer)) {
96
+ if ('input' in opts.transformer) return {
97
+ serialize: opts.transformer.input.serialize,
98
+ deserialize: opts.transformer.output.deserialize
99
+ };
100
+ }
95
101
  return opts.transformer;
96
102
  }
97
103
  this.runtime = {
@@ -114,7 +120,7 @@ class TRPCClient {
114
120
  ];
115
121
  };
116
122
  const client = new TRPCClient({
117
- transformer: opts.transformer,
123
+ ...opts,
118
124
  links: getLinks()
119
125
  });
120
126
  return client;
@@ -1,15 +1,33 @@
1
- import { AnyRouter, ClientDataTransformerOptions, inferProcedureInput, inferProcedureOutput, inferSubscriptionOutput } from '@trpc/server';
1
+ import { AnyRouter, ClientDataTransformerOptions, CombinedDataTransformer, DataTransformerOptions, DefaultDataTransformer, inferProcedureInput, inferProcedureOutput, inferSubscriptionOutput } from '@trpc/server';
2
2
  import { Unsubscribable } from '@trpc/server/observable';
3
3
  import { inferTransformedProcedureOutput } from '@trpc/server/shared';
4
4
  import { TRPCClientError } from '../TRPCClientError';
5
5
  import { OperationContext, TRPCClientRuntime, TRPCLink } from '../links/types';
6
- interface CreateTRPCClientBaseOptions {
6
+ declare type CreateTRPCClientBaseOptions<TRouter extends AnyRouter> = TRouter['_def']['_config']['transformer'] extends DefaultDataTransformer ? {
7
7
  /**
8
8
  * Data transformer
9
+ *
10
+ * You must use the same transformer on the backend and frontend
11
+ * @link https://trpc.io/docs/data-transformers
12
+ **/
13
+ transformer?: 'You must set a transformer on the backend router';
14
+ } : TRouter['_def']['_config']['transformer'] extends DataTransformerOptions ? {
15
+ /**
16
+ * Data transformer
17
+ *
18
+ * You must use the same transformer on the backend and frontend
19
+ * @link https://trpc.io/docs/data-transformers
20
+ **/
21
+ transformer: TRouter['_def']['_config']['transformer'] extends CombinedDataTransformer ? DataTransformerOptions : TRouter['_def']['_config']['transformer'];
22
+ } : {
23
+ /**
24
+ * Data transformer
25
+ *
26
+ * You must use the same transformer on the backend and frontend
9
27
  * @link https://trpc.io/docs/data-transformers
10
28
  **/
11
29
  transformer?: ClientDataTransformerOptions;
12
- }
30
+ };
13
31
  export interface TRPCRequestOptions {
14
32
  /**
15
33
  * Pass additional context to links
@@ -25,7 +43,7 @@ export interface TRPCSubscriptionObserver<TValue, TError> {
25
43
  onComplete: () => void;
26
44
  }
27
45
  /** @internal */
28
- export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientBaseOptions & {
46
+ export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientBaseOptions<TRouter> & {
29
47
  links: TRPCLink<TRouter>[];
30
48
  };
31
49
  export declare class TRPCClient<TRouter extends AnyRouter> {
@@ -1 +1 @@
1
- {"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../src/internals/TRPCClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,4BAA4B,EAE5B,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EAIf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EACL,gBAAgB,EAEhB,iBAAiB,EACjB,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAExB,UAAU,2BAA2B;IACnC;;;QAGI;IACJ,WAAW,CAAC,EAAE,4BAA4B,CAAC;CAC5C;AAGD,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB,CAAC,MAAM,EAAE,MAAM;IACtD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,gBAAgB;AAChB,oBAAY,uBAAuB,CAAC,OAAO,SAAS,SAAS,IACzD,2BAA2B,GAAG;IAC5B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5B,CAAC;AAEN,qBAAa,UAAU,CAAC,OAAO,SAAS,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,SAAgB,OAAO,EAAE,iBAAiB,CAAC;IAC3C,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC;IAwBlD,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,gBAAgB;IAyBjB,KAAK,CACV,QAAQ,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAC3C,KAAK,SAAS,MAAM,GAAG,MAAM,QAAQ,EACrC,MAAM,SAAS,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EACnD,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB;IAUjD,QAAQ,CACb,UAAU,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EAC/C,KAAK,SAAS,MAAM,GAAG,MAAM,UAAU,EACvC,MAAM,SAAS,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EACrD,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB;IAUjD,YAAY,CACjB,cAAc,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EACvD,KAAK,SAAS,MAAM,GAAG,MAAM,cAAc,EAE3C,OAAO,SAAS,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,EACvD,MAAM,SAAS,mBAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAEzD,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,kBAAkB,GACtB,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GACrE,cAAc;CAyBlB"}
1
+ {"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../src/internals/TRPCClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,4BAA4B,EAC5B,uBAAuB,EAEvB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EAIf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EACL,gBAAgB,EAEhB,iBAAiB,EACjB,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAExB,aAAK,2BAA2B,CAAC,OAAO,SAAS,SAAS,IACxD,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,sBAAsB,GACpE;IACE;;;;;QAKI;IACJ,WAAW,CAAC,EAAE,kDAAkD,CAAC;CAClE,GACD,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,sBAAsB,GACxE;IACE;;;;;QAKI;IACJ,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,uBAAuB,GAClF,sBAAsB,GACtB,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;CAC/C,GACD;IACE;;;;;QAKI;IACJ,WAAW,CAAC,EAAE,4BAA4B,CAAC;CAC5C,CAAC;AAGR,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB,CAAC,MAAM,EAAE,MAAM;IACtD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,gBAAgB;AAChB,oBAAY,uBAAuB,CAAC,OAAO,SAAS,SAAS,IACzD,2BAA2B,CAAC,OAAO,CAAC,GAAG;IACrC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5B,CAAC;AAEN,qBAAa,UAAU,CAAC,OAAO,SAAS,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,SAAgB,OAAO,EAAE,iBAAiB,CAAC;IAC3C,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC;IA8BlD,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,gBAAgB;IAyBjB,KAAK,CACV,QAAQ,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAC3C,KAAK,SAAS,MAAM,GAAG,MAAM,QAAQ,EACrC,MAAM,SAAS,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EACnD,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB;IAUjD,QAAQ,CACb,UAAU,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EAC/C,KAAK,SAAS,MAAM,GAAG,MAAM,UAAU,EACvC,MAAM,SAAS,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EACrD,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB;IAUjD,YAAY,CACjB,cAAc,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EACvD,KAAK,SAAS,MAAM,GAAG,MAAM,cAAc,EAE3C,OAAO,SAAS,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,EACvD,MAAM,SAAS,mBAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAEzD,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,kBAAkB,GACtB,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GACrE,cAAc;CAyBlB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/client",
3
- "version": "10.6.0",
3
+ "version": "10.7.0",
4
4
  "description": "tRPC Client lib",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -66,11 +66,11 @@
66
66
  "links"
67
67
  ],
68
68
  "peerDependencies": {
69
- "@trpc/server": "10.6.0"
69
+ "@trpc/server": "10.7.0"
70
70
  },
71
71
  "devDependencies": {
72
72
  "@testing-library/dom": "^8.18.1",
73
- "@trpc/server": "10.6.0",
73
+ "@trpc/server": "10.7.0",
74
74
  "@types/node": "^18.7.20",
75
75
  "rollup": "^2.79.1",
76
76
  "tsx": "^3.9.0"
@@ -78,5 +78,5 @@
78
78
  "publishConfig": {
79
79
  "access": "public"
80
80
  },
81
- "gitHead": "96bf1570091557de433533d4cab5f37cb256de1c"
81
+ "gitHead": "dd8e424c0f0d3a43b6c6cb0356c4ac1b8199c4d0"
82
82
  }
@@ -18,7 +18,7 @@ export function createTRPCClient<TRouter extends AnyRouter>(
18
18
  return [httpBatchLink(opts)];
19
19
  };
20
20
  const client = new Client<TRouter>({
21
- transformer: opts.transformer,
21
+ ...opts,
22
22
  links: getLinks(),
23
23
  });
24
24
  return client;
@@ -1,7 +1,10 @@
1
1
  import {
2
2
  AnyRouter,
3
3
  ClientDataTransformerOptions,
4
+ CombinedDataTransformer,
4
5
  DataTransformer,
6
+ DataTransformerOptions,
7
+ DefaultDataTransformer,
5
8
  inferProcedureInput,
6
9
  inferProcedureOutput,
7
10
  inferSubscriptionOutput,
@@ -22,13 +25,38 @@ import {
22
25
  TRPCLink,
23
26
  } from '../links/types';
24
27
 
25
- interface CreateTRPCClientBaseOptions {
26
- /**
27
- * Data transformer
28
- * @link https://trpc.io/docs/data-transformers
29
- **/
30
- transformer?: ClientDataTransformerOptions;
31
- }
28
+ type CreateTRPCClientBaseOptions<TRouter extends AnyRouter> =
29
+ TRouter['_def']['_config']['transformer'] extends DefaultDataTransformer
30
+ ? {
31
+ /**
32
+ * Data transformer
33
+ *
34
+ * You must use the same transformer on the backend and frontend
35
+ * @link https://trpc.io/docs/data-transformers
36
+ **/
37
+ transformer?: 'You must set a transformer on the backend router';
38
+ }
39
+ : TRouter['_def']['_config']['transformer'] extends DataTransformerOptions
40
+ ? {
41
+ /**
42
+ * Data transformer
43
+ *
44
+ * You must use the same transformer on the backend and frontend
45
+ * @link https://trpc.io/docs/data-transformers
46
+ **/
47
+ transformer: TRouter['_def']['_config']['transformer'] extends CombinedDataTransformer
48
+ ? DataTransformerOptions
49
+ : TRouter['_def']['_config']['transformer'];
50
+ }
51
+ : {
52
+ /**
53
+ * Data transformer
54
+ *
55
+ * You must use the same transformer on the backend and frontend
56
+ * @link https://trpc.io/docs/data-transformers
57
+ **/
58
+ transformer?: ClientDataTransformerOptions;
59
+ };
32
60
 
33
61
  type TRPCType = 'subscription' | 'query' | 'mutation';
34
62
  export interface TRPCRequestOptions {
@@ -49,7 +77,7 @@ export interface TRPCSubscriptionObserver<TValue, TError> {
49
77
 
50
78
  /** @internal */
51
79
  export type CreateTRPCClientOptions<TRouter extends AnyRouter> =
52
- | CreateTRPCClientBaseOptions & {
80
+ | CreateTRPCClientBaseOptions<TRouter> & {
53
81
  links: TRPCLink<TRouter>[];
54
82
  };
55
83
 
@@ -62,16 +90,22 @@ export class TRPCClient<TRouter extends AnyRouter> {
62
90
  this.requestId = 0;
63
91
 
64
92
  function getTransformer(): DataTransformer {
65
- if (!opts.transformer)
93
+ if (!opts.transformer || typeof opts.transformer === 'string')
66
94
  return {
67
95
  serialize: (data) => data,
68
96
  deserialize: (data) => data,
69
97
  };
70
- if ('input' in opts.transformer)
71
- return {
72
- serialize: opts.transformer.input.serialize,
73
- deserialize: opts.transformer.output.deserialize,
74
- };
98
+ // Type guard for `opts.transformer` because it can be `any`
99
+ function isTransformer(obj: any): obj is ClientDataTransformerOptions {
100
+ return true;
101
+ }
102
+ if (isTransformer(opts.transformer)) {
103
+ if ('input' in opts.transformer)
104
+ return {
105
+ serialize: opts.transformer.input.serialize,
106
+ deserialize: opts.transformer.output.deserialize,
107
+ };
108
+ }
75
109
  return opts.transformer;
76
110
  }
77
111