Skip to content

hckhanh/fast-url

 
 

fast-url npm version

A folk version of the urlcat focuses on performance and simplicity. Build correct URLs easily. A fast, minimal fork of urlcat focused on performance and simplicity.

Test codecov Quality Gate Status Bundle Size CodSpeed

fast-url is a tiny JavaScript/TypeScript library that makes building URLs convenient and prevents common mistakes.

Features

  • Lightweight: Only one dependency (fast-querystring) and minimal bundle size
  • Type safe: Written in TypeScript with full type definitions
  • URL safe: Automatically escapes parameters and handles edge cases
  • Flexible: Multiple ways to build URLs for different use cases

Installation

# Using bun (recommended)
bun add fast-url

# Using npm
npm install fast-url

Usage

Basic usage example Basic usage example (dark mode)

Basic URL building

import urlcat from "fast-url";

// Path parameters
urlcat("https://api.example.com", "/users/:id", { id: 123 });
// → 'https://api.example.com/users/123'

// Query parameters
urlcat("https://api.example.com", "/users", { limit: 10, offset: 20 });
// → 'https://api.example.com/users?limit=10&offset=20'

// Combined path and query parameters
urlcat("https://api.example.com", "/users/:id/posts", { id: 123, limit: 10 });
// → 'https://api.example.com/users/123/posts?limit=10'

CommonJS

const urlcat = require("fast-url").default;

Utility functions

import { query, subst, join } from "fast-url";

// Build query strings
query({ name: "John", age: 30 });
// → 'name=John&age=30'

// Substitute path parameters
subst("/users/:id/posts/:postId", { id: 123, postId: 456 });
// → '/users/123/posts/456'

// Join URL parts
join("https://api.example.com/", "/", "/users");
// → 'https://api.example.com/users'

API

urlcat(baseUrl, pathTemplate, params?)

Build a complete URL by combining a base URL, path template, and parameters.

urlcat(baseTemplate, params)

Use a single template containing path parameters; unused params become query parameters.

query(params)

Build a query string from an object of key-value pairs.

subst(template, params)

Substitute path parameters in a template string.

join(part1, separator, part2)

Join two URL parts with exactly one separator.

Why fast-url?

Building URLs manually is error-prone:

// ❌ Error-prone manual approach
const url = `${baseUrl}/users/${id}/posts?limit=${limit}&offset=${offset}`;
// Issues: double slashes, unescaped parameters, complex concatenation
// ✅ Clean and safe with fast-url
const url = urlcat(baseUrl, "/users/:id/posts", { id, limit, offset });

fast-url handles:

  • Automatic parameter escaping
  • Proper URL segment joining
  • Clean separation of path and query parameters

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

About

A folk version of urlcat focuses on performance and simplicity.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Languages

  • TypeScript 100.0%