@trpc/server 10.0.0-alpha.21 → 10.0.0-alpha.22

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 (148) hide show
  1. package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +3 -3
  2. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +3 -3
  3. package/adapters/express/dist/trpc-server-adapters-express.esm.js +3 -3
  4. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +2 -2
  5. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +2 -2
  6. package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +2 -2
  7. package/adapters/fastify/index.js +1 -1
  8. package/adapters/fetch/index.d.ts +1 -0
  9. package/adapters/fetch/index.js +1 -0
  10. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +3 -3
  11. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +3 -3
  12. package/adapters/next/dist/trpc-server-adapters-next.esm.js +3 -3
  13. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +3 -3
  14. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +3 -3
  15. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +3 -3
  16. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +3 -3
  17. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +3 -3
  18. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +3 -3
  19. package/dist/{transformTRPCResponse-9fdeecca.mjs → TRPCError-7971540a.mjs} +1 -53
  20. package/dist/{transformTRPCResponse-a57d3226.js → TRPCError-ddec3395.js} +0 -54
  21. package/dist/adapters/express.js +5 -4
  22. package/dist/adapters/express.mjs +5 -4
  23. package/dist/adapters/fastify/index.js +5 -5
  24. package/dist/adapters/fastify/index.mjs +5 -5
  25. package/dist/adapters/fetch/fetchRequestHandler.d.ts +8 -0
  26. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -0
  27. package/dist/adapters/fetch/index.d.ts +3 -0
  28. package/dist/adapters/fetch/index.d.ts.map +1 -0
  29. package/dist/adapters/fetch/index.js +69 -0
  30. package/dist/adapters/fetch/index.mjs +65 -0
  31. package/dist/adapters/fetch/index.ts.js +1 -0
  32. package/dist/adapters/fetch/types.d.ts +21 -0
  33. package/dist/adapters/fetch/types.d.ts.map +1 -0
  34. package/dist/adapters/next.d.ts.map +1 -1
  35. package/dist/adapters/next.js +9 -9
  36. package/dist/adapters/next.mjs +8 -8
  37. package/dist/adapters/node-http/index.js +5 -4
  38. package/dist/adapters/node-http/index.mjs +5 -4
  39. package/dist/adapters/node-http/types.d.ts +1 -2
  40. package/dist/adapters/node-http/types.d.ts.map +1 -1
  41. package/dist/adapters/standalone.js +5 -4
  42. package/dist/adapters/standalone.mjs +5 -4
  43. package/dist/adapters/ws.d.ts.map +1 -1
  44. package/dist/adapters/ws.js +117 -80
  45. package/dist/adapters/ws.mjs +111 -74
  46. package/dist/{codes-6c13cf43.mjs → envelopes-1deb2fa7.mjs} +17 -1
  47. package/dist/{codes-4e4d55a9.js → envelopes-a953b930.js} +16 -0
  48. package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
  49. package/dist/index.d.ts +0 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +37 -51
  52. package/dist/index.mjs +30 -42
  53. package/dist/internals/callProcedure.d.ts +2 -2
  54. package/dist/internals/callProcedure.d.ts.map +1 -1
  55. package/dist/internals/procedure.d.ts +4 -3
  56. package/dist/internals/procedure.d.ts.map +1 -1
  57. package/dist/internals/transformTRPCResponse.d.ts +4 -2
  58. package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
  59. package/dist/{nodeHTTPRequestHandler-13c4bded.mjs → nodeHTTPRequestHandler-1cdb6383.mjs} +2 -2
  60. package/dist/{nodeHTTPRequestHandler-745e43e5.js → nodeHTTPRequestHandler-848f07b5.js} +3 -3
  61. package/dist/observable/index.d.ts +5 -0
  62. package/dist/observable/index.d.ts.map +1 -0
  63. package/dist/observable/index.js +204 -0
  64. package/dist/observable/index.mjs +195 -0
  65. package/dist/observable/index.ts.js +1 -0
  66. package/dist/observable/internals/identity.d.ts +2 -0
  67. package/dist/observable/internals/identity.d.ts.map +1 -0
  68. package/dist/observable/internals/observableToPromise.d.ts +10 -0
  69. package/dist/observable/internals/observableToPromise.d.ts.map +1 -0
  70. package/dist/observable/internals/pipe.d.ts +4 -0
  71. package/dist/observable/internals/pipe.d.ts.map +1 -0
  72. package/dist/observable/observable.d.ts +5 -0
  73. package/dist/observable/observable.d.ts.map +1 -0
  74. package/dist/observable/operators/index.d.ts +4 -0
  75. package/dist/observable/operators/index.d.ts.map +1 -0
  76. package/dist/observable/operators/map.d.ts +3 -0
  77. package/dist/observable/operators/map.d.ts.map +1 -0
  78. package/dist/observable/operators/share.d.ts +6 -0
  79. package/dist/observable/operators/share.d.ts.map +1 -0
  80. package/dist/observable/operators/tap.d.ts +3 -0
  81. package/dist/observable/operators/tap.d.ts.map +1 -0
  82. package/dist/observable/types.d.ts +29 -0
  83. package/dist/observable/types.d.ts.map +1 -0
  84. package/dist/observable-137ea1bd.mjs +105 -0
  85. package/dist/observable-3aa4d911.js +108 -0
  86. package/dist/{resolveHTTPResponse-de40fda7.mjs → resolveHTTPResponse-54a79e6c.mjs} +14 -20
  87. package/dist/{resolveHTTPResponse-b1167b6a.js → resolveHTTPResponse-ec3dccaa.js} +21 -27
  88. package/dist/router.d.ts +6 -6
  89. package/dist/router.d.ts.map +1 -1
  90. package/dist/rpc/envelopes.d.ts +61 -39
  91. package/dist/rpc/envelopes.d.ts.map +1 -1
  92. package/dist/rpc/index.js +7 -3
  93. package/dist/rpc/index.mjs +1 -1
  94. package/dist/subscription.d.ts +3 -52
  95. package/dist/subscription.d.ts.map +1 -1
  96. package/dist/subscription.js +44 -0
  97. package/dist/subscription.mjs +40 -0
  98. package/dist/subscription.ts.js +1 -0
  99. package/dist/transformTRPCResponse-333bed6c.js +56 -0
  100. package/dist/transformTRPCResponse-e0cba527.mjs +53 -0
  101. package/dist/types.d.ts +8 -0
  102. package/dist/types.d.ts.map +1 -1
  103. package/observable/index.d.ts +1 -0
  104. package/observable/index.js +1 -0
  105. package/package.json +24 -7
  106. package/rpc/dist/trpc-server-rpc.cjs.dev.js +1 -1
  107. package/rpc/dist/trpc-server-rpc.cjs.prod.js +1 -1
  108. package/rpc/dist/trpc-server-rpc.esm.js +1 -1
  109. package/src/adapters/fetch/fetchRequestHandler.ts +61 -0
  110. package/src/adapters/fetch/index.ts +2 -0
  111. package/src/adapters/fetch/types.ts +28 -0
  112. package/src/adapters/next.ts +3 -5
  113. package/src/adapters/node-http/types.ts +1 -2
  114. package/src/adapters/ws.ts +109 -71
  115. package/src/http/resolveHTTPResponse.ts +16 -20
  116. package/src/index.ts +0 -1
  117. package/src/internals/callProcedure.ts +6 -3
  118. package/src/internals/procedure.ts +40 -27
  119. package/src/internals/transformTRPCResponse.ts +20 -15
  120. package/src/observable/index.ts +4 -0
  121. package/src/observable/internals/identity.ts +3 -0
  122. package/src/observable/internals/observableToPromise.ts +49 -0
  123. package/src/observable/internals/pipe.ts +22 -0
  124. package/src/observable/observable.test.ts +101 -0
  125. package/src/observable/observable.ts +75 -0
  126. package/src/observable/operators/index.ts +3 -0
  127. package/src/observable/operators/map.test.ts +92 -0
  128. package/src/observable/operators/map.ts +25 -0
  129. package/src/observable/operators/share.test.ts +60 -0
  130. package/src/observable/operators/share.ts +67 -0
  131. package/src/observable/operators/tap.ts +26 -0
  132. package/src/observable/types.ts +69 -0
  133. package/src/router.ts +7 -9
  134. package/src/rpc/envelopes.ts +87 -68
  135. package/src/subscription.ts +5 -123
  136. package/src/types.ts +7 -0
  137. package/dist/internals/wrapCallSafe.d.ts +0 -16
  138. package/dist/internals/wrapCallSafe.d.ts.map +0 -1
  139. package/dist/subscription-4b936ba3.js +0 -136
  140. package/dist/subscription-8a85f253.mjs +0 -133
  141. package/src/internals/wrapCallSafe.ts +0 -19
  142. package/ws/dist/trpc-server-ws.cjs.d.ts +0 -1
  143. package/ws/dist/trpc-server-ws.cjs.dev.js +0 -15
  144. package/ws/dist/trpc-server-ws.cjs.js +0 -7
  145. package/ws/dist/trpc-server-ws.cjs.prod.js +0 -15
  146. package/ws/dist/trpc-server-ws.esm.js +0 -11
  147. package/ws/index.d.ts +0 -1
  148. package/ws/index.js +0 -1
