UNPKG

eden-swr

Version:

React/NextJS SWR hooks for Elysia applications with fully typed Eden

160 lines (113 loc) 4.8 kB
# eden-swr 🚀 **Type-safe SWR hooks** for Elysia applications using Eden fetch the perfect companion for **React** and **NextJS** projects! --- ## Motivation ✨ - **Zero Overhead:** No messy context providers needed 👌 - **Fully Typed:** Enjoy robust TypeScript integration that gives you instant auto-completion & error detection 💪 - **Seamless Integration:** Brings together the power of [Elysia Eden](https://elysiajs.com/eden/overview.html) and [SWR](https://swr.vercel.app/) effortlessly 🔥 --- ## Features ⚡ - **Lightweight & Fast:** Minimal boilerplate code and super quick setup. - **Realtime Data Updates:** Automatic revalidation and continuous data refresh. - **SSR/SSG Ready:** Perfect for NextJS, Gatsby, and other SSR/SSG frameworks. - **No Extra Context Required:** Use our hooks directly without extra providers. - **Fully Type-Safe:** Your API calls are strictly typed, reducing runtime errors. --- ## Installation 🛠️ ```bash # Install the package via npm (replace <package-name> with your package name) npm install <package-name> ``` --- ## Examples 📚 ### Basic Example Kickstart with a simple, fully-typed React component: ```typescript import { createEdenSWR } from "eden-swr"; import type { App } from "./your-elysia-app"; // Creating SWR hooks with full TypeScript support 🚀 const { useEdenSWR, fetch: fetchEden } = createEdenSWR<App>("/api"); function UserProfile({ userId }: { userId: string }) { // Using SWR hook with full type inference // const { data, error, isLoading } = useEdenSWR("/users/:id" /* typed!*/, { params: { id: userId } /* typed!*/, }); if (isLoading) return <div>Loading...</div>; if (error) return <div>Error loading user 😢</div>; if (!data) return <div>Something went wrong</div>; return ( <div> <h1>{data.name}</h1> {/* typed! */} <p>{data.email}</p> {/* typed! */} </div> ); } ``` --- ### Query Parameters Example Fetch data using query parameters with full type-safety: ```typescript // Example with query parameters 🌟 const { data: queryData } = useEdenSWR("/query", { query: { search: "123" }, // typed! }); // 📝 note: this query works perfectly in eden-swr with complete type safety. if (queryData) { console.log(queryData.query); // typed! } ``` --- ### Route Parameters Example Utilize dynamic route parameters in your requests: ```typescript // Example with route parameters 😎 const { data: paramsData } = useEdenSWR("/params/:param1/:param2", { params: { param1: "123", param2: "456" }, query: { search: "123" }, }); if (paramsData) { console.log(paramsData.params.param1); // typed! } ``` --- ### Advanced SWR Configuration Customize SWR options to suit your app's needs: ```typescript // Advanced configuration example 🎛️ const { data: paramsData2 } = useEdenSWR( "/params/:param1/:param2", { params: { param1: "123", param2: "456" }, query: { search: "123" }, }, { cacheKey: "/params/one/two?three=four", // 🎯 Custom cache key //by default, cahce key would be /params/123/456?search=123 revalidateOnFocus: true, // 🌐 Revalidate on focus refreshInterval: 1000, // 🌐 Auto-refresh every second // ... any other SWR options } ); // 📝 note: All options are fully validated by TypeScript. ``` Documentation on SWR options: https://swr.vercel.app/docs/api --- ## Best Practices ✅ - **Always Use Typed Hooks:** Leverage TypeScript for error prevention and excellent auto-completion. - **Explicit Parameter Definitions:** Provide both `params` and `query` objects for complete type safety. - **Utilize SWR's Features:** Enable revalidation on focus, caching, and auto-refresh for a seamless experience. - **Integrate Effortlessly:** Perfect for both React components and NextJS pages no extra boilerplate required! --- ## Key Concepts & Selling Points 🌈 - **Eden Hooks for React & NextJS:** Instantly integrate with [Elysia Eden](https://elysiajs.com/eden/overview.html) for smooth, type-safe data fetching. - **No Complex Context Providers:** Forget extra setup; just use our hooks directly. - **Full Type Safety Out-Of-The-Box:** Boost your productivity and reliability with comprehensive TypeScript support. - **Zero Overhead:** Spend more time building features and less time configuring tools. --- ## Why Choose eden-swr? - **Simplicity:** Seamless integration of two powerful tools [Elysia Eden](https://elysiajs.com/eden/overview.html) and [SWR](https://swr.vercel.app/) without any hassles. - **Ease of Use:** Minimal configuration for a modern, responsive application. - **Reliability:** Enjoy automatic data revalidation and full type safety that prevents runtime errors. --- ## License MIT © Nick Erlan