diff --git a/package-lock.json b/package-lock.json index 607d0f2d7..d447af751 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,6 +34,7 @@ "normalize.css": "^8.0.1", "p-memoize": "^7.1.1", "p-throttle": "^7.0.0", + "p-timeout": "^6.1.4", "react": "^18.3.1", "react-dom": "^18.3.1", "react-intl": "^6.6.8", @@ -21162,13 +21163,15 @@ } }, "node_modules/p-timeout": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz", - "integrity": "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==", - "dev": true, + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -21373,6 +21376,16 @@ "node": ">=10" } }, + "node_modules/pa11y/node_modules/p-timeout": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz", + "integrity": "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/pa11y/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", diff --git a/package.json b/package.json index 740e0ed9b..b4683580a 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "normalize.css": "^8.0.1", "p-memoize": "^7.1.1", "p-throttle": "^7.0.0", + "p-timeout": "^6.1.4", "react": "^18.3.1", "react-dom": "^18.3.1", "react-intl": "^6.6.8", diff --git a/src/services/fcbh/getResponse.ts b/src/services/fcbh/getResponse.ts index 09061a085..5b265fdd4 100644 --- a/src/services/fcbh/getResponse.ts +++ b/src/services/fcbh/getResponse.ts @@ -1,5 +1,6 @@ import pMemoize from 'p-memoize'; import pThrottle from 'p-throttle'; +import pTimeout from 'p-timeout'; const API_URL = 'https://4.dbt.io/api'; const API_KEY = process.env.BIBLE_BRAIN_KEY; @@ -9,9 +10,12 @@ const throttle = pThrottle({ limit: 50, interval: 1000 }); async function getResponse>( route: string, ): Promise { - const result = await fetch(`${API_URL}${route}&v=4&key=${API_KEY}`, { - method: 'GET', - }); + const result = await pTimeout( + fetch(`${API_URL}${route}&v=4&key=${API_KEY}`, { + method: 'GET', + }), + { milliseconds: 5000 }, + ); const text = await result.text();