Skip to content

Commit 275dcf7

Browse files
committed
fix(schema): Update schema validation for joi 16
This is a huge pain :( this code is extremely over-tested
1 parent 4be24d4 commit 275dcf7

File tree

2 files changed

+90
-86
lines changed

2 files changed

+90
-86
lines changed

schema.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const Joi = require('@hapi/joi');
1313
// * api.relativeScores (boolean)
1414
// * api.localization (flipNumberAndStreetCountries is array of 3 character strings)
1515
module.exports = Joi.object().keys({
16-
api: Joi.object().keys({
16+
api: Joi.object().required().keys({
1717
version: Joi.string(),
1818
indexName: Joi.string(),
1919
host: Joi.string(),
@@ -31,33 +31,33 @@ module.exports = Joi.object().keys({
3131
placeholderService: Joi.any().forbidden(), // got moved to services
3232
services: Joi.object().keys({
3333
pip: Joi.object().keys({
34-
url: Joi.string().uri({ scheme: /https?/ }),
34+
url: Joi.string().uri({ scheme: /https?/ }).required(),
3535
timeout: Joi.number().integer().optional().default(250).min(0),
3636
retries: Joi.number().integer().optional().default(3).min(0),
37-
}).unknown(false).requiredKeys('url'),
37+
}).unknown(false),
3838
placeholder: Joi.object().keys({
39-
url: Joi.string().uri({ scheme: /https?/ }),
39+
url: Joi.string().uri({ scheme: /https?/ }).required(),
4040
timeout: Joi.number().integer().optional().default(250).min(0),
4141
retries: Joi.number().integer().optional().default(3).min(0),
42-
}).unknown(false).requiredKeys('url'),
42+
}).unknown(false),
4343
interpolation: Joi.object().keys({
44-
url: Joi.string().uri({ scheme: /https?/ }),
44+
url: Joi.string().uri({ scheme: /https?/ }).required(),
4545
timeout: Joi.number().integer().optional().default(250).min(0),
4646
retries: Joi.number().integer().optional().default(3).min(0),
47-
}).unknown(false).requiredKeys('url'),
47+
}).unknown(false),
4848
libpostal: Joi.object().keys({
49-
url: Joi.string().uri({ scheme: /https?/ }),
49+
url: Joi.string().uri({ scheme: /https?/ }).required(),
5050
timeout: Joi.number().integer().optional().default(250).min(0),
5151
retries: Joi.number().integer().optional().default(3).min(0),
52-
}).unknown(false).requiredKeys('url')
52+
}).unknown(false)
5353
}).unknown(false).default({}), // default api.services to an empty object
5454
defaultParameters: Joi.object().keys({
5555
'focus.point.lat': Joi.number(),
5656
'focus.point.lon': Joi.number(),
5757
}).unknown(true).default({})
5858

59-
}).requiredKeys('version', 'indexName', 'host').unknown(true),
60-
esclient: Joi.object().keys({
59+
}).unknown(true),
60+
esclient: Joi.object().required().keys({
6161
requestTimeout: Joi.number().integer().min(0)
6262
}).unknown(true)
63-
}).requiredKeys('api', 'esclient').unknown(true);
63+
}).unknown(true);

0 commit comments

Comments
 (0)