@clickup/rest-client
Version:
A syntax sugar tool around Node fetch() API, tailored to work with TypeScript and response validators
363 lines (206 loc) • 9.11 kB
Markdown
[/rest-client](../README.md) / [Exports](../modules.md) / RestOptions
# Interface: RestOptions
Options passed to RestClient. More options can be added by cloning an
instance of RestClient, withOption() method.
## Properties
### retries
• **retries**: `number`
Max number of retries. Default is 0, because some requests are from the
web app, and we don't want to retry them.
#### Defined in
[src/RestOptions.ts:70](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L70)
___
### retryDelayFirstMs
• **retryDelayFirstMs**: `number`
How much time to wait by default on the 1st retry attempt.
#### Defined in
[src/RestOptions.ts:72](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L72)
___
### retryDelayFactor
• **retryDelayFactor**: `number`
How much to increase the retry delay on each retry.
#### Defined in
[src/RestOptions.ts:74](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L74)
___
### retryDelayJitter
• **retryDelayJitter**: `number`
Use this fraction (random) of the current retry delay to jitter both ways
(e.g. 0.1 means 90%...110% of the delay to be actually applied).
#### Defined in
[src/RestOptions.ts:77](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L77)
___
### retryDelayMaxMs
• **retryDelayMaxMs**: `number`
Maximum delay between each retry.
#### Defined in
[src/RestOptions.ts:79](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L79)
___
### heartbeater
• **heartbeater**: `Object`
A logic which runs on different IO stages (delay and heartbeats).
#### Type declaration
| Name | Type |
| :------ | :------ |
| `heartbeat` | () => `Promise`\<`void`\> |
| `delay` | (`ms`: `number`) => `Promise`\<`void`\> |
#### Defined in
[src/RestOptions.ts:81](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L81)
___
### throwIfResIsBigger
• **throwIfResIsBigger**: `undefined` \| `number`
Allows to limit huge requests and throw instead.
#### Defined in
[src/RestOptions.ts:92](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L92)
___
### privateDataInResponse
• **privateDataInResponse**: `boolean`
Passed to the logger which may decide, should it log details of the
response or not.
#### Defined in
[src/RestOptions.ts:95](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L95)
___
### allowInternalIPs
• **allowInternalIPs**: `boolean`
If true, non-public IP addresses are allowed too; otherwise, only unicast
addresses are allowed.
#### Defined in
[src/RestOptions.ts:98](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L98)
___
### responseEncoding
• **responseEncoding**: `undefined` \| `BufferEncoding`
Overrides the default encoding heuristics for responses.
#### Defined in
[src/RestOptions.ts:100](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L100)
___
### isDebug
• **isDebug**: `boolean`
If true, logs request-response pairs to console.
#### Defined in
[src/RestOptions.ts:102](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L102)
___
### keepAlive
• **keepAlive**: `Object`
Sets Keep-Alive parameters (persistent connections).
#### Type declaration
| Name | Type | Description |
| :------ | :------ | :------ |
| `timeoutMs` | `number` | How much time to keep an idle connection alive in the pool. If 0, closes the connection immediately after the response. |
| `maxSockets?` | `number` | How many sockets at maximum will be kept open. |
#### Defined in
[src/RestOptions.ts:106](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L106)
___
### family
• **family**: ``0`` \| ``4`` \| ``6``
When resolving DNS, use IPv4, IPv6 or both (see dns.lookup() docs).
#### Defined in
[src/RestOptions.ts:114](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L114)
___
### timeoutMs
• **timeoutMs**: `number`
Max timeout to wait for a response.
#### Defined in
[src/RestOptions.ts:116](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L116)
___
### logger
• **logger**: (`event`: [`RestLogEvent`](RestLogEvent.md)) => `void`
Logger to be used for each responses (including retried) plus for backoff
delay events logging.
#### Type declaration
▸ (`event`): `void`
##### Parameters
| Name | Type |
| :------ | :------ |
| `event` | [`RestLogEvent`](RestLogEvent.md) |
##### Returns
`void`
#### Defined in
[src/RestOptions.ts:119](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L119)
___
### middlewares
• **middlewares**: [`Middleware`](Middleware.md)[]
Middlewares to wrap requests. May alter both request and response.
#### Defined in
[src/RestOptions.ts:121](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L121)
___
### isSuccessResponse
• **isSuccessResponse**: (`res`: [`RestResponse`](../classes/RestResponse.md)) => ``"SUCCESS"`` \| ``"THROW"`` \| ``"BEST_EFFORT"``
If set, makes decision whether the response is successful or not. The
response will either be returned to the client, or an error will be thrown.
This allows to treat some non-successful HTTP statuses as success if the
remote API is that weird. Return values:
* "SUCCESS" - the request will be considered successful, no further checks
will be performed;
* "BEST_EFFORT" - inconclusive, the request may be either successful or
unsuccessful, additional tests (e.g. will check HTTP status code) will be
performed;
* "THROW" - the request resulted in error. Additional tests will be
performed to determine is the error is retriable, is OAuth token good,
and etc.
#### Type declaration
▸ (`res`): ``"SUCCESS"`` \| ``"THROW"`` \| ``"BEST_EFFORT"``
##### Parameters
| Name | Type |
| :------ | :------ |
| `res` | [`RestResponse`](../classes/RestResponse.md) |
##### Returns
``"SUCCESS"`` \| ``"THROW"`` \| ``"BEST_EFFORT"``
#### Defined in
[src/RestOptions.ts:134](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L134)
___
### isRateLimitError
• **isRateLimitError**: (`res`: [`RestResponse`](../classes/RestResponse.md)) => `number` \| ``"BEST_EFFORT"`` \| ``"SOMETHING_ELSE"`` \| ``"RATE_LIMIT"``
Decides whether the response is a rate-limit error or not. Returning
non-zero value is treated as retry delay (if retries are set up). In case
the returned value is "SOMETHING_ELSE", the response ought to be either
success or some other error. Returning "BEST_EFFORT" turns on built-in
heuristic (e.g. relying on HTTP status code and Retry-After header). In
case we've made a decision that it's a rate limited error, the request is
always retried; this covers a very common case when we have both
isRateLimitError and isRetriableError handlers set up, and they return
contradictory information; then isRateLimitError wins.
#### Type declaration
▸ (`res`): `number` \| ``"BEST_EFFORT"`` \| ``"SOMETHING_ELSE"`` \| ``"RATE_LIMIT"``
##### Parameters
| Name | Type |
| :------ | :------ |
| `res` | [`RestResponse`](../classes/RestResponse.md) |
##### Returns
`number` \| ``"BEST_EFFORT"`` \| ``"SOMETHING_ELSE"`` \| ``"RATE_LIMIT"``
#### Defined in
[src/RestOptions.ts:144](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L144)
___
### isTokenInvalidError
• **isTokenInvalidError**: (`res`: [`RestResponse`](../classes/RestResponse.md)) => `boolean`
Decides whether the response is a token-invalid error or not. In case it's
not, the response ought to be either success or some other error.
#### Type declaration
▸ (`res`): `boolean`
##### Parameters
| Name | Type |
| :------ | :------ |
| `res` | [`RestResponse`](../classes/RestResponse.md) |
##### Returns
`boolean`
#### Defined in
[src/RestOptions.ts:149](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L149)
___
### isRetriableError
• **isRetriableError**: (`res`: [`RestResponse`](../classes/RestResponse.md), `_error`: `any`) => `number` \| ``"BEST_EFFORT"`` \| ``"NEVER_RETRY"`` \| ``"RETRY"``
Called only if we haven't decided earlier that it's a rate limit error.
Decides whether the response is a retriable error or not. In case the
returned value is "NEVER_RETRY", the response ought to be either success or
some other error, but it's guaranteed that the request won't be retried.
Returning "BEST_EFFORT" turns on built-in heuristics (e.g. never retry "not
found" errors). Returning a number is treated as "RETRY", and the next
retry will happen in not less than this number of milliseconds.
#### Type declaration
▸ (`res`, `_error`): `number` \| ``"BEST_EFFORT"`` \| ``"NEVER_RETRY"`` \| ``"RETRY"``
##### Parameters
| Name | Type |
| :------ | :------ |
| `res` | [`RestResponse`](../classes/RestResponse.md) |
| `_error` | `any` |
##### Returns
`number` \| ``"BEST_EFFORT"`` \| ``"NEVER_RETRY"`` \| ``"RETRY"``
#### Defined in
[src/RestOptions.ts:157](https://github.com/clickup/rest-client/blob/master/src/RestOptions.ts#L157)