@trpc/server 10.0.0-alpha.4 → 10.0.0-alpha.8

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 (28) hide show
  1. package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +2 -1
  2. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +2 -1
  3. package/adapters/express/dist/trpc-server-adapters-express.esm.js +2 -1
  4. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.d.ts +1 -0
  5. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +102 -0
  6. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.js +7 -0
  7. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +102 -0
  8. package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +97 -0
  9. package/adapters/fastify/package.json +4 -0
  10. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +2 -1
  11. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +2 -1
  12. package/adapters/next/dist/trpc-server-adapters-next.esm.js +2 -1
  13. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +2 -1
  14. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +2 -1
  15. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +2 -1
  16. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +2 -1
  17. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +2 -1
  18. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +2 -1
  19. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +13 -0
  20. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -0
  21. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +12 -0
  22. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -0
  23. package/dist/adapters/fastify/index.d.ts +3 -0
  24. package/dist/adapters/fastify/index.d.ts.map +1 -0
  25. package/package.json +12 -3
  26. package/src/adapters/fastify/fastifyRequestHandler.ts +79 -0
  27. package/src/adapters/fastify/fastifyTRPCPlugin.ts +48 -0
  28. package/src/adapters/fastify/index.ts +2 -0
@@ -2,8 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-b7ff366e.cjs.dev.js');
5
+ var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-2cc444d8.cjs.dev.js');
6
6
  require('url');
7
+ require('../../../dist/resolveHTTPResponse-3867844c.cjs.dev.js');
7
8
  require('../../../dist/transformTRPCResponse-8248515e.cjs.dev.js');
8
9
  require('../../../dist/codes-33cef953.cjs.dev.js');
9
10
 
@@ -2,8 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-7325b53f.cjs.prod.js');
5
+ var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-8ddacc19.cjs.prod.js');
6
6
  require('url');
7
+ require('../../../dist/resolveHTTPResponse-562c3d62.cjs.prod.js');
7
8
  require('../../../dist/transformTRPCResponse-dcbf66c5.cjs.prod.js');
8
9
  require('../../../dist/codes-e0df67c4.cjs.prod.js');
9
10
 
@@ -1,5 +1,6 @@
1
- import { n as nodeHTTPRequestHandler } from '../../../dist/nodeHTTPRequestHandler-2e6cc2d7.esm.js';
1
+ import { n as nodeHTTPRequestHandler } from '../../../dist/nodeHTTPRequestHandler-d00c1126.esm.js';
2
2
  import 'url';
3
+ import '../../../dist/resolveHTTPResponse-85f3f5df.esm.js';
3
4
  import '../../../dist/transformTRPCResponse-f73dc4a2.esm.js';
4
5
  import '../../../dist/codes-fe07bf82.esm.js';
5
6
 
