1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-22 19:07:54 +01:00
Unleash is the open source feature toggle service.
Go to file
renovate[bot] 321265e0ed
chore(deps): update dependency got to v13 (#3952)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [got](https://togithub.com/sindresorhus/got) | [`^11.8.5` ->
`^13.0.0`](https://renovatebot.com/diffs/npm/got/11.8.6/13.0.0) |
[![age](https://badges.renovateapi.com/packages/npm/got/13.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/got/13.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/got/13.0.0/compatibility-slim/11.8.6)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/got/13.0.0/confidence-slim/11.8.6)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>sindresorhus/got</summary>

###
[`v13.0.0`](https://togithub.com/sindresorhus/got/releases/tag/v13.0.0)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.6.1...v13.0.0)

As a reminder, Got continues to require ESM. For TypeScript users, this
includes having [`"module": "node16", "moduleResolution": "node16"` in
your
tsconfig](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c#how-can-i-make-my-typescript-project-output-esm).

##### Breaking

- Require Node.js 16
[`52a1063`](https://togithub.com/sindresorhus/got/commit/52a1063)
- Change the
[`enableUnixSockets`](https://togithub.com/sindresorhus/got/blob/main/documentation/2-options.md#enableunixsockets)
option to be `false` by default
[`852c312`](https://togithub.com/sindresorhus/got/commit/852c312)
    -   Most users don't need it.

##### Improvements

- Allow specifying `undefined` for options
([#&#8203;2258](https://togithub.com/sindresorhus/got/issues/2258))
[`1cefe8b`](https://togithub.com/sindresorhus/got/commit/1cefe8b)

###
[`v12.6.1`](https://togithub.com/sindresorhus/got/releases/tag/v12.6.1)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.6.0...v12.6.1)

- Fix `get-stream` import statement
([#&#8203;2266](https://togithub.com/sindresorhus/got/issues/2266))
[`67d5039`](https://togithub.com/sindresorhus/got/commit/67d5039)

###
[`v12.6.0`](https://togithub.com/sindresorhus/got/releases/tag/v12.6.0)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.5.3...v12.6.0)

- Update dependencies
[`88c88fb`](https://togithub.com/sindresorhus/got/commit/88c88fb)
[`979272e`](https://togithub.com/sindresorhus/got/commit/979272e)
- Loosen URL validation strictness
([#&#8203;2200](https://togithub.com/sindresorhus/got/issues/2200))
[`0ca0b7f`](https://togithub.com/sindresorhus/got/commit/0ca0b7f)

###
[`v12.5.3`](https://togithub.com/sindresorhus/got/releases/tag/v12.5.3)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.5.2...v12.5.3)

- Fix abort event listeners not always being cleaned up
([#&#8203;2162](https://togithub.com/sindresorhus/got/issues/2162))
[`3cc40b5`](https://togithub.com/sindresorhus/got/commit/3cc40b5)

###
[`v12.5.2`](https://togithub.com/sindresorhus/got/releases/tag/v12.5.2)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.5.1...v12.5.2)

- Improve TypeScript 4.9 compatibility
([#&#8203;2163](https://togithub.com/sindresorhus/got/issues/2163))
[`39f83b6`](https://togithub.com/sindresorhus/got/commit/39f83b6)

###
[`v12.5.1`](https://togithub.com/sindresorhus/got/releases/tag/v12.5.1)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.5.0...v12.5.1)

- Fix compatibility with TypeScript and ESM
[`3b3ea67`](https://togithub.com/sindresorhus/got/commit/3b3ea67)
- Fix request body not being properly cached
([#&#8203;2150](https://togithub.com/sindresorhus/got/issues/2150))
[`3e9d3af`](https://togithub.com/sindresorhus/got/commit/3e9d3af)

###
[`v12.5.0`](https://togithub.com/sindresorhus/got/releases/tag/v12.5.0)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.4.1...v12.5.0)

- Disable method rewriting on 307 and 308 status codes
([#&#8203;2145](https://togithub.com/sindresorhus/got/issues/2145))
[`e049e94`](https://togithub.com/sindresorhus/got/commit/e049e94)
- Upgrade dependencies
[`8630815`](https://togithub.com/sindresorhus/got/commit/8630815)
[`f0ac0b3`](https://togithub.com/sindresorhus/got/commit/f0ac0b3)
[`4c3762a`](https://togithub.com/sindresorhus/got/commit/4c3762a)

###
[`v12.4.1`](https://togithub.com/sindresorhus/got/releases/tag/v12.4.1)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.4.0...v12.4.1)

##### Fixes

- Fix `options.context` being not extensible
[`b671480`](b671480715)
- Don't emit `uploadProgress` after promise cancelation
[`693de21`](693de217b0)

###
[`v12.4.0`](https://togithub.com/sindresorhus/got/releases/tag/v12.4.0)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.3.1...v12.4.0)

##### Improvements

- Support FormData without known length
([#&#8203;2120](https://togithub.com/sindresorhus/got/issues/2120))
[`850773c`](https://togithub.com/sindresorhus/got/commit/850773c)

##### Fixes

- Don't call `beforeError` hooks with `HTTPError` if the
`throwHttpErrors` option is `false`
([#&#8203;2104](https://togithub.com/sindresorhus/got/issues/2104))
[`3927348`](https://togithub.com/sindresorhus/got/commit/3927348)

###
[`v12.3.1`](https://togithub.com/sindresorhus/got/releases/tag/v12.3.1)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.3.0...v12.3.1)

- Don't freeze signal when freezing Options
([#&#8203;2100](https://togithub.com/sindresorhus/got/issues/2100))
[`43b1467`](https://togithub.com/sindresorhus/got/commit/43b1467)

###
[`v12.3.0`](https://togithub.com/sindresorhus/got/releases/tag/v12.3.0)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.2.0...v12.3.0)

- Add `.off()` method for events
([#&#8203;2092](https://togithub.com/sindresorhus/got/issues/2092))
[`88056be`](https://togithub.com/sindresorhus/got/commit/88056be)

###
[`v12.2.0`](https://togithub.com/sindresorhus/got/releases/tag/v12.2.0)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.1.0...v12.2.0)

- [Support
`AbortController`](https://togithub.com/sindresorhus/got/blob/main/documentation/2-options.md#signal)
([#&#8203;2020](https://togithub.com/sindresorhus/got/issues/2020))
[`6a6d2a9`](https://togithub.com/sindresorhus/got/commit/6a6d2a9)
- Add
[`enableUnixSockets`](https://togithub.com/sindresorhus/got/blob/main/documentation/2-options.md#enableunixsockets)
option
([#&#8203;2062](https://togithub.com/sindresorhus/got/issues/2062))
[`461b3d4`](https://togithub.com/sindresorhus/got/commit/461b3d4)

###
[`v12.1.0`](https://togithub.com/sindresorhus/got/releases/tag/v12.1.0)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.0.4...v12.1.0)

##### Improvements

- Add `response.ok`
([#&#8203;2043](https://togithub.com/sindresorhus/got/issues/2043))
[`22d58fb`](https://togithub.com/sindresorhus/got/commit/22d58fb)
- This is only useful if you have [`{throwHttpErrors:
false}`](https://togithub.com/sindresorhus/got/blob/main/documentation/2-options.md#throwhttperrors)

##### Fixes

- Do not redirect to UNIX sockets
([#&#8203;2047](https://togithub.com/sindresorhus/got/issues/2047))
[`861ccd9`](https://togithub.com/sindresorhus/got/commit/861ccd9)
- [CVE-2022-33987](https://nvd.nist.gov/vuln/detail/CVE-2022-33987)
- [Also back ported to
v11](https://togithub.com/sindresorhus/got/releases/tag/v11.8.5)

###
[`v12.0.4`](https://togithub.com/sindresorhus/got/releases/tag/v12.0.4)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.0.3...v12.0.4)

- Remove stream lock - unreliable since Node 17.3.0
[`bb8eca9`](bb8eca924c)

###
[`v12.0.3`](https://togithub.com/sindresorhus/got/releases/tag/v12.0.3)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.0.2...v12.0.3)

- Allow more types in the `json` option
([#&#8203;2015](https://togithub.com/sindresorhus/got/issues/2015))
[`eb045bf`](https://togithub.com/sindresorhus/got/commit/eb045bf)

###
[`v12.0.2`](https://togithub.com/sindresorhus/got/releases/tag/v12.0.2)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.0.1...v12.0.2)

- Fix `encoding` option with `{responseType: 'json'}`
([#&#8203;1996](https://togithub.com/sindresorhus/got/issues/1996))
[`0703318`](https://togithub.com/sindresorhus/got/commit/0703318)

###
[`v12.0.1`](https://togithub.com/sindresorhus/got/releases/tag/v12.0.1)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v12.0.0...v12.0.1)

- Fix `nock` compatibility
([#&#8203;1959](https://togithub.com/sindresorhus/got/issues/1959))
[`bf39d2c`](https://togithub.com/sindresorhus/got/commit/bf39d2c)
- Fix missing export of `Request` TypeScript type
([#&#8203;1940](https://togithub.com/sindresorhus/got/issues/1940))
[`0f9f2b8`](https://togithub.com/sindresorhus/got/commit/0f9f2b8)

###
[`v12.0.0`](https://togithub.com/sindresorhus/got/releases/tag/v12.0.0)

[Compare
Source](https://togithub.com/sindresorhus/got/compare/v11.8.6...v12.0.0)

##### Introducing Got v12.0.0 🎉

Long time no see! The latest Got version (v11.8.2) was released just in
February ❄️
We have been working hard on squashing bugs and improving overall
experience.

If you find Got useful, you might want to [sponsor the Got
maintainers](https://togithub.com/sindresorhus/got?sponsor=1).

##### This package is now pure ESM

**Please [read
this](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c).**
Also see
[https://github.com/sindresorhus/got/issues/1789](https://togithub.com/sindresorhus/got/issues/1789).

- **Please don't open issues about `[ERR_REQUIRE_ESM]` and `Must use
import to load ES Module` errors.** This is a problem with your setup,
not Got.
- Please don't open issues about using Got with Jest. Jest does not
fully support ESM.
- Pretty much any problem with loading this package is a problem with
your bundler, test framework, etc, not Got.
- If you use TypeScript, you will want to stay on Got v11 until
TypeScript 4.6 is out.
[Why.](https://togithub.com/microsoft/TypeScript/issues/46452)
- If you use a bundler, make sure it supports ESM and that you have
correctly configured it for ESM.
- The Got issue tracker is not a support channel for your favorite
build/bundler tool.

##### Required Node.js >=14

While working with streams, we encountered more Node.js bugs that needed
workarounds.
In order to keep our code clean, we had to drop Node.js v12 as the code
would get more messy.
We strongly recommend that you update Node.js to **v14 LTS**.

##### HTTP/2 support

Every Node.js release, the native `http2` module gets more stable.
Unfortunately there are still some issues on the Node.js side, so we
decided to keep HTTP/2 disabled for now.
We may enable it by default in Got v13. It is still possible to turn it
on via the `http2` option.

To run HTTP/2 requests, it is required to use Node.js **v15.10** or
above.

##### Bug fixes

Woah, we possibly couldn't make a release if we didn't fix some bugs!

- Do not throw on custom stack traces
([#&#8203;1491](https://togithub.com/sindresorhus/got/issues/1491))
[`49c16ee`](49c16ee54f)
- Remove automatic `content-length` on ReadStream
([#&#8203;1510](https://togithub.com/sindresorhus/got/issues/1510))
[`472b8ef`](472b8ef9d9)
- Fix promise shortcuts in case of error status code
([#&#8203;1543](https://togithub.com/sindresorhus/got/issues/1543))
[`ff918fb`](ff918fb6de)
[`1107cc6`](1107cc625e)
- Invert the `methodRewriting` option
[`51d88a0`](51d88a0efe)
- Fix `url` not being reused on retry in rare case
([#&#8203;1487](https://togithub.com/sindresorhus/got/issues/1487))
[`462bc63`](462bc63001)
- Fix hanging promise on HTTP/2 timeout
([#&#8203;1492](https://togithub.com/sindresorhus/got/issues/1492))
[`a59fac4`](a59fac415a)
- Prevent uncaught ParseErrors on initial successful response
([#&#8203;1527](https://togithub.com/sindresorhus/got/issues/1527))
[`77df9c3`](77df9c33db)
- Throw an error when retrying with consumed body
([#&#8203;1507](https://togithub.com/sindresorhus/got/issues/1507))
[`62305d7`](62305d77d3)
- Fix a Node.js 16 bug that hangs Got streams
[`06a2d3d`](06a2d3d7d8)
- Fix default pagination handling for empty Link header
([#&#8203;1768](https://togithub.com/sindresorhus/got/issues/1768))
[`1e1e506`](1e1e50647e)
- Fix incorrect `response.complete` when using cache
[`9e15d88`](9e15d887da)
- Fix `Cannot call end` error when `request` returns a `Writable`
[`226cc39`](226cc3995f)
- Fix Request options not being reused on retry
[`3c23eea`](3c23eea5a0)
- Fix types being not compatible with CommonJS
[`3c23eea`](3c23eea5a0)
- Fix `got.paginate does not call init hooks`
([#&#8203;1574](https://togithub.com/sindresorhus/got/issues/1574))
[`3c23eea`](3c23eea5a0)
- Generate a new object when passing options to the native `https`
module
([#&#8203;1567](https://togithub.com/sindresorhus/got/issues/1567))
[`3c23eea`](3c23eea5a0)
- Remove stream reuse check
([#&#8203;1803](https://togithub.com/sindresorhus/got/issues/1803))
[`9ecc5ee`](9ecc5ee76f)
- Fix merging `searchParams`
([#&#8203;1814](https://togithub.com/sindresorhus/got/issues/1814))
[`1018c20`](1018c2029e)
[`732e9bd`](732e9bd940)
- Fix unhandled exception when lookup returns invalid IP early
([#&#8203;1737](https://togithub.com/sindresorhus/got/issues/1737))
[`2453e5e`](2453e5e421)
- Fix relative URLs when paginating
[`439fb82`](439fb82d2a)
- Require url to be an instance of URL when paginating
([#&#8203;1818](https://togithub.com/sindresorhus/got/issues/1818))
[`eda69ff`](eda69ff924)
- Fix `username` and `password` encoding in URL
([#&#8203;1169](https://togithub.com/sindresorhus/got/issues/1169)
[#&#8203;1317](https://togithub.com/sindresorhus/got/issues/1317))
[`d65d0ca`](d65d0caf62)
- Clone raw options
[`1c4cefc`](1c4cefc9b4)
- Fix invalid `afterResponse` return check
[`cbc8902`](https://togithub.com/sindresorhus/got/commit/cbc8902)
- Fix `https.alpnProtocols` not having an effect
[`e1099fb`](https://togithub.com/sindresorhus/got/commit/e1099fb)

##### Improvements

- Make the `context` option mergeable
([#&#8203;1459](https://togithub.com/sindresorhus/got/issues/1459))
[`2b8ed1f`](2b8ed1f5a1)
- Add generic argument to AfterResponseHook TypeScript type
([#&#8203;1589](https://togithub.com/sindresorhus/got/issues/1589))
[`6fc04a9`](6fc04a9b92)
- Add read timeout
([#&#8203;1518](https://togithub.com/sindresorhus/got/issues/1518))
[`e943672`](e9436720fc)
*(blocked by
[https://github.com/nodejs/node/issues/35923](https://togithub.com/nodejs/node/issues/35923))*
- Improve the pagination API
([#&#8203;1644](https://togithub.com/sindresorhus/got/issues/1644))
[`2675046`](2675046a83)
- Change the stackAllItems option to be false by default
([#&#8203;1645](https://togithub.com/sindresorhus/got/issues/1645))
[`1120370`](1120370e05)
- Throw when afterResponse hook returns an invalid value
[`4f21eb3`](4f21eb3db7)
- Add `retry.backoffLimit` option
[`41c4136`](41c4136632)
- Add `noise` retry option
[`e830077`](e830077046)
- Enable more HTTPS options
[`83575d5`](83575d590a)
[`fe723a0`](fe723a0477)
(thanks [@&#8203;Giotino](https://togithub.com/Giotino))
- Define `error.code`
[`f27e8d3`](f27e8d3316)
- Set `options.url` even if some options are invalid
[`8d6a680`](8d6a680788)
- Improve memory usage when merging options
[`2db5ec5`](2db5ec5d36)
- Support async generators as body
[`854430f`](854430f013)
[`3df52f3`](3df52f38ed)
- Add missing `once` types for Stream API
[`3c23eea`](3c23eea5a0)
- New error type: `RetryError` which always triggers a new retry when
thrown
[`3c23eea`](3c23eea5a0)
- `error.options` is now enumerable
[`3c23eea`](3c23eea5a0)
- `defaults.handlers` don't need a default handler now
[`3c23eea`](3c23eea5a0)
- Add a parser for the `Link` header
[`3c23eea`](3c23eea5a0)
- General code improvements
[`a5dd9aa`](a5dd9aa37e)

##### Breaking changes

##### Improved option normalization

- Got exports an `Option` class that is specifically designed to parse
and validate Got options.
It is made of setters and getters that provide fast normalization and
more consistent behavior.

When passing an option does not exist, Got will throw an error. In order
to retrieve the options before the error, use `error.options`.

```js
import got from 'got';

try {
    await got('https://httpbin.org/anything', {
        thisOptionDoesNotExist: true
    });
} catch (error) {
    console.error(error);
    console.error(error.options.url.href);
    // Unexpected option: thisOptionDoesNotExist
    // https://httpbin.org/anything
}
```

- The `init` hook now accepts a second argument: `self`, which points to
an `Options` instance.

In order to define your own options, you have to move them to
`options.context` in an [`init`
hook](https://togithub.com/sindresorhus/got/blob/main/documentation/lets-make-a-plugin.md#authorization)
or store them in `options.context` directly.

- The `init` hooks are ran only when passing an options object
explicitly.

```diff
- await got('https://example.com'); // this will *not* trigger the init hooks
+ await got('https://example.com', {}); // this *will** trigger init hooks
```

- [`options.merge()`](2-options.md) replaced `got.mergeOptions` and
`Request.normalizeArguments`

```diff
- got.defaults.options = got.mergeOptions(got.defaults.options, {…});
+ got.defaults.options.merge(…);
```

This fixes issues like
[#&#8203;1450](https://togithub.com/sindresorhus/got/issues/1450)

- Legacy `Url` instances are not supported anymore. You need to use
WHATWG URL instead.

```diff
- await got(string, {port: 8443});
+ const url = new URL(string);
+ url.port = 8443;
+ await got(url);
```

-   No implicit timeout declaration.

```diff
- await got('https://example.com', {timeout: 5000})
+ await got('https://example.com', {timeout: {request: 5000})
```

-   No implicit retry declaration.

```diff
- await got('https://example.com', {retry: 5})
+ await got('https://example.com', {retry: {limit: 5})
```

-   `dnsLookupIpVersion` is now a number (4 or 6) or undefined

```diff
- await got('https://example.com', {dnsLookupIpVersion: 'ipv4'})
+ await got('https://example.com', {dnsLookupIpVersion: 4})
```

-   `redirectUrls` and `requestUrl` now give URL instances

```diff
- request.requestUrl
+ request.requestUrl.origin
+ request.requestUrl.href
+ request.requestUrl.toString()
```

```diff
- request.redirectUrls[0]
+ request.redirectUrls[0].origin
+ request.redirectUrls[0].href
+ request.redirectUrls[0].toString()
```

-   Renamed `request.aborted` to `request.isAborted`

```diff
- request.aborted
+ request.isAborted
```

Reason: consistency with `options.isStream`.

-   Renamed the `lookup` option to `dnsLookup`

```diff
- await got('https://example.com', {lookup: cacheable.lookup})
+ await got('https://example.com', {dnsLookup: cacheable.lookup})
```

- The `beforeRetry` hook now accepts only two arguments: `error` and
`retryCount`

```diff
await got('https://example.com', {
    hooks: {
        beforeRetry: [
-            (options, error, retryCount) => {
-                console.log(options, error, retryCount);
-            }
+            (error, retryCount) => {
+                console.log(error.options, error, retryCount);
+            }
        ]
    }
})
```

The `options` argument has been removed, however it's still accessible
via `error.options`. All modifications on `error.options` will be
reflected in the next requests (no behavior change, same as with Got
11).

- The `beforeRedirect` hook's first argument (options) is now a cloned
instance of the Request options.

This was done to make retrieving the original options possible:
`plainResponse.request.options`.

```diff
await got('http://szmarczak.com', {
    hooks: {
        beforeRedirect: [
            (options, response) => {
-                console.log(options === response.request.options); //=> true [invalid! our original options were overriden]
+                console.log(options === response.request.options); //=> false [we can access the original options now]
            }
        ]
    }
})
```

- The `redirect` event now takes two arguments in this order:
`updatedOptions` and `plainResponse`.

```diff
- stream.on('redirect', (response, options) => …)
+ stream.on('redirect', (options, response) => …)
```

Reason: consistency with the `beforeRedirect` hook.

- The `socketPath` option has been removed. Use the `unix:` protocol
instead.

```diff
- got('/containers/json', {socketPath: '/var/run/docker.sock'})
+ got('unix:/var/run/docker.sock:/containers/json')
+ got('http://unix:/var/run/docker.sock:/containers/json')
```

- The `retryWithMergedOptions` function in an `afterResponse` hook no
longer returns a `Promise`.

It now throws `RetryError`, so this should this should be the last
function being executed.
This was done to allow `beforeRetry` hooks getting called.

-   You can no longer set `options.agent` to `false`.
To do so, you need to define all the `options.agent` properties: `http`,
`https` and `http2`.

```diff
await got('https://example.com', {
-    agent: false
+    agent: {
+        http: false,
+        https: false,
+        http2: false
+    }
})
```

- When passing a `url` option when paginating, it now needs to be an
absolute URL - the `prefixUrl` option is always reset from now on. The
same when retrying in an `afterResponse` hook.

```diff
- return {url: '/location'};
+ return {url: new URL('/location', response.request.options.url)};
```

There was confusion around the `prefixUrl` option. It was
counterintuitive if used with the Pagination API. For example, it worked
fine if the server replied with a relative URL, but if it was an
absolute URL then the `prefixUrl` would end up duplicated. In order to
fix this, Got now requires an absolute URL - no `prefixUrl` will be
applied.

- `got.extend(…)` will throw when passing some options that don't accept
undefined - undefined no longer retains the old value, as setting
undefined explicitly may reset the option

##### Documentation

We have redesigned the documentation so it's easier to navigate and find
exactly what you are looking for. We hope you like it ❤️

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/Unleash/unleash).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMTAuMCIsInVwZGF0ZWRJblZlciI6IjM1LjEzMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-05 13:25:45 +02:00
.do open-api addon controller (#1721) 2022-06-22 13:49:18 +03:00
.github fix: some security vulnerabilities (#4143) 2023-07-05 11:51:27 +02:00
.husky refactor: fix husky and lint-staged setup (#1654) 2022-06-02 08:08:53 +02:00
coverage feat: Instance stats for export/import (#3121) 2023-02-15 14:39:16 +02:00
docker chore: update to node 18 (#3527) 2023-04-18 10:35:32 +02:00
docs/api/oas docs: Remove/update references to Heroku (#2099) 2022-10-19 12:02:00 +00:00
examples feat: update docs to match v4. 2021-05-18 11:19:33 +02:00
frontend fix: ensure userId context exists when running demo (#4144) 2023-07-05 10:49:18 +01:00
perf feat: add segments (#1426) 2022-03-29 14:59:14 +02:00
scripts chore(deps): update dpage/pgadmin4 docker tag to v6.21 (#3693) 2023-05-06 08:11:45 +00:00
src fix: some security vulnerabilities (#4143) 2023-07-05 11:51:27 +02:00
website chore(deps): update dependency got to v13 (#3952) 2023-07-05 13:25:45 +02:00
.dockerignore chore: Optimize docker build oss (#3951) 2023-06-12 09:15:09 +02:00
.editorconfig Move e2e tests from frontend to backend .github (#1975) 2022-08-29 12:25:11 +00:00
.eslintignore Feat/add change request settings (#2390) 2022-11-11 10:09:25 +02:00
.eslintrc chore: add linter rules for regexp (#3500) 2023-04-17 07:11:22 +00:00
.gitignore task: Add Unit test result check task (#3695) 2023-05-25 11:03:54 +00:00
.lycheeignore chore: ignore Twitter link from being checked (#2971) 2023-01-23 22:09:28 +01:00
.mergify.yml chore: mergify (#3631) 2023-04-26 16:07:34 +02:00
.node-version chore: update node-version file (#3562) 2023-04-21 09:25:10 +02:00
.nvmrc chore: update to node 18 (#3527) 2023-04-18 10:35:32 +02:00
.prettierignore Personal access tokens backend (#2064) 2022-09-16 10:54:27 +03:00
app.json fix: tell heroku to not build in production mode 2022-10-18 21:35:50 +02:00
CHANGELOG.md chore: update CHANGELOG.md 2021-10-29 13:18:38 +02:00
CODE_OF_CONDUCT.md Proposed version 2.1 2023-05-16 15:14:03 +02:00
CONTRIBUTING.md chore: simplify package scripts (#3736) 2023-05-12 11:23:22 +01:00
docker-compose.yml Update docker-compose.yml (#3256) 2023-03-06 14:30:28 +01:00
Dockerfile chore: Optimize docker build oss (#3951) 2023-06-12 09:15:09 +02:00
LICENSE fix: license year and company 2020-05-12 22:41:36 +02:00
package.json fix: add resolution for semver 2023-07-04 17:02:38 +02:00
README.md added flutter documentation (#2736) 2023-01-03 13:07:01 +01:00
renovate.json feat: wait for deps to be somewhat stable (#2768) 2023-01-05 12:45:48 +01:00
tsconfig.json chore: enable strictNullCheck but ignore problems at compile time (#3273) 2023-03-10 10:27:56 +01:00
yarn.lock fix: add resolution for semver 2023-07-04 17:02:38 +02:00

About Unleash

Unleash is an open source feature management solution. It improves the workflow of your development team and leads to quicker software delivery. Unleash increases efficiency and gives teams full control of how and when they enable new functionality for end users. Unleash lets teams ship code to production in smaller releases whenever they want.

Feature toggles make it easy to test how your code works with real production data without the fear that you'll accidentally break your users' experience. It also helps your team work on multiple features in parallel without each maintaining an separate feature branch.

Unleash is the largest open source solution for feature flagging on GitHub. There's 12 official client and server SDKs and 10+ community SDKs available; you can even make your own if you want to. You can use Unleash with any language and any framework.


Get started in 2 steps

1. Start Unleash

With git and docker installed, it's easy to get started:

Run this script:

git clone git@github.com:Unleash/unleash.git
cd unleash
docker compose up -d

Then point your browser to localhost:4242 and log in using:

  • username: admin
  • password: unleash4all

If you'd rather run the source code in this repo directly via Node.js, see the step-by-step instructions to get up and running in the contributing guide.

2. Connect your SDK

Find your preferred SDK in our list of official SDKs and import it into your project. Follow the setup guides for your specific SDK.

If you use the docker compose file from the previous step, here's the configuration details you'll need to get going:

  • For front-end SDKs, use:
    • URL: http://localhost:4242/api/frontend/
    • clientKey: default:development.unleash-insecure-frontend-api-token
  • For server-side SDKs, use:
    • Unleash API URL: http://localhost:4242/api/
    • API token: default:development.unleash-insecure-api-token

If you use a different setup, your configuration details will most likely also be different.

Check a feature toggle

Checking the state of a feature toggle in your code is easy! The syntax will vary depending on your language, but all you need is a simple function call to check whether a toggle is available. Here's how it might look in Java:

if (unleash.isEnabled("AwesomeFeature")) {
  // do new, flashy thing
} else {
  // do old, boring stuff
}

Run Unleash on a service?

If you don't want to run Unleash locally, we also provide easy deployment setups for Heroku and Digital Ocean:

Deploy to Heroku Deploy to DigitalOcean

Configure and run Unleash anywhere

The above sections show you how to get up and running quickly and easily. When you're ready to start configuring and customizing Unleash for your own environment, check out the documentation for getting started with self-managed deployments, Unleash configuration options, or running Unleash locally via docker.


Online demo

Try out the Unleash online demo.

The Unleash online demo


Community and help — sharing is caring

We know that learning a new tool can be hard and time-consuming. We have a growing community that loves to help out. Please don't hesitate to reach out for help.

Join Unleash on Slack

💬 Join Unleash on Slack if you want ask open questions about Unleash, feature toggling or discuss these topics in general.

💻 Create a GitHub issue if you have found a bug or have ideas on how to improve Unleash.

📚 Visit the documentation for more in-depth descriptions, how-to guides, and more.


Contribute to Unleash

Building Unleash is a collaborative effort, and we owe a lot of gratitude to many smart and talented individuals. Building it together with community ensures that we build a product that solves real problems for real people. We'd love to have your help too: Please feel free to open issues or provide pull requests.

Check out the CONTRIBUTING.md file for contribution guidelines and the Unleash developer guide for tips on environment setup, running the tests, and running Unleash from source.

Contributors

The Unleash contributors


Features our users love

Flexibility and adaptability

Security and performance

  • Privacy by design (GDPR and Schrems II). End-user data never leaves your application.
  • Audit logs
  • Enforce OWASP's secure headers via the strict HTTPS-only mode
  • Flexible hosting options: host it on premise or in the cloud (any cloud)
  • Scale the Unleash Proxy independently of the Unleash server to support any number of front-end clients without overloading your Unleash instance

Looking for more features?

If you're looking for one of the following features, please take a look at our Pro and Enterprise plans:


Architecture

Read more in the system overview section of the Unleash documentation.


Unleash SDKs

To connect your application to Unleash you'll need to use a client SDK for your programming language.

Official server-side SDKs:

Official front-end SDKs:

The front-end SDKs connects via the Unleash Proxy in order to ensure privacy, scalability and security.

Community SDKs:

If none of the official SDKs fit your need, there's also a number of community-developed SDKs where you might find an implementation for your preferred language (such as Elixir, Dart, Clojure, and more).


Users of Unleash

Unleash is trusted by thousands of companies all over the world.

Proud Open-Source users: (send us a message if you want to add your logo here)

The Unleash logo encircled by logos for Finn.no, nav (the Norwegian Labour and Welfare Administration), Budgets, Otovo, and Amedia. The encircling logos are all connected to the Unleash logo.


Migration guides

Unleash has evolved significantly over the past few years, and we know how hard it can be to keep software up to date. If you're using the current major version, upgrading shouldn't be an issue. If you're on a previous major version, check out the Unleash migration guide!


Want to know more about Unleash?

Videos and podcasts

Articles and more