2.2.1 • Published 10 months ago
fast-path-parse v2.2.1
fast-path-parse
Fastest route path-to-params parser.
Optimized where it's possible.
Up-to 10x faster than fastest counterpart (aot
imports)
Features
- Zero dependency
- Zero config
- Fastest parser
Usage
ESM
import parse from 'fast-path-parse/runtime/parse';
// or
import parse from 'fast-path-parse/aot/parse';
// Run this ahead-of-time, not at runtime or hot path
const parsePath = parse('/user/:foo');
// Run this at hot path
parsePath('/user/john');
CJS
const parse = require('fast-path-parse/runtime/parse');
// or
const parse = require('fast-path-parse/aot/parse');
// Run this ahead-of-time, not at runtime or hot path
const parsePath = parse('/user/:foo');
// Run this at hot path
parsePath('/user/john');
Benchmark
It is on my machine, on your machine results may vary. See benchmark folder
3-level parameter
Runtime | Path | Methods | fast-path | fast-path-compiled | path-to-regexp | path-to-tree |
---|---|---|---|---|---|---|
Node.js | /user/:id/edit/:page | match | 16.5M ops | 24M ops | 3M ops | 2M ops |
Bun | /user/:id/edit/:page | match | 15M ops | 15M ops | 1M ops | 2.5M |
Node.js | /user/:id/edit/:page | parse | 13.5M ops | 28M ops | 3M ops | 2M ops |
Bun | /user/:id/edit/:page | parse | 17M ops | 23M ops | 1M ops | 2.5M |
Supported paths
Information about badges
- ✅ – Done
- ✍️ – In progress
- 🕖 – Planned but not started yet
- ⚠️ – Requires high amount of time
- ?– Not tested but could work
- ❌ – Probably does not happen
Name | Status | Priority | Performance |
---|---|---|---|
/foo | ✅ | 0 | 100% |
/foo/bar | ✅ | 0 | 100% |
/foo/bar-{one,two} | ⚠️ | 1 | 60% |
/foo/bar-[one,two] | ⚠️ | 1 | 60% |
/foo/bar_* | ⚠️ | 2 | 80% |
/foo/bar-* | ⚠️ | 2 | 80% |
/foo/bar* | ⚠️ | 2 | 80% |
/foo/bar/<id> | ✅ | 3 | 90% |
/foo/task/:bar | ✅ | 4 | 80% |
/foo/:task/:bar | ✅ | 4 | 70% |
/foo/:bar | ✅ | 5 | 90% |
/foo/* | ✅ | 6 | 90% |
/foo/(.*) | ✅ | 6 | 90% |
License
MIT