@@ -0,0 +1 @@
1
+ export * from "../../../dist/declarations/src/adapters/fastify/index";
@@ -0,0 +1,102 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var url = require('url');
6
+ var resolveHTTPResponse = require('../../../dist/resolveHTTPResponse-3867844c.cjs.dev.js');
7
+ var adapters_ws_dist_trpcServerAdaptersWs = require('../../ws/dist/trpc-server-adapters-ws.cjs.dev.js');
8
+ require('../../../dist/transformTRPCResponse-8248515e.cjs.dev.js');
9
+ require('../../../dist/codes-33cef953.cjs.dev.js');
10
+ require('../../../dist/subscription-b8831081.cjs.dev.js');
11
+ require('events');
12
+
13
+ resolveHTTPResponse.assertNotBrowser();
14
+ async function fastifyRequestHandler(opts) {
15
+ var _opts$req$body;
16
+
17
+ const createContext = async function _createContext() {
18
+ var _opts$createContext;
19
+
20
+ return (_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, opts);
21
+ };
22
+
23
+ const query = opts.req.query ? new url.URLSearchParams(opts.req.query) : new url.URLSearchParams(opts.req.url.split('?')[1]);
24
+ const req = {
25
+ query,
26
+ method: opts.req.method,
27
+ headers: opts.req.headers,
28
+ body: (_opts$req$body = opts.req.body) !== null && _opts$req$body !== void 0 ? _opts$req$body : 'null'
29
+ };
30
+ const result = await resolveHTTPResponse.resolveHTTPResponse({
31
+ req,
32
+ createContext,
33
+ path: opts.path,
34
+ router: opts.router,
35
+ batching: opts.batching,
36
+ responseMeta: opts.responseMeta,
37
+
38
+ onError(o) {
39
+ var _opts$onError;
40
+
41
+ opts === null || opts === void 0 ? void 0 : (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, { ...o,
42
+ req: opts.req
43
+ });
44
+ }
45
+
46
+ });
47
+ const {
48
+ res
49
+ } = opts;
50
+
51
+ if ('status' in result && (!res.statusCode || res.statusCode === 200)) {
52
+ res.statusCode = result.status;
53
+ }
54
+
55
+ for (const [key, value] of Object.entries((_result$headers = result.headers) !== null && _result$headers !== void 0 ? _result$headers : {})) {
56
+ var _result$headers;
57
+
58
+ if (typeof value === 'undefined') {
59
+ continue;
60
+ }
61
+
62
+ res.header(key, value);
63
+ }
64
+
65
+ res.send(result.body);
66
+ }
67
+
68
+ /// <reference types="fastify-websocket" />
69
+ function fastifyTRPCPlugin(fastify, opts, done) {
70
+ var _opts$prefix;
71
+
72
+ fastify.addContentTypeParser('application/json', {
73
+ parseAs: 'string'
74
+ }, function (_, body, _done) {
75
+ _done(null, body);
76
+ });
77
+ fastify.all(`${(_opts$prefix = opts.prefix) !== null && _opts$prefix !== void 0 ? _opts$prefix : ''}/:path`, (req, res) => {
78
+ const path = req.params.path;
79
+ fastifyRequestHandler({ ...opts.trpcOptions,
80
+ req,
81
+ res,
82
+ path
83
+ });
84
+ });
85
+
86
+ if (opts.useWSS) {
87
+ var _opts$prefix2;
88
+
89
+ adapters_ws_dist_trpcServerAdaptersWs.applyWSSHandler({ ...opts.trpcOptions,
90
+ wss: fastify.websocketServer
91
+ }); // eslint-disable-next-line @typescript-eslint/no-empty-function
92
+
93
+ fastify.get((_opts$prefix2 = opts.prefix) !== null && _opts$prefix2 !== void 0 ? _opts$prefix2 : '/', {
94
+ websocket: true
95
+ }, () => {});
96
+ }
97
+
98
+ done();
99
+ }
100
+
101
+ exports.fastifyRequestHandler = fastifyRequestHandler;
102
+ exports.fastifyTRPCPlugin = fastifyTRPCPlugin;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === "production") {
4
+ module.exports = require("./trpc-server-adapters-fastify.cjs.prod.js");
5
+ } else {
6
+ module.exports = require("./trpc-server-adapters-fastify.cjs.dev.js");
7
+ }
@@ -0,0 +1,102 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var url = require('url');
6
+ var resolveHTTPResponse = require('../../../dist/resolveHTTPResponse-562c3d62.cjs.prod.js');
7
+ var adapters_ws_dist_trpcServerAdaptersWs = require('../../ws/dist/trpc-server-adapters-ws.cjs.prod.js');
8
+ require('../../../dist/transformTRPCResponse-dcbf66c5.cjs.prod.js');
9
+ require('../../../dist/codes-e0df67c4.cjs.prod.js');
10
+ require('../../../dist/subscription-c2e0bfbc.cjs.prod.js');
11
+ require('events');
12
+
13
+ resolveHTTPResponse.assertNotBrowser();
14
+ async function fastifyRequestHandler(opts) {
15
+ var _opts$req$body;
16
+
17
+ const createContext = async function _createContext() {
18
+ var _opts$createContext;
19
+
20
+ return (_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, opts);
21
+ };
22
+
23
+ const query = opts.req.query ? new url.URLSearchParams(opts.req.query) : new url.URLSearchParams(opts.req.url.split('?')[1]);
24
+ const req = {
25
+ query,
26
+ method: opts.req.method,
27
+ headers: opts.req.headers,
28
+ body: (_opts$req$body = opts.req.body) !== null && _opts$req$body !== void 0 ? _opts$req$body : 'null'
29
+ };
30
+ const result = await resolveHTTPResponse.resolveHTTPResponse({
31
+ req,
32
+ createContext,
33
+ path: opts.path,
34
+ router: opts.router,
35
+ batching: opts.batching,
36
+ responseMeta: opts.responseMeta,
37
+
38
+ onError(o) {
39
+ var _opts$onError;
40
+
41
+ opts === null || opts === void 0 ? void 0 : (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, { ...o,
42
+ req: opts.req
43
+ });
44
+ }
45
+
46
+ });
47
+ const {
48
+ res
49
+ } = opts;
50
+
51
+ if ('status' in result && (!res.statusCode || res.statusCode === 200)) {
52
+ res.statusCode = result.status;
53
+ }
54
+
55
+ for (const [key, value] of Object.entries((_result$headers = result.headers) !== null && _result$headers !== void 0 ? _result$headers : {})) {
56
+ var _result$headers;
57
+
58
+ if (typeof value === 'undefined') {
59
+ continue;
60
+ }
61
+
62
+ res.header(key, value);
63
+ }
64
+
65
+ res.send(result.body);
66
+ }
67
+
68
+ /// <reference types="fastify-websocket" />
69
+ function fastifyTRPCPlugin(fastify, opts, done) {
70
+ var _opts$prefix;
71
+
72
+ fastify.addContentTypeParser('application/json', {
73
+ parseAs: 'string'
74
+ }, function (_, body, _done) {
75
+ _done(null, body);
76
+ });
77
+ fastify.all(`${(_opts$prefix = opts.prefix) !== null && _opts$prefix !== void 0 ? _opts$prefix : ''}/:path`, (req, res) => {
78
+ const path = req.params.path;
79
+ fastifyRequestHandler({ ...opts.trpcOptions,
80
+ req,
81
+ res,
82
+ path
83
+ });
84
+ });
85
+
86
+ if (opts.useWSS) {
87
+ var _opts$prefix2;
88
+
89
+ adapters_ws_dist_trpcServerAdaptersWs.applyWSSHandler({ ...opts.trpcOptions,
90
+ wss: fastify.websocketServer
91
+ }); // eslint-disable-next-line @typescript-eslint/no-empty-function
92
+
93
+ fastify.get((_opts$prefix2 = opts.prefix) !== null && _opts$prefix2 !== void 0 ? _opts$prefix2 : '/', {
94
+ websocket: true
95
+ }, () => {});
96
+ }
97
+
98
+ done();
99
+ }
100
+
101
+ exports.fastifyRequestHandler = fastifyRequestHandler;
102
+ exports.fastifyTRPCPlugin = fastifyTRPCPlugin;
@@ -0,0 +1,97 @@
1
+ import { URLSearchParams } from 'url';
2
+ import { a as assertNotBrowser, r as resolveHTTPResponse } from '../../../dist/resolveHTTPResponse-85f3f5df.esm.js';
3
+ import { applyWSSHandler } from '../../ws/dist/trpc-server-adapters-ws.esm.js';
4
+ import '../../../dist/transformTRPCResponse-f73dc4a2.esm.js';
5
+ import '../../../dist/codes-fe07bf82.esm.js';
6
+ import '../../../dist/subscription-fbda2888.esm.js';
7
+ import 'events';
8
+
9
+ assertNotBrowser();
10
+ async function fastifyRequestHandler(opts) {
11
+ var _opts$req$body;
12
+
13
+ const createContext = async function _createContext() {
14
+ var _opts$createContext;
15
+
16
+ return (_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, opts);
17
+ };
18
+
19
+ const query = opts.req.query ? new URLSearchParams(opts.req.query) : new URLSearchParams(opts.req.url.split('?')[1]);
20
+ const req = {
21
+ query,
22
+ method: opts.req.method,
23
+ headers: opts.req.headers,
24
+ body: (_opts$req$body = opts.req.body) !== null && _opts$req$body !== void 0 ? _opts$req$body : 'null'
25
+ };
26
+ const result = await resolveHTTPResponse({
27
+ req,
28
+ createContext,
29
+ path: opts.path,
30
+ router: opts.router,
31
+ batching: opts.batching,
32
+ responseMeta: opts.responseMeta,
33
+
34
+ onError(o) {
35
+ var _opts$onError;
36
+
37
+ opts === null || opts === void 0 ? void 0 : (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, { ...o,
38
+ req: opts.req
39
+ });
40
+ }
41
+
42
+ });
43
+ const {
44
+ res
45
+ } = opts;
46
+
47
+ if ('status' in result && (!res.statusCode || res.statusCode === 200)) {
48
+ res.statusCode = result.status;
49
+ }
50
+
51
+ for (const [key, value] of Object.entries((_result$headers = result.headers) !== null && _result$headers !== void 0 ? _result$headers : {})) {
52
+ var _result$headers;
53
+
54
+ if (typeof value === 'undefined') {
55
+ continue;
56
+ }
57
+
58
+ res.header(key, value);
59
+ }
60
+
61
+ res.send(result.body);
62
+ }
63
+
64
+ /// <reference types="fastify-websocket" />
65
+ function fastifyTRPCPlugin(fastify, opts, done) {
66
+ var _opts$prefix;
67
+
68
+ fastify.addContentTypeParser('application/json', {
69
+ parseAs: 'string'
70
+ }, function (_, body, _done) {
71
+ _done(null, body);
72
+ });
73
+ fastify.all(`${(_opts$prefix = opts.prefix) !== null && _opts$prefix !== void 0 ? _opts$prefix : ''}/:path`, (req, res) => {
74
+ const path = req.params.path;
75
+ fastifyRequestHandler({ ...opts.trpcOptions,
76
+ req,
77
+ res,
78
+ path
79
+ });
80
+ });
81
+
82
+ if (opts.useWSS) {
83
+ var _opts$prefix2;
84
+
85
+ applyWSSHandler({ ...opts.trpcOptions,
86
+ wss: fastify.websocketServer
87
+ }); // eslint-disable-next-line @typescript-eslint/no-empty-function
88
+
89
+ fastify.get((_opts$prefix2 = opts.prefix) !== null && _opts$prefix2 !== void 0 ? _opts$prefix2 : '/', {
90
+ websocket: true
91
+ }, () => {});
92
+ }
93
+
94
+ done();
95
+ }
96
+
97
+ export { fastifyRequestHandler, fastifyTRPCPlugin };
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "dist/trpc-server-adapters-fastify.cjs.js",
3
+ "module": "dist/trpc-server-adapters-fastify.esm.js"
4
+ }
@@ -3,8 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var transformTRPCResponse = require('../../../dist/transformTRPCResponse-8248515e.cjs.dev.js');
6
- var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-b7ff366e.cjs.dev.js');
6
+ var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-2cc444d8.cjs.dev.js');
7
7
  require('url');
