diff --git a/docs/api/readme.md b/docs/api/readme.md index beea2f2..f6c1a6f 100644 --- a/docs/api/readme.md +++ b/docs/api/readme.md @@ -110,6 +110,30 @@ By default, number of retries will be **2 times**, if `retry` value is set to `t http: { retry: 1 } + +``` +### `serverTimeout` + +* Default: `false` + +Sets the timeout for the server requests in milliseconds. + +```js +http: { + serverTimeout: 2000 +} +``` + +### `clientTimeout` + +* Default: `false` + +Sets the timeout for the client requests in milliseconds. + +```js +http: { + clientTimeout: 5000 +} ``` ### `proxyHeaders` diff --git a/lib/module.js b/lib/module.js index 0b242e3..918c8c7 100755 --- a/lib/module.js +++ b/lib/module.js @@ -39,6 +39,8 @@ function httpModule(_moduleOptions) { proxyHeadersIgnore: ['accept', 'host', 'cf-ray', 'cf-connecting-ip'], proxy: false, retry: false, + serverTimeout: false, + clientTimeout: false, https: false, ...moduleOptions } diff --git a/lib/plugin.js b/lib/plugin.js index 6c73f96..c21d3f8 100644 --- a/lib/plugin.js +++ b/lib/plugin.js @@ -10,7 +10,6 @@ class HTTP { this._defaults = { hooks: {}, headers: _headers, - retry: 0, ...defaults } @@ -104,6 +103,7 @@ export default (ctx, inject) => { // Defaults const defaults = { retry: <%= parseInt(options.retry) %>, + timeout: process.server ? <%= parseInt(options.serverTimeout) %> : <%= parseInt(options.clientTimeout) %>, prefixUrl, headers: {} } diff --git a/test/empty-config.test.js b/test/defaults.test.js similarity index 54% rename from test/empty-config.test.js rename to test/defaults.test.js index 1b84128..02f06e7 100644 --- a/test/empty-config.test.js +++ b/test/defaults.test.js @@ -1,6 +1,6 @@ const { setupMockNuxt } = require('./_utils') -describe('empty config', () => { +describe('defaults', () => { let nuxt beforeAll(async () => { @@ -9,11 +9,13 @@ describe('empty config', () => { }) }) - test('preset baseURL and browserBaseURL', () => { + test('should render template with defaults', () => { expect(nuxt.moduleContainer.addTemplate).toBeDefined() const call = nuxt.moduleContainer.addTemplate.mock.calls.find(args => args[0].src.includes('plugin.js')) const options = call[0].options - expect(options.baseURL.toString()).toBe('http://localhost:3000/') - expect(options.browserBaseURL.toString()).toBe('http://localhost:3000/') + expect(options.baseURL).toBe('http://localhost:3000/') + expect(options.browserBaseURL).toBe('http://localhost:3000/') + expect(options.clientTimeout).toBe(false) + expect(options.serverTimeout).toBe(false) }) }) diff --git a/test/fixture/nuxt.config.js b/test/fixture/nuxt.config.js index 2bd0518..41127e5 100644 --- a/test/fixture/nuxt.config.js +++ b/test/fixture/nuxt.config.js @@ -15,8 +15,11 @@ module.exports = { ], http: { prefix: '/test_api', + serverTimeout: 10000, + clientTimeout: 25000, proxy: true, - retry: 1 + retry: 1, + https: true }, build: { terser: false diff --git a/test/baseURL.test.js b/test/with-config.js similarity index 61% rename from test/baseURL.test.js rename to test/with-config.js index db82a31..a115483 100644 --- a/test/baseURL.test.js +++ b/test/with-config.js @@ -1,21 +1,26 @@ const { setupMockNuxt } = require('./_utils') -describe('browserBaseURL', () => { +describe('with-config', () => { let nuxt beforeAll(async () => { nuxt = await setupMockNuxt({ http: { - browserBaseURL: '/test_api' + browserBaseURL: '/test_api', + retry: true, + serverTimeout: 10000, + clientTimeout: 25000 } }) }) - test('browserBaseURL', () => { + test('should render template with provided config', () => { expect(nuxt.moduleContainer.addTemplate).toBeDefined() const call = nuxt.moduleContainer.addTemplate.mock.calls.find(args => args[0].src.includes('plugin.js')) const options = call[0].options expect(options.baseURL).toBe('http://localhost:3000/') expect(options.browserBaseURL).toBe('/test_api') + expect(options.clientTimeout).toBe(10000) + expect(options.serverTimeout).toBe(25000) }) })