@trpc/server 10.0.0-proxy-beta.12 → 10.0.0-proxy-beta.14

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 (81) hide show
  1. package/dist/{TRPCError-281ac25a.mjs → TRPCError-e99e7cbe.mjs} +1 -1
  2. package/dist/adapters/aws-lambda/index.js +2 -3
  3. package/dist/adapters/aws-lambda/index.mjs +3 -4
  4. package/dist/adapters/express.js +3 -3
  5. package/dist/adapters/express.mjs +4 -4
  6. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  7. package/dist/adapters/fastify/index.js +2 -3
  8. package/dist/adapters/fastify/index.mjs +3 -4
  9. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  10. package/dist/adapters/fetch/index.js +2 -3
  11. package/dist/adapters/fetch/index.mjs +3 -4
  12. package/dist/adapters/next.js +3 -3
  13. package/dist/adapters/next.mjs +4 -4
  14. package/dist/adapters/node-http/index.js +3 -3
  15. package/dist/adapters/node-http/index.mjs +4 -4
  16. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  17. package/dist/adapters/standalone.js +3 -3
  18. package/dist/adapters/standalone.mjs +4 -4
  19. package/dist/adapters/ws.d.ts.map +1 -1
  20. package/dist/adapters/ws.js +10 -3
  21. package/dist/adapters/ws.mjs +11 -4
  22. package/dist/core/index.d.ts +1 -1
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/initTRPC.d.ts +22 -5
  25. package/dist/core/initTRPC.d.ts.map +1 -1
  26. package/dist/core/internals/config.d.ts +13 -0
  27. package/dist/core/internals/config.d.ts.map +1 -1
  28. package/dist/core/internals/procedureBuilder.d.ts +24 -24
  29. package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
  30. package/dist/core/middleware.d.ts +1 -1
  31. package/dist/core/middleware.d.ts.map +1 -1
  32. package/dist/core/procedure.d.ts +7 -15
  33. package/dist/core/procedure.d.ts.map +1 -1
  34. package/dist/core/router.d.ts +8 -3
  35. package/dist/core/router.d.ts.map +1 -1
  36. package/dist/deprecated/internals/procedure.d.ts.map +1 -1
  37. package/dist/deprecated/interop.d.ts +2 -2
  38. package/dist/deprecated/interop.d.ts.map +1 -1
  39. package/dist/deprecated/router.d.ts.map +1 -1
  40. package/dist/http/index.d.ts.map +1 -1
  41. package/dist/index.d.ts +0 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +739 -25
  44. package/dist/index.mjs +724 -9
  45. package/dist/internals.d.ts +1 -2
  46. package/dist/internals.d.ts.map +1 -1
  47. package/dist/{nodeHTTPRequestHandler-f627eff7.mjs → nodeHTTPRequestHandler-205f7545.mjs} +2 -3
  48. package/dist/{nodeHTTPRequestHandler-831afd20.js → nodeHTTPRequestHandler-efc38711.js} +1 -2
  49. package/dist/resolveHTTPResponse-4ceb1785.mjs +205 -0
  50. package/dist/resolveHTTPResponse-bf4c6ceb.js +207 -0
  51. package/dist/subscription.mjs +1 -1
  52. package/dist/{resolveHTTPResponse-190892ac.js → transformTRPCResponse-05aa84c1.js} +22 -202
  53. package/dist/{resolveHTTPResponse-75ea5653.mjs → transformTRPCResponse-959de787.mjs} +21 -202
  54. package/dist/types.d.ts +9 -2
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +6 -6
  57. package/src/adapters/fastify/fastifyRequestHandler.ts +0 -3
  58. package/src/adapters/fetch/fetchRequestHandler.ts +0 -3
  59. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +0 -3
  60. package/src/adapters/ws.ts +13 -3
  61. package/src/core/index.ts +1 -0
  62. package/src/core/initTRPC.ts +12 -0
  63. package/src/core/internals/config.ts +19 -0
  64. package/src/core/internals/procedureBuilder.ts +38 -47
  65. package/src/core/middleware.ts +1 -1
  66. package/src/core/procedure.ts +7 -18
  67. package/src/core/router.ts +20 -13
  68. package/src/deprecated/internals/procedure.ts +0 -3
  69. package/src/deprecated/interop.ts +2 -12
  70. package/src/deprecated/router.ts +0 -3
  71. package/src/http/index.ts +0 -4
  72. package/src/index.ts +0 -1
  73. package/src/internals.ts +4 -6
  74. package/src/types.ts +28 -7
  75. package/dist/assertNotBrowser.d.ts +0 -2
  76. package/dist/assertNotBrowser.d.ts.map +0 -1
  77. package/dist/router-133cf4a4.mjs +0 -718
  78. package/dist/router-3bad08e5.js +0 -724
  79. package/dist/transformTRPCResponse-11ac69cc.js +0 -27
  80. package/dist/transformTRPCResponse-c8138d5f.mjs +0 -25
  81. package/src/assertNotBrowser.ts +0 -12