8
+ require('../../../dist/resolveHTTPResponse-3867844c.cjs.dev.js');
8
9
  require('../../../dist/codes-33cef953.cjs.dev.js');
9
10
 
10
11
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -3,8 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var transformTRPCResponse = require('../../../dist/transformTRPCResponse-dcbf66c5.cjs.prod.js');
6
- var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-7325b53f.cjs.prod.js');
6
+ var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-8ddacc19.cjs.prod.js');
7
7
  require('url');
8
+ require('../../../dist/resolveHTTPResponse-562c3d62.cjs.prod.js');
8
9
  require('../../../dist/codes-e0df67c4.cjs.prod.js');
9
10
 
10
11
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -1,6 +1,7 @@
1
1
  import { T as TRPCError } from '../../../dist/transformTRPCResponse-f73dc4a2.esm.js';
2
- import { n as nodeHTTPRequestHandler } from '../../../dist/nodeHTTPRequestHandler-2e6cc2d7.esm.js';
2
+ import { n as nodeHTTPRequestHandler } from '../../../dist/nodeHTTPRequestHandler-d00c1126.esm.js';
3
3
  import 'url';
4
+ import '../../../dist/resolveHTTPResponse-85f3f5df.esm.js';
4
5
  import '../../../dist/codes-fe07bf82.esm.js';
