URI encoding and decoding functions according to RFC 3986, implemented on top of JavaScript's builtin encodeURIComponent
and decodeURIComponent
. This library also contains support for encoding and decoding according to application/x-www-form-urlencoded
.
Install js-uri
with Spago:
spago install js-uri
This library provides functions for encoding and decoding URIs and additional functions that match application/x-www-form-urlencoded
. To encode or decode a URI according to RFC3896:
import JSURI (encodeURIComponent, decodeURIComponent)
> encodeURIComponent "https://purescript.org"
Just "https%3A%2F%2Fpurescript.org"
> encodeURIComponent "abc ABC"
Just "abc%20ABC"
> decodeURIComponent "https%3A%2F%2Fpurescript.org" == Just "https://purescript.org"
> decodeURIComponent "https%3A%2F%2Fpurescript.org?search+query" == Just "https://purescript.org?search+query"
To use form-urlencoding
instead, which uses +
for spaces instead of %20
:
import JSURI (encodeFormURLComponent, decodeFormURLComponent)
> encodeFormURLComponent "abc ABC" == Just "abc+ABC"
> decodeFormURLComponent "https%3A%2F%2Fpurescript.org?search+query" == Just "https://purescript.org?search query"
js-uri
documentation is stored in a few places:
- Module documentation is published on Pursuit.
- Usage examples can be found in the test suite.
If you get stuck, there are several ways to get help:
- Open an issue if you have encountered a bug or problem.
- Search or start a thread on the PureScript Discourse if you have general questions. You can also ask questions in the
#purescript
and#purescript-beginners
channels on the Functional Programming Slack (invite link).
You can contribute to js-uri
in several ways:
-
If you encounter a problem or have a question, please open an issue. We'll do our best to work with you to resolve or answer it.
-
If you would like to contribute code, tests, or documentation, please read the contributor guide. It's a short, helpful introduction to contributing to this library, including development instructions.
-
If you have written a library, tutorial, guide, or other resource based on this package, please share it on the PureScript Discourse! Writing libraries and learning resources are a great way to help this library succeed.