import { useState, useRef } from 'react'
import { DirectUpload } from '@rails/activestorage'
interface ImageUploadProps {
onUploadComplete: (blobId: string) => void
maxSize?: number
export async function copyToClipboard(text: string) {
try {
await navigator.clipboard.writeText(text);
return true;
} catch {
const ta = document.createElement('textarea');
import type { Request, Response } from 'express';
export function eventsSse(_req: Request, res: Response) {
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache, no-transform');
res.setHeader('Connection', 'keep-alive');
import fs from 'node:fs';
import { parse } from 'csv-parse';
import { withClient } from '../db/pool';
export async function importCsv(path: string) {
const parser = fs.createReadStream(path).pipe(parse({ columns: true, trim: true }));
import { lazy, Suspense } from 'react'
import { BrowserRouter, Routes, Route } from 'react-router-dom'
import Layout from '@/components/Layout'
// Eager load critical routes
import Home from '@/pages/Home'
import * as Sentry from '@sentry/nextjs';
export function initSentry() {
Sentry.init({
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
environment: process.env.NEXT_PUBLIC_ENV ?? 'development',
import cors from 'cors';
const allow = new Set([
'https://codesnips.dev',
'https://staging.codesnips.dev'
]);
import React from 'react'
import ReactDOM from 'react-dom/client'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
import App from './App'
import './index.css'
export type ApiError =
| { error: 'VALIDATION_ERROR'; issues: Array<{ path: string; message: string }> }
| { error: 'UNAUTHORIZED' }
| { error: 'FORBIDDEN' }
| { error: 'NOT_FOUND' }
| { error: 'CONFLICT' }
import { emailQueue } from './email.worker';
export async function enqueueWelcomeEmail(userId: string) {
return emailQueue.add('welcome', { userId }, { jobId: `welcome-email:${userId}`, attempts: 5 });
}
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
export async function getSnipWithAuthor(id: string) {
return prisma.snip.findUnique({
where: { id },
CREATE TABLE IF NOT EXISTS idempotency_keys (
id BIGSERIAL PRIMARY KEY,
key TEXT NOT NULL UNIQUE,
request_hash TEXT NOT NULL,
response_json JSONB NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()