hof 21.0.19-axios-beta → 21.1.0-deindex-toggle-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/model/index.js CHANGED
@@ -5,9 +5,7 @@ const _ = require('lodash');
5
5
  const axios = require('axios').default;
6
6
  const url = require('url');
7
7
  const EventEmitter = require('events').EventEmitter;
8
-
9
- const axiosSetting = require('./apis/axios-settings')
10
-
8
+ const axiosSetting = require('./apis/axios-settings');
11
9
  const REFERENCE = /^\$ref:/;
12
10
 
13
11
  function timeDiff(from, to, d) {
@@ -32,7 +30,7 @@ module.exports = class Model extends EventEmitter {
32
30
  this._request = axios;
33
31
  }
34
32
 
35
- save(options, callback) {
33
+ async save(options, callback) {
36
34
  if (typeof options === 'function' && arguments.length === 1) {
37
35
  callback = options;
38
36
  options = {};
@@ -40,21 +38,18 @@ module.exports = class Model extends EventEmitter {
40
38
  options = {};
41
39
  }
42
40
 
43
- return this.prepare().then(data => {
44
- data = JSON.stringify(data);
45
- const reqConf = this.requestConfig(options);
46
- reqConf.method = options.method || 'POST';
47
-
48
- reqConf.headers = Object.assign({
49
- 'Content-Type': 'application/json',
50
- 'User-Agent': 'Axios 0.25.0',
51
- 'Content-Length': Buffer.byteLength(data)
52
- }, reqConf.headers || {});
53
- return this.request(reqConf, data, callback);
54
- });
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);
55
50
  }
56
51
 
57
- fetch(options, callback) {
52
+ async fetch(options, callback) {
58
53
  if (typeof options === 'function' && arguments.length === 1) {
59
54
  callback = options;
60
55
  options = {};
@@ -63,10 +58,10 @@ module.exports = class Model extends EventEmitter {
63
58
  }
64
59
  const reqConf = this.requestConfig(options);
65
60
  reqConf.method = options.method || 'GET';
66
- return this.request(reqConf, callback);
61
+ return await this.request(reqConf, callback);
67
62
  }
68
63
 
69
- delete(options, callback) {
64
+ async delete(options, callback) {
70
65
  if (typeof options === 'function' && arguments.length === 1) {
71
66
  callback = options;
72
67
  options = {};
@@ -75,7 +70,7 @@ module.exports = class Model extends EventEmitter {
75
70
  }
76
71
  const reqConf = this.requestConfig(options);
77
72
  reqConf.method = options.method || 'DELETE';
78
- return this.request(reqConf, callback);
73
+ return await this.request(reqConf, callback);
79
74
  }
80
75
 
81
76
  requestConfig(options) {
@@ -88,7 +83,7 @@ module.exports = class Model extends EventEmitter {
88
83
  });
89
84
  }
90
85
 
91
- request(originalSettings, body, callback) {
86
+ async request(originalSettings, body, callback) {
92
87
  if (typeof body === 'function' && arguments.length === 2) {
93
88
  callback = body;
94
89
  body = undefined;
@@ -96,110 +91,114 @@ module.exports = class Model extends EventEmitter {
96
91
 
97
92
  let settings = Object.assign({}, originalSettings);
98
93
  settings.timeout = settings.timeout || this.options.timeout;
99
- settings = axiosSetting(settings, body)
94
+ settings = axiosSetting(settings, body);
100
95
  settings = _.omit(settings, urlKeys);
101
96
  this.emit('sync', originalSettings);
102
97
 
103
- const promise = Promise.resolve().then(() => this.auth()).then(authData => {
104
- console.log("@@@@@@@@@@@@@@@@")
105
- console.log(authData)
106
- console.log("@@@@@@@@@@@@@@@@")
98
+ try {
99
+ const authData = await this.auth();
107
100
  let authVal = authData;
108
101
  if (typeof authVal === 'string') {
109
- const auth = authVal.split(':');
102
+ const [user, ...rest] = authVal.split(':');
110
103
  authVal = {
111
- username: auth.shift(),
112
- password: auth.join(':')
104
+ user,
105
+ pass: rest.join(':'),
106
+ sendImmediately: true
113
107
  };
114
108
  }
115
- if(authVal) {
116
- settings.headers = Object.assign({}, settings.headers, {Authorization: `Bearer ${authVal.bearer}`});
109
+ if (authVal) {
110
+ settings.headers = {
111
+ ...settings.headers,
112
+ Authorization: `Bearer ${authVal.bearer}`
113
+ };
117
114
  }
118
- console.log("SETTINGS ************")
119
- console.log(settings)
120
- console.log("SETTINGS ************")
121
- })
122
- .then(() => {
123
- const startTime = process.hrtime();
124
- let timeoutTimer;
125
-
126
- return new Promise((resolve, reject) => {
127
- const _callback = (err, data, statusCode) => {
128
- if (timeoutTimer) {
129
- clearTimeout(timeoutTimer);
130
- timeoutTimer = null;
131
- }
132
115
 
133
- const endTime = process.hrtime();
134
- const responseTime = timeDiff(startTime, endTime);
135
- if (err) {
136
- this.emit('fail', err, data, originalSettings, statusCode, responseTime);
137
- } else {
138
- this.emit('success', data, originalSettings, statusCode, responseTime);
139
- }
140
- if (err) {
141
- console.log("************************************************")
142
- console.error(err?.response ? err.response : err)
143
- console.log("************************************************")
144
- reject(err);
145
- } else {
146
- console.log(data)
147
- resolve(data);
148
- }
149
- };
150
- this._request(settings)
151
- .then(response => {
152
- return this.handleResponse(response, (error, data, status) => {
153
- console.log("$$$$$$$$$$4RESPONSE")
154
- console.log(response.headers)
155
- console.log("$$$$$$$$$$4RESPONSE")
156
- if (error) {
157
- error.headers = response.headers;
158
- }
159
- console.log("$$$$$$$$$$4RESPONSE")
160
- console.log(response.headers)
161
- console.log("$$$$$$$$$$4RESPONSE")
162
- _callback(error, data, status);
116
+ const startTime = process.hrtime();
117
+ let timeoutTimer;
118
+
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 => {
147
+ error.headers = response.headers;
148
+ _callback(error, null, response.status);
163
149
  });
164
- }).catch(err => {
165
- if (err.code === 'ETIMEDOUT' || err.code === 'ESOCKETTIMEDOUT') {
166
- err.message = 'Connection timed out';
167
- err.status = 504;
168
- }
169
- err.status = err.status || 503;
170
- return _callback(err, null, err.status);
171
- });
172
- });
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);
158
+ });
173
159
  });
174
160
 
175
- if (typeof callback === 'function') {
176
- 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;
177
170
  }
178
- return promise;
179
171
  }
180
172
 
181
- handleResponse(response, callback) {
182
- let data = {};
173
+ async handleResponse(response) {
174
+ let data = null;
183
175
  try {
184
- data = typeof response.data === 'object' ? response.data : JSON.parse(response.data || '{}');
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
+ }
185
183
  } catch (err) {
184
+ err.message = 'Failed to parse response data';
186
185
  err.status = response.status;
187
186
  err.body = response.data;
188
- return callback(err, null, response.status);
187
+ throw err;
189
188
  }
190
- return this.parseResponse(response.status, data, callback);
189
+ return await this.parseResponse(response.status, data);
191
190
  }
192
191
 
193
- parseResponse(statusCode, data, callback) {
192
+ async parseResponse(statusCode, data) {
194
193
  if (statusCode < 400) {
195
194
  try {
196
- data = this.parse(data);
197
- callback(null, data, statusCode);
195
+ data = await this.parse(data);
196
+ return data;
198
197
  } catch (err) {
199
- callback(err, null, statusCode);
198
+ throw err;
200
199
  }
201
200
  } else {
202
- callback(this.parseError(statusCode, data), data, statusCode);
201
+ throw this.parseError(statusCode, data);
203
202
  }
204
203
  }
205
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": "21.0.19-axios-beta",
4
+ "version": "21.1.0-deindex-toggle-beta",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
7
7
  "author": "HomeOffice",
@@ -32,8 +32,7 @@
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",
34
34
  "ci": "travis-conditions",
35
- "postversion": "git push && git push --tags",
36
- "test-single": "mocha"
35
+ "postversion": "git push && git push --tags"
37
36
  },
38
37
  "dependencies": {
39
38
  "aliasify": "^2.1.0",
@@ -54,12 +53,12 @@
54
53
  "duplexify": "^3.5.0",
55
54
  "express": "^4.17.1",
56
55
  "express-healthcheck": "^0.1.0",
57
- "express-partial-templates": "^0.2.0",
56
+ "express-partial-templates": "^0.2.1",
58
57
  "express-session": "^1.13.0",
59
58
  "findup": "^0.1.5",
60
59
  "glob": "^7.2.0",
61
60
  "govuk-elements-sass": "^3.1.3",
62
- "govuk-frontend": "3.14",
61
+ "govuk-frontend": "3.15",
63
62
  "govuk_template_mustache": "^0.26.0",
64
63
  "helmet": "^3.22.0",
65
64
  "hogan-express-strict": "^0.5.4",
@@ -68,7 +67,7 @@
68
67
  "i18n-future": "^2.0.0",
69
68
  "i18n-lookup": "^0.1.0",
70
69
  "is-pdf": "^1.0.0",
71
- "libphonenumber-js": "^1.9.37",
70
+ "libphonenumber-js": "^1.9.44",
72
71
  "lodash": "^4.17.21",
73
72
  "markdown-it": "^12.3.2",
74
73
  "minimatch": "^3.0.7",
@@ -81,8 +80,7 @@
81
80
  "nodemailer-ses-transport": "^1.5.1",
82
81
  "nodemailer-smtp-transport": "^2.7.4",
83
82
  "nodemailer-stub-transport": "^1.1.0",
84
- "notifications-node-client": "^6.0.0",
85
- "object-mapper": "^6.2.0",
83
+ "notifications-node-client": "^8.2.0",
86
84
  "redis": "^3.1.2",
87
85
  "reqres": "^3.0.1",
88
86
  "rimraf": "^3.0.2",
@@ -98,6 +96,7 @@
98
96
  "@cucumber/cucumber": "^7.3.0",
99
97
  "@cucumber/pretty-formatter": "^1.0.0-alpha.1",
100
98
  "@types/jest": "^26.0.14",
99
+ "@xmldom/xmldom": "~0.8.4",
101
100
  "chai": "^3.5.0",
102
101
  "chai-as-promised": "^7.1.1",
103
102
  "chai-subset": "^1.6.0",
@@ -124,14 +123,13 @@
124
123
  "playwright": "^1.16.3",
125
124
  "postcode": "0.2.2",
126
125
  "proxyquire": "^1.7.11",
127
- "release-it": "^14.10.0",
126
+ "release-it": "^16.2.1",
128
127
  "sinon": "^11.1.1",
129
128
  "sinon-chai": "^3.7.0",
130
129
  "supertest": "^3.0.0",
131
130
  "travis-conditions": "0.0.0",
132
131
  "watchify": "^4.0.0",
133
- "webdriverio": "^4.14.4",
134
- "xmldom": "^0.6.0"
132
+ "webdriverio": "^4.14.4"
135
133
  },
136
134
  "mocha": {
137
135
  "reporter": "spec",
@@ -0,0 +1,16 @@
1
+ ## What?
2
+ ## Why?
3
+ ## How?
4
+ ## Testing?
5
+ ## Screenshots (optional)
6
+ ## Anything Else? (optional)
7
+ ## Check list
8
+
9
+ - [ ] I have reviewed my own pull request for linting issues (e.g. adding new lines)
10
+ - [ ] I have written tests (if relevant)
11
+ - [ ] I have created a JIRA number for my branch
12
+ - [ ] I have created a JIRA number for my commit
13
+ - [ ] I have followed the chris beams method for my commit https://cbea.ms/git-commit/
14
+ here is an [example commit](https://github.com/UKHomeOfficeForms/hof/commit/810959f391187c7c4af6db262bcd143b50093a6e)
15
+ - [ ] Ensure drone builds are green especially tests
16
+ - [ ] I will squash the commits before merging
@@ -16,7 +16,7 @@
16
16
  "author": "",
17
17
  "dependencies": {
18
18
  "govuk-frontend": "3.14",
19
- "jquery": "^3.6.0",
19
+ "jquery": "^3.7.1",
20
20
  "sass": "^1.53.0",
21
21
  "typeahead-aria": "^1.0.4"
22
22
  },
@@ -5627,6 +5627,11 @@ input[type=number] {
5627
5627
  vertical-align: top;
5628
5628
  }
5629
5629
 
5630
+ .govuk-header__logotype-crown[width="32"] {
5631
+ top: -3px;
5632
+ margin-right: 2px;
5633
+ }
5634
+
5630
5635
  .govuk-header__logotype-crown-fallback-image {
5631
5636
  width: 36px;
5632
5637
  height: 32px;
@@ -5634,6 +5639,11 @@ input[type=number] {
5634
5639
  vertical-align: bottom;
5635
5640
  }
5636
5641
 
5642
+ .govuk-header__logotype-crown-fallback-image[width="32"] {
5643
+ width: 32px;
5644
+ height: 30px;
5645
+ }
5646
+
5637
5647
  .govuk-header__product-name {
5638
5648
  font-family: "GDS Transport", arial, sans-serif;
5639
5649
  -webkit-font-smoothing: antialiased;
package/sandbox/yarn.lock CHANGED
@@ -34,11 +34,11 @@ brace-expansion@^1.1.7:
34
34
  concat-map "0.0.1"
35
35
 
36
36
  braces@~3.0.2:
37
- version "3.0.2"
38
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
39
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
37
+ version "3.0.3"
38
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
39
+ integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
40
40
  dependencies:
41
- fill-range "^7.0.1"
41
+ fill-range "^7.1.1"
42
42
 
43
43
  "chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2:
44
44
  version "3.5.3"
@@ -67,10 +67,10 @@ debug@^3.2.7:
67
67
  dependencies:
68
68
  ms "^2.1.1"
69
69
 
70
- fill-range@^7.0.1:
71
- version "7.0.1"
72
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
73
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
70
+ fill-range@^7.1.1:
71
+ version "7.1.1"
72
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
73
+ integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
74
74
  dependencies:
75
75
  to-regex-range "^5.0.1"
76
76
 
@@ -130,11 +130,16 @@ is-number@^7.0.0:
130
130
  resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
131
131
  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
132
132
 
133
- jquery@>=1.11, jquery@^3.6.0:
133
+ jquery@>=1.11:
134
134
  version "3.6.0"
135
135
  resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
136
136
  integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==
137
137
 
138
+ jquery@^3.7.1:
139
+ version "3.7.1"
140
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de"
141
+ integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==
142
+
138
143
  minimatch@^3.0.4:
139
144
  version "3.1.2"
140
145
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"