Merge branch 'dev'

This commit is contained in:
Atridad Lahiji 2023-08-24 17:49:00 -06:00
commit 15caaf9b1a
No known key found for this signature in database
6 changed files with 103 additions and 92 deletions

View file

@ -1,6 +1,6 @@
{ {
"name": "sprintpadawan", "name": "sprintpadawan",
"version": "2.0.4", "version": "2.1.0",
"description": "Plan. Sprint. Repeat.", "description": "Plan. Sprint. Repeat.",
"private": true, "private": true,
"scripts": { "scripts": {
@ -16,21 +16,20 @@
"@ably-labs/react-hooks": "^2.1.1", "@ably-labs/react-hooks": "^2.1.1",
"@clerk/nextjs": "^4.23.2", "@clerk/nextjs": "^4.23.2",
"@neondatabase/serverless": "^0.6.0", "@neondatabase/serverless": "^0.6.0",
"@opentelemetry/api": "^1.4.1",
"@paralleldrive/cuid2": "^2.2.2", "@paralleldrive/cuid2": "^2.2.2",
"@react-email/components": "^0.0.7", "@react-email/components": "^0.0.7",
"@tanstack/react-query": "^4.33.0", "@tanstack/react-query": "^4.33.0",
"@trpc/client": "10.37.1", "@trpc/client": "10.38.0",
"@trpc/next": "10.37.1", "@trpc/next": "10.38.0",
"@trpc/react-query": "10.37.1", "@trpc/react-query": "10.38.0",
"@trpc/server": "10.37.1", "@trpc/server": "10.38.0",
"@unkey/api": "^0.6.16", "@unkey/api": "^0.6.16",
"@upstash/ratelimit": "^0.4.3", "@upstash/ratelimit": "^0.4.3",
"@upstash/redis": "^1.22.0", "@upstash/redis": "^1.22.0",
"ably": "^1.2.43", "ably": "^1.2.43",
"autoprefixer": "^10.4.15", "autoprefixer": "^10.4.15",
"dotenv": "^16.3.1", "dotenv": "^16.3.1",
"drizzle-orm": "^0.28.4", "drizzle-orm": "^0.28.5",
"json2csv": "6.0.0-alpha.2", "json2csv": "6.0.0-alpha.2",
"next": "^13.4.19", "next": "^13.4.19",
"nextjs-cors": "^2.1.2", "nextjs-cors": "^2.1.2",

94
pnpm-lock.yaml generated
View file

@ -14,9 +14,6 @@ dependencies:
'@neondatabase/serverless': '@neondatabase/serverless':
specifier: ^0.6.0 specifier: ^0.6.0
version: 0.6.0 version: 0.6.0
'@opentelemetry/api':
specifier: ^1.4.1
version: 1.4.1
'@paralleldrive/cuid2': '@paralleldrive/cuid2':
specifier: ^2.2.2 specifier: ^2.2.2
version: 2.2.2 version: 2.2.2
@ -27,17 +24,17 @@ dependencies:
specifier: ^4.33.0 specifier: ^4.33.0
version: 4.33.0(react-dom@18.2.0)(react@18.2.0) version: 4.33.0(react-dom@18.2.0)(react@18.2.0)
'@trpc/client': '@trpc/client':
specifier: 10.37.1 specifier: 10.38.0
version: 10.37.1(@trpc/server@10.37.1) version: 10.38.0(@trpc/server@10.38.0)
'@trpc/next': '@trpc/next':
specifier: 10.37.1 specifier: 10.38.0
version: 10.37.1(@tanstack/react-query@4.33.0)(@trpc/client@10.37.1)(@trpc/react-query@10.37.1)(@trpc/server@10.37.1)(next@13.4.19)(react-dom@18.2.0)(react@18.2.0) version: 10.38.0(@tanstack/react-query@4.33.0)(@trpc/client@10.38.0)(@trpc/react-query@10.38.0)(@trpc/server@10.38.0)(next@13.4.19)(react-dom@18.2.0)(react@18.2.0)
'@trpc/react-query': '@trpc/react-query':
specifier: 10.37.1 specifier: 10.38.0
version: 10.37.1(@tanstack/react-query@4.33.0)(@trpc/client@10.37.1)(@trpc/server@10.37.1)(react-dom@18.2.0)(react@18.2.0) version: 10.38.0(@tanstack/react-query@4.33.0)(@trpc/client@10.38.0)(@trpc/server@10.38.0)(react-dom@18.2.0)(react@18.2.0)
'@trpc/server': '@trpc/server':
specifier: 10.37.1 specifier: 10.38.0
version: 10.37.1 version: 10.38.0
'@unkey/api': '@unkey/api':
specifier: ^0.6.16 specifier: ^0.6.16
version: 0.6.16 version: 0.6.16
@ -57,14 +54,14 @@ dependencies:
specifier: ^16.3.1 specifier: ^16.3.1
version: 16.3.1 version: 16.3.1
drizzle-orm: drizzle-orm:
specifier: ^0.28.4 specifier: ^0.28.5
version: 0.28.4(@neondatabase/serverless@0.6.0)(@opentelemetry/api@1.4.1)(pg@8.11.3) version: 0.28.5(@neondatabase/serverless@0.6.0)(pg@8.11.3)
json2csv: json2csv:
specifier: 6.0.0-alpha.2 specifier: 6.0.0-alpha.2
version: 6.0.0-alpha.2 version: 6.0.0-alpha.2
next: next:
specifier: ^13.4.19 specifier: ^13.4.19
version: 13.4.19(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0) version: 13.4.19(react-dom@18.2.0)(react@18.2.0)
nextjs-cors: nextjs-cors:
specifier: ^2.1.2 specifier: ^2.1.2
version: 2.1.2(next@13.4.19) version: 2.1.2(next@13.4.19)
@ -191,8 +188,8 @@ packages:
js-tokens: 4.0.0 js-tokens: 4.0.0
dev: false dev: false
/@babel/runtime@7.22.10: /@babel/runtime@7.22.11:
resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
regenerator-runtime: 0.14.0 regenerator-runtime: 0.14.0
@ -249,7 +246,7 @@ packages:
'@clerk/clerk-react': 4.23.2(react@18.2.0) '@clerk/clerk-react': 4.23.2(react@18.2.0)
'@clerk/clerk-sdk-node': 4.12.2 '@clerk/clerk-sdk-node': 4.12.2
'@clerk/types': 3.49.0 '@clerk/types': 3.49.0
next: 13.4.19(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0) next: 13.4.19(react-dom@18.2.0)(react@18.2.0)
path-to-regexp: 6.2.1 path-to-regexp: 6.2.1
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
@ -1249,11 +1246,6 @@ packages:
resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
dev: false dev: false
/@opentelemetry/api@1.4.1:
resolution: {integrity: sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==}
engines: {node: '>=8.0.0'}
dev: false
/@paralleldrive/cuid2@2.2.2: /@paralleldrive/cuid2@2.2.2:
resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==}
dependencies: dependencies:
@ -1291,7 +1283,7 @@ packages:
peerDependencies: peerDependencies:
react: ^16.8 || ^17.0 || ^18.0 react: ^16.8 || ^17.0 || ^18.0
dependencies: dependencies:
'@babel/runtime': 7.22.10 '@babel/runtime': 7.22.11
react: 18.2.0 react: 18.2.0
dev: false dev: false
@ -1300,7 +1292,7 @@ packages:
peerDependencies: peerDependencies:
react: ^16.8 || ^17.0 || ^18.0 react: ^16.8 || ^17.0 || ^18.0
dependencies: dependencies:
'@babel/runtime': 7.22.10 '@babel/runtime': 7.22.11
'@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0)
react: 18.2.0 react: 18.2.0
dev: false dev: false
@ -1518,53 +1510,53 @@ packages:
use-sync-external-store: 1.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0)
dev: false dev: false
/@trpc/client@10.37.1(@trpc/server@10.37.1): /@trpc/client@10.38.0(@trpc/server@10.38.0):
resolution: {integrity: sha512-OSblNfeI0Z9ERn3usgLV2x63CwwPoNOHf1FQK85cOT7F8MNaWyEHoEv7tHUwNGJwyzKXmpU+ockZ0movzX3D0g==} resolution: {integrity: sha512-+uFQeyzVBoWDYt0Oyj+hLUJeBJjMyj/yxfm9s23EU+Y50YZVRSnB9dmAfI6jAAcehJubNLu2NH+jyEJrOen+aA==}
peerDependencies: peerDependencies:
'@trpc/server': 10.37.1 '@trpc/server': 10.38.0
dependencies: dependencies:
'@trpc/server': 10.37.1 '@trpc/server': 10.38.0
dev: false dev: false
/@trpc/next@10.37.1(@tanstack/react-query@4.33.0)(@trpc/client@10.37.1)(@trpc/react-query@10.37.1)(@trpc/server@10.37.1)(next@13.4.19)(react-dom@18.2.0)(react@18.2.0): /@trpc/next@10.38.0(@tanstack/react-query@4.33.0)(@trpc/client@10.38.0)(@trpc/react-query@10.38.0)(@trpc/server@10.38.0)(next@13.4.19)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-0KEgr09mBfao56lkj7ZBfVOY86d3+bDH1o0zJkDHSH60Dp/hIJ7wLCnZJIhePlZxEwknCQjVeLsTy4Pqlu8NyQ==} resolution: {integrity: sha512-cCoYMAOj6qY0jUwc5W/+IvgpMhLKBhyG7lx85ohvRyETdqZvwRQHjH/DWaOn1+WEFKT1c/gsIzHsD0lBQhyFow==}
peerDependencies: peerDependencies:
'@tanstack/react-query': ^4.18.0 '@tanstack/react-query': ^4.18.0
'@trpc/client': 10.37.1 '@trpc/client': 10.38.0
'@trpc/react-query': 10.37.1 '@trpc/react-query': 10.38.0
'@trpc/server': 10.37.1 '@trpc/server': 10.38.0
next: '*' next: '*'
react: '>=16.8.0' react: '>=16.8.0'
react-dom: '>=16.8.0' react-dom: '>=16.8.0'
dependencies: dependencies:
'@tanstack/react-query': 4.33.0(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': 4.33.0(react-dom@18.2.0)(react@18.2.0)
'@trpc/client': 10.37.1(@trpc/server@10.37.1) '@trpc/client': 10.38.0(@trpc/server@10.38.0)
'@trpc/react-query': 10.37.1(@tanstack/react-query@4.33.0)(@trpc/client@10.37.1)(@trpc/server@10.37.1)(react-dom@18.2.0)(react@18.2.0) '@trpc/react-query': 10.38.0(@tanstack/react-query@4.33.0)(@trpc/client@10.38.0)(@trpc/server@10.38.0)(react-dom@18.2.0)(react@18.2.0)
'@trpc/server': 10.37.1 '@trpc/server': 10.38.0
next: 13.4.19(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0) next: 13.4.19(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
react-ssr-prepass: 1.5.0(react@18.2.0) react-ssr-prepass: 1.5.0(react@18.2.0)
dev: false dev: false
/@trpc/react-query@10.37.1(@tanstack/react-query@4.33.0)(@trpc/client@10.37.1)(@trpc/server@10.37.1)(react-dom@18.2.0)(react@18.2.0): /@trpc/react-query@10.38.0(@tanstack/react-query@4.33.0)(@trpc/client@10.38.0)(@trpc/server@10.38.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-TbOOPp0fZVaKfaeEyDoV8QeTHW1vgPTbfOs0uSQ4AzBXqXPu+9v1B44z8GGRJSdUxuOX9pG/6Ap5Kx8PQ3eF+Q==} resolution: {integrity: sha512-2YRfsDlXQvuhGOoZDz6iZ+vo6mWOBdkRPMA177WVII1Hds9r29zJMJ+14U9reOMGC0Sfec9QSPh9nUHE7Hvkzw==}
peerDependencies: peerDependencies:
'@tanstack/react-query': ^4.18.0 '@tanstack/react-query': ^4.18.0
'@trpc/client': 10.37.1 '@trpc/client': 10.38.0
'@trpc/server': 10.37.1 '@trpc/server': 10.38.0
react: '>=16.8.0' react: '>=16.8.0'
react-dom: '>=16.8.0' react-dom: '>=16.8.0'
dependencies: dependencies:
'@tanstack/react-query': 4.33.0(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': 4.33.0(react-dom@18.2.0)(react@18.2.0)
'@trpc/client': 10.37.1(@trpc/server@10.37.1) '@trpc/client': 10.38.0(@trpc/server@10.38.0)
'@trpc/server': 10.37.1 '@trpc/server': 10.38.0
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
dev: false dev: false
/@trpc/server@10.37.1: /@trpc/server@10.38.0:
resolution: {integrity: sha512-r3VeA319/braYMBIzj+XLgLKQ9lJSVglvPvP9HUv4kr5w6Y5grQMxMcExhTiZWltE9bnSJHKtBBzHafOo7KC8A==} resolution: {integrity: sha512-uMjWTMhqOPVmdiqPFOYwsdQ6Vzy8FtRcgM+ld3OrHsD88NiwZ1BWNIC6KwffjgrgLG/uKBFzNNKntLryv0NamQ==}
dev: false dev: false
/@types/body-parser@1.19.2: /@types/body-parser@1.19.2:
@ -2776,8 +2768,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/drizzle-orm@0.28.4(@neondatabase/serverless@0.6.0)(@opentelemetry/api@1.4.1)(pg@8.11.3): /drizzle-orm@0.28.5(@neondatabase/serverless@0.6.0)(pg@8.11.3):
resolution: {integrity: sha512-BEATAB0g0Y8PKbJHkHLLENlX2DXktO5XyeNyrXB6ktcNkg3dlMfePwB3LodBJkPY6d7GixFF+jvtdZsWjakJBQ==} resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==}
peerDependencies: peerDependencies:
'@aws-sdk/client-rds-data': '>=3' '@aws-sdk/client-rds-data': '>=3'
'@cloudflare/workers-types': '>=3' '@cloudflare/workers-types': '>=3'
@ -2839,7 +2831,6 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@neondatabase/serverless': 0.6.0 '@neondatabase/serverless': 0.6.0
'@opentelemetry/api': 1.4.1
pg: 8.11.3 pg: 8.11.3
dev: false dev: false
@ -3260,7 +3251,7 @@ packages:
peerDependencies: peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies: dependencies:
'@babel/runtime': 7.22.10 '@babel/runtime': 7.22.11
aria-query: 5.3.0 aria-query: 5.3.0
array-includes: 3.1.6 array-includes: 3.1.6
array.prototype.flatmap: 1.3.1 array.prototype.flatmap: 1.3.1
@ -4541,7 +4532,7 @@ packages:
resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
dev: true dev: true
/next@13.4.19(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0): /next@13.4.19(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==} resolution: {integrity: sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==}
engines: {node: '>=16.8.0'} engines: {node: '>=16.8.0'}
hasBin: true hasBin: true
@ -4557,7 +4548,6 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@next/env': 13.4.19 '@next/env': 13.4.19
'@opentelemetry/api': 1.4.1
'@swc/helpers': 0.5.1 '@swc/helpers': 0.5.1
busboy: 1.6.0 busboy: 1.6.0
caniuse-lite: 1.0.30001522 caniuse-lite: 1.0.30001522
@ -4588,7 +4578,7 @@ packages:
next: ^8.1.1-canary.54 || ^9.0.0 || ^10.0.0-0 || ^11.0.0 || ^12.0.0 || ^13.0.0 next: ^8.1.1-canary.54 || ^9.0.0 || ^10.0.0-0 || ^11.0.0 || ^12.0.0 || ^13.0.0
dependencies: dependencies:
cors: 2.8.5 cors: 2.8.5
next: 13.4.19(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0) next: 13.4.19(react-dom@18.2.0)(react@18.2.0)
dev: false dev: false
/no-case@3.0.4: /no-case@3.0.4:

View file

@ -1,8 +1,19 @@
import { appRouter } from "~/server/api/root"; import { appRouter } from "~/server/api/root";
import { createTRPCContext } from "~/server/api/trpc"; import { createTRPCContext } from "~/server/api/trpc";
import { createNextApiHandler } from "@trpc/server/adapters/next"; import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
import type { NextRequest } from "next/server";
export default createNextApiHandler({ export const config = {
runtime: "edge",
regions: ["pdx1"],
unstable_allowDynamic: ["/node_modules/ably/**"],
};
export default async function handler(req: NextRequest) {
return fetchRequestHandler({
endpoint: "/api/trpc",
router: appRouter, router: appRouter,
req,
createContext: createTRPCContext, createContext: createTRPCContext,
}); });
}

View file

@ -1,18 +1,19 @@
import { createNextApiHandler } from "@trpc/server/adapters/next";
import { env } from "~/env.mjs";
import { appRouter } from "~/server/api/root"; import { appRouter } from "~/server/api/root";
import { createTRPCContext } from "~/server/api/trpc"; import { createTRPCContext } from "~/server/api/trpc";
import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
import type { NextRequest } from "next/server";
// export API handler export const config = {
export default createNextApiHandler({ runtime: "edge",
regions: ["pdx1"],
unstable_allowDynamic: ["/node_modules/ably/**"],
};
export default async function handler(req: NextRequest) {
return fetchRequestHandler({
endpoint: "/api/trpc",
router: appRouter, router: appRouter,
req,
createContext: createTRPCContext, createContext: createTRPCContext,
onError:
env.NODE_ENV === "development"
? ({ path, error }) => {
console.error(
`❌ tRPC failed on ${path ?? "<no-path>"}: ${error.message}`
);
}
: undefined,
}); });
}

View file

@ -1,4 +1,4 @@
import Ably from "ably"; // import Ably from "ably";
import { env } from "~/env.mjs"; import { env } from "~/env.mjs";
import type { EventType } from "../utils/types"; import type { EventType } from "../utils/types";
@ -7,7 +7,18 @@ export const publishToChannel = async (
event: EventType, event: EventType,
message: string message: string
) => { ) => {
const ably = new Ably.Rest.Promise(env.ABLY_PRIVATE_KEY); await fetch(
const ablyChannel = ably.channels.get(`${env.APP_ENV}-${channel}`); `https://rest.ably.io/channels/${env.APP_ENV}-${channel}/messages`,
await ablyChannel.publish(event, message, { quickAck: true }); {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Basic ${btoa(env.ABLY_PRIVATE_KEY)}`,
},
body: JSON.stringify({
name: event,
data: message,
}),
}
);
}; };

View file

@ -16,7 +16,7 @@
* processing a request * processing a request
* *
*/ */
import { type CreateNextContextOptions } from "@trpc/server/adapters/next"; import { type FetchCreateContextFnOptions } from "@trpc/server/adapters/fetch";
import { getAuth } from "@clerk/nextjs/server"; import { getAuth } from "@clerk/nextjs/server";
import type { import type {
SignedInAuthObject, SignedInAuthObject,
@ -37,6 +37,7 @@ interface AuthContext {
* - trpc's `createSSGHelpers` where we don't have req/res * - trpc's `createSSGHelpers` where we don't have req/res
* @see https://create.t3.gg/en/usage/trpc#-servertrpccontextts * @see https://create.t3.gg/en/usage/trpc#-servertrpccontextts
*/ */
const createInnerTRPCContext = ({ auth }: AuthContext) => { const createInnerTRPCContext = ({ auth }: AuthContext) => {
return { return {
auth, auth,
@ -44,23 +45,21 @@ const createInnerTRPCContext = ({ auth }: AuthContext) => {
}; };
}; };
/** export const createTRPCContext = ({ req }: FetchCreateContextFnOptions) => {
* This is the actual context you'll use in your router. It will be used to return createInnerTRPCContext({ auth: getAuth(req as NextRequest) });
* process every request that goes through your tRPC endpoint
* @link https://trpc.io/docs/context
*/
export const createTRPCContext = (opts: CreateNextContextOptions) => {
return createInnerTRPCContext({ auth: getAuth(opts.req) });
}; };
export type Context = inferAsyncReturnType<typeof createTRPCContext>;
/** /**
* 2. INITIALIZATION * 2. INITIALIZATION
* *
* This is where the trpc api is initialized, connecting the context and * This is where the trpc api is initialized, connecting the context and
* transformer * transformer
*/ */
import { initTRPC, TRPCError } from "@trpc/server"; import { type inferAsyncReturnType, initTRPC, TRPCError } from "@trpc/server";
import superjson from "superjson"; import superjson from "superjson";
import type { NextRequest } from "next/server";
const t = initTRPC.context<typeof createTRPCContext>().create({ const t = initTRPC.context<typeof createTRPCContext>().create({
transformer: superjson, transformer: superjson,