import { tf, createTypedFetch } from '../src/index.js' // Auto-discovery example async function discoveryExample() { console.log('=== API Discovery ===') const api = await tf.discover('https://api.github.com') // TypeScript knows about the endpoints! const repos = await api.users.github.repos.get() console.log(`GitHub has ${repos.length} public repos`) } // Custom instance with defaults async function customInstanceExample() { console.log('\n=== Custom Instance ===') const api = createTypedFetch() // All requests through this instance share config const user = await api.get('https://api.github.com/users/torvalds') console.log('User:', user.name) } // Working with different HTTP methods async function httpMethodsExample() { console.log('\n=== HTTP Methods ===') const baseUrl = 'https://jsonplaceholder.typicode.com' // GET const posts = await tf.get(`${baseUrl}/posts?userId=1`) console.log(`User 1 has ${posts.length} posts`) // PUT (update) const updated = await tf.put(`${baseUrl}/posts/1`, { id: 1, title: 'Updated title', body: 'Updated body', userId: 1 }) console.log('Updated post:', updated.title) // DELETE await tf.delete(`${baseUrl}/posts/1`) console.log('Post deleted') } // Caching demonstration async function cachingExample() { console.log('\n=== Caching Demo ===') // First request hits network console.time('First request') await tf.get('https://api.github.com/users/octocat') console.timeEnd('First request') // Second request uses cache (much faster!) console.time('Cached request') await tf.get('https://api.github.com/users/octocat') console.timeEnd('Cached request') } // Run all examples async function main() { await discoveryExample() await customInstanceExample() await httpMethodsExample() await cachingExample() } main().catch(console.error)