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

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
@@ -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';
@@ -22,20 +22,6 @@ interface CreateTRPCClientBaseOptions {
22
22
  **/
23
23
  transformer?: ClientDataTransformerOptions;
24
24
  }
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
25
  export interface TRPCRequestOptions {
40
26
  /**
41
27
  * Pass additional context to links
@@ -50,8 +36,16 @@ export interface TRPCSubscriptionObserver<TValue, TError> {
50
36
  onStopped: () => void;
51
37
  onComplete: () => void;
52
38
  }
53
- /** @internal */
54
- export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientWithLinksOptions<TRouter> | CreateTRPCClientWithURLOptions;
39
+ /**
40
+ * This type prohibits `url` from being provided along with `links`
41
+ * @internal
42
+ */
43
+ export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientBaseOptions & ({
44
+ links: TRPCLink<TRouter>[];
45
+ } | {
46
+ url: string;
47
+ links?: never;
48
+ });
55
49
  export declare type AssertType<T, K> = T extends K ? T : never;
56
50
  /**
57
51
  * @deprecated
@@ -69,14 +63,8 @@ export declare class TRPCClient<TRouter extends AnyRouter> {
69
63
  constructor(opts: CreateTRPCClientOptions<TRouter>);
70
64
  private $request;
71
65
  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]>>;
66
+ 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]>>;
67
+ 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
68
  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
69
  }
82
70
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../../../packages/client/src/internals/TRPCClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,4BAA4B,EAE5B,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,cAAc,EAIf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,EACL,WAAW,EACX,gBAAgB,EAEhB,iBAAiB,EACjB,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAGxB,UAAU,2BAA2B;IACnC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,eAAe,CAAC;IACzC;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACnE;;;QAGI;IACJ,WAAW,CAAC,EAAE,4BAA4B,CAAC;CAC5C;AAED,gBAAgB;AAChB,MAAM,WAAW,8BACf,SAAQ,2BAA2B;IACnC;;QAEI;IACJ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,gBAAgB;AAChB,MAAM,WAAW,gCAAgC,CAAC,OAAO,SAAS,SAAS,CACzE,SAAQ,2BAA2B;IACnC;;QAEI;IACJ,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5B;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,gCAAgC,CAAC,OAAO,CAAC,GACzC,8BAA8B,CAAC;AAEnC,oBAAY,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACvD;;GAEG;AACH,oBAAY,eAAe,CAAC,OAAO,SAAS,SAAS,IACnD,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,MAAM,CACtC,eAAe,GAAG,SAAS,GAAG,WAAW,EACzC,eAAe,CAChB,GACG,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GACzB;IACE,aAAa,EAAE,EAAE,CAAC;IAClB,OAAO,EAAE,EAAE,CAAC;IACZ,SAAS,EAAE,EAAE,CAAC;CACf,CAAC;AAER,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;IAC1B,OAAO,CAAC,YAAY;gBAIR,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC;IA2ClD,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,gBAAgB;IAyBjB,KAAK,CACV,QAAQ,SAAS,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EACpD,KAAK,SAAS,MAAM,GAAG,MAAM,QAAQ,EAErC,IAAI,EAAE,KAAK,EACX,GAAG,IAAI,EAAE;QACP,GAAG,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;QAClE,kBAAkB,CAAC;KACpB;IAiBI,QAAQ,CACb,UAAU,SAAS,eAAe,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EACxD,KAAK,SAAS,MAAM,GAAG,MAAM,UAAU,EAEvC,IAAI,EAAE,KAAK,EACX,GAAG,IAAI,EAAE;QACP,GAAG,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;QACpE,kBAAkB,CAAC;KACpB;IAiBI,YAAY,CACjB,cAAc,SAAS,eAAe,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,EAChE,KAAK,SAAS,MAAM,GAAG,MAAM,cAAc,EAC3C,OAAO,SAAS,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,EACvD,MAAM,SAAS,mBAAmB,CAChC,UAAU,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CACnD,EAED,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":["../../../../packages/client/src/internals/TRPCClient.ts"],"names":[],"mappings":"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"}
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.73",
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.73"
67
67
  },
68
68
  "devDependencies": {
69
- "@trpc/server": "10.0.0-proxy-alpha.72"
69
+ "@trpc/server": "10.0.0-proxy-alpha.73"
70
70
  },
71
71
  "publishConfig": {
72
72
  "access": "public"
73
73
  },
74
- "gitHead": "211511c11992741a1a3a48cc424ebd5870757146"
74
+ "gitHead": "1ed4127160cf0fcc873494f407de152203bcae01"
75
75
  }
@@ -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,
@@ -47,24 +46,6 @@ interface CreateTRPCClientBaseOptions {
47
46
  transformer?: ClientDataTransformerOptions;
48
47
  }
49
48
 
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
49
  type TRPCType = 'subscription' | 'query' | 'mutation';
69
50
  export interface TRPCRequestOptions {
70
51
  /**
@@ -82,10 +63,21 @@ export interface TRPCSubscriptionObserver<TValue, TError> {
82
63
  onComplete: () => void;
83
64
  }
84
65
 
85
- /** @internal */
66
+ /**
67
+ * This type prohibits `url` from being provided along with `links`
68
+ * @internal
69
+ */
86
70
  export type CreateTRPCClientOptions<TRouter extends AnyRouter> =
87
- | CreateTRPCClientWithLinksOptions<TRouter>
88
- | CreateTRPCClientWithURLOptions;
71
+ | CreateTRPCClientBaseOptions &
72
+ (
73
+ | {
74
+ links: TRPCLink<TRouter>[];
75
+ }
76
+ | {
77
+ url: string;
78
+ links?: never;
79
+ }
80
+ );
89
81
 
90
82
  export type AssertType<T, K> = T extends K ? T : never;
91
83
  /**
@@ -124,34 +116,35 @@ export class TRPCClient<TRouter extends AnyRouter> {
124
116
  return () => ({});
125
117
  }
126
118
 
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
- : {
119
+ function getTransformer(): DataTransformer {
120
+ if (!opts.transformer)
121
+ return {
135
122
  serialize: (data) => data,
136
123
  deserialize: (data) => data,
137
124
  };
125
+ if ('input' in opts.transformer)
126
+ return {
127
+ serialize: opts.transformer.input.serialize,
128
+ deserialize: opts.transformer.output.deserialize,
129
+ };
130
+ return opts.transformer;
131
+ }
138
132
 
139
133
  this.runtime = {
140
134
  AbortController: AC,
141
135
  fetch: _fetch,
142
136
  headers: getHeadersFn(),
143
- transformer,
137
+ transformer: getTransformer(),
144
138
  };
145
139
 
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
- }
140
+ const getLinks = (): OperationLink<TRouter>[] => {
141
+ if (opts.links) {
142
+ return opts.links.map((link) => link(this.runtime));
143
+ }
144
+ return [httpBatchLink({ url: opts.url })(this.runtime)];
145
+ };
146
+
147
+ this.links = getLinks();
155
148
  }
156
149
 
157
150
  private $request<TInput = unknown, TOutput = unknown>({
@@ -205,51 +198,33 @@ export class TRPCClient<TRouter extends AnyRouter> {
205
198
  public query<
206
199
  TQueries extends AssertLegacyDef<TRouter>['queries'],
207
200
  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
- >({
201
+ TInput extends inferProcedureInput<
202
+ AssertType<TQueries, ProcedureRecord>[TPath]
203
+ >,
204
+ >(path: TPath, input?: TInput, opts?: TRPCRequestOptions) {
205
+ type TOutput = inferProcedureOutput<TQueries[TPath]>;
206
+ return this.requestAsPromise<TInput, TOutput>({
223
207
  type: 'query',
224
208
  path,
225
- input: args[0] as any,
226
- context,
227
- signal,
209
+ input: input as TInput,
210
+ context: opts?.context,
211
+ signal: opts?.signal,
228
212
  });
229
213
  }
230
214
  public mutation<
231
215
  TMutations extends AssertLegacyDef<TRouter>['mutations'],
232
216
  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
- >({
217
+ TInput extends inferProcedureInput<
218
+ AssertType<TMutations, ProcedureRecord>[TPath]
219
+ >,
220
+ >(path: TPath, input?: TInput, opts?: TRPCRequestOptions) {
221
+ type TOutput = inferProcedureOutput<TMutations[TPath]>;
222
+ return this.requestAsPromise<TInput, TOutput>({
248
223
  type: 'mutation',
249
224
  path,
250
- input: args[0] as any,
251
- context,
252
- signal,
225
+ input: input as TInput,
226
+ context: opts?.context,
227
+ signal: opts?.signal,
253
228
  });
254
229
  }
255
230
  public subscription<