Skip to content

Instantly share code, notes, and snippets.

View sommeeeer's full-sized avatar

Magnus sommeeeer

  • Norway
View GitHub Profile
export default {
fetch(req) {
const url = new URL(req.url);
if (url.pathname === "/sse-test") {
let intervalId: ReturnType<typeof setInterval>;
req.signal.addEventListener("abort", () => {
console.log("Request aborted!");
});
// app/sse/page.tsx
'use client';
import { useState, useEffect, useRef } from 'react';
export default function SSEDemo() {
const [isConnected, setIsConnected] = useState(false);
const [messages, setMessages] = useState<string[]>([]);
const eventSourceRef = useRef<EventSource | null>(null);
const connect = () => {
// RedirectAction.tsx
import { redirect } from 'next/navigation';
export default function RedirectAction() {
return (
<form
action={async () => {
'use server';
redirect(`/posts/2`);
}}
@sommeeeer
sommeeeer / auth.ts
Created May 28, 2025 14:38
auth.ts
import NextAuth from 'next-auth';
import Credentials from 'next-auth/providers/credentials';
const fakeUsers = [
{
id: '1',
name: 'John Doe',
email: 'john@opennext.com',
},
];
// search/page.tsx
export default async function Page({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | string[] | undefined }>
}) {
const q = (await searchParams).q;
return (
<>
import cf from "cloudfront";
async function handler(event) {
async function routeSite(kvNamespace, metadata) {
const baselessUri = metadata.base
? event.request.uri.replace(metadata.base, "")
: event.request.uri;
@sommeeeer
sommeeeer / error-trigger.tsx
Created March 19, 2025 10:38
error-trigger in next
'use client'
import { Bug } from 'lucide-react'
import { useState } from 'react'
export const ErrorTrigger = ({
message = 'An error occurred',
}: {
message?: string
}) => {
@sommeeeer
sommeeeer / global-error.tsx
Created March 19, 2025 10:36
How to add tailwind styles to global-error.tsx in Next.js 14
// Next 14.2.24
'use client';
import { Squirrel } from 'lucide-react';
import { Figtree } from 'next/font/google';
import { useEffect } from 'react';
import Logo from '@/components/icons/logo';
import { Button } from '@/components/ui/button';
import './(main)/globals.css';
@sommeeeer
sommeeeer / test.ts
Last active March 18, 2025 08:16
e2e test
test("revalidate should work in GET route handler", async ({
request,
page,
}) => {
let time = Date.parse(
(await request.get("/methods/get/revalidate").then((res) => res.json()))
.time,
);
let newTime: number;
let tempTime = time;
// make `globalThis.after()` available in next 14
// open-next.config.ts
import type { OpenNextConfig } from '@opennextjs/aws/types/open-next.js';
const config = {
default: {
override: {
wrapper: () => import('./customWrapper').then((mod) => mod.default),
},
},
} as OpenNextConfig;