@@ -3,9 +3,8 @@
3
3
  */
4
4
  export type { DefaultErrorShape } from './error/formatter';
5
5
  export type { mergeRoutersGeneric } from './core/internals/__generated__/mergeRoutersGeneric';
6
- export type { ProcedureBuilder } from './core/internals/procedureBuilder';
6
+ export type { ProcedureBuilder, BuildProcedure, } from './core/internals/procedureBuilder';
7
7
  export type { Overwrite, unsetMarker } from './core/internals/utils';
8
8
  export type { MiddlewareFunction } from './core/middleware';
9
9
  export type { Router, RouterDef } from './core/router';
10
- export type { MutationProcedure, QueryProcedure, SubscriptionProcedure, } from './core/procedure';
11
10
  //# sourceMappingURL=internals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internals.d.ts","sourceRoot":"","sources":["../src/internals.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,YAAY,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"internals.d.ts","sourceRoot":"","sources":["../src/internals.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,YAAY,EACV,gBAAgB,EAChB,cAAc,GACf,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
@@ -1,5 +1,5 @@
1
- import { b as assertNotBrowser, r as resolveHTTPResponse } from './resolveHTTPResponse-75ea5653.mjs';
2
- import { T as TRPCError } from './TRPCError-281ac25a.mjs';
1
+ import { r as resolveHTTPResponse } from './resolveHTTPResponse-4ceb1785.mjs';
2
+ import { T as TRPCError } from './TRPCError-e99e7cbe.mjs';
3
3
 
