Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

LLLfetch

The Ultimate 1KB Fetch Wrapper. Zero dependencies, maximum productivity.
res.json() 지옥에서 벗어나세요. 의존성 제로 1KB 초경량 Fetch 래퍼.


⚡ Features

  • 📦 ESM Native Only: Designed exclusively for modern ECMAScript Modules (import/export).
  • 🧠 Auto JSON Parsing: No more .then(res => res.json()). It does it automatically based on headers.
  • 🚨 Auto Throw Errors: Native fetch doesn't throw on 404 or 500. lll-fetch does.
  • ⏱️ Built-in Timeout: Requests abort automatically after 8 seconds (customizable).
  • 🎈 Zero Dependencies: Uses native fetch and AbortController under the hood.

🚀 Installation / 설치

npm install lll-fetch

⚠️ Prerequisite / 필수 조건: This package is ESM-only. Ensure "type": "module" is set in your package.json

💻 Usage / 사용법

🇺🇸 English Guide

Stop dealing with boilerplate code. LLLFetch returns the parsed payload directly.

import { http, HttpError } from 'lll-fetch';

async function fetchUser() {
  try {
    // 1. GET request (Timeout defaults to 8000ms)
    // Returns the JSON payload DIRECTLY!
    const user = await http.get('[https://api.example.com/users/1](https://api.example.com/users/1)');
    console.log(user.name); 

    // 2. POST request (Auto stringifies the body)
    const newPost = await http.post('[https://api.example.com/posts](https://api.example.com/posts)', {
      title: 'lll-fetch is awesome'
    });
    
  } catch (error) {
    if (error instanceof HttpError) {
      console.error(`Status: ${error.status}`);
      console.error(`Server Payload:`, error.data); // The error response from the server
    } else {
      console.error('Network or Timeout Error:', error.message);
    }
  }
}

🇰🇷 한국어 가이드

불필요한 껍데기나 파싱 과정 없이, 서버가 응답한 데이터를 다이렉트로 반환합니다.

import { http, HttpError } from 'lll-fetch';

async function fetchUser() {
  try {
    // 1. GET 요청 (기본 타임아웃 8초, 넘어가면 알아서 에러 뱉음)
    // res.json() 파싱 없이 실제 데이터를 즉시 받습니다.
    const user = await http.get('[https://api.example.com/users/1](https://api.example.com/users/1)', { timeout: 5000 });
    console.log(user.name); 

    // 2. POST 요청 (객체를 던지면 알아서 JSON 문자열로 변환해서 전송)
    const newPost = await http.post('[https://api.example.com/posts](https://api.example.com/posts)', {
      title: 'lll-fetch 진짜 편하네'
    });
    
  } catch (error) {
    // 400이나 500 에러가 나면 자동으로 catch로 넘어옵니다. (기존 fetch는 안 넘어옴)
    if (error instanceof HttpError) {
      console.error(`에러 코드: ${error.status}`);
      console.error(`서버가 보낸 에러 내용:`, error.data);
    } else {
      console.error('네트워크 또는 타임아웃 에러:', error.message);
    }
  }
}

About

The Ultimate 1KB Fetch Wrapper. Zero dependencies, maximum productivity.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages