From aa1b57bbcd99da4c6d68c145f7c07ea7bd35c8dc Mon Sep 17 00:00:00 2001 From: Dhravya Date: Fri, 23 Feb 2024 16:04:49 -0700 Subject: chaos --- apps/anycontext-front/src/app/MessagePoster.tsx | 19 ++++ .../src/app/api/[...nextauth]/route.ts | 2 + apps/anycontext-front/src/app/api/hello/route.ts | 22 ++++ apps/anycontext-front/src/app/api/store/route.ts | 22 ++++ apps/anycontext-front/src/app/favicon.ico | Bin 0 -> 25931 bytes apps/anycontext-front/src/app/globals.css | 33 ++++++ apps/anycontext-front/src/app/layout.tsx | 22 ++++ apps/anycontext-front/src/app/not-found.tsx | 58 +++++++++++ apps/anycontext-front/src/app/page.tsx | 11 ++ apps/anycontext-front/src/env.js | 67 +++++++++++++ apps/anycontext-front/src/server/auth.ts | 37 +++++++ apps/anycontext-front/src/server/db/index.ts | 8 ++ apps/anycontext-front/src/server/db/schema.ts | 111 +++++++++++++++++++++ 13 files changed, 412 insertions(+) create mode 100644 apps/anycontext-front/src/app/MessagePoster.tsx create mode 100644 apps/anycontext-front/src/app/api/[...nextauth]/route.ts create mode 100644 apps/anycontext-front/src/app/api/hello/route.ts create mode 100644 apps/anycontext-front/src/app/api/store/route.ts create mode 100644 apps/anycontext-front/src/app/favicon.ico create mode 100644 apps/anycontext-front/src/app/globals.css create mode 100644 apps/anycontext-front/src/app/layout.tsx create mode 100644 apps/anycontext-front/src/app/not-found.tsx create mode 100644 apps/anycontext-front/src/app/page.tsx create mode 100644 apps/anycontext-front/src/env.js create mode 100644 apps/anycontext-front/src/server/auth.ts create mode 100644 apps/anycontext-front/src/server/db/index.ts create mode 100644 apps/anycontext-front/src/server/db/schema.ts (limited to 'apps/anycontext-front/src') diff --git a/apps/anycontext-front/src/app/MessagePoster.tsx b/apps/anycontext-front/src/app/MessagePoster.tsx new file mode 100644 index 00000000..ad7d450d --- /dev/null +++ b/apps/anycontext-front/src/app/MessagePoster.tsx @@ -0,0 +1,19 @@ +'use client'; + +import { useEffect } from 'react'; + +function MessagePoster({ jwt }: { jwt: string }) { + useEffect(() => { + if (typeof window === 'undefined') return; + + window.postMessage({ jwt }, '*'); + }, [jwt]); + + return ( + + ); +} + +export default MessagePoster; diff --git a/apps/anycontext-front/src/app/api/[...nextauth]/route.ts b/apps/anycontext-front/src/app/api/[...nextauth]/route.ts new file mode 100644 index 00000000..db7d1fb8 --- /dev/null +++ b/apps/anycontext-front/src/app/api/[...nextauth]/route.ts @@ -0,0 +1,2 @@ +export { GET, POST } from "@/server/auth"; +export const runtime = "edge"; diff --git a/apps/anycontext-front/src/app/api/hello/route.ts b/apps/anycontext-front/src/app/api/hello/route.ts new file mode 100644 index 00000000..705b3cb8 --- /dev/null +++ b/apps/anycontext-front/src/app/api/hello/route.ts @@ -0,0 +1,22 @@ +import type { NextRequest } from 'next/server' +import { getRequestContext } from '@cloudflare/next-on-pages' + +export const runtime = 'edge' + +export async function GET(request: NextRequest) { + let responseText = 'Hello World' + + // In the edge runtime you can use Bindings that are available in your application + // (for more details see: + // - https://developers.cloudflare.com/pages/framework-guides/deploy-a-nextjs-site/#use-bindings-in-your-nextjs-application + // - https://developers.cloudflare.com/pages/functions/bindings/ + // ) + // + // KV Example: + // const myKv = getRequestContext().env.MY_KV + // await myKv.put('suffix', ' from a KV store!') + // const suffix = await myKv.get('suffix') + // responseText += suffix + + return new Response(responseText) +} diff --git a/apps/anycontext-front/src/app/api/store/route.ts b/apps/anycontext-front/src/app/api/store/route.ts new file mode 100644 index 00000000..0d1c38ff --- /dev/null +++ b/apps/anycontext-front/src/app/api/store/route.ts @@ -0,0 +1,22 @@ +import { db } from "@/server/db"; +import { eq } from "drizzle-orm"; +import { sessions, users } from "@/server/db/schema"; +import { type NextRequest, NextResponse } from "next/server"; + +export const runtime = "edge"; + +export async function GET(req: NextRequest) { + try { + const token = req.cookies.get("next-auth.session-token")?.value ?? req.headers.get("Authorization")?.replace("Bearer ", ""); + + const session = await db.select().from(sessions).where(eq(sessions.sessionToken, token!)) + .leftJoin(users, eq(sessions.userId, users.id)) + + if (!session || session.length === 0) { + return NextResponse.json({ message: "Invalid Key, session not found." }, { status: 404 }); + } + return NextResponse.json({ message: "OK", data: session[0] }, { status: 200 }); + } catch (error) { + return NextResponse.json({ message: "Error", error }, { status: 500 }); + } +} \ No newline at end of file diff --git a/apps/anycontext-front/src/app/favicon.ico b/apps/anycontext-front/src/app/favicon.ico new file mode 100644 index 00000000..718d6fea Binary files /dev/null and b/apps/anycontext-front/src/app/favicon.ico differ diff --git a/apps/anycontext-front/src/app/globals.css b/apps/anycontext-front/src/app/globals.css new file mode 100644 index 00000000..875c01e8 --- /dev/null +++ b/apps/anycontext-front/src/app/globals.css @@ -0,0 +1,33 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + } +} + +body { + color: rgb(var(--foreground-rgb)); + background: linear-gradient( + to bottom, + transparent, + rgb(var(--background-end-rgb)) + ) + rgb(var(--background-start-rgb)); +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/apps/anycontext-front/src/app/layout.tsx b/apps/anycontext-front/src/app/layout.tsx new file mode 100644 index 00000000..3314e478 --- /dev/null +++ b/apps/anycontext-front/src/app/layout.tsx @@ -0,0 +1,22 @@ +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; +import "./globals.css"; + +const inter = Inter({ subsets: ["latin"] }); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + {children} + + ); +} diff --git a/apps/anycontext-front/src/app/not-found.tsx b/apps/anycontext-front/src/app/not-found.tsx new file mode 100644 index 00000000..3409889a --- /dev/null +++ b/apps/anycontext-front/src/app/not-found.tsx @@ -0,0 +1,58 @@ +export const runtime = "edge"; + +export default function NotFound() { + return ( + <> + 404: This page could not be found. +
+
+