5
6
 
6
7
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -2,8 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-b7ff366e.cjs.dev.js');
5
+ var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-2cc444d8.cjs.dev.js');
6
6
  require('url');
7
+ require('../../../dist/resolveHTTPResponse-3867844c.cjs.dev.js');
7
8
  require('../../../dist/transformTRPCResponse-8248515e.cjs.dev.js');
8
9
  require('../../../dist/codes-33cef953.cjs.dev.js');
9
10
 
@@ -2,8 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-7325b53f.cjs.prod.js');
5
+ var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-8ddacc19.cjs.prod.js');
6
6
  require('url');
7
+ require('../../../dist/resolveHTTPResponse-562c3d62.cjs.prod.js');
7
8
  require('../../../dist/transformTRPCResponse-dcbf66c5.cjs.prod.js');
8
9
  require('../../../dist/codes-e0df67c4.cjs.prod.js');
9
10
 
@@ -1,4 +1,5 @@
1
- export { n as nodeHTTPRequestHandler } from '../../../dist/nodeHTTPRequestHandler-2e6cc2d7.esm.js';
1
+ export { n as nodeHTTPRequestHandler } from '../../../dist/nodeHTTPRequestHandler-d00c1126.esm.js';
2
2
  import 'url';
3
+ import '../../../dist/resolveHTTPResponse-85f3f5df.esm.js';
3
4
  import '../../../dist/transformTRPCResponse-f73dc4a2.esm.js';
