Skip to content

Commit de2b733

Browse files
authored
Merge pull request #26 from Mermaid-Chart/sidv/addRequestTimeout
feat: Add requestTimeout to avoid long running queries
2 parents cee4d5b + 87e0131 commit de2b733

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

packages/sdk/CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,17 @@
33
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
44
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
55

6-
## [Unreleased]
6+
## [UNRELEASED]
77

88
### Changes
99

10+
- Set a 30 second default timeout for all requests
1011
- `MermaidChart#resetAccessToken()` no longer returns a `Promise`.
1112

13+
### Added
14+
15+
- Added `requestTimeout` option to configure timeout.
16+
1217
## [0.2.0] - 2024-04-11
1318

1419
### Added

packages/sdk/src/index.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import { v4 as uuid } from 'uuid';
21
import { OAuth2Client, generateCodeVerifier } from '@badgateway/oauth2-client';
3-
import defaultAxios from 'axios';
42
import type { AxiosInstance, AxiosResponse } from 'axios';
5-
import { RequiredParameterMissingError, OAuthError } from './errors.js';
6-
import { URLS } from './urls.js';
3+
import defaultAxios from 'axios';
4+
import { v4 as uuid } from 'uuid';
5+
import { OAuthError, RequiredParameterMissingError } from './errors.js';
76
import type {
87
AuthState,
8+
AuthorizationData,
99
Document,
1010
InitParams,
11-
AuthorizationData,
12-
MCUser,
13-
MCProject,
1411
MCDocument,
12+
MCProject,
13+
MCUser,
1514
} from './types.js';
15+
import { URLS } from './urls.js';
1616

1717
const defaultBaseURL = 'https://www.mermaidchart.com'; // "http://127.0.0.1:5174"
1818
const authorizationURLTimeout = 60_000;
@@ -25,13 +25,17 @@ export class MermaidChart {
2525
private pendingStates: Record<string, AuthState> = {};
2626
private redirectURI!: string;
2727
private accessToken?: string;
28+
private requestTimeout = 30_000;
2829

29-
constructor({ clientID, baseURL, redirectURI }: InitParams) {
30+
constructor({ clientID, baseURL, redirectURI, requestTimeout }: InitParams) {
3031
this.clientID = clientID;
3132
this.setBaseURL(baseURL || defaultBaseURL);
3233
if (redirectURI) {
3334
this.setRedirectURI(redirectURI);
3435
}
36+
if (requestTimeout) {
37+
this.requestTimeout = requestTimeout;
38+
}
3539
}
3640

3741
public setRedirectURI(redirectURI: string) {
@@ -52,6 +56,7 @@ export class MermaidChart {
5256
});
5357
this.axios = defaultAxios.create({
5458
baseURL: this.#baseURL,
59+
timeout: this.requestTimeout,
5560
});
5661

5762
this.axios.interceptors.response.use((res: AxiosResponse) => {

packages/sdk/src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export interface InitParams {
22
clientID: string;
33
redirectURI?: string;
44
baseURL?: string;
5+
requestTimeout?: number;
56
}
67

78
export interface OAuthAuthorizationParams {

0 commit comments

Comments
 (0)