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

Sign up to get free protection for your applications and to get access to all the features.
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"