4
5
  import '../../../dist/codes-fe07bf82.esm.js';
@@ -4,7 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var http = require('http');
6
6
  var url = require('url');
7
- var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-b7ff366e.cjs.dev.js');
7
+ var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-2cc444d8.cjs.dev.js');
8
+ require('../../../dist/resolveHTTPResponse-3867844c.cjs.dev.js');
8
9
  require('../../../dist/transformTRPCResponse-8248515e.cjs.dev.js');
9
10
  require('../../../dist/codes-33cef953.cjs.dev.js');
10
11
 
@@ -4,7 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var http = require('http');
6
6
  var url = require('url');
7
- var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-7325b53f.cjs.prod.js');
7
+ var nodeHTTPRequestHandler = require('../../../dist/nodeHTTPRequestHandler-8ddacc19.cjs.prod.js');
8
+ require('../../../dist/resolveHTTPResponse-562c3d62.cjs.prod.js');
8
9
  require('../../../dist/transformTRPCResponse-dcbf66c5.cjs.prod.js');
9
10
  require('../../../dist/codes-e0df67c4.cjs.prod.js');
10
11
 
@@ -1,6 +1,7 @@
1
1
  import http from 'http';
2
2
  import url from 'url';
3
- import { n as nodeHTTPRequestHandler } from '../../../dist/nodeHTTPRequestHandler-2e6cc2d7.esm.js';
3
+ import { n as nodeHTTPRequestHandler } from '../../../dist/nodeHTTPRequestHandler-d00c1126.esm.js';
4
+ import '../../../dist/resolveHTTPResponse-85f3f5df.esm.js';
4
5
  import '../../../dist/transformTRPCResponse-f73dc4a2.esm.js';
5
6
  import '../../../dist/codes-fe07bf82.esm.js';
6
7
 
@@ -0,0 +1,13 @@
1
+ import { FastifyReply, FastifyRequest } from 'fastify';
2
+ import { NodeHTTPCreateContextOption } from '../node-http';
3
+ import { AnyRouter } from '../../router';
4
+ import { HTTPBaseHandlerOptions } from '../../http/internals/types';
5
+ export declare type FastifyHandlerOptions<TRouter extends AnyRouter, TRequest extends FastifyRequest, TResponse extends FastifyReply> = HTTPBaseHandlerOptions<TRouter, TRequest> & NodeHTTPCreateContextOption<TRouter, TRequest, TResponse>;
6
+ declare type FastifyRequestHandlerOptions<TRouter extends AnyRouter, TRequest extends FastifyRequest, TResponse extends FastifyReply> = {
7
+ req: TRequest;
8
+ res: TResponse;
9
+ path: string;
10
+ } & FastifyHandlerOptions<TRouter, TRequest, TResponse>;
11
+ export declare function fastifyRequestHandler<TRouter extends AnyRouter, TRequest extends FastifyRequest, TResponse extends FastifyReply>(opts: FastifyRequestHandlerOptions<TRouter, TRequest, TResponse>): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=fastifyRequestHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastifyRequestHandler.d.ts","sourceRoot":"","sources":["../../../src/adapters/fastify/fastifyRequestHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAsB,MAAM,cAAc,CAAC;AAE7D,OAAO,EACL,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AAIpC,oBAAY,qBAAqB,CAC/B,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,cAAc,EAC/B,SAAS,SAAS,YAAY,IAC5B,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAC3C,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE5D,aAAK,4BAA4B,CAC/B,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,cAAc,EAC/B,SAAS,SAAS,YAAY,IAC5B;IACF,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAExD,wBAAsB,qBAAqB,CACzC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,cAAc,EAC/B,SAAS,SAAS,YAAY,EAC9B,IAAI,EAAE,4BAA4B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,iBA4CjE"}
@@ -0,0 +1,12 @@
1
+ import { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
2
+ import { NodeHTTPCreateContextFnOptions } from '../node-http';
3
+ import { FastifyHandlerOptions } from '.';
4
+ import { AnyRouter } from '../..';
5
+ export interface FastifyTRPCPluginOptions<TRouter extends AnyRouter> {
6
+ prefix?: string;
7
+ useWSS?: boolean;
8
+ trpcOptions: FastifyHandlerOptions<TRouter, FastifyRequest, FastifyReply>;
9
+ }
10
+ export declare type CreateFastifyContextOptions = NodeHTTPCreateContextFnOptions<FastifyRequest, FastifyReply>;
11
+ export declare function fastifyTRPCPlugin<TRouter extends AnyRouter>(fastify: FastifyInstance, opts: FastifyTRPCPluginOptions<TRouter>, done: (err?: Error) => void): void;
12
+ //# sourceMappingURL=fastifyTRPCPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastifyTRPCPlugin.d.ts","sourceRoot":"","sources":["../../../src/adapters/fastify/fastifyTRPCPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS,SAAS;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;CAC3E;AAED,oBAAY,2BAA2B,GAAG,8BAA8B,CACtE,cAAc,EACd,YAAY,CACb,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,SAAS,EACzD,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,EACvC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,QAyB5B"}
@@ -0,0 +1,3 @@
1
+ export * from './fastifyRequestHandler';
2
+ export * from './fastifyTRPCPlugin';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/fastify/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/server",
3
- "version": "10.0.0-alpha.4",
3
+ "version": "10.0.0-alpha.8",
4
4
  "description": "tRPC Server",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -48,6 +48,11 @@
48
48
  "require": "./dist/adapters/standalone.js",
49
49
  "default": "./dist/adapters/standalone.js"
50
50
  },
