import helmet from 'helmet';
import type { Express } from 'express';
export function applyHelmet(app: Express) {
app.use(
helmet({
import { setupServer } from 'msw/node';
import { http, HttpResponse } from 'msw';
export const server = setupServer(
http.get('/api/snips/:id', ({ params }) => {
return HttpResponse.json({ id: params.id, title: 'Demo', liked: false, likesCount: 0 });
import crypto from 'node:crypto';
export function timingSafeEqual(a: string, b: string) {
const ab = Buffer.from(a);
const bb = Buffer.from(b);
if (ab.length !== bb.length) return false;
import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react'
import { User } from '@/types'
import api from '@/services/api'
interface AuthContextType {
user: User | null
import DataLoader from 'dataloader';
import { withClient } from '../../db/pool';
export function createUserLoader() {
return new DataLoader<string, any>(async (ids) => {
const rows = await withClient(async (client) => {
import { render, screen } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import { PostCard } from '../PostCard'
import { Post } from '@/types'
const mockPost: Post = {
import { JSDOM } from 'jsdom';
import createDOMPurify from 'dompurify';
const window = new JSDOM('').window as unknown as Window;
const DOMPurify = createDOMPurify(window);
import { test, expect } from '@playwright/test';
test('login and see dashboard', async ({ page }) => {
await page.goto('/login');
await page.getByTestId('email').fill('demo@example.com');
await page.getByTestId('password').fill('password123');
import { createClient } from 'redis';
export const redis = createClient({ url: process.env.REDIS_URL });
export async function cacheAside<T>(key: string, ttlSeconds: number, loader: () => Promise<T>): Promise<T> {
const cached = await redis.get(key);
import { z } from 'zod'
export const postSchema = z.object({
title: z
.string()
.min(5, 'Title must be at least 5 characters')
import { Queue, Worker } from 'bullmq';
import IORedis from 'ioredis';
const connection = new IORedis(process.env.REDIS_URL!);
export const emailQueue = new Queue('email', { connection });
import { useMutation, useQueryClient } from '@tanstack/react-query'
import api from '@/services/api'
import { Post, PostId } from '@/types'
export function useLikePost() {
const queryClient = useQueryClient()