@trpc/server 9.18.0 → 10.0.0-alpha.3
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/adapters/express/index.d.ts +1 -0
- package/adapters/express/index.js +1 -0
- package/adapters/next/index.d.ts +1 -0
- package/adapters/next/index.js +1 -0
- package/adapters/node-http/index.d.ts +1 -0
- package/adapters/node-http/index.js +1 -0
- package/adapters/standalone/index.d.ts +1 -0
- package/adapters/standalone/index.js +1 -0
- package/adapters/ws/index.d.ts +1 -0
- package/adapters/ws/index.js +1 -0
- package/dist/{declarations/src/TRPCError.d.ts → TRPCError.d.ts} +18 -18
- package/dist/TRPCError.d.ts.map +1 -0
- package/dist/{declarations/src/adapters → adapters}/express.d.ts +5 -5
- package/dist/adapters/express.d.ts.map +1 -0
- package/dist/adapters/express.js +22 -0
- package/dist/adapters/express.mjs +18 -0
- package/dist/adapters/express.ts.js +1 -0
- package/dist/{declarations/src/adapters → adapters}/next.d.ts +5 -5
- package/dist/adapters/next.d.ts.map +1 -0
- package/dist/adapters/next.js +55 -0
- package/dist/adapters/next.mjs +51 -0
- package/dist/adapters/next.ts.js +1 -0
- package/dist/{declarations/src/adapters → adapters}/node-http/index.d.ts +2 -2
- package/dist/adapters/node-http/index.d.ts.map +1 -0
- package/dist/adapters/node-http/index.js +12 -0
- package/dist/adapters/node-http/index.mjs +4 -0
- package/dist/adapters/node-http/index.ts.js +1 -0
- package/dist/{declarations/src/adapters → adapters}/node-http/internals/getPostBody.d.ts +12 -12
- package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -0
- package/dist/{declarations/src/adapters → adapters}/node-http/nodeHTTPRequestHandler.d.ts +9 -9
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -0
- package/dist/{declarations/src/adapters → adapters}/node-http/types.d.ts +32 -32
- package/dist/adapters/node-http/types.d.ts.map +1 -0
- package/dist/{declarations/src/adapters → adapters}/standalone.d.ts +13 -13
- package/dist/adapters/standalone.d.ts.map +1 -0
- package/dist/adapters/standalone.js +45 -0
- package/dist/adapters/standalone.mjs +35 -0
- package/dist/adapters/standalone.ts.js +1 -0
- package/dist/{declarations/src/adapters → adapters}/ws.d.ts +16 -16
- package/dist/adapters/ws.d.ts.map +1 -0
- package/dist/adapters/ws.js +346 -0
- package/dist/adapters/ws.mjs +342 -0
- package/dist/adapters/ws.ts.js +1 -0
- package/dist/{declarations/src/assertNotBrowser.d.ts → assertNotBrowser.d.ts} +1 -1
- package/dist/assertNotBrowser.d.ts.map +1 -0
- package/dist/{codes-fe07bf82.esm.js → codes-7a3d4f65.mjs} +0 -0
- package/dist/{codes-33cef953.cjs.dev.js → codes-7f46544e.js} +0 -0
- package/dist/{declarations/src/deprecated → deprecated}/LegacyRouter.d.ts +2 -2
- package/dist/deprecated/LegacyRouter.d.ts.map +1 -0
- package/dist/{declarations/src/deprecated → deprecated}/createHttpServer.d.ts +18 -18
- package/dist/deprecated/createHttpServer.d.ts.map +1 -0
- package/dist/{declarations/src/deprecated → deprecated}/requestHandler.d.ts +14 -14
- package/dist/deprecated/requestHandler.d.ts.map +1 -0
- package/dist/{declarations/src/http → http}/ResponseMeta.d.ts +4 -4
- package/dist/http/ResponseMeta.d.ts.map +1 -0
- package/dist/{declarations/src/http → http}/index.d.ts +2 -2
- package/dist/http/index.d.ts.map +1 -0
- package/dist/{declarations/src/http → http}/internals/getHTTPStatusCode.d.ts +20 -20
- package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -0
- package/dist/{declarations/src/http → http}/internals/types.d.ts +39 -39
- package/dist/http/internals/types.d.ts.map +1 -0
- package/dist/{declarations/src/http → http}/resolveHTTPResponse.d.ts +12 -12
- package/dist/http/resolveHTTPResponse.d.ts.map +1 -0
- package/dist/{declarations/src/index.d.ts → index.d.ts} +9 -9
- package/dist/index.d.ts.map +1 -0
- package/dist/{trpc-server.cjs.dev.js → index.js} +7 -7
- package/dist/{trpc-server.esm.js → index.mjs} +7 -7
- package/dist/index.ts.js +1 -0
- package/dist/{declarations/src/internals → internals}/BaseHandlerOptions.d.ts +12 -12
- package/dist/internals/BaseHandlerOptions.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/OnErrorFunction.d.ts +10 -10
- package/dist/internals/OnErrorFunction.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/callProcedure.d.ts +9 -9
- package/dist/internals/callProcedure.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/errors.d.ts +3 -3
- package/dist/internals/errors.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/invert.d.ts +8 -8
- package/dist/internals/invert.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/middlewares.d.ts +33 -33
- package/dist/internals/middlewares.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/procedure.d.ts +73 -73
- package/dist/internals/procedure.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/transformTRPCResponse.d.ts +6 -6
- package/dist/internals/transformTRPCResponse.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/wrapCallSafe.d.ts +15 -15
- package/dist/internals/wrapCallSafe.d.ts.map +1 -0
- package/dist/{nodeHTTPRequestHandler-2e6cc2d7.esm.js → nodeHTTPRequestHandler-10e6d2f9.mjs} +2 -2
- package/dist/{nodeHTTPRequestHandler-b7ff366e.cjs.dev.js → nodeHTTPRequestHandler-d7c307d3.js} +2 -2
- package/dist/{declarations/src/router.d.ts → router.d.ts} +175 -175
- package/dist/router.d.ts.map +1 -0
- package/dist/{declarations/src/rpc → rpc}/codes.d.ts +46 -46
- package/dist/rpc/codes.d.ts.map +1 -0
- package/dist/{declarations/src/rpc → rpc}/envelopes.d.ts +71 -71
- package/dist/rpc/envelopes.d.ts.map +1 -0
- package/dist/{declarations/src/rpc → rpc}/index.d.ts +2 -2
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js +10 -0
- package/dist/rpc/index.mjs +1 -0
- package/dist/rpc/index.ts.js +1 -0
- package/dist/{subscription-b8831081.cjs.dev.js → subscription-5b7e1eba.js} +1 -1
- package/dist/{subscription-fbda2888.esm.js → subscription-e1d42e69.mjs} +1 -1
- package/dist/{declarations/src/subscription.d.ts → subscription.d.ts} +57 -57
- package/dist/subscription.d.ts.map +1 -0
- package/dist/{transformTRPCResponse-f73dc4a2.esm.js → transformTRPCResponse-76e0c91e.mjs} +0 -0
- package/dist/{transformTRPCResponse-8248515e.cjs.dev.js → transformTRPCResponse-bd24f548.js} +0 -0
- package/dist/{declarations/src/transformer.d.ts → transformer.d.ts} +29 -29
- package/dist/transformer.d.ts.map +1 -0
- package/dist/{declarations/src/types.d.ts → types.d.ts} +40 -40
- package/dist/types.d.ts.map +1 -0
- package/dist/{declarations/src/ws → ws}/index.d.ts +6 -6
- package/dist/ws/index.d.ts.map +1 -0
- package/dist/ws/index.js +15 -0
- package/dist/ws/index.mjs +11 -0
- package/dist/ws/index.ts.js +1 -0
- package/package.json +49 -18
- package/rpc/index.d.ts +1 -0
- package/rpc/index.js +1 -0
- package/ws/index.d.ts +1 -0
- package/ws/index.js +1 -0
- package/adapters/express/package.json +0 -4
- package/adapters/next/package.json +0 -4
- package/adapters/node-http/package.json +0 -4
- package/adapters/standalone/package.json +0 -4
- package/adapters/ws/package.json +0 -4
- package/dist/codes-e0df67c4.cjs.prod.js +0 -60
- package/dist/declarations/src/TRPCError.d.ts.map +0 -1
- package/dist/declarations/src/adapters/express.d.ts.map +0 -1
- package/dist/declarations/src/adapters/next.d.ts.map +0 -1
- package/dist/declarations/src/adapters/node-http/index.d.ts.map +0 -1
- package/dist/declarations/src/adapters/node-http/internals/getPostBody.d.ts.map +0 -1
- package/dist/declarations/src/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +0 -1
- package/dist/declarations/src/adapters/node-http/types.d.ts.map +0 -1
- package/dist/declarations/src/adapters/standalone.d.ts.map +0 -1
- package/dist/declarations/src/adapters/ws.d.ts.map +0 -1
- package/dist/declarations/src/assertNotBrowser.d.ts.map +0 -1
- package/dist/declarations/src/deprecated/LegacyRouter.d.ts.map +0 -1
- package/dist/declarations/src/deprecated/createHttpServer.d.ts.map +0 -1
- package/dist/declarations/src/deprecated/requestHandler.d.ts.map +0 -1
- package/dist/declarations/src/http/ResponseMeta.d.ts.map +0 -1
- package/dist/declarations/src/http/index.d.ts.map +0 -1
- package/dist/declarations/src/http/internals/getHTTPStatusCode.d.ts.map +0 -1
- package/dist/declarations/src/http/internals/types.d.ts.map +0 -1
- package/dist/declarations/src/http/resolveHTTPResponse.d.ts.map +0 -1
- package/dist/declarations/src/index.d.ts.map +0 -1
- package/dist/declarations/src/internals/BaseHandlerOptions.d.ts.map +0 -1
- package/dist/declarations/src/internals/OnErrorFunction.d.ts.map +0 -1
- package/dist/declarations/src/internals/callProcedure.d.ts.map +0 -1
- package/dist/declarations/src/internals/errors.d.ts.map +0 -1
- package/dist/declarations/src/internals/invert.d.ts.map +0 -1
- package/dist/declarations/src/internals/middlewares.d.ts.map +0 -1
- package/dist/declarations/src/internals/procedure.d.ts.map +0 -1
- package/dist/declarations/src/internals/transformTRPCResponse.d.ts.map +0 -1
- package/dist/declarations/src/internals/wrapCallSafe.d.ts.map +0 -1
- package/dist/declarations/src/router.d.ts.map +0 -1
- package/dist/declarations/src/rpc/codes.d.ts.map +0 -1
- package/dist/declarations/src/rpc/envelopes.d.ts.map +0 -1
- package/dist/declarations/src/rpc/index.d.ts.map +0 -1
- package/dist/declarations/src/subscription.d.ts.map +0 -1
- package/dist/declarations/src/transformer.d.ts.map +0 -1
- package/dist/declarations/src/types.d.ts.map +0 -1
- package/dist/declarations/src/ws/index.d.ts.map +0 -1
- package/dist/nodeHTTPRequestHandler-7325b53f.cjs.prod.js +0 -399
- package/dist/subscription-c2e0bfbc.cjs.prod.js +0 -136
- package/dist/transformTRPCResponse-dcbf66c5.cjs.prod.js +0 -114
- package/dist/trpc-server.cjs.d.ts +0 -1
- package/dist/trpc-server.cjs.js +0 -7
- package/dist/trpc-server.cjs.prod.js +0 -528
- package/rpc/package.json +0 -4
- package/ws/package.json +0 -4
|
@@ -1,399 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var url = require('url');
|
|
4
|
-
var transformTRPCResponse = require('./transformTRPCResponse-dcbf66c5.cjs.prod.js');
|
|
5
|
-
var codes = require('./codes-e0df67c4.cjs.prod.js');
|
|
6
|
-
|
|
7
|
-
/* istanbul ignore file */
|
|
8
|
-
function assertNotBrowser() {
|
|
9
|
-
if (typeof window !== 'undefined' && "production" !== 'test' && process.env.JEST_WORKER_ID === undefined) {
|
|
10
|
-
throw new Error('Imported server-only code in the browser');
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const TRPC_ERROR_CODES_BY_NUMBER = /*#__PURE__*/codes.invert(codes.TRPC_ERROR_CODES_BY_KEY);
|
|
15
|
-
const JSONRPC2_TO_HTTP_CODE = {
|
|
16
|
-
PARSE_ERROR: 400,
|
|
17
|
-
BAD_REQUEST: 400,
|
|
18
|
-
NOT_FOUND: 404,
|
|
19
|
-
INTERNAL_SERVER_ERROR: 500,
|
|
20
|
-
UNAUTHORIZED: 401,
|
|
21
|
-
FORBIDDEN: 403,
|
|
22
|
-
TIMEOUT: 408,
|
|
23
|
-
CLIENT_CLOSED_REQUEST: 499,
|
|
24
|
-
PRECONDITION_FAILED: 412,
|
|
25
|
-
PAYLOAD_TOO_LARGE: 413,
|
|
26
|
-
METHOD_NOT_SUPPORTED: 405
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
function getStatusCodeFromKey(code) {
|
|
30
|
-
var _JSONRPC2_TO_HTTP_COD;
|
|
31
|
-
|
|
32
|
-
return (_JSONRPC2_TO_HTTP_COD = JSONRPC2_TO_HTTP_CODE[code]) !== null && _JSONRPC2_TO_HTTP_COD !== void 0 ? _JSONRPC2_TO_HTTP_COD : 500;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function getHTTPStatusCode(json) {
|
|
36
|
-
const arr = Array.isArray(json) ? json : [json];
|
|
37
|
-
const httpStatuses = new Set(arr.map(res => {
|
|
38
|
-
if ('error' in res) {
|
|
39
|
-
const data = res.error.data;
|
|
40
|
-
|
|
41
|
-
if (typeof data.httpStatus === 'number') {
|
|
42
|
-
return data.httpStatus;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const code = TRPC_ERROR_CODES_BY_NUMBER[res.error.code];
|
|
46
|
-
return getStatusCodeFromKey(code);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return 200;
|
|
50
|
-
}));
|
|
51
|
-
|
|
52
|
-
if (httpStatuses.size !== 1) {
|
|
53
|
-
return 207;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const httpStatus = httpStatuses.values().next().value;
|
|
57
|
-
return httpStatus;
|
|
58
|
-
}
|
|
59
|
-
function getHTTPStatusCodeFromError(error) {
|
|
60
|
-
const {
|
|
61
|
-
code
|
|
62
|
-
} = error;
|
|
63
|
-
return getStatusCodeFromKey(code);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
67
|
-
const HTTP_METHOD_PROCEDURE_TYPE_MAP = {
|
|
68
|
-
GET: 'query',
|
|
69
|
-
POST: 'mutation',
|
|
70
|
-
PATCH: 'subscription'
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
function getRawProcedureInputOrThrow(req) {
|
|
74
|
-
try {
|
|
75
|
-
if (req.method === 'GET') {
|
|
76
|
-
if (!req.query.has('input')) {
|
|
77
|
-
return undefined;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const raw = req.query.get('input');
|
|
81
|
-
return JSON.parse(raw);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
|
|
85
|
-
} catch (cause) {
|
|
86
|
-
throw new transformTRPCResponse.TRPCError({
|
|
87
|
-
code: 'PARSE_ERROR',
|
|
88
|
-
cause
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
async function resolveHTTPResponse(opts) {
|
|
94
|
-
var _opts$batching$enable, _opts$batching, _HTTP_METHOD_PROCEDUR;
|
|
95
|
-
|
|
96
|
-
const {
|
|
97
|
-
createContext,
|
|
98
|
-
onError,
|
|
99
|
-
router,
|
|
100
|
-
req
|
|
101
|
-
} = opts;
|
|
102
|
-
const batchingEnabled = (_opts$batching$enable = (_opts$batching = opts.batching) === null || _opts$batching === void 0 ? void 0 : _opts$batching.enabled) !== null && _opts$batching$enable !== void 0 ? _opts$batching$enable : true;
|
|
103
|
-
|
|
104
|
-
if (req.method === 'HEAD') {
|
|
105
|
-
// can be used for lambda warmup
|
|
106
|
-
return {
|
|
107
|
-
status: 204
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const type = (_HTTP_METHOD_PROCEDUR = HTTP_METHOD_PROCEDURE_TYPE_MAP[req.method]) !== null && _HTTP_METHOD_PROCEDUR !== void 0 ? _HTTP_METHOD_PROCEDUR : 'unknown';
|
|
112
|
-
let ctx = undefined;
|
|
113
|
-
let paths = undefined;
|
|
114
|
-
const isBatchCall = !!req.query.get('batch');
|
|
115
|
-
|
|
116
|
-
function endResponse(untransformedJSON, errors) {
|
|
117
|
-
var _opts$responseMeta, _opts$responseMeta2;
|
|
118
|
-
|
|
119
|
-
let status = getHTTPStatusCode(untransformedJSON);
|
|
120
|
-
const headers = {
|
|
121
|
-
'Content-Type': 'application/json'
|
|
122
|
-
};
|
|
123
|
-
const meta = (_opts$responseMeta = (_opts$responseMeta2 = opts.responseMeta) === null || _opts$responseMeta2 === void 0 ? void 0 : _opts$responseMeta2.call(opts, {
|
|
124
|
-
ctx,
|
|
125
|
-
paths,
|
|
126
|
-
type,
|
|
127
|
-
data: Array.isArray(untransformedJSON) ? untransformedJSON : [untransformedJSON],
|
|
128
|
-
errors
|
|
129
|
-
})) !== null && _opts$responseMeta !== void 0 ? _opts$responseMeta : {};
|
|
130
|
-
|
|
131
|
-
for (const [key, value] of Object.entries((_meta$headers = meta.headers) !== null && _meta$headers !== void 0 ? _meta$headers : {})) {
|
|
132
|
-
var _meta$headers;
|
|
133
|
-
|
|
134
|
-
headers[key] = value;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (meta.status) {
|
|
138
|
-
status = meta.status;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const transformedJSON = transformTRPCResponse.transformTRPCResponse(router, untransformedJSON);
|
|
142
|
-
const body = JSON.stringify(transformedJSON);
|
|
143
|
-
return {
|
|
144
|
-
body,
|
|
145
|
-
status,
|
|
146
|
-
headers
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
try {
|
|
151
|
-
if (opts.error) {
|
|
152
|
-
throw opts.error;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (isBatchCall && !batchingEnabled) {
|
|
156
|
-
throw new Error(`Batching is not enabled on the server`);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
if (type === 'unknown' || type === 'subscription') {
|
|
160
|
-
throw new transformTRPCResponse.TRPCError({
|
|
161
|
-
message: `Unexpected request method ${req.method}`,
|
|
162
|
-
code: 'METHOD_NOT_SUPPORTED'
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
const rawInput = getRawProcedureInputOrThrow(req);
|
|
167
|
-
paths = isBatchCall ? opts.path.split(',') : [opts.path];
|
|
168
|
-
ctx = await createContext();
|
|
169
|
-
|
|
170
|
-
const deserializeInputValue = rawValue => {
|
|
171
|
-
return typeof rawValue !== 'undefined' ? router._def.transformer.input.deserialize(rawValue) : rawValue;
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
const getInputs = () => {
|
|
175
|
-
if (!isBatchCall) {
|
|
176
|
-
return {
|
|
177
|
-
0: deserializeInputValue(rawInput)
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
if (rawInput == null || typeof rawInput !== 'object' || Array.isArray(rawInput)) {
|
|
182
|
-
throw new transformTRPCResponse.TRPCError({
|
|
183
|
-
code: 'BAD_REQUEST',
|
|
184
|
-
message: '"input" needs to be an object when doing a batch call'
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
const input = {};
|
|
189
|
-
|
|
190
|
-
for (const key in rawInput) {
|
|
191
|
-
const k = key;
|
|
192
|
-
const rawValue = rawInput[k];
|
|
193
|
-
const value = deserializeInputValue(rawValue);
|
|
194
|
-
input[k] = value;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
return input;
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
const inputs = getInputs();
|
|
201
|
-
const rawResults = await Promise.all(paths.map(async (path, index) => {
|
|
202
|
-
const input = inputs[index];
|
|
203
|
-
|
|
204
|
-
try {
|
|
205
|
-
const output = await transformTRPCResponse.callProcedure({
|
|
206
|
-
ctx,
|
|
207
|
-
router,
|
|
208
|
-
path,
|
|
209
|
-
input,
|
|
210
|
-
type
|
|
211
|
-
});
|
|
212
|
-
return {
|
|
213
|
-
input,
|
|
214
|
-
path,
|
|
215
|
-
data: output
|
|
216
|
-
};
|
|
217
|
-
} catch (cause) {
|
|
218
|
-
const error = transformTRPCResponse.getErrorFromUnknown(cause);
|
|
219
|
-
onError === null || onError === void 0 ? void 0 : onError({
|
|
220
|
-
error,
|
|
221
|
-
path,
|
|
222
|
-
input,
|
|
223
|
-
ctx,
|
|
224
|
-
type: type,
|
|
225
|
-
req
|
|
226
|
-
});
|
|
227
|
-
return {
|
|
228
|
-
input,
|
|
229
|
-
path,
|
|
230
|
-
error
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
}));
|
|
234
|
-
const errors = rawResults.flatMap(obj => obj.error ? [obj.error] : []);
|
|
235
|
-
const resultEnvelopes = rawResults.map(obj => {
|
|
236
|
-
const {
|
|
237
|
-
path,
|
|
238
|
-
input
|
|
239
|
-
} = obj;
|
|
240
|
-
|
|
241
|
-
if (obj.error) {
|
|
242
|
-
const json = {
|
|
243
|
-
id: null,
|
|
244
|
-
error: router.getErrorShape({
|
|
245
|
-
error: obj.error,
|
|
246
|
-
type,
|
|
247
|
-
path,
|
|
248
|
-
input,
|
|
249
|
-
ctx
|
|
250
|
-
})
|
|
251
|
-
};
|
|
252
|
-
return json;
|
|
253
|
-
} else {
|
|
254
|
-
const json = {
|
|
255
|
-
id: null,
|
|
256
|
-
result: {
|
|
257
|
-
type: 'data',
|
|
258
|
-
data: obj.data
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
return json;
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0];
|
|
265
|
-
return endResponse(result, errors);
|
|
266
|
-
} catch (cause) {
|
|
267
|
-
// we get here if
|
|
268
|
-
// - batching is called when it's not enabled
|
|
269
|
-
// - `createContext()` throws
|
|
270
|
-
// - post body is too large
|
|
271
|
-
// - input deserialization fails
|
|
272
|
-
const error = transformTRPCResponse.getErrorFromUnknown(cause);
|
|
273
|
-
const json = {
|
|
274
|
-
id: null,
|
|
275
|
-
error: router.getErrorShape({
|
|
276
|
-
error,
|
|
277
|
-
type,
|
|
278
|
-
path: undefined,
|
|
279
|
-
input: undefined,
|
|
280
|
-
ctx
|
|
281
|
-
})
|
|
282
|
-
};
|
|
283
|
-
onError === null || onError === void 0 ? void 0 : onError({
|
|
284
|
-
error,
|
|
285
|
-
path: undefined,
|
|
286
|
-
input: undefined,
|
|
287
|
-
ctx,
|
|
288
|
-
type: type,
|
|
289
|
-
req
|
|
290
|
-
});
|
|
291
|
-
return endResponse(json, [error]);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
async function getPostBody({
|
|
296
|
-
req,
|
|
297
|
-
maxBodySize
|
|
298
|
-
}) {
|
|
299
|
-
return new Promise(resolve => {
|
|
300
|
-
if ('body' in req) {
|
|
301
|
-
resolve({
|
|
302
|
-
ok: true,
|
|
303
|
-
data: req.body
|
|
304
|
-
});
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
let body = '';
|
|
309
|
-
let hasBody = false;
|
|
310
|
-
req.on('data', function (data) {
|
|
311
|
-
body += data;
|
|
312
|
-
hasBody = true;
|
|
313
|
-
|
|
314
|
-
if (typeof maxBodySize === 'number' && body.length > maxBodySize) {
|
|
315
|
-
resolve({
|
|
316
|
-
ok: false,
|
|
317
|
-
error: new transformTRPCResponse.TRPCError({
|
|
318
|
-
code: 'PAYLOAD_TOO_LARGE'
|
|
319
|
-
})
|
|
320
|
-
});
|
|
321
|
-
req.socket.destroy();
|
|
322
|
-
}
|
|
323
|
-
});
|
|
324
|
-
req.on('end', () => {
|
|
325
|
-
resolve({
|
|
326
|
-
ok: true,
|
|
327
|
-
data: hasBody ? body : undefined
|
|
328
|
-
});
|
|
329
|
-
});
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
334
|
-
assertNotBrowser();
|
|
335
|
-
async function nodeHTTPRequestHandler(opts) {
|
|
336
|
-
var _opts$teardown;
|
|
337
|
-
|
|
338
|
-
const createContext = async function _createContext() {
|
|
339
|
-
var _opts$createContext;
|
|
340
|
-
|
|
341
|
-
return await ((_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, opts));
|
|
342
|
-
};
|
|
343
|
-
|
|
344
|
-
const {
|
|
345
|
-
path,
|
|
346
|
-
router
|
|
347
|
-
} = opts;
|
|
348
|
-
const bodyResult = await getPostBody(opts);
|
|
349
|
-
const query = opts.req.query ? new url.URLSearchParams(opts.req.query) : new url.URLSearchParams(opts.req.url.split('?')[1]);
|
|
350
|
-
const req = {
|
|
351
|
-
method: opts.req.method,
|
|
352
|
-
headers: opts.req.headers,
|
|
353
|
-
query,
|
|
354
|
-
body: bodyResult.ok ? bodyResult.data : undefined
|
|
355
|
-
};
|
|
356
|
-
const result = await resolveHTTPResponse({
|
|
357
|
-
batching: opts.batching,
|
|
358
|
-
responseMeta: opts.responseMeta,
|
|
359
|
-
path,
|
|
360
|
-
createContext,
|
|
361
|
-
router,
|
|
362
|
-
req,
|
|
363
|
-
error: bodyResult.ok ? null : bodyResult.error,
|
|
364
|
-
|
|
365
|
-
onError(o) {
|
|
366
|
-
var _opts$onError;
|
|
367
|
-
|
|
368
|
-
opts === null || opts === void 0 ? void 0 : (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, { ...o,
|
|
369
|
-
req: opts.req
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
});
|
|
374
|
-
const {
|
|
375
|
-
res
|
|
376
|
-
} = opts;
|
|
377
|
-
|
|
378
|
-
if ('status' in result && (!res.statusCode || res.statusCode === 200)) {
|
|
379
|
-
res.statusCode = result.status;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
for (const [key, value] of Object.entries((_result$headers = result.headers) !== null && _result$headers !== void 0 ? _result$headers : {})) {
|
|
383
|
-
var _result$headers;
|
|
384
|
-
|
|
385
|
-
if (typeof value === 'undefined') {
|
|
386
|
-
continue;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
res.setHeader(key, value);
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
res.end(result.body);
|
|
393
|
-
await ((_opts$teardown = opts.teardown) === null || _opts$teardown === void 0 ? void 0 : _opts$teardown.call(opts));
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
exports.assertNotBrowser = assertNotBrowser;
|
|
397
|
-
exports.getHTTPStatusCodeFromError = getHTTPStatusCodeFromError;
|
|
398
|
-
exports.nodeHTTPRequestHandler = nodeHTTPRequestHandler;
|
|
399
|
-
exports.resolveHTTPResponse = resolveHTTPResponse;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var events = require('events');
|
|
4
|
-
var transformTRPCResponse = require('./transformTRPCResponse-dcbf66c5.cjs.prod.js');
|
|
5
|
-
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7
|
-
class SubscriptionEventEmitter extends events.EventEmitter {}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @beta
|
|
11
|
-
*/
|
|
12
|
-
class Subscription {
|
|
13
|
-
constructor(callback) {
|
|
14
|
-
this.events = void 0;
|
|
15
|
-
this.callback = void 0;
|
|
16
|
-
this.isDestroyed = void 0;
|
|
17
|
-
this.isDestroyed = false;
|
|
18
|
-
this.events = new SubscriptionEventEmitter();
|
|
19
|
-
this.callback = callback;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
destroy() {
|
|
23
|
-
if (this.isDestroyed) {
|
|
24
|
-
return;
|
|
25
|
-
} // debug('Subscription.destroy()', reason);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.isDestroyed = true;
|
|
29
|
-
this.events.emit('destroy');
|
|
30
|
-
this.events.removeAllListeners();
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
async start() {
|
|
34
|
-
/* istanbul ignore next */
|
|
35
|
-
if (this.isDestroyed) {
|
|
36
|
-
throw new Error('Called start() on a destroyed subscription');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
try {
|
|
40
|
-
const emit = {
|
|
41
|
-
error: err => this.emitError(err),
|
|
42
|
-
data: data => this.emitOutput(data)
|
|
43
|
-
};
|
|
44
|
-
const cancel = await this.callback(emit);
|
|
45
|
-
|
|
46
|
-
if (this.isDestroyed
|
|
47
|
-
/* istanbul ignore next */
|
|
48
|
-
) {
|
|
49
|
-
cancel();
|
|
50
|
-
} else {
|
|
51
|
-
this.events.on('destroy', cancel);
|
|
52
|
-
}
|
|
53
|
-
} catch (cause
|
|
54
|
-
/* istanbul ignore next */
|
|
55
|
-
) {
|
|
56
|
-
this.emitError(transformTRPCResponse.getErrorFromUnknown(cause));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/* istanbul ignore next */
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @deprecated This method is just here to help with `inferSubscriptionOutput` which I can't get working without it
|
|
63
|
-
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
output() {
|
|
67
|
-
throw new Error('Not in use');
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Emit data
|
|
71
|
-
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
emitOutput(data) {
|
|
75
|
-
this.events.emit('data', data);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Emit error
|
|
79
|
-
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
emitError(err) {
|
|
83
|
-
this.events.emit('error', err);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
on(...args) {
|
|
87
|
-
return this.events.on(...args);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
off(...args) {
|
|
91
|
-
return this.events.off(...args);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* @alpha Might be removed
|
|
97
|
-
*/
|
|
98
|
-
|
|
99
|
-
function subscriptionPullFactory(opts) {
|
|
100
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
101
|
-
let timer;
|
|
102
|
-
let stopped = false;
|
|
103
|
-
|
|
104
|
-
async function _pull(emit) {
|
|
105
|
-
/* istanbul ignore next */
|
|
106
|
-
if (stopped) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
try {
|
|
111
|
-
await opts.pull(emit);
|
|
112
|
-
} catch (err
|
|
113
|
-
/* istanbul ignore next */
|
|
114
|
-
) {
|
|
115
|
-
emit.error(transformTRPCResponse.getErrorFromUnknown(err));
|
|
116
|
-
}
|
|
117
|
-
/* istanbul ignore else */
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if (!stopped) {
|
|
121
|
-
timer = setTimeout(() => _pull(emit), opts.intervalMs);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return new Subscription(emit => {
|
|
126
|
-
_pull(emit);
|
|
127
|
-
|
|
128
|
-
return () => {
|
|
129
|
-
clearTimeout(timer);
|
|
130
|
-
stopped = true;
|
|
131
|
-
};
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
exports.Subscription = Subscription;
|
|
136
|
-
exports.subscriptionPullFactory = subscriptionPullFactory;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
async function callProcedure(opts) {
|
|
4
|
-
const {
|
|
5
|
-
type,
|
|
6
|
-
path,
|
|
7
|
-
input
|
|
8
|
-
} = opts;
|
|
9
|
-
const caller = opts.router.createCaller(opts.ctx);
|
|
10
|
-
|
|
11
|
-
if (type === 'query') {
|
|
12
|
-
return caller.query(path, input);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (type === 'mutation') {
|
|
16
|
-
return caller.mutation(path, input);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (type === 'subscription') {
|
|
20
|
-
const sub = await caller.subscription(path, input);
|
|
21
|
-
return sub;
|
|
22
|
-
}
|
|
23
|
-
/* istanbul ignore next */
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
throw new Error(`Unknown procedure type ${type}`);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
class TRPCError extends Error {
|
|
30
|
-
/**
|
|
31
|
-
* @deprecated use `cause`
|
|
32
|
-
*/
|
|
33
|
-
constructor(opts) {
|
|
34
|
-
var _opts$cause, _opts$message;
|
|
35
|
-
|
|
36
|
-
const cause = (_opts$cause = opts.cause) !== null && _opts$cause !== void 0 ? _opts$cause : opts.originalError;
|
|
37
|
-
const code = opts.code;
|
|
38
|
-
const message = (_opts$message = opts.message) !== null && _opts$message !== void 0 ? _opts$message : getMessageFromUnkownError(cause, code); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
39
|
-
// @ts-ignore https://github.com/tc39/proposal-error-cause
|
|
40
|
-
|
|
41
|
-
super(message, {
|
|
42
|
-
cause
|
|
43
|
-
});
|
|
44
|
-
this.originalError = void 0;
|
|
45
|
-
this.cause = void 0;
|
|
46
|
-
this.code = void 0;
|
|
47
|
-
this.code = code;
|
|
48
|
-
this.cause = this.originalError = cause;
|
|
49
|
-
this.name = 'TRPCError';
|
|
50
|
-
Object.setPrototypeOf(this, new.target.prototype);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function getMessageFromUnkownError(err, fallback) {
|
|
56
|
-
if (typeof err === 'string') {
|
|
57
|
-
return err;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (err instanceof Error && typeof err.message === 'string') {
|
|
61
|
-
return err.message;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return fallback;
|
|
65
|
-
}
|
|
66
|
-
function getErrorFromUnknown(cause) {
|
|
67
|
-
// this should ideally be an `instanceof TRPCError` but for some reason that isn't working
|
|
68
|
-
// ref https://github.com/trpc/trpc/issues/331
|
|
69
|
-
if (cause instanceof Error && cause.name === 'TRPCError') {
|
|
70
|
-
return cause;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const err = new TRPCError({
|
|
74
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
75
|
-
cause
|
|
76
|
-
}); // take stack trace from cause
|
|
77
|
-
|
|
78
|
-
if (cause instanceof Error) {
|
|
79
|
-
err.stack = cause.stack;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return err;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function transformTRPCResponseItem(router, item) {
|
|
86
|
-
if ('error' in item) {
|
|
87
|
-
return { ...item,
|
|
88
|
-
error: router._def.transformer.output.serialize(item.error)
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (item.result.type !== 'data') {
|
|
93
|
-
return item;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return { ...item,
|
|
97
|
-
result: { ...item.result,
|
|
98
|
-
data: router._def.transformer.output.serialize(item.result.data)
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Takes a unserialized `TRPCResponse` and serializes it with the router's transformers
|
|
104
|
-
**/
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
function transformTRPCResponse(router, itemOrItems) {
|
|
108
|
-
return Array.isArray(itemOrItems) ? itemOrItems.map(item => transformTRPCResponseItem(router, item)) : transformTRPCResponseItem(router, itemOrItems);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
exports.TRPCError = TRPCError;
|
|
112
|
-
exports.callProcedure = callProcedure;
|
|
113
|
-
exports.getErrorFromUnknown = getErrorFromUnknown;
|
|
114
|
-
exports.transformTRPCResponse = transformTRPCResponse;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./declarations/src/index";
|