51
+ "./adapters/fastify": {
52
+ "import": "./dist/adapters/fastify.mjs",
53
+ "require": "./dist/adapters/fastify.js",
54
+ "default": "./dist/adapters/fastify.js"
55
+ },
51
56
  "./adapters/ws": {
52
57
  "import": "./dist/adapters/ws.mjs",
53
58
  "require": "./dist/adapters/ws.js",
@@ -82,21 +87,25 @@
82
87
  "@types/express": "^4.17.12",
83
88
  "@types/hash-sum": "^1.0.0",
84
89
  "@types/ws": "^8.2.0",
90
+ "abort-controller": "^3.0.0",
85
91
  "devalue": "^2.0.1",
86
92
  "express": "^4.17.1",
87
- "fastify": "^3.17.0",
93
+ "fastify": "^3.27.1",
94
+ "fastify-plugin": "^3.0.1",
95
+ "fastify-websocket": "^4.0.0",
88
96
  "hash-sum": "^2.0.0",
89
97
  "jest": "^27.1.0",
90
98
  "konn": "^0.7.0",
91
99
  "myzod": "^1.3.1",
92
100
  "next": "^12.0.1",
101
+ "node-fetch": "^2.6.1",
93
102
  "superstruct": "^0.15.2",
94
103
  "typescript": "4.4.4",
95
104
  "ws": "^8.0.0",
96
105
  "yup": "^0.32.8",
97
106
  "zod": "^3.0.0"
98
107
  },
99
- "gitHead": "ef9f7f1d36a26339b96069bba001ea0fe5768bb3",
108
+ "gitHead": "e5ded22d38809f6de68df26ed069ca3cf93bb368",
100
109
  "dependencies": {
101
110
  "tslib": "^2.1.0"
102
111
  }
