# with-query

> Format url with query (string or object), simple and fast, with the power of qs

Latest version **1.3.0** (published 2020-04-02) · MIT license · 0 weekly downloads

## Install

```sh
npm install with-query
pnpm add with-query
yarn add with-query
bun add with-query
```

## Health

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

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

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.3.0 |
| Published | 2020-04-02 |
| First published | 2017-03-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 15.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 18 |
| Author | Bin Hou |
| Maintainers | kouhin |
| Keywords | fetch, format, parse, query, stringify, url |

## Links

- npm: https://www.npmjs.com/package/with-query
- Repository: https://github.com/kouhin/with-query
- npm.io page: https://npm.io/package/with-query

## Dependencies (2)

- [qs](https://npm.io/package/qs.md) ^6.9.3
- [@types/qs](https://npm.io/package/@types/qs.md) ^6.9.1

## Alternatives

- [gamedig](https://npm.io/package/gamedig.md) — 29.3K weekly downloads
- [join-monster](https://npm.io/package/join-monster.md) — 12.8K weekly downloads
- [masked](https://npm.io/package/masked.md) — 5.5K weekly downloads
- [@comunica/actor-query-process-explain-logical](https://npm.io/package/@comunica/actor-query-process-explain-logical.md) — 4.7K weekly downloads
- [@veracity/vui](https://npm.io/package/@veracity/vui.md) — 4.6K weekly downloads

## Recent versions

- 1.3.0 (latest) — 2020-04-02
- 1.2.0 — 2019-07-10
- 1.1.2 — 2018-07-31
- 1.1.1 — 2018-07-31
- 1.1.0 — 2018-07-31
- 1.0.2 — 2017-03-28
- 1.0.1 — 2017-03-28
- 1.0.0 — 2017-03-28

## README

# <a href='https://github.com/kouhin/with-query'><img src='https://cloud.githubusercontent.com/assets/5006663/24417156/3d916d36-1422-11e7-85a4-ebd3d6620d46.png' height='60'></a>

Format url with query (string or object), simple and fast, with the power of [qs](https://github.com/ljharb/qs).

The typical usage of this library is building URL for [Fetch API](https://fetch.spec.whatwg.org). It can be used both on server side and browser side.

[![CircleCI](https://circleci.com/gh/kouhin/with-query/tree/master.svg?style=svg)](https://circleci.com/gh/kouhin/with-query/tree/master)
[![Coverage Status](https://coveralls.io/repos/github/kouhin/with-query/badge.svg?branch=master)](https://coveralls.io/github/kouhin/with-query?branch=master)
[![npm](https://img.shields.io/npm/v/with-query.svg)](https://www.npmjs.com/package/with-query)
[![dependency status](https://david-dm.org/kouhin/with-query.svg?style=flat-square)](https://david-dm.org/kouhin/with-query)
[![airbnb style](https://img.shields.io/badge/code_style-airbnb-blue.svg)](https://github.com/airbnb/javascript)

``` javascript
const withQuery = require('with-query').default;

fetch(withQuery('https://api.github.com/search/repositories', {
  q: 'query',
  sort: 'stars',
  order: 'asc',
}))
.then(res => res.json())
.then((json) => {
  console.info(json);
})
.catch((err) => {
  console.error(err);
});
```

## Installation

- npm

``` shell
npm install with-query --save
```

- yarn

``` shell
yarn add with-query
```

## Usage

``` javascript
var withQuery = require('with-query').default;
var assert = require('assert');

const result1 = withQuery('http://example.com', {
  a: 1,
  b: 'hello',
});
assert.equal(result1, 'http://example.com?a=1&b=hello');

// Append and override the query in url
const result2 = withQuery('http://example.com?a=3&c=4&d=5', {
  a: 1,
  b: 'hello',
});
assert.equal(result2, 'http://example.com?a=1&c=4&d=5&b=hello');

// Hash is also supported
const result3 = withQuery('http://example.com?a=3&c=4&d=5#Append', {
  a: 1,
  b: 'hello',
});
assert.equal(result3, 'http://example.com?a=1&c=4&d=5&b=hello#Append');

// Remove hash
const result4 = withQuery('http://example.com?a=3&c=4&d=5#Append', {
  a: 1,
  b: 'hello',
}, { noHash: true });
assert.equal(result4, 'http://example.com?a=1&c=4&d=5&b=hello');

// with the power of qs
const result5 = withQuery('http://example.com?e[]=f', {
  a: {
    b: 'c',
  },
});
assert.equal(result5, 'http://example.com?e%5B0%5D=f&a%5Bb%5D=c');

// parseOpt and stringifyOpt for qs.parse and qs.stringify
// see https://github.com/ljharb/qs
const result6 = withQuery('http://example.com&e[]=f', {
  a: {
    b: 'c',
  },
}, {
  stringifyOpt: {
    encode: false,
  },
  parseOpt: {
    parseArray: false,
  },
});
assert.equal(result6, 'http://example.com&e[]=f?a[b]=c');
```

## License

MIT

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