2.1.0 Living on the EDGE BAYBE!
This commit is contained in:
parent
a171e8d439
commit
c69dbc01c1
6 changed files with 103 additions and 92 deletions
13
package.json
13
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "sprintpadawan",
|
||||
"version": "2.0.4",
|
||||
"version": "2.1.0",
|
||||
"description": "Plan. Sprint. Repeat.",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
@ -16,21 +16,20 @@
|
|||
"@ably-labs/react-hooks": "^2.1.1",
|
||||
"@clerk/nextjs": "^4.23.2",
|
||||
"@neondatabase/serverless": "^0.6.0",
|
||||
"@opentelemetry/api": "^1.4.1",
|
||||
"@paralleldrive/cuid2": "^2.2.2",
|
||||
"@react-email/components": "^0.0.7",
|
||||
"@tanstack/react-query": "^4.33.0",
|
||||
"@trpc/client": "10.37.1",
|
||||
"@trpc/next": "10.37.1",
|
||||
"@trpc/react-query": "10.37.1",
|
||||
"@trpc/server": "10.37.1",
|
||||
"@trpc/client": "10.38.0",
|
||||
"@trpc/next": "10.38.0",
|
||||
"@trpc/react-query": "10.38.0",
|
||||
"@trpc/server": "10.38.0",
|
||||
"@unkey/api": "^0.6.16",
|
||||
"@upstash/ratelimit": "^0.4.3",
|
||||
"@upstash/redis": "^1.22.0",
|
||||
"ably": "^1.2.43",
|
||||
"autoprefixer": "^10.4.15",
|
||||
"dotenv": "^16.3.1",
|
||||
"drizzle-orm": "^0.28.4",
|
||||
"drizzle-orm": "^0.28.5",
|
||||
"json2csv": "6.0.0-alpha.2",
|
||||
"next": "^13.4.19",
|
||||
"nextjs-cors": "^2.1.2",
|
||||
|
|
94
pnpm-lock.yaml
generated
94
pnpm-lock.yaml
generated
|
@ -14,9 +14,6 @@ dependencies:
|
|||
'@neondatabase/serverless':
|
||||
specifier: ^0.6.0
|
||||
version: 0.6.0
|
||||
'@opentelemetry/api':
|
||||
specifier: ^1.4.1
|
||||
version: 1.4.1
|
||||
'@paralleldrive/cuid2':
|
||||
specifier: ^2.2.2
|
||||
version: 2.2.2
|
||||
|
@ -27,17 +24,17 @@ dependencies:
|
|||
specifier: ^4.33.0
|
||||
version: 4.33.0(react-dom@18.2.0)(react@18.2.0)
|
||||
'@trpc/client':
|
||||
specifier: 10.37.1
|
||||
version: 10.37.1(@trpc/server@10.37.1)
|
||||
specifier: 10.38.0
|
||||
version: 10.38.0(@trpc/server@10.38.0)
|
||||
'@trpc/next':
|
||||
specifier: 10.37.1
|
||||
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)
|
||||
specifier: 10.38.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':
|
||||
specifier: 10.37.1
|
||||
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)
|
||||
specifier: 10.38.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':
|
||||
specifier: 10.37.1
|
||||
version: 10.37.1
|
||||
specifier: 10.38.0
|
||||
version: 10.38.0
|
||||
'@unkey/api':
|
||||
specifier: ^0.6.16
|
||||
version: 0.6.16
|
||||
|
@ -57,14 +54,14 @@ dependencies:
|
|||
specifier: ^16.3.1
|
||||
version: 16.3.1
|
||||
drizzle-orm:
|
||||
specifier: ^0.28.4
|
||||
version: 0.28.4(@neondatabase/serverless@0.6.0)(@opentelemetry/api@1.4.1)(pg@8.11.3)
|
||||
specifier: ^0.28.5
|
||||
version: 0.28.5(@neondatabase/serverless@0.6.0)(pg@8.11.3)
|
||||
json2csv:
|
||||
specifier: 6.0.0-alpha.2
|
||||
version: 6.0.0-alpha.2
|
||||
next:
|
||||
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:
|
||||
specifier: ^2.1.2
|
||||
version: 2.1.2(next@13.4.19)
|
||||
|
@ -191,8 +188,8 @@ packages:
|
|||
js-tokens: 4.0.0
|
||||
dev: false
|
||||
|
||||
/@babel/runtime@7.22.10:
|
||||
resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==}
|
||||
/@babel/runtime@7.22.11:
|
||||
resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
regenerator-runtime: 0.14.0
|
||||
|
@ -249,7 +246,7 @@ packages:
|
|||
'@clerk/clerk-react': 4.23.2(react@18.2.0)
|
||||
'@clerk/clerk-sdk-node': 4.12.2
|
||||
'@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
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
|
@ -1249,11 +1246,6 @@ packages:
|
|||
resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
|
||||
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:
|
||||
resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==}
|
||||
dependencies:
|
||||
|
@ -1291,7 +1283,7 @@ packages:
|
|||
peerDependencies:
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
dependencies:
|
||||
'@babel/runtime': 7.22.10
|
||||
'@babel/runtime': 7.22.11
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
|
@ -1300,7 +1292,7 @@ packages:
|
|||
peerDependencies:
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
dependencies:
|
||||
'@babel/runtime': 7.22.10
|
||||
'@babel/runtime': 7.22.11
|
||||
'@radix-ui/react-compose-refs': 1.0.0(react@18.2.0)
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
@ -1518,53 +1510,53 @@ packages:
|
|||
use-sync-external-store: 1.2.0(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/@trpc/client@10.37.1(@trpc/server@10.37.1):
|
||||
resolution: {integrity: sha512-OSblNfeI0Z9ERn3usgLV2x63CwwPoNOHf1FQK85cOT7F8MNaWyEHoEv7tHUwNGJwyzKXmpU+ockZ0movzX3D0g==}
|
||||
/@trpc/client@10.38.0(@trpc/server@10.38.0):
|
||||
resolution: {integrity: sha512-+uFQeyzVBoWDYt0Oyj+hLUJeBJjMyj/yxfm9s23EU+Y50YZVRSnB9dmAfI6jAAcehJubNLu2NH+jyEJrOen+aA==}
|
||||
peerDependencies:
|
||||
'@trpc/server': 10.37.1
|
||||
'@trpc/server': 10.38.0
|
||||
dependencies:
|
||||
'@trpc/server': 10.37.1
|
||||
'@trpc/server': 10.38.0
|
||||
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):
|
||||
resolution: {integrity: sha512-0KEgr09mBfao56lkj7ZBfVOY86d3+bDH1o0zJkDHSH60Dp/hIJ7wLCnZJIhePlZxEwknCQjVeLsTy4Pqlu8NyQ==}
|
||||
/@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-cCoYMAOj6qY0jUwc5W/+IvgpMhLKBhyG7lx85ohvRyETdqZvwRQHjH/DWaOn1+WEFKT1c/gsIzHsD0lBQhyFow==}
|
||||
peerDependencies:
|
||||
'@tanstack/react-query': ^4.18.0
|
||||
'@trpc/client': 10.37.1
|
||||
'@trpc/react-query': 10.37.1
|
||||
'@trpc/server': 10.37.1
|
||||
'@trpc/client': 10.38.0
|
||||
'@trpc/react-query': 10.38.0
|
||||
'@trpc/server': 10.38.0
|
||||
next: '*'
|
||||
react: '>=16.8.0'
|
||||
react-dom: '>=16.8.0'
|
||||
dependencies:
|
||||
'@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/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/server': 10.37.1
|
||||
next: 13.4.19(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@trpc/client': 10.38.0(@trpc/server@10.38.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.38.0
|
||||
next: 13.4.19(react-dom@18.2.0)(react@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)
|
||||
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):
|
||||
resolution: {integrity: sha512-TbOOPp0fZVaKfaeEyDoV8QeTHW1vgPTbfOs0uSQ4AzBXqXPu+9v1B44z8GGRJSdUxuOX9pG/6Ap5Kx8PQ3eF+Q==}
|
||||
/@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-2YRfsDlXQvuhGOoZDz6iZ+vo6mWOBdkRPMA177WVII1Hds9r29zJMJ+14U9reOMGC0Sfec9QSPh9nUHE7Hvkzw==}
|
||||
peerDependencies:
|
||||
'@tanstack/react-query': ^4.18.0
|
||||
'@trpc/client': 10.37.1
|
||||
'@trpc/server': 10.37.1
|
||||
'@trpc/client': 10.38.0
|
||||
'@trpc/server': 10.38.0
|
||||
react: '>=16.8.0'
|
||||
react-dom: '>=16.8.0'
|
||||
dependencies:
|
||||
'@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/server': 10.37.1
|
||||
'@trpc/client': 10.38.0(@trpc/server@10.38.0)
|
||||
'@trpc/server': 10.38.0
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/@trpc/server@10.37.1:
|
||||
resolution: {integrity: sha512-r3VeA319/braYMBIzj+XLgLKQ9lJSVglvPvP9HUv4kr5w6Y5grQMxMcExhTiZWltE9bnSJHKtBBzHafOo7KC8A==}
|
||||
/@trpc/server@10.38.0:
|
||||
resolution: {integrity: sha512-uMjWTMhqOPVmdiqPFOYwsdQ6Vzy8FtRcgM+ld3OrHsD88NiwZ1BWNIC6KwffjgrgLG/uKBFzNNKntLryv0NamQ==}
|
||||
dev: false
|
||||
|
||||
/@types/body-parser@1.19.2:
|
||||
|
@ -2776,8 +2768,8 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/drizzle-orm@0.28.4(@neondatabase/serverless@0.6.0)(@opentelemetry/api@1.4.1)(pg@8.11.3):
|
||||
resolution: {integrity: sha512-BEATAB0g0Y8PKbJHkHLLENlX2DXktO5XyeNyrXB6ktcNkg3dlMfePwB3LodBJkPY6d7GixFF+jvtdZsWjakJBQ==}
|
||||
/drizzle-orm@0.28.5(@neondatabase/serverless@0.6.0)(pg@8.11.3):
|
||||
resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==}
|
||||
peerDependencies:
|
||||
'@aws-sdk/client-rds-data': '>=3'
|
||||
'@cloudflare/workers-types': '>=3'
|
||||
|
@ -2839,7 +2831,6 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
'@neondatabase/serverless': 0.6.0
|
||||
'@opentelemetry/api': 1.4.1
|
||||
pg: 8.11.3
|
||||
dev: false
|
||||
|
||||
|
@ -3260,7 +3251,7 @@ packages:
|
|||
peerDependencies:
|
||||
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
|
||||
dependencies:
|
||||
'@babel/runtime': 7.22.10
|
||||
'@babel/runtime': 7.22.11
|
||||
aria-query: 5.3.0
|
||||
array-includes: 3.1.6
|
||||
array.prototype.flatmap: 1.3.1
|
||||
|
@ -4541,7 +4532,7 @@ packages:
|
|||
resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
|
||||
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==}
|
||||
engines: {node: '>=16.8.0'}
|
||||
hasBin: true
|
||||
|
@ -4557,7 +4548,6 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
'@next/env': 13.4.19
|
||||
'@opentelemetry/api': 1.4.1
|
||||
'@swc/helpers': 0.5.1
|
||||
busboy: 1.6.0
|
||||
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
|
||||
dependencies:
|
||||
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
|
||||
|
||||
/no-case@3.0.4:
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
import { appRouter } from "~/server/api/root";
|
||||
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({
|
||||
router: appRouter,
|
||||
createContext: createTRPCContext,
|
||||
});
|
||||
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,
|
||||
req,
|
||||
createContext: createTRPCContext,
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
import { createNextApiHandler } from "@trpc/server/adapters/next";
|
||||
import { env } from "~/env.mjs";
|
||||
import { appRouter } from "~/server/api/root";
|
||||
import { createTRPCContext } from "~/server/api/trpc";
|
||||
import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
|
||||
import type { NextRequest } from "next/server";
|
||||
|
||||
// export API handler
|
||||
export default createNextApiHandler({
|
||||
router: appRouter,
|
||||
createContext: createTRPCContext,
|
||||
onError:
|
||||
env.NODE_ENV === "development"
|
||||
? ({ path, error }) => {
|
||||
console.error(
|
||||
`❌ tRPC failed on ${path ?? "<no-path>"}: ${error.message}`
|
||||
);
|
||||
}
|
||||
: undefined,
|
||||
});
|
||||
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,
|
||||
req,
|
||||
createContext: createTRPCContext,
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import Ably from "ably";
|
||||
// import Ably from "ably";
|
||||
import { env } from "~/env.mjs";
|
||||
import type { EventType } from "../utils/types";
|
||||
|
||||
|
@ -7,7 +7,18 @@ export const publishToChannel = async (
|
|||
event: EventType,
|
||||
message: string
|
||||
) => {
|
||||
const ably = new Ably.Rest.Promise(env.ABLY_PRIVATE_KEY);
|
||||
const ablyChannel = ably.channels.get(`${env.APP_ENV}-${channel}`);
|
||||
await ablyChannel.publish(event, message, { quickAck: true });
|
||||
await fetch(
|
||||
`https://rest.ably.io/channels/${env.APP_ENV}-${channel}/messages`,
|
||||
{
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
Authorization: `Basic ${btoa(env.ABLY_PRIVATE_KEY)}`,
|
||||
},
|
||||
body: JSON.stringify({
|
||||
name: event,
|
||||
data: message,
|
||||
}),
|
||||
}
|
||||
);
|
||||
};
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* 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 type {
|
||||
SignedInAuthObject,
|
||||
|
@ -37,6 +37,7 @@ interface AuthContext {
|
|||
* - trpc's `createSSGHelpers` where we don't have req/res
|
||||
* @see https://create.t3.gg/en/usage/trpc#-servertrpccontextts
|
||||
*/
|
||||
|
||||
const createInnerTRPCContext = ({ auth }: AuthContext) => {
|
||||
return {
|
||||
auth,
|
||||
|
@ -44,23 +45,21 @@ const createInnerTRPCContext = ({ auth }: AuthContext) => {
|
|||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* This is the actual context you'll use in your router. It will be used to
|
||||
* 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 const createTRPCContext = ({ req }: FetchCreateContextFnOptions) => {
|
||||
return createInnerTRPCContext({ auth: getAuth(req as NextRequest) });
|
||||
};
|
||||
|
||||
export type Context = inferAsyncReturnType<typeof createTRPCContext>;
|
||||
|
||||
/**
|
||||
* 2. INITIALIZATION
|
||||
*
|
||||
* This is where the trpc api is initialized, connecting the context and
|
||||
* transformer
|
||||
*/
|
||||
import { initTRPC, TRPCError } from "@trpc/server";
|
||||
import { type inferAsyncReturnType, initTRPC, TRPCError } from "@trpc/server";
|
||||
import superjson from "superjson";
|
||||
import type { NextRequest } from "next/server";
|
||||
|
||||
const t = initTRPC.context<typeof createTRPCContext>().create({
|
||||
transformer: superjson,
|
||||
|
|
Loading…
Add table
Reference in a new issue