hof 22.0.0-timeout-warning-beta.1 → 22.0.0-timeout-warning-beta.3

Sign up to get free protection for your applications and to get access to all the features.
package/model/index.js CHANGED
@@ -2,10 +2,10 @@
2
2
  'use strict';
3
3
 
4
4
  const _ = require('lodash');
5
- const request = require('request');
5
+ const axios = require('axios').default;
6
6
  const url = require('url');
7
7
  const EventEmitter = require('events').EventEmitter;
8
-
8
+ const axiosSetting = require('./apis/axios-settings');
9
9
  const REFERENCE = /^\$ref:/;
10
10
 
11
11
  function timeDiff(from, to, d) {
@@ -27,10 +27,10 @@ module.exports = class Model extends EventEmitter {
27
27
  this.set(attributes, {
28
28
  silent: true
29
29
  });
30
- this._request = request;
30
+ this._request = axios;
31
31
  }
32
32
 
33
- save(options, callback) {
33
+ async save(options, callback) {
34
34
  if (typeof options === 'function' && arguments.length === 1) {
35
35
  callback = options;
36
36
  options = {};
@@ -38,21 +38,18 @@ module.exports = class Model extends EventEmitter {
38
38
  options = {};
39
39
  }
40
40
 
41
- return this.prepare().then(data => {
42
- data = JSON.stringify(data);
43
- const reqConf = this.requestConfig(options);
44
- reqConf.method = options.method || 'POST';
45
-
46
- reqConf.headers = Object.assign({
47
- 'Content-Type': 'application/json',
48
- 'Content-Length': Buffer.byteLength(data)
49
- }, reqConf.headers || {});
50
-
51
- return this.request(reqConf, data, callback);
52
- });
41
+ let data = await this.prepare();
42
+ data = JSON.stringify(data);
43
+ const reqConf = this.requestConfig(options);
44
+ reqConf.method = options.method || 'POST';
45
+ reqConf.headers = Object.assign({
46
+ 'Content-Type': 'application/json',
47
+ 'Content-Length': Buffer.byteLength(data)
48
+ }, reqConf.headers || {});
49
+ return await this.request(reqConf, data, callback);
53
50
  }
54
51
 
55
- fetch(options, callback) {
52
+ async fetch(options, callback) {
56
53
  if (typeof options === 'function' && arguments.length === 1) {
57
54
  callback = options;
58
55
  options = {};
@@ -61,10 +58,10 @@ module.exports = class Model extends EventEmitter {
61
58
  }
62
59
  const reqConf = this.requestConfig(options);
63
60
  reqConf.method = options.method || 'GET';
64
- return this.request(reqConf, callback);
61
+ return await this.request(reqConf, callback);
65
62
  }
66
63
 
67
- delete(options, callback) {
64
+ async delete(options, callback) {
68
65
  if (typeof options === 'function' && arguments.length === 1) {
69
66
  callback = options;
70
67
  options = {};
@@ -73,7 +70,7 @@ module.exports = class Model extends EventEmitter {
73
70
  }
74
71
  const reqConf = this.requestConfig(options);
75
72
  reqConf.method = options.method || 'DELETE';
76
- return this.request(reqConf, callback);
73
+ return await this.request(reqConf, callback);
77
74
  }
78
75
 
79
76
  requestConfig(options) {
@@ -86,7 +83,7 @@ module.exports = class Model extends EventEmitter {
86
83
  });
87
84
  }
88
85
 
89
- request(originalSettings, body, callback) {
86
+ async request(originalSettings, body, callback) {
90
87
  if (typeof body === 'function' && arguments.length === 2) {
91
88
  callback = body;
92
89
  body = undefined;
@@ -94,96 +91,114 @@ module.exports = class Model extends EventEmitter {
94
91
 
95
92
  let settings = Object.assign({}, originalSettings);
96
93
  settings.timeout = settings.timeout || this.options.timeout;
97
- settings.uri = settings.uri || settings.url || url.format(settings);
98
- settings.body = settings.body || body || settings.data;
99
-
100
- settings = _.omit(settings, urlKeys, 'data', 'url');
94
+ settings = axiosSetting(settings, body);
95
+ settings = _.omit(settings, urlKeys);
101
96
  this.emit('sync', originalSettings);
102
97
 
103
- const promise = Promise.resolve().then(() => this.auth()).then(authData => {
104
- settings.auth = authData;
105
- if (typeof settings.auth === 'string') {
106
- const auth = settings.auth.split(':');
107
- settings.auth = {
108
- user: auth.shift(),
109
- pass: auth.join(':'),
98
+ try {
99
+ const authData = await this.auth();
100
+ let authVal = authData;
101
+ if (typeof authVal === 'string') {
102
+ const [user, ...rest] = authVal.split(':');
103
+ authVal = {
104
+ user,
105
+ pass: rest.join(':'),
110
106
  sendImmediately: true
111
107
  };
112
108
  }
113
- })
114
- .then(() => {
115
- const startTime = process.hrtime();
116
- let timeoutTimer;
117
-
118
- return new Promise((resolve, reject) => {
119
- const _callback = (err, data, statusCode) => {
120
- if (timeoutTimer) {
121
- clearTimeout(timeoutTimer);
122
- timeoutTimer = null;
123
- }
109
+ if (authVal) {
110
+ settings.headers = {
111
+ ...settings.headers,
112
+ Authorization: `Bearer ${authVal.bearer}`
113
+ };
114
+ }
124
115
 
125
- const endTime = process.hrtime();
126
- const responseTime = timeDiff(startTime, endTime);
116
+ const startTime = process.hrtime();
117
+ let timeoutTimer;
127
118
 
128
- if (err) {
129
- this.emit('fail', err, data, originalSettings, statusCode, responseTime);
130
- } else {
131
- this.emit('success', data, originalSettings, statusCode, responseTime);
132
- }
133
- if (err) {
134
- reject(err);
135
- } else {
136
- resolve(data);
137
- }
138
- };
139
-
140
- this._request(settings, (err, response) => {
141
- if (err) {
142
- if (err.code === 'ETIMEDOUT' || err.code === 'ESOCKETTIMEDOUT') {
143
- err.message = 'Connection timed out';
144
- err.status = 504;
145
- }
146
- err.status = err.status || (response && response.statusCode) || 503;
147
- return _callback(err, null, err.status);
148
- }
149
- return this.handleResponse(response, (error, data, status) => {
150
- if (error) {
119
+ if (timeoutTimer) {
120
+ clearTimeout(timeoutTimer);
121
+ timeoutTimer = null;
122
+ }
123
+
124
+ const data = await new Promise((resolve, reject) => {
125
+ const _callback = (err, responseData, statusCode) => {
126
+ if (timeoutTimer) {
127
+ clearTimeout(timeoutTimer);
128
+ timeoutTimer = null;
129
+ }
130
+
131
+ const endTime = process.hrtime();
132
+ const responseTime = timeDiff(startTime, endTime);
133
+ if (err) {
134
+ this.emit('fail', err, responseData, originalSettings, statusCode, responseTime);
135
+ reject(err);
136
+ } else {
137
+ this.emit('success', responseData, originalSettings, statusCode, responseTime);
138
+ resolve(responseData);
139
+ }
140
+ };
141
+
142
+ this._request(settings)
143
+ .then(response => {
144
+ return this.handleResponse(response)
145
+ .then(responseData => _callback(null, responseData, response.status))
146
+ .catch(error => {
151
147
  error.headers = response.headers;
152
- }
153
- _callback(error, data, status);
154
- });
148
+ _callback(error, null, response.status);
149
+ });
150
+ })
151
+ .catch(err => {
152
+ if (err.code === 'ETIMEDOUT' || err.code === 'ESOCKETTIMEDOUT') {
153
+ err.message = 'Connection timed out';
154
+ err.status = 504;
155
+ }
156
+ err.status = err.status || 503;
157
+ return _callback(err, null, err.status);
155
158
  });
156
- });
157
159
  });
158
160
 
159
- if (typeof callback === 'function') {
160
- return promise.then(data => callback(null, data), callback);
161
+ if (typeof callback === 'function') {
162
+ callback(null, data);
163
+ }
164
+ return data;
165
+ } catch (error) {
166
+ if (typeof callback === 'function') {
167
+ callback(error);
168
+ }
169
+ return error;
161
170
  }
162
- return promise;
163
171
  }
164
172
 
165
- handleResponse(response, callback) {
166
- let data = {};
173
+ async handleResponse(response) {
174
+ let data = null;
167
175
  try {
168
- data = JSON.parse(response.body || '{}');
176
+ if (typeof response.data === 'object') {
177
+ data = response.data;
178
+ } else if (typeof response.data === 'string' && response.data.trim() !== '') {
179
+ data = JSON.parse(response.data);
180
+ } else {
181
+ data = {};
182
+ }
169
183
  } catch (err) {
170
- err.status = response.statusCode;
171
- err.body = response.body;
172
- return callback(err, null, response.statusCode);
184
+ err.message = 'Failed to parse response data';
185
+ err.status = response.status;
186
+ err.body = response.data;
187
+ throw err;
173
188
  }
174
- return this.parseResponse(response.statusCode, data, callback);
189
+ return await this.parseResponse(response.status, data);
175
190
  }
176
191
 
177
- parseResponse(statusCode, data, callback) {
192
+ async parseResponse(statusCode, data) {
178
193
  if (statusCode < 400) {
179
194
  try {
180
- data = this.parse(data);
181
- callback(null, data, statusCode);
195
+ data = await this.parse(data);
196
+ return data;
182
197
  } catch (err) {
183
- callback(err, null, statusCode);
198
+ throw err;
184
199
  }
185
200
  } else {
186
- callback(this.parseError(statusCode, data), data, statusCode);
201
+ throw this.parseError(statusCode, data);
187
202
  }
188
203
  }
189
204
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hof",
3
3
  "description": "A bootstrap for HOF projects",
4
- "version": "22.0.0-timeout-warning-beta.1",
4
+ "version": "22.0.0-timeout-warning-beta.3",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
7
7
  "author": "HomeOffice",
@@ -21,13 +21,13 @@
21
21
  "url": "https://github.com/UKHomeOfficeForms/hof/issues"
22
22
  },
23
23
  "scripts": {
24
- "test": "yarn run unit && yarn run test:cookie-banner && yarn run test:functional && yarn run test:client && yarn run test:lint",
24
+ "test": "yarn run unit && yarn run test:jest && yarn run test:functional && yarn run test:client && yarn run test:lint",
25
25
  "unit": "LOG_LEVEL=error nyc _mocha \"test/**/*.spec.js\" \"sandbox/test/**/*.spec.js\"",
26
26
  "unit:nocov": "LOG_LEVEL=error mocha \"test/**/*.spec.js\" \"sandbox/test/**/*.spec.js\"",
27
27
  "test:lint": "eslint . --config ./node_modules/eslint-config-hof/default.js",
28
28
  "test:functional": "funkie mocha ./test/functional-tests --timeout 20000 --exit",
29
29
  "test:client": "karma start test/frontend/toolkit/karma.conf.js",
30
- "test:cookie-banner": "jest test/frontend/jest",
30
+ "test:jest": "jest test/frontend/jest",
31
31
  "test:acceptance": "TAGS=\"${TAGS:=@feature}\" yarn run test:cucumber",
32
32
  "test:acceptance_browser": "ACCEPTANCE_WITH_BROWSER=true TAGS=\"${TAGS:=@feature}\" yarn run test:cucumber",
33
33
  "test:cucumber": "cucumber-js -f @cucumber/pretty-formatter \"sandbox/test/_features/**/*.feature\" --require sandbox/test/_features/test.setup.js --require \"sandbox/test/_features/step_definitions/**/*.js\" --tags $TAGS",
@@ -36,6 +36,7 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "aliasify": "^2.1.0",
39
+ "axios": "^1.5.1",
39
40
  "bluebird": "^3.7.2",
40
41
  "body-parser": "^1.15.1",
41
42
  "browserify": "^17.0.0",
@@ -83,7 +84,6 @@
83
84
  "notifications-node-client": "^6.0.0",
84
85
  "redis": "^3.1.2",
85
86
  "reqres": "^3.0.1",
86
- "request": "^2.79.0",
87
87
  "rimraf": "^3.0.2",
88
88
  "sass": "^1.56.2",
89
89
  "serve-static": "^1.14.1",
@@ -286,7 +286,6 @@ var skipToMain = require('./skip-to-main');
286
286
  var cookie = require('./govuk-cookies');
287
287
  var cookieSettings = require('./cookieSettings');
288
288
  var sessionDialog = require('./session-timeout-dialog');
289
- GOVUK.sessionDialog.init();
290
289
 
291
290
  toolkit.detailsSummary();
292
291
 
@@ -299,6 +298,9 @@ helpers.documentReady(characterCount);
299
298
  helpers.documentReady(validation);
300
299
 
301
300
  },{"../../../toolkit":12,"./cookieSettings":1,"./govuk-cookies":2,"./session-timeout-dialog":4,"./skip-to-main":5,"govuk-frontend":13}],4:[function(require,module,exports){
301
+ /* eslint max-len: 0 */
302
+ 'use strict';
303
+
302
304
  const $ = require('jquery');
303
305
 
304
306
  // Modal dialog prototype
@@ -318,8 +320,8 @@ window.GOVUK.sessionDialog = {
318
320
  $timer: $('#js-modal-dialog .timer'),
319
321
  $accessibleTimer: $('#js-modal-dialog .at-timer'),
320
322
 
321
- secondsSessionTimeout: parseInt($('#js-modal-dialog').data('session-timeout') || 1800),
322
- secondsTimeoutWarning: parseInt($('#js-modal-dialog').data('session-timeout-warning') || 300),
323
+ secondsSessionTimeout: parseInt($('#js-modal-dialog').data('session-timeout'), 10 || 1800),
324
+ secondsTimeoutWarning: parseInt($('#js-modal-dialog').data('session-timeout-warning'), 10 || 300),
323
325
  timeoutRedirectUrl: $('#js-modal-dialog').data('url-redirect'),
324
326
  timeSessionRefreshed: new Date(),
325
327
 
@@ -327,18 +329,18 @@ window.GOVUK.sessionDialog = {
327
329
  window.GOVUK.sessionDialog.$closeButton.on('click', function (e) {
328
330
  e.preventDefault();
329
331
  window.GOVUK.sessionDialog.closeDialog();
330
- })
332
+ });
331
333
 
332
334
  // Close modal when ESC pressed
333
335
  $(document).keydown(function (e) {
334
336
  if (window.GOVUK.sessionDialog.isDialogOpen() && e.keyCode === 27) {
335
337
  window.GOVUK.sessionDialog.closeDialog();
336
338
  }
337
- })
339
+ });
338
340
  },
339
341
 
340
342
  isDialogOpen: function () {
341
- return window.GOVUK.sessionDialog.el['open'];
343
+ return window.GOVUK.sessionDialog.el && window.GOVUK.sessionDialog.el.open;
342
344
  },
343
345
 
344
346
  isConfigured: function () {
@@ -355,6 +357,8 @@ window.GOVUK.sessionDialog = {
355
357
  window.GOVUK.sessionDialog.saveLastFocusedEl();
356
358
  window.GOVUK.sessionDialog.makePageContentInert();
357
359
  window.GOVUK.sessionDialog.el.showModal();
360
+ window.GOVUK.sessionDialog.el.open = true;
361
+ console.log(window.GOVUK.sessionDialog.el)
358
362
  }
359
363
  },
360
364
 
@@ -362,6 +366,8 @@ window.GOVUK.sessionDialog = {
362
366
  if (window.GOVUK.sessionDialog.isDialogOpen()) {
363
367
  $('html, body').removeClass(window.GOVUK.sessionDialog.dialogIsOpenClass);
364
368
  window.GOVUK.sessionDialog.el.close();
369
+ window.GOVUK.sessionDialog.el.open = false;
370
+ console.log(window.GOVUK.sessionDialog.el)
365
371
  window.GOVUK.sessionDialog.setFocusOnLastFocusedEl();
366
372
  window.GOVUK.sessionDialog.removeInertFromPageContent();
367
373
  window.GOVUK.sessionDialog.refreshSession();
@@ -382,7 +388,7 @@ window.GOVUK.sessionDialog = {
382
388
  if (window.GOVUK.sessionDialog.$lastFocusedEl) {
383
389
  window.setTimeout(function () {
384
390
  window.GOVUK.sessionDialog.$lastFocusedEl.focus();
385
- }, 0)
391
+ }, 0);
386
392
  }
387
393
  },
388
394
 
@@ -405,51 +411,46 @@ window.GOVUK.sessionDialog = {
405
411
  },
406
412
 
407
413
  numberToWords: function (n) {
408
- let string = n.toString()
409
- let units
410
- let tens
411
- let scales
412
- let start
413
- let end
414
- let chunks
415
- let chunksLen
416
- let chunk
417
- let ints
418
- let i
419
- let word
420
- let words = 'and'
421
-
422
- if (parseInt(string) === 0) {
414
+ const string = n.toString();
415
+ let start;
416
+ let end;
417
+ let chunk;
418
+ let ints;
419
+ let i;
420
+ let word;
421
+ let words = 'and';
422
+
423
+ if (parseInt(string, 10) === 0) {
423
424
  return 'zero';
424
425
  }
425
426
 
426
427
  /* Array of units as words */
427
- units = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];
428
+ const units = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];
428
429
 
429
430
  /* Array of tens as words */
430
- tens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
431
+ const tens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
431
432
 
432
433
  /* Array of scales as words */
433
- scales = ['', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion', 'octillion', 'nonillion', 'decillion', 'undecillion', 'duodecillion', 'tredecillion', 'quatttuor-decillion', 'quindecillion', 'sexdecillion', 'septen-decillion', 'octodecillion', 'novemdecillion', 'vigintillion', 'centillion'];
434
+ const scales = ['', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion', 'octillion', 'nonillion', 'decillion', 'undecillion', 'duodecillion', 'tredecillion', 'quatttuor-decillion', 'quindecillion', 'sexdecillion', 'septen-decillion', 'octodecillion', 'novemdecillion', 'vigintillion', 'centillion'];
434
435
 
435
- /* Split user arguemnt into 3 digit chunks from right to left */
436
+ /* Split user argument into 3 digit chunks from right to left */
436
437
  start = string.length;
437
- chunks = [];
438
+ const chunks = [];
438
439
  while (start > 0) {
439
440
  end = start;
440
441
  chunks.push(string.slice((start = Math.max(0, start - 3)), end));
441
442
  }
442
443
 
443
444
  /* Check if function has enough scale words to be able to stringify the user argument */
444
- chunksLen = chunks.length
445
+ const chunksLen = chunks.length;
445
446
  if (chunksLen > scales.length) {
446
447
  return '';
447
448
  }
448
449
 
449
450
  /* Stringify each integer in each chunk */
450
- words = []
451
+ words = [];
451
452
  for (i = 0; i < chunksLen; i++) {
452
- chunk = parseInt(chunks[i]);
453
+ chunk = parseInt(chunks[i], 10);
453
454
 
454
455
  if (chunk) {
455
456
  /* Split chunk into array of individual integers */
@@ -461,22 +462,22 @@ window.GOVUK.sessionDialog = {
461
462
  }
462
463
 
463
464
  /* Add scale word if chunk is not zero and array item exists */
464
- if ((word = scales[i])) {
465
+ if ((word === scales[i])) {
465
466
  words.push(word);
466
467
  }
467
468
 
468
469
  /* Add unit word if array item exists */
469
- if ((word = units[ints[0]])) {
470
+ if ((word === units[ints[0]])) {
470
471
  words.push(word);
471
472
  }
472
473
 
473
474
  /* Add tens word if array item exists */
474
- if ((word = tens[ints[1]])) {
475
+ if ((word === tens[ints[1]])) {
475
476
  words.push(word);
476
477
  }
477
478
 
478
479
  /* Add hundreds word if array item exists */
479
- if ((word = units[ints[2]])) {
480
+ if ((word === units[ints[2]])) {
480
481
  words.push(word + ' hundred');
481
482
  }
482
483
  }
@@ -502,7 +503,7 @@ window.GOVUK.sessionDialog = {
502
503
  },
503
504
 
504
505
  pluralise: function (n, unit) {
505
- return n == 1 ? unit : unit + 's';
506
+ return n === 1 ? unit : unit + 's';
506
507
  },
507
508
 
508
509
  numericSpan: function (n, unit) {
@@ -518,7 +519,7 @@ window.GOVUK.sessionDialog = {
518
519
  countdownAtText: function (minutes, seconds) {
519
520
  const minutesText = window.GOVUK.sessionDialog.timeToWords(minutes, 'minute');
520
521
  const secondsText = window.GOVUK.sessionDialog.timeToWords(seconds, 'second');
521
- return minutes > 0 ? minutesText : secondsText;
522
+ return minutes > 0 ? minutesText : secondsText;
522
523
  },
523
524
 
524
525
  startCountdown: function () {
@@ -537,11 +538,8 @@ window.GOVUK.sessionDialog = {
537
538
  const timerExpired = secondsUntilSessionTimeout <= window.GOVUK.sessionDialog.secondsFinalWarning;
538
539
 
539
540
  if (!timerExpired) {
540
-
541
541
  const minutesLeft = parseInt(secondsUntilSessionTimeout / 60, 10);
542
542
  const secondsLeft = parseInt(secondsUntilSessionTimeout % 60, 10);
543
-
544
-
545
543
  const atMinutesText = window.GOVUK.sessionDialog.timeToWords(minutesLeft, 'minute');
546
544
  const atSecondsText = window.GOVUK.sessionDialog.timeToWords(secondsLeft, 'second');
547
545
 
@@ -552,14 +550,13 @@ window.GOVUK.sessionDialog = {
552
550
  const countdownText = window.GOVUK.sessionDialog.countdownText(minutesLeft, secondsLeft);
553
551
  const text = window.GOVUK.sessionDialog.warningTextPrefix + '<strong>' + countdownText + '</strong>' + window.GOVUK.sessionDialog.warningTextSuffix;
554
552
  const countdownAtText = window.GOVUK.sessionDialog.countdownAtText(atMinutesText, atSecondsText);
555
- const atText = window.GOVUK.sessionDialog.warningTextPrefix + countdownAtText + window.GOVUK.sessionDialog.warningTextSuffix + 'bgbhj ' + window.GOVUK.sessionDialog.warningText;
553
+ const atText = window.GOVUK.sessionDialog.warningTextPrefix + countdownAtText + window.GOVUK.sessionDialog.warningTextSuffix + 'bgbhj ' + window.GOVUK.sessionDialog.warningText;
556
554
  const extraText = '\n' + window.GOVUK.sessionDialog.warningTextExtra;
557
555
 
558
556
  $timer.html(text + ' ' + extraText);
559
557
 
560
558
  // Update screen reader friendly content every 20 secs
561
559
  if (secondsLeft % 20 === 0) {
562
-
563
560
  // Read out the extra content only once.
564
561
  // Don't read out on iOS VoiceOver which stalls on the longer text
565
562
  if (!timerRunOnce && !iOS) {
@@ -570,9 +567,9 @@ window.GOVUK.sessionDialog = {
570
567
  }
571
568
  }
572
569
 
573
- window.GOVUK.sessionDialog.addTimer(countdown,20);
570
+ window.GOVUK.sessionDialog.addTimer(countdown, 20);
574
571
  }
575
- })()
572
+ })();
576
573
  },
577
574
 
578
575
  // Clears all timers
@@ -583,7 +580,7 @@ window.GOVUK.sessionDialog = {
583
580
  },
584
581
 
585
582
  refreshSession: function () {
586
- $.get("");
583
+ $.get('');
587
584
  window.GOVUK.sessionDialog.timeSessionRefreshed = new Date();
588
585
  window.GOVUK.sessionDialog.controller();
589
586
  },
@@ -616,20 +613,16 @@ window.GOVUK.sessionDialog = {
616
613
 
617
614
  const secondsUntilSessionTimeout = window.GOVUK.sessionDialog.secondsUntilSessionTimeout();
618
615
 
619
- //timed out - redirect
620
616
  if (secondsUntilSessionTimeout <= 0) {
617
+ // timed out - redirect
621
618
  window.GOVUK.sessionDialog.redirect();
622
- }
623
-
624
- //timeout warning - show countdown and schedule redirect
625
- else if (secondsUntilSessionTimeout <= window.GOVUK.sessionDialog.secondsTimeoutWarning) {
619
+ } else if (secondsUntilSessionTimeout <= window.GOVUK.sessionDialog.secondsTimeoutWarning) {
620
+ // timeout warning - show countdown and schedule redirect
626
621
  window.GOVUK.sessionDialog.openDialog();
627
622
  window.GOVUK.sessionDialog.startCountdown();
628
- window.GOVUK.sessionDialog.addTimer(window.GOVUK.sessionDialog.controller,window.GOVUK.sessionDialog.secondsUntilSessionTimeout());
629
- }
630
-
631
- //wait for warning
632
- else {
623
+ window.GOVUK.sessionDialog.addTimer(window.GOVUK.sessionDialog.controller, window.GOVUK.sessionDialog.secondsUntilSessionTimeout());
624
+ } else {
625
+ // wait for warning
633
626
  window.GOVUK.sessionDialog.addTimer(window.GOVUK.sessionDialog.controller, window.GOVUK.sessionDialog.secondsUntilTimeoutWarning());
634
627
  }
635
628
  },
@@ -641,9 +634,8 @@ window.GOVUK.sessionDialog = {
641
634
  window.GOVUK.sessionDialog.controller();
642
635
  }
643
636
  }
644
- }
645
-
646
- window.GOVUK = GOVUK;
637
+ };
638
+ window.GOVUK.sessionDialog.init();
647
639
 
648
640
  },{"jquery":14}],5:[function(require,module,exports){
649
641
  const skipToMain = function () {