# jsc-safe-url

> Utility functions for converting to and from URLs that encode query string data into URL paths

Latest version **0.2.4** (published 2023-05-18) · 0BSD license · 0 weekly downloads

## Install

```sh
npm install jsc-safe-url
pnpm add jsc-safe-url
yarn add jsc-safe-url
bun add jsc-safe-url
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.4 |
| Published | 2023-05-18 |
| First published | 2023-05-12 |
| Weekly downloads | 0 |
| License | 0BSD |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 5.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Rob Hogan |
| Maintainers | metro-bot |
| Keywords | javascriptcore, metro, react-native |

## Links

- npm: https://www.npmjs.com/package/jsc-safe-url
- Repository: https://github.com/robhogan/jsc-safe-url
- Homepage: https://github.com/robhogan/jsc-safe-url#readme
- Issues: https://github.com/robhogan/jsc-safe-url/issues
- npm.io page: https://npm.io/package/jsc-safe-url

## Recent versions

- 0.2.4 (latest) — 2023-05-18
- 0.2.3 — 2023-05-18
- 0.2.2 — 2023-05-18
- 0.2.1 — 2023-05-18
- 0.2.0 — 2023-05-17
- 0.1.0 — 2023-05-12
- 0.0.1 — 2023-05-12

## README

## `jsc-safe-url`

JavaScriptCore santizes source URLs in error stacks by stripping query strings and fragments. Ref: [`Webkit/Webkit#49109d`](https://github.com/WebKit/WebKit/commit/49109db4ab87a715f7a8987c7ee380e63060298b).

This package contains utility functions required to implement the proposed [React Native Community RFC0646](https://github.com/react-native-community/discussions-and-proposals/pull/646). It exports three functons:

## `function isJscSafeUrl(url: string): boolean`

Returns `false` if the URL has a query component that could be stripped by JSC.

## `function toJscSafeUrl(urlToConvert: string): string`

Accepts an absolute or relative URL, and encodes any data in the input query string (if present) into the [path component](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) of the URL, by using the delimiter `//&` (which cannot appear in a normalized file path) to separate the original path from the orignal query string.

```
toJscSafeUrl('https://example.com/path?foo=bar#fragment')
// 'https://example.com/path//&foo=bar#fragment'
```

## `function toNormalUrl(urlToNormalize: string): string`

Accepts an absolute or relative URL, and replaces the first unescaped `//&` in the [path component](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) with `?`. (Effectively the reverse of `toJscSafeUrl`.)

```
toNormalUrl('https://example.com/path//&foo=bar#fragment')
// 'https://example.com/path?foo=bar#fragment'
```

---
_Source: https://npm.io/package/jsc-safe-url · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