@@ -0,0 +1,79 @@
1
+ import { URLSearchParams } from 'url';
2
+ import { FastifyReply, FastifyRequest } from 'fastify';
3
+ import { assertNotBrowser } from '../../assertNotBrowser';
4
+ import { NodeHTTPCreateContextOption } from '../node-http';
5
+ import { AnyRouter, inferRouterContext } from '../../router';
6
+ import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
7
+ import {
8
+ HTTPBaseHandlerOptions,
9
+ HTTPRequest,
10
+ } from '../../http/internals/types';
11
+
12
+ assertNotBrowser();
13
+
14
+ export type FastifyHandlerOptions<
15
+ TRouter extends AnyRouter,
16
+ TRequest extends FastifyRequest,
17
+ TResponse extends FastifyReply,
18
+ > = HTTPBaseHandlerOptions<TRouter, TRequest> &
19
+ NodeHTTPCreateContextOption<TRouter, TRequest, TResponse>;
20
+
21
+ type FastifyRequestHandlerOptions<
22
+ TRouter extends AnyRouter,
23
+ TRequest extends FastifyRequest,
24
+ TResponse extends FastifyReply,
25
+ > = {
26
+ req: TRequest;
27
+ res: TResponse;
28
+ path: string;
29
+ } & FastifyHandlerOptions<TRouter, TRequest, TResponse>;
30
+
31
+ export async function fastifyRequestHandler<
32
+ TRouter extends AnyRouter,
33
+ TRequest extends FastifyRequest,
34
+ TResponse extends FastifyReply,
35
+ >(opts: FastifyRequestHandlerOptions<TRouter, TRequest, TResponse>) {
36
+ const createContext = async function _createContext(): Promise<
37
+ inferRouterContext<TRouter>
38
+ > {
39
+ return opts.createContext?.(opts);
40
+ };
41
+
42
+ const query = opts.req.query
43
+ ? new URLSearchParams(opts.req.query as any)
44
+ : new URLSearchParams(opts.req.url.split('?')[1]);
45
+
46
+ const req: HTTPRequest = {
47
+ query,
48
+ method: opts.req.method,
49
+ headers: opts.req.headers,
50
+ body: opts.req.body ?? 'null',
51
+ };
52
+
53
+ const result = await resolveHTTPResponse({
54
+ req,
55
+ createContext,
56
+ path: opts.path,
57
+ router: opts.router,
58
+ batching: opts.batching,
59
+ responseMeta: opts.responseMeta,
60
+ onError(o) {
61
+ opts?.onError?.({ ...o, req: opts.req });
62
+ },
63
+ });
64
+
65
+ const { res } = opts;
66
+
67
+ if ('status' in result && (!res.statusCode || res.statusCode === 200)) {
68
+ res.statusCode = result.status;
69
+ }
70
+
71
+ for (const [key, value] of Object.entries(result.headers ?? {})) {
72
+ if (typeof value === 'undefined') {
73
+ continue;
74
+ }
75
+ res.header(key, value);
76
+ }
77
+
78
+ res.send(result.body);
79
+ }
@@ -0,0 +1,48 @@
1
+ /// <reference types="fastify-websocket" />
2
+ import { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
3
+ import { fastifyRequestHandler } from './fastifyRequestHandler';
4
+ import { NodeHTTPCreateContextFnOptions } from '../node-http';
5
+ import { applyWSSHandler, WSSHandlerOptions } from '../ws';
6
+ import { FastifyHandlerOptions } from '.';
7
+ import { AnyRouter } from '../..';
8
+
9
+ export interface FastifyTRPCPluginOptions<TRouter extends AnyRouter> {
10
+ prefix?: string;
11
+ useWSS?: boolean;
12
+ trpcOptions: FastifyHandlerOptions<TRouter, FastifyRequest, FastifyReply>;
13
+ }
14
+
15
+ export type CreateFastifyContextOptions = NodeHTTPCreateContextFnOptions<
16
+ FastifyRequest,
17
+ FastifyReply
18
+ >;
19
+
20
+ export function fastifyTRPCPlugin<TRouter extends AnyRouter>(
21
+ fastify: FastifyInstance,
22
+ opts: FastifyTRPCPluginOptions<TRouter>,
23
+ done: (err?: Error) => void,
24
+ ) {
25
+ fastify.addContentTypeParser(
26
+ 'application/json',
27
+ { parseAs: 'string' },
28
+ function (_, body, _done) {
29
+ _done(null, body);
30
+ },
31
+ );
32
+
33
+ fastify.all(`${opts.prefix ?? ''}/:path`, (req, res) => {
34
+ const path = (req.params as any).path;
35
+ fastifyRequestHandler({ ...opts.trpcOptions, req, res, path });
36
+ });
37
+
38
+ if (opts.useWSS) {
39
+ applyWSSHandler<TRouter>({
40
+ ...(opts.trpcOptions as WSSHandlerOptions<TRouter>),
41
+ wss: fastify.websocketServer,
42
+ });
43
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
44
+ fastify.get(opts.prefix ?? '/', { websocket: true }, () => {});
45
+ }
46
+
47
+ done();
48
+ }
@@ -0,0 +1,2 @@
1
+ export * from './fastifyRequestHandler';
2
+ export * from './fastifyTRPCPlugin';