From a02a4774def6de0f3f3609077ea95a3286a027a4 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 23 Aug 2024 17:21:55 +0530 Subject: [PATCH 1/4] feat: Add requestTimeout to avoid long running queries --- packages/sdk/src/index.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index ca212ea..3c64d7f 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -1,21 +1,22 @@ -import { v4 as uuid } from 'uuid'; import { OAuth2Client, generateCodeVerifier } from '@badgateway/oauth2-client'; -import defaultAxios from 'axios'; import type { AxiosInstance, AxiosResponse } from 'axios'; -import { RequiredParameterMissingError, OAuthError } from './errors.js'; -import { URLS } from './urls.js'; +import defaultAxios from 'axios'; +import { v4 as uuid } from 'uuid'; +import { OAuthError, RequiredParameterMissingError } from './errors.js'; import type { AuthState, + AuthorizationData, Document, InitParams, - AuthorizationData, - MCUser, - MCProject, MCDocument, + MCProject, + MCUser, } from './types.js'; +import { URLS } from './urls.js'; const defaultBaseURL = 'https://www.mermaidchart.com'; // "http://127.0.0.1:5174" const authorizationURLTimeout = 60_000; +const requestTimeout = 5000; export class MermaidChart { private clientID: string; @@ -52,6 +53,7 @@ export class MermaidChart { }); this.axios = defaultAxios.create({ baseURL: this.#baseURL, + timeout: requestTimeout, }); this.axios.interceptors.response.use((res: AxiosResponse) => { From 1e0f33cc02ddf2e8cfdda405b5bba0d9e8696ba4 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 23 Aug 2024 17:42:51 +0530 Subject: [PATCH 2/4] Increase request timeout --- packages/sdk/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 3c64d7f..5335bb7 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -16,7 +16,7 @@ import { URLS } from './urls.js'; const defaultBaseURL = 'https://www.mermaidchart.com'; // "http://127.0.0.1:5174" const authorizationURLTimeout = 60_000; -const requestTimeout = 5000; +const requestTimeout = 30_000; export class MermaidChart { private clientID: string; From c5a6c975912e71fa37ba68ad16358f2d92f896b3 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 23 Aug 2024 17:58:33 +0530 Subject: [PATCH 3/4] feat: Make requestTimeout configurable Co-authored-by: Alois Klink --- packages/sdk/src/index.ts | 9 ++++++--- packages/sdk/src/types.ts | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 5335bb7..ef7ce4a 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -16,7 +16,6 @@ import { URLS } from './urls.js'; const defaultBaseURL = 'https://www.mermaidchart.com'; // "http://127.0.0.1:5174" const authorizationURLTimeout = 60_000; -const requestTimeout = 30_000; export class MermaidChart { private clientID: string; @@ -26,13 +25,17 @@ export class MermaidChart { private pendingStates: Record = {}; private redirectURI!: string; private accessToken?: string; + private requestTimeout = 30_000; - constructor({ clientID, baseURL, redirectURI }: InitParams) { + constructor({ clientID, baseURL, redirectURI, requestTimeout }: InitParams) { this.clientID = clientID; this.setBaseURL(baseURL || defaultBaseURL); if (redirectURI) { this.setRedirectURI(redirectURI); } + if (requestTimeout) { + this.requestTimeout = requestTimeout; + } } public setRedirectURI(redirectURI: string) { @@ -53,7 +56,7 @@ export class MermaidChart { }); this.axios = defaultAxios.create({ baseURL: this.#baseURL, - timeout: requestTimeout, + timeout: this.requestTimeout, }); this.axios.interceptors.response.use((res: AxiosResponse) => { diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index 8f487b4..b755b56 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -2,6 +2,7 @@ export interface InitParams { clientID: string; redirectURI?: string; baseURL?: string; + requestTimeout?: number; } export interface OAuthAuthorizationParams { From 87e0131f4bb6640f557f3d36f70cb1e4ff2021a4 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 23 Aug 2024 18:43:55 +0530 Subject: [PATCH 4/4] docs: Update changelog --- packages/sdk/CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index 8063089..b8f67b6 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -3,12 +3,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [UNRELEASED] ### Changes +- Set a 30 second default timeout for all requests - `MermaidChart#resetAccessToken()` no longer returns a `Promise`. +### Added + +- Added `requestTimeout` option to configure timeout. + ## [0.2.0] - 2024-04-11 ### Added