4
4
  async function getPostBody({ req , maxBodySize }) {
5
5
  return new Promise((resolve)=>{
@@ -34,7 +34,6 @@ async function getPostBody({ req , maxBodySize }) {
34
34
  });
35
35
  }
36
36
 
37
- assertNotBrowser();
38
37
  async function nodeHTTPRequestHandler(opts) {
39
38
  const createContext = async function _createContext() {
40
39
  return await opts.createContext?.(opts);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var resolveHTTPResponse = require('./resolveHTTPResponse-190892ac.js');
3
+ var resolveHTTPResponse = require('./resolveHTTPResponse-bf4c6ceb.js');
4
4
  var TRPCError = require('./TRPCError-fe9113e5.js');
5
5
 
6
6
  async function getPostBody({ req , maxBodySize }) {
@@ -36,7 +36,6 @@ async function getPostBody({ req , maxBodySize }) {
36
36
  });
37
37
  }
38
38
 
39
- resolveHTTPResponse.assertNotBrowser();
40
39
  async function nodeHTTPRequestHandler(opts) {
41
40
  const createContext = async function _createContext() {
42
41
  return await opts.createContext?.(opts);
@@ -0,0 +1,205 @@
1
+ import { e as callProcedure, f as getHTTPStatusCode, t as transformTRPCResponse } from './transformTRPCResponse-959de787.mjs';
2
+ import { T as TRPCError, a as getTRPCErrorFromUnknown, g as getCauseFromUnknown } from './TRPCError-e99e7cbe.mjs';
3
+
4
+ const HTTP_METHOD_PROCEDURE_TYPE_MAP = {
5
+ GET: 'query',
6
+ POST: 'mutation'
7
+ };
8
+ function getRawProcedureInputOrThrow(req) {
9
+ try {
10
+ if (req.method === 'GET') {
11
+ if (!req.query.has('input')) {
12
+ return undefined;
13
+ }
14
+ const raw = req.query.get('input');
15
+ return JSON.parse(raw);
16
+ }
17
+ if (typeof req.body === 'string') {
18
+ // A mutation with no inputs will have req.body === ''
19
+ return req.body.length === 0 ? undefined : JSON.parse(req.body);
20
+ }
21
+ return req.body;
22
+ } catch (err) {
23
+ throw new TRPCError({
24
+ code: 'PARSE_ERROR',
25
+ cause: getCauseFromUnknown(err)
26
+ });
27
+ }
28
+ }
29
+ async function resolveHTTPResponse(opts) {
30
+ const { createContext , onError , router , req } = opts;
31
+ const batchingEnabled = opts.batching?.enabled ?? true;
32
+ if (req.method === 'HEAD') {
33
+ // can be used for lambda warmup
34
+ return {
35
+ status: 204
36
+ };
37
+ }
38
+ const type = HTTP_METHOD_PROCEDURE_TYPE_MAP[req.method] ?? 'unknown';
39
+ let ctx = undefined;
40
+ let paths = undefined;
41
+ const isBatchCall = !!req.query.get('batch');
42
+ function endResponse(untransformedJSON, errors) {
43
+ let status = getHTTPStatusCode(untransformedJSON);
44
+ const headers = {
45
+ 'Content-Type': 'application/json'
46
+ };
47
+ const meta = opts.responseMeta?.({
48
+ ctx,
49
+ paths,
50
+ type,
51
+ data: Array.isArray(untransformedJSON) ? untransformedJSON : [
52
+ untransformedJSON
53
+ ],
54
+ errors
55
+ }) ?? {};
56
+ for (const [key, value] of Object.entries(meta.headers ?? {})){
57
+ headers[key] = value;
58
+ }
59
+ if (meta.status) {
60
+ status = meta.status;
61
+ }
62
+ const transformedJSON = transformTRPCResponse(router, untransformedJSON);
63
+ const body = JSON.stringify(transformedJSON);
64
+ return {
65
+ body,
66
+ status,
67
+ headers
68
+ };
69
+ }
70
+ try {
71
+ if (opts.error) {
72
+ throw opts.error;
73
+ }
74
+ if (isBatchCall && !batchingEnabled) {
75
+ throw new Error(`Batching is not enabled on the server`);
76
+ }
77
+ if (type === 'subscription') {
78
+ throw new TRPCError({
79
+ message: 'Subscriptions should use wsLink',
80
+ code: 'METHOD_NOT_SUPPORTED'
81
+ });
82
+ }
83
+ if (type === 'unknown') {
84
+ throw new TRPCError({
85
+ message: `Unexpected request method ${req.method}`,
86
+ code: 'METHOD_NOT_SUPPORTED'
87
+ });
88
+ }
89
+ const rawInput = getRawProcedureInputOrThrow(req);
90
+ paths = isBatchCall ? opts.path.split(',') : [
91
+ opts.path
92
+ ];
93
+ ctx = await createContext();
94
+ const deserializeInputValue = (rawValue)=>{
95
+ return typeof rawValue !== 'undefined' ? router._def.transformer.input.deserialize(rawValue) : rawValue;
96
+ };
97
+ const getInputs = ()=>{
98
+ if (!isBatchCall) {
99
+ return {
100
+ 0: deserializeInputValue(rawInput)
101
+ };
102
+ }
103
+ if (rawInput == null || typeof rawInput !== 'object' || Array.isArray(rawInput)) {
104
+ throw new TRPCError({
105
+ code: 'BAD_REQUEST',
106
+ message: '"input" needs to be an object when doing a batch call'
107
+ });
108
+ }
109
+ const input = {};
110
+ for(const key in rawInput){
111
+ const k = key;
112
+ const rawValue = rawInput[k];
113
+ const value = deserializeInputValue(rawValue);
114
+ input[k] = value;
115
+ }
116
+ return input;
117
+ };
118
+ const inputs = getInputs();
119
+ const rawResults = await Promise.all(paths.map(async (path, index)=>{
120
+ const input = inputs[index];
121
+ try {
122
+ const output = await callProcedure({
123
+ procedures: router._def.procedures,
124
+ path,
125
+ rawInput: input,
126
+ ctx,
127
+ type
128
+ });
129
+ return {
130
+ input,
131
+ path,
132
+ data: output
133
+ };
134
+ } catch (cause) {
135
+ const error = getTRPCErrorFromUnknown(cause);
136
+ onError?.({
137
+ error,
138
+ path,
139
+ input,
140
+ ctx,
141
+ type: type,
142
+ req
143
+ });
144
+ return {
145
+ input,
146
+ path,
147
+ error
148
+ };
149
+ }
150
+ }));
151
+ const errors = rawResults.flatMap((obj)=>obj.error ? [
152
+ obj.error
153
+ ] : []);
154
+ const resultEnvelopes = rawResults.map((obj)=>{
155
+ const { path , input } = obj;
156
+ if (obj.error) {
157
+ return {
158
+ error: router.getErrorShape({
159
+ error: obj.error,
160
+ type,
161
+ path,
162
+ input,
163
+ ctx
164
+ })
165
+ };
166
+ } else {
167
+ return {
168
+ result: {
169
+ data: obj.data
170
+ }
171
+ };
172
+ }
173
+ });
174
+ const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0];
175
+ return endResponse(result, errors);
176
+ } catch (cause) {
177
+ // we get here if
178
+ // - batching is called when it's not enabled
179
+ // - `createContext()` throws
180
+ // - post body is too large
181
+ // - input deserialization fails
182
+ const error = getTRPCErrorFromUnknown(cause);
183
+ onError?.({
184
+ error,
185
+ path: undefined,
186
+ input: undefined,
187
+ ctx,
188
+ type: type,
189
+ req
190
+ });
191
+ return endResponse({
192
+ error: router.getErrorShape({
193
+ error,
194
+ type,
195
+ path: undefined,
196
+ input: undefined,
197
+ ctx
198
+ })
199
+ }, [
200
+ error
201
+ ]);
202
+ }
203
+ }
204
+
205
+ export { resolveHTTPResponse as r };
@@ -0,0 +1,207 @@
1
+ 'use strict';
2
+
3
+ var transformTRPCResponse = require('./transformTRPCResponse-05aa84c1.js');
4
+ var TRPCError = require('./TRPCError-fe9113e5.js');
5
+
6
+ const HTTP_METHOD_PROCEDURE_TYPE_MAP = {
7
+ GET: 'query',
8
+ POST: 'mutation'
9
+ };
10
+ function getRawProcedureInputOrThrow(req) {
11
+ try {
12
+ if (req.method === 'GET') {
13
+ if (!req.query.has('input')) {
14
+ return undefined;
15
+ }
16
+ const raw = req.query.get('input');
17
+ return JSON.parse(raw);
18
+ }
19
+ if (typeof req.body === 'string') {
20
+ // A mutation with no inputs will have req.body === ''
21
+ return req.body.length === 0 ? undefined : JSON.parse(req.body);
22
+ }
23
+ return req.body;
24
+ } catch (err) {
25
+ throw new TRPCError.TRPCError({
26
+ code: 'PARSE_ERROR',
27
+ cause: TRPCError.getCauseFromUnknown(err)
28
+ });
29
+ }
30
+ }
31
+ async function resolveHTTPResponse(opts) {
32
+ const { createContext , onError , router , req } = opts;
33
+ const batchingEnabled = opts.batching?.enabled ?? true;
34
+ if (req.method === 'HEAD') {
35
+ // can be used for lambda warmup
36
+ return {
37
+ status: 204
38
+ };
39
+ }
40
+ const type = HTTP_METHOD_PROCEDURE_TYPE_MAP[req.method] ?? 'unknown';
41
+ let ctx = undefined;
42
+ let paths = undefined;
43
+ const isBatchCall = !!req.query.get('batch');
44
+ function endResponse(untransformedJSON, errors) {
45
+ let status = transformTRPCResponse.getHTTPStatusCode(untransformedJSON);
46
+ const headers = {
47
+ 'Content-Type': 'application/json'
48
+ };
49
+ const meta = opts.responseMeta?.({
50
+ ctx,
51
+ paths,
52
+ type,
53
+ data: Array.isArray(untransformedJSON) ? untransformedJSON : [
54
+ untransformedJSON
55
+ ],
56
+ errors
57
+ }) ?? {};
58
+ for (const [key, value] of Object.entries(meta.headers ?? {})){
59
+ headers[key] = value;
60
+ }
61
+ if (meta.status) {
62
+ status = meta.status;
63
+ }
64
+ const transformedJSON = transformTRPCResponse.transformTRPCResponse(router, untransformedJSON);
65
+ const body = JSON.stringify(transformedJSON);
66
+ return {
67
+ body,
68
+ status,
69
+ headers
70
+ };
71
+ }
72
+ try {
73
+ if (opts.error) {
74
+ throw opts.error;
75
+ }
76
+ if (isBatchCall && !batchingEnabled) {
77
+ throw new Error(`Batching is not enabled on the server`);
78
+ }
79
+ if (type === 'subscription') {
80
+ throw new TRPCError.TRPCError({
81
+ message: 'Subscriptions should use wsLink',
82
+ code: 'METHOD_NOT_SUPPORTED'
83
+ });
84
+ }
85
+ if (type === 'unknown') {
86
+ throw new TRPCError.TRPCError({
87
+ message: `Unexpected request method ${req.method}`,
88
+ code: 'METHOD_NOT_SUPPORTED'
89
+ });
90
+ }
91
+ const rawInput = getRawProcedureInputOrThrow(req);
92
+ paths = isBatchCall ? opts.path.split(',') : [
93
+ opts.path
94
+ ];
95
+ ctx = await createContext();
96
+ const deserializeInputValue = (rawValue)=>{
97
+ return typeof rawValue !== 'undefined' ? router._def.transformer.input.deserialize(rawValue) : rawValue;
98
+ };
99
+ const getInputs = ()=>{
100
+ if (!isBatchCall) {
101
+ return {
102
+ 0: deserializeInputValue(rawInput)
103
+ };
104
+ }
105
+ if (rawInput == null || typeof rawInput !== 'object' || Array.isArray(rawInput)) {
106
+ throw new TRPCError.TRPCError({
107
+ code: 'BAD_REQUEST',
108
+ message: '"input" needs to be an object when doing a batch call'
109
+ });
110
+ }
111
+ const input = {};
112
+ for(const key in rawInput){
113
+ const k = key;
114
+ const rawValue = rawInput[k];
115
+ const value = deserializeInputValue(rawValue);
116
+ input[k] = value;
117
+ }
118
+ return input;
119
+ };
120
+ const inputs = getInputs();
121
+ const rawResults = await Promise.all(paths.map(async (path, index)=>{
122
+ const input = inputs[index];
123
+ try {
124
+ const output = await transformTRPCResponse.callProcedure({
125
+ procedures: router._def.procedures,
126
+ path,
127
+ rawInput: input,
128
+ ctx,
129
+ type
130
+ });
131
+ return {
132
+ input,
133
+ path,
134
+ data: output
135
+ };
136
+ } catch (cause) {
137
+ const error = TRPCError.getTRPCErrorFromUnknown(cause);
138
+ onError?.({
139
+ error,
140
+ path,
141
+ input,
142
+ ctx,
143
+ type: type,
144
+ req
145
+ });
146
+ return {
147
+ input,
148
+ path,
149
+ error
150
+ };
151
+ }
152
+ }));
153
+ const errors = rawResults.flatMap((obj)=>obj.error ? [
154
+ obj.error
155
+ ] : []);
156
+ const resultEnvelopes = rawResults.map((obj)=>{
157
+ const { path , input } = obj;
158
+ if (obj.error) {
159
+ return {
160
+ error: router.getErrorShape({
161
+ error: obj.error,
162
+ type,
163
+ path,
164
+ input,
165
+ ctx
166
+ })
167
+ };
168
+ } else {
169
+ return {
170
+ result: {
171
+ data: obj.data
172
+ }
173
+ };
174
+ }
175
+ });
176
+ const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0];
177
+ return endResponse(result, errors);
178
+ } catch (cause) {
179
+ // we get here if
180
+ // - batching is called when it's not enabled
181
+ // - `createContext()` throws
182
+ // - post body is too large
183
+ // - input deserialization fails
184
+ const error = TRPCError.getTRPCErrorFromUnknown(cause);
185
+ onError?.({
186
+ error,
187
+ path: undefined,
188
+ input: undefined,
189
+ ctx,
190
+ type: type,
191
+ req
192
+ });
193
+ return endResponse({
194
+ error: router.getErrorShape({
195
+ error,
196
+ type,
197
+ path: undefined,
198
+ input: undefined,
199
+ ctx
200
+ })
201
+ }, [
202
+ error
203
+ ]);
204
+ }
205
+ }
206
+
207
+ exports.resolveHTTPResponse = resolveHTTPResponse;
@@ -1,4 +1,4 @@
1
- import { g as getTRPCErrorFromUnknown } from './TRPCError-281ac25a.mjs';
1
+ import { a as getTRPCErrorFromUnknown } from './TRPCError-e99e7cbe.mjs';
2
2
  import { o as observable } from './observable-e129ac9d.mjs';
3
3
 
4
4
  function subscriptionPullFactory(opts) {