@@ -1,6 +1,6 @@
1
- import { T as TRPCError, g as getCauseFromUnknown, t as transformTRPCResponse, c as callProcedure, a as getErrorFromUnknown } from '../transformTRPCResponse-9fdeecca.mjs';
2
- import { S as Subscription } from '../subscription-8a85f253.mjs';
3
- import 'events';
1
+ import { T as TRPCError, g as getCauseFromUnknown, a as getErrorFromUnknown } from '../TRPCError-7971540a.mjs';
2
+ import { t as transformTRPCResponse, c as callProcedure } from '../transformTRPCResponse-e0cba527.mjs';
3
+ import { i as isObservable } from '../observable-137ea1bd.mjs';
4
4
 
5
5
  /* istanbul ignore next */
6
6
  function assertIsObject(obj) {
@@ -55,8 +55,8 @@ function parseMessage(obj, transformer) {
55
55
  if (method === 'subscription.stop') {
56
56
  return {
57
57
  id,
58
- method,
59
- params: undefined
58
+ jsonrpc,
59
+ method
60
60
  };
61
61
  }
62
62
 
@@ -69,8 +69,8 @@ function parseMessage(obj, transformer) {
69
69
  assertIsString(path);
70
70
  const input = transformer.input.deserialize(rawInput);
71
71
  return {
72
- jsonrpc,
73
72
  id,
73
+ jsonrpc,
74
74
  method,
75
75
  params: {
76
76
  input,
@@ -99,6 +99,20 @@ function applyWSSHandler(opts) {
99
99
  client.send(JSON.stringify(transformTRPCResponse(router, untransformedJSON)));
100
100
  }
101
101
 
102
+ function stopSubscription(subscription, {
103
+ id,
104
+ jsonrpc
105
+ }) {
106
+ subscription.unsubscribe();
107
+ respond({
108
+ id,
109
+ jsonrpc,
110
+ result: {
111
+ type: 'stopped'
112
+ }
113
+ });
114
+ }
115
+
102
116
  const ctxPromise = createContext === null || createContext === void 0 ? void 0 : createContext({
103
117
  req,
104
118
  res: client
@@ -107,7 +121,8 @@ function applyWSSHandler(opts) {
107
121
 
108
122
  async function handleRequest(msg) {
109
123
  const {
110
- id
124
+ id,
125
+ jsonrpc
111
126
  } = msg;
112
127
  /* istanbul ignore next */
113
128
 
@@ -122,7 +137,10 @@ function applyWSSHandler(opts) {
122
137
  const sub = clientSubscriptions.get(id);
123
138
 
124
139
  if (sub) {
125
- sub.destroy();
140
+ stopSubscription(sub, {
141
+ id,
142
+ jsonrpc
143
+ });
126
144
  }
127
145
 
128
146
  clientSubscriptions.delete(id);
@@ -146,9 +164,18 @@ function applyWSSHandler(opts) {
146
164
  ctx
147
165
  });
148
166
 
149
- if (!(result instanceof Subscription)) {
167
+ if (type === 'subscription') {
168
+ if (!isObservable(result)) {
169
+ throw new TRPCError({
170
+ message: `Subscription ${path} did not return an observable`,
171
+ code: 'INTERNAL_SERVER_ERROR'
172
+ });
173
+ }
174
+ } else {
175
+ // send the value as data if the method is not a subscription
150
176
  respond({
151
177
  id,
178
+ jsonrpc,
152
179
  result: {
153
180
  type: 'data',
154
181
  data: result
@@ -157,12 +184,61 @@ function applyWSSHandler(opts) {
157
184
  return;
158
185
  }
159
186
 
160
- const sub = result;
187
+ const observable = result;
188
+ const sub = observable.subscribe({
189
+ next(data) {
190
+ respond({
191
+ id,
192
+ jsonrpc,
193
+ result: {
194
+ type: 'data',
195
+ data
196
+ }
197
+ });
198
+ },
199
+
200
+ error(err) {
201
+ var _opts$onError;
202
+
203
+ const error = getErrorFromUnknown(err);
204
+ (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, {
205
+ error,
206
+ path,
207
+ type,
208
+ ctx,
209
+ req,
210
+ input
211
+ });
212
+ respond({
213
+ id,
214
+ jsonrpc,
215
+ error: router.getErrorShape({
216
+ error,
217
+ type,
218
+ path,
219
+ input,
220
+ ctx
221
+ })
222
+ });
223
+ },
224
+
225
+ complete() {
226
+ respond({
227
+ id,
228
+ jsonrpc,
229
+ result: {
230
+ type: 'stopped'
231
+ }
232
+ });
233
+ }
234
+
235
+ });
161
236
  /* istanbul ignore next */
162
237
 
163
238
  if (client.readyState !== client.OPEN) {
164
239
  // if the client got disconnected whilst initializing the subscription
165
- sub.destroy();
240
+ // no need to send stopped message if the client is disconnected
241
+ sub.unsubscribe();
166
242
  return;
167
243
  }
168
244
  /* istanbul ignore next */
@@ -170,7 +246,10 @@ function applyWSSHandler(opts) {
170
246
 
171
247
  if (clientSubscriptions.has(id)) {
172
248
  // duplicate request ids for client
173
- sub.destroy();
249
+ stopSubscription(sub, {
250
+ id,
251
+ jsonrpc
252
+ });
174
253
  throw new TRPCError({
175
254
  message: `Duplicate id ${id}`,
176
255
  code: 'BAD_REQUEST'
@@ -178,54 +257,13 @@ function applyWSSHandler(opts) {
178
257
  }
179
258
 
180
259
  clientSubscriptions.set(id, sub);
181
- sub.on('data', data => {
182
- respond({
183
- id,
184
- result: {
185
- type: 'data',
186
- data
187
- }
188
- });
189
- });
190
- sub.on('error', _error => {
191
- var _opts$onError;
192
-
193
- const error = getErrorFromUnknown(_error);
194
- const json = {
195
- id,
196
- error: router.getErrorShape({
197
- error,
198
- type,
199
- path,
200
- input,
201
- ctx
202
- })
203
- };
204
- (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, {
205
- error,
206
- path,
207
- type,
208
- ctx,
209
- req,
210
- input
211
- });
212
- respond(json);
213
- });
214
- sub.on('destroy', () => {
215
- respond({
216
- id,
217
- result: {
218
- type: 'stopped'
219
- }
220
- });
221
- });
222
260
  respond({
223
261
  id,
262
+ jsonrpc,
224
263
  result: {
225
264
  type: 'started'
226
265
  }
227
266
  });
228
- await sub.start();
229
267
  } catch (cause)
230
268
  /* istanbul ignore next */
231
269
  {
@@ -233,13 +271,6 @@ function applyWSSHandler(opts) {
233
271
 
234
272
  // procedure threw an error
235
273
  const error = getErrorFromUnknown(cause);
236
- const json = router.getErrorShape({
237
- error,
238
- type,
239
- path,
240
- input,
241
- ctx
242
- });
243
274
  (_opts$onError2 = opts.onError) === null || _opts$onError2 === void 0 ? void 0 : _opts$onError2.call(opts, {
244
275
  error,
245
276
  path,
@@ -250,7 +281,14 @@ function applyWSSHandler(opts) {
250
281
  });
251
282
  respond({
252
283
  id,
253
- error: json
284
+ jsonrpc,
285
+ error: router.getErrorShape({
286
+ error,
287
+ type,
288
+ path,
289
+ input,
290
+ ctx
291
+ })
254
292
  });
255
293
  }
256
294
  }
@@ -280,7 +318,7 @@ function applyWSSHandler(opts) {
280
318
  });
281
319
  client.once('close', () => {
282
320
  for (const sub of clientSubscriptions.values()) {
283
- sub.destroy();
321
+ sub.unsubscribe();
284
322
  }
285
323
 
286
324
  clientSubscriptions.clear();
@@ -293,16 +331,6 @@ function applyWSSHandler(opts) {
293
331
  var _opts$onError3, _global$setImmediate;
294
332
 
295
333
  const error = getErrorFromUnknown(cause);
296
- const json = {
297
- id: null,
298
- error: router.getErrorShape({
299
- error,
300
- type: 'unknown',
301
- path: undefined,
302
- input: undefined,
303
- ctx
304
- })
305
- };
306
334
  (_opts$onError3 = opts.onError) === null || _opts$onError3 === void 0 ? void 0 : _opts$onError3.call(opts, {
307
335
  error,
308
336
  path: undefined,
@@ -311,7 +339,16 @@ function applyWSSHandler(opts) {
311
339
  req,
312
340
  input: undefined
313
341
  });
314
- respond(json); // close in next tick
342
+ respond({
343
+ id: null,
344
+ error: router.getErrorShape({
345
+ error,
346
+ type: 'unknown',
347
+ path: undefined,
348
+ input: undefined,
349
+ ctx
350
+ })
351
+ }); // close in next tick
315
352
 
316
353
  ((_global$setImmediate = global.setImmediate) !== null && _global$setImmediate !== void 0 ? _global$setImmediate : global.setTimeout)(() => {
317
354
  client.close();
@@ -55,4 +55,20 @@ const TRPC_ERROR_CODES_BY_KEY = {
55
55
  };
56
56
  const TRPC_ERROR_CODES_BY_NUMBER = /*#__PURE__*/invert(TRPC_ERROR_CODES_BY_KEY);
57
57
 
58
- export { TRPC_ERROR_CODES_BY_KEY as T, TRPC_ERROR_CODES_BY_NUMBER as a, invert as i };
58
+ /* eslint-disable @typescript-eslint/no-namespace */
59
+
60
+ /**
61
+ * Error response
62
+ */
63
+
64
+ /**
65
+ * JSON-RPC 2.0 Specification
66
+ */
67
+ let JSONRPC2;
68
+ /**
69
+ * TRPC HTTP Envelopes
70
+ */
71
+
72
+ (function (_JSONRPC) {})(JSONRPC2 || (JSONRPC2 = {}));
73
+
74
+ export { JSONRPC2 as J, TRPC_ERROR_CODES_BY_KEY as T, TRPC_ERROR_CODES_BY_NUMBER as a, invert as i };
@@ -57,6 +57,22 @@ const TRPC_ERROR_CODES_BY_KEY = {
57
57
  };
58
58
  const TRPC_ERROR_CODES_BY_NUMBER = /*#__PURE__*/invert(TRPC_ERROR_CODES_BY_KEY);
59
59
 
60
+ /* eslint-disable @typescript-eslint/no-namespace */
61
+
62
+ /**
63
+ * Error response
64
+ */
65
+
66
+ /**
67
+ * JSON-RPC 2.0 Specification
68
+ */
69
+ exports.JSONRPC2 = void 0;
70
+ /**
71
+ * TRPC HTTP Envelopes
72
+ */
73
+
74
+ (function (_JSONRPC) {})(exports.JSONRPC2 || (exports.JSONRPC2 = {}));
75
+
60
76
  exports.TRPC_ERROR_CODES_BY_KEY = TRPC_ERROR_CODES_BY_KEY;
61
77
  exports.TRPC_ERROR_CODES_BY_NUMBER = TRPC_ERROR_CODES_BY_NUMBER;
62
78
  exports.invert = invert;
@@ -1 +1 @@
1
- {"version":3,"file":"resolveHTTPResponse.d.ts","sourceRoot":"","sources":["../../src/http/resolveHTTPResponse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EACL,SAAS,EAET,kBAAkB,EAEnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EACL,sBAAsB,EAEtB,WAAW,EACX,YAAY,EACb,MAAM,mBAAmB,CAAC;AA4B3B,UAAU,yBAAyB,CACjC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,WAAW,CAC5B,SAAQ,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC;IACjD,aAAa,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CAC1B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,WAAW,EAC5B,IAAI,EAAE,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAmM3E"}
1
+ {"version":3,"file":"resolveHTTPResponse.d.ts","sourceRoot":"","sources":["../../src/http/resolveHTTPResponse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EACL,SAAS,EAET,kBAAkB,EAEnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EACL,sBAAsB,EAEtB,WAAW,EACX,YAAY,EACb,MAAM,mBAAmB,CAAC;AA4B3B,UAAU,yBAAyB,CACjC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,WAAW,CAC5B,SAAQ,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC;IACjD,aAAa,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CAC1B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,WAAW,EAC5B,IAAI,EAAE,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CA+L3E"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export * from './assertNotBrowser';
2
2
  export * from './http';
3
- export * from './subscription';
4
3
  export * from './transformer';
5
4
  export * from './TRPCError';
6
5
  export * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -2,35 +2,15 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var resolveHTTPResponse = require('./resolveHTTPResponse-b1167b6a.js');
6
- var subscription = require('./subscription-4b936ba3.js');
7
- var transformTRPCResponse = require('./transformTRPCResponse-a57d3226.js');
8
- var codes = require('./codes-4e4d55a9.js');
9
- require('events');
5
+ var resolveHTTPResponse = require('./resolveHTTPResponse-ec3dccaa.js');
6
+ var envelopes = require('./envelopes-a953b930.js');
7
+ var TRPCError = require('./TRPCError-ddec3395.js');
8
+ require('./transformTRPCResponse-333bed6c.js');
10
9
 
11
10
  resolveHTTPResponse.assertNotBrowser();
12
11
 
13
12
  const middlewareMarker = /*#__PURE__*/Symbol('middlewareMarker');
14
13
 
15
- /**
16
- * Wrap a function in a safe wrapper that never throws
17
- * Returns a discriminated union
18
- */
19
- async function wrapCallSafe(fn) {
20
- try {
21
- const data = await fn();
22
- return {
23
- ok: true,
24
- data
25
- };
26
- } catch (cause) {
27
- return {
28
- ok: false,
29
- error: cause
30
- };
31
- }
32
- }
33
-
34
14
  /* eslint-disable @typescript-eslint/no-explicit-any */
35
15
  resolveHTTPResponse.assertNotBrowser();
36
16
 
@@ -91,9 +71,9 @@ class Procedure {
91
71
  try {
92
72
  return await this.parseInputFn(rawInput);
93
73
  } catch (cause) {
94
- throw new transformTRPCResponse.TRPCError({
74
+ throw new TRPCError.TRPCError({
95
75
  code: 'BAD_REQUEST',
96
- cause: transformTRPCResponse.getCauseFromUnknown(cause)
76
+ cause: TRPCError.getCauseFromUnknown(cause)
97
77
  });
98
78
  }
99
79
  }
@@ -102,9 +82,9 @@ class Procedure {
102
82
  try {
103
83
  return await this.parseOutputFn(rawOutput);
104
84
  } catch (cause) {
105
- throw new transformTRPCResponse.TRPCError({
85
+ throw new TRPCError.TRPCError({
106
86
  code: 'INTERNAL_SERVER_ERROR',
107
- cause: transformTRPCResponse.getCauseFromUnknown(cause),
87
+ cause: TRPCError.getCauseFromUnknown(cause),
108
88
  message: 'Output validation failed'
109
89
  });
110
90
  }
@@ -132,34 +112,42 @@ class Procedure {
132
112
  data,
133
113
  ctx
134
114
  };
135
- }]); // create `next()` calls in resolvers
115
+ }]); // run the middlewares recursively with the resolver as the last one
136
116
 
137
- const nextFns = middlewaresWithResolver.map((fn, index) => {
138
- return async nextOpts => {
139
- const res = await wrapCallSafe(() => fn({
140
- ctx: nextOpts ? nextOpts.ctx : opts.ctx,
117
+ const callRecursive = async (callOpts = {
118
+ index: 0,
119
+ ctx: opts.ctx
120
+ }) => {
121
+ try {
122
+ const result = await middlewaresWithResolver[callOpts.index]({
123
+ ctx: callOpts.ctx,
141
124
  type: opts.type,
142
125
  path: opts.path,
143
126
  rawInput: opts.rawInput,
144
127
  meta: this.meta,
145
- next: nextFns[index + 1]
146
- }));
147
-
148
- if (res.ok) {
149
- return res.data;
150
- }
151
-
128
+ next: async nextOpts => {
129
+ return await callRecursive({
130
+ index: callOpts.index + 1,
131
+ ctx: nextOpts ? nextOpts.ctx : callOpts.ctx
132
+ });
133
+ }
134
+ });
135
+ return result;
136
+ } catch (cause) {
152
137
  return {
138
+ ctx: callOpts.ctx,
153
139
  ok: false,
154
- error: transformTRPCResponse.getErrorFromUnknown(res.error)
140
+ error: TRPCError.getErrorFromUnknown(cause),
141
+ marker: middlewareMarker
155
142
  };
156
- };
157
- }); // there's always at least one "next" since we wrap this.resolver in a middleware
143
+ }
144
+ }; // there's always at least one "next" since we wrap this.resolver in a middleware
145
+
158
146
 
159
- const result = await nextFns[0]();
147
+ const result = await callRecursive();
160
148
 
161
149
  if (!result) {
162
- throw new transformTRPCResponse.TRPCError({
150
+ throw new TRPCError.TRPCError({
163
151
  code: 'INTERNAL_SERVER_ERROR',
164
152
  message: 'No result from middlewares - did you forget to `return next()`?'
165
153
  });
@@ -194,7 +182,7 @@ class Procedure {
194
182
  function createProcedure(opts) {
195
183
  const inputParser = 'input' in opts ? opts.input : input => {
196
184
  if (input != null) {
197
- throw new transformTRPCResponse.TRPCError({
185
+ throw new TRPCError.TRPCError({
198
186
  code: 'BAD_REQUEST',
199
187
  message: 'No input expected'
200
188
  });
@@ -384,7 +372,7 @@ class Router {
384
372
  const procedure = defs[path];
385
373
 
386
374
  if (!procedure) {
387
- throw new transformTRPCResponse.TRPCError({
375
+ throw new TRPCError.TRPCError({
388
376
  code: 'NOT_FOUND',
389
377
  message: `No "${type}"-procedure on path "${path}"`
390
378
  });
@@ -458,7 +446,7 @@ class Router {
458
446
  } = opts.error;
459
447
  const shape = {
460
448
  message: error.message,
461
- code: codes.TRPC_ERROR_CODES_BY_KEY[code],
449
+ code: envelopes.TRPC_ERROR_CODES_BY_KEY[code],
462
450
  data: {
463
451
  code,
464
452
  httpStatus: resolveHTTPResponse.getHTTPStatusCodeFromError(error)
@@ -513,8 +501,6 @@ function router() {
513
501
 
514
502
  exports.assertNotBrowser = resolveHTTPResponse.assertNotBrowser;
515
503
  exports.resolveHTTPResponse = resolveHTTPResponse.resolveHTTPResponse;
516
- exports.Subscription = subscription.Subscription;
517
- exports.subscriptionPullFactory = subscription.subscriptionPullFactory;
518
- exports.TRPCError = transformTRPCResponse.TRPCError;
504
+ exports.TRPCError = TRPCError.TRPCError;
519
505
  exports.Router = Router;
520
506
  exports.router = router;
package/dist/index.mjs CHANGED
@@ -1,34 +1,14 @@
1
- import { a as assertNotBrowser, g as getHTTPStatusCodeFromError } from './resolveHTTPResponse-de40fda7.mjs';
2
- export { a as assertNotBrowser, r as resolveHTTPResponse } from './resolveHTTPResponse-de40fda7.mjs';
3
- export { S as Subscription, s as subscriptionPullFactory } from './subscription-8a85f253.mjs';
4
- import { T as TRPCError, g as getCauseFromUnknown, a as getErrorFromUnknown } from './transformTRPCResponse-9fdeecca.mjs';
5
- export { T as TRPCError } from './transformTRPCResponse-9fdeecca.mjs';
6
- import { T as TRPC_ERROR_CODES_BY_KEY } from './codes-6c13cf43.mjs';
7
- import 'events';
1
+ import { a as assertNotBrowser, g as getHTTPStatusCodeFromError } from './resolveHTTPResponse-54a79e6c.mjs';
2
+ export { a as assertNotBrowser, r as resolveHTTPResponse } from './resolveHTTPResponse-54a79e6c.mjs';
3
+ import { T as TRPC_ERROR_CODES_BY_KEY } from './envelopes-1deb2fa7.mjs';
4
+ import { T as TRPCError, g as getCauseFromUnknown, a as getErrorFromUnknown } from './TRPCError-7971540a.mjs';
5
+ export { T as TRPCError } from './TRPCError-7971540a.mjs';
6
+ import './transformTRPCResponse-e0cba527.mjs';
8
7
 
9
8
  assertNotBrowser();
10
9
 
11
10
  const middlewareMarker = /*#__PURE__*/Symbol('middlewareMarker');
12
11
 
13
- /**
14
- * Wrap a function in a safe wrapper that never throws
15
- * Returns a discriminated union
16
- */
17
- async function wrapCallSafe(fn) {
18
- try {
19
- const data = await fn();
20
- return {
21
- ok: true,
22
- data
23
- };
24
- } catch (cause) {
25
- return {
26
- ok: false,
27
- error: cause
28
- };
29
- }
30
- }
31
-
32
12
  /* eslint-disable @typescript-eslint/no-explicit-any */
33
13
  assertNotBrowser();
34
14
 
@@ -130,31 +110,39 @@ class Procedure {
130
110
  data,
131
111
  ctx
132
112
  };
133
- }]); // create `next()` calls in resolvers
113
+ }]); // run the middlewares recursively with the resolver as the last one
134
114
 
135
- const nextFns = middlewaresWithResolver.map((fn, index) => {
136
- return async nextOpts => {
137
- const res = await wrapCallSafe(() => fn({
138
- ctx: nextOpts ? nextOpts.ctx : opts.ctx,
115
+ const callRecursive = async (callOpts = {
116
+ index: 0,
117
+ ctx: opts.ctx
118
+ }) => {
119
+ try {
120
+ const result = await middlewaresWithResolver[callOpts.index]({
121
+ ctx: callOpts.ctx,
139
122
  type: opts.type,
140
123
  path: opts.path,
141
124
  rawInput: opts.rawInput,
142
125
  meta: this.meta,
143
- next: nextFns[index + 1]
144
- }));
145
-
146
- if (res.ok) {
147
- return res.data;
148
- }
149
-
126
+ next: async nextOpts => {
127
+ return await callRecursive({
128
+ index: callOpts.index + 1,
129
+ ctx: nextOpts ? nextOpts.ctx : callOpts.ctx
130
+ });
131
+ }
132
+ });
133
+ return result;
134
+ } catch (cause) {
150
135
  return {
136
+ ctx: callOpts.ctx,
151
137
  ok: false,
152
- error: getErrorFromUnknown(res.error)
138
+ error: getErrorFromUnknown(cause),
139
+ marker: middlewareMarker
153
140
  };
154
- };
155
- }); // there's always at least one "next" since we wrap this.resolver in a middleware
141
+ }
142
+ }; // there's always at least one "next" since we wrap this.resolver in a middleware
143
+
156
144
 
157
- const result = await nextFns[0]();
145
+ const result = await callRecursive();
158
146
 
159
147
  if (!result) {
160
148
  throw new TRPCError({
@@ -1,10 +1,10 @@
1
+ import { Observable } from '../observable';
1
2
  import { AnyRouter, ProcedureType } from '../router';
2
- import { Subscription } from '../subscription';
3
3
  export declare function callProcedure<TRouter extends AnyRouter<TContext>, TContext>(opts: {
4
4
  path: string;
5
5
  input: unknown;
6
6
  router: TRouter;
7
7
  ctx: TContext;
8
8
  type: ProcedureType;
9
- }): Promise<unknown | Subscription<TRouter>>;
9
+ }): Promise<unknown | Observable<TRouter, any>>;
10
10
  //# sourceMappingURL=callProcedure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"callProcedure.d.ts","sourceRoot":"","sources":["../../src/internals/callProcedure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,wBAAsB,aAAa,CACjC,OAAO,SAAS,SAAS,CAAC,QAAQ,CAAC,EACnC,QAAQ,EACR,IAAI,EAAE;IACN,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;CACrB,GAAG,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAgB3C"}
1
+ {"version":3,"file":"callProcedure.d.ts","sourceRoot":"","sources":["../../src/internals/callProcedure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAErD,wBAAsB,aAAa,CACjC,OAAO,SAAS,SAAS,CAAC,QAAQ,CAAC,EACnC,QAAQ,EACR,IAAI,EAAE;IACN,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;CACrB,GAAG,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAmB9C"}
@@ -1,4 +1,5 @@
1
1
  import { ProcedureType } from '../router';
2
+ import { InferLast } from '../types';
2
3
  import { MiddlewareFunction } from './middlewares';
3
4
  export declare type ProcedureParserZodEsque<TInput, TOutput> = {
4
5
  _input: TInput;
@@ -66,18 +67,18 @@ export declare type CreateProcedureWithInput<TContext, TMeta, TInput, TOutput> =
66
67
  input: ProcedureParser<TInput>;
67
68
  output?: ProcedureParser<TOutput>;
68
69
  meta?: TMeta;
69
- resolve: ProcedureResolver<TContext, TInput, TOutput>;
70
+ resolve: ProcedureResolver<TContext, TInput, InferLast<TOutput>>;
70
71
  };
71
72
  export declare type CreateProcedureWithInputOutputParser<TContext, TMeta, TInput, TParsedInput, TOutput, TParsedOutput> = {
72
73
  input: ProcedureParserWithInputOutput<TInput, TParsedInput>;
73
74
  output?: ProcedureParserWithInputOutput<TOutput, TParsedOutput>;
74
75
  meta?: TMeta;
75
- resolve: ProcedureResolver<TContext, TParsedInput, TOutput>;
76
+ resolve: ProcedureResolver<TContext, TParsedInput, InferLast<TOutput>>;
76
77
  };
77
78
  export declare type CreateProcedureWithoutInput<TContext, TMeta, TOutput, TParsedOutput> = {
78
79
  output?: ProcedureParserWithInputOutput<TOutput, TParsedOutput> | ProcedureParser<TOutput>;
79
80
  meta?: TMeta;
80
- resolve: ProcedureResolver<TContext, undefined, TOutput>;
81
+ resolve: ProcedureResolver<TContext, undefined, InferLast<TOutput>>;
81
82
  };
82
83
  export declare type CreateProcedureOptions<TContext, TMeta = undefined, TInput = undefined, TParsedInput = undefined, TOutput = undefined, TParsedOutput = undefined> = CreateProcedureWithInputOutputParser<TContext, TMeta, TInput, TParsedInput, TOutput, TParsedOutput> | CreateProcedureWithInput<TContext, TMeta, TInput, TOutput> | CreateProcedureWithoutInput<TContext, TMeta, TOutput, TParsedOutput>;
83
84
  export declare function createProcedure<TContext, TMeta, TInput, TParsedInput, TOutput, TParsedOutput>(opts: CreateProcedureOptions<TContext, TMeta, TInput, TParsedInput, TOutput, TParsedOutput>): Procedure<unknown, TContext, TMeta, TInput, TParsedInput, TOutput, TParsedOutput>;