* feat: decode percent-encoded path in `getPath`
* refactor: Stop decoding URIs in the `param()` method, since they are already decoded in `getPath()`
* test: add tests for decoding URI in path
* chore: denoify
* Revert "refactor: Stop decoding URIs in the `param()` method, since they are already decoded in `getPath()`"
This reverts commit 7192497e69.
* refactor: Replace "%25" before applying decodeURI() for avoid double decoding
Co-authored-by: Szymon Marczak <36894700+szmarczak@users.noreply.github.com>
* chore: denoify
* refactor(utils): check existence of "%25" before replacing it with "%2525"
Co-authored-by: Szymon Marczak <36894700+szmarczak@users.noreply.github.com>
* feat(utils/url): Changed URL decoding to skip invalid sequences and decode as much as possible
* chore: denoify
---------
Co-authored-by: Szymon Marczak <36894700+szmarczak@users.noreply.github.com>
* perf(jsx): Update benchmark for JSX.
* perf(utils/html): Improve `escape` performance.
Improved `escape` performance with reference to the react-dom implementation.
* refactor(utils/html): Subdivide HtmlEscapedString
* perf(jsx): Rewrite JSX with new `escapeToBuffer` and `JSXNode`.
* refactor(jsx): A function `jsx` returns `JSXNode` now.
* perf(html): Rewrite html middleware with new `escapeToBuffer`.
* Update tests for JSX.
* Update tests for utils/html.
* perf(jsx): Add benchmark scripts for JSX.
* perf(jsx): If included in emptyTag, return early.
* perf(jsx): Process props according to type.
* perf(jsx): Compare with React, Nano and Preact.
* Make the Router abstract class.
* Introduce RegExpRouter.
* Add RegExpRouter to benchmark target.
* Optimize for special short routes.
```
* "*"
* "/path/to/*"
* "/path/to/*/content"
```
* Add assertion to `add` method.