+15
-17
@@ -28,3 +28,3 @@ 'use strict'; | ||
| internals.applyDefaults = function (schema) { | ||
| internals.callWithDefaults = function (schema, args) { | ||
@@ -39,3 +39,3 @@ Hoek.assert(this, 'Must be invoked on a Joi instance.'); | ||
| return schema; | ||
| return schema._init(...args); | ||
| }; | ||
@@ -55,3 +55,3 @@ | ||
| return internals.applyDefaults.call(this, any); | ||
| return internals.callWithDefaults.call(this, any, args); | ||
| }; | ||
@@ -61,4 +61,3 @@ | ||
| const alternatives = internals.applyDefaults.call(this, internals.alternatives); | ||
| return args.length ? alternatives.try.apply(alternatives, args) : alternatives; | ||
| return internals.callWithDefaults.call(this, internals.alternatives, args); | ||
| }; | ||
@@ -70,3 +69,3 @@ | ||
| return internals.applyDefaults.call(this, internals.array); | ||
| return internals.callWithDefaults.call(this, internals.array, args); | ||
| }; | ||
@@ -78,3 +77,3 @@ | ||
| return internals.applyDefaults.call(this, internals.boolean); | ||
| return internals.callWithDefaults.call(this, internals.boolean, args); | ||
| }; | ||
@@ -86,3 +85,3 @@ | ||
| return internals.applyDefaults.call(this, internals.binary); | ||
| return internals.callWithDefaults.call(this, internals.binary, args); | ||
| }; | ||
@@ -94,3 +93,3 @@ | ||
| return internals.applyDefaults.call(this, internals.date); | ||
| return internals.callWithDefaults.call(this, internals.date, args); | ||
| }; | ||
@@ -102,3 +101,3 @@ | ||
| return internals.applyDefaults.call(this, internals.func); | ||
| return internals.callWithDefaults.call(this, internals.func, args); | ||
| }; | ||
@@ -110,3 +109,3 @@ | ||
| return internals.applyDefaults.call(this, internals.number); | ||
| return internals.callWithDefaults.call(this, internals.number, args); | ||
| }; | ||
@@ -116,4 +115,3 @@ | ||
| const object = internals.applyDefaults.call(this, internals.object); | ||
| return args.length ? object.keys(...args) : object; | ||
| return internals.callWithDefaults.call(this, internals.object, args); | ||
| }; | ||
@@ -125,3 +123,3 @@ | ||
| return internals.applyDefaults.call(this, internals.string); | ||
| return internals.callWithDefaults.call(this, internals.string, args); | ||
| }; | ||
@@ -229,3 +227,3 @@ | ||
| const schemaPath = typeof path === 'string' ? path.split('.') : path.slice(); | ||
| const schemaPath = typeof path === 'string' ? (path ? path.split('.') : []) : path.slice(); | ||
@@ -418,5 +416,5 @@ return reach(schema, schemaPath); | ||
| const instance = new type(); | ||
| joi[extension.name] = function () { | ||
| joi[extension.name] = function (...extArgs) { | ||
| return internals.applyDefaults.call(this, instance); | ||
| return internals.callWithDefaults.call(this, instance, extArgs); | ||
| }; | ||
@@ -423,0 +421,0 @@ } |
+2
-0
@@ -64,2 +64,4 @@ 'use strict'; | ||
| max: 'must be less than or equal to "{{limit}}"', | ||
| less: 'must be less than "{{limit}}"', | ||
| greater: 'must be greater than "{{limit}}"', | ||
| isoDate: 'must be a valid ISO 8601 date', | ||
@@ -66,0 +68,0 @@ timestamp: { |
+1
-1
@@ -5,3 +5,3 @@ 'use strict'; | ||
| const Joi = require('../'); | ||
| const Joi = require('./index'); | ||
@@ -8,0 +8,0 @@ |
@@ -26,2 +26,7 @@ 'use strict'; | ||
| _init(...args) { | ||
| return args.length ? this.try(...args) : this; | ||
| } | ||
| _base(value, state, options) { | ||
@@ -28,0 +33,0 @@ |
@@ -77,2 +77,7 @@ 'use strict'; | ||
| _init() { | ||
| return this; | ||
| } | ||
| get schemaType() { | ||
@@ -79,0 +84,0 @@ |
@@ -171,6 +171,10 @@ 'use strict'; | ||
| }; | ||
| internals.Date.prototype.min = internals.compare('min', (value, date) => value >= date); | ||
| internals.Date.prototype.max = internals.compare('max', (value, date) => value <= date); | ||
| internals.Date.prototype.greater = internals.compare('greater', (value, date) => value > date); | ||
| internals.Date.prototype.less = internals.compare('less', (value, date) => value < date); | ||
| module.exports = new internals.Date(); |
@@ -29,2 +29,7 @@ 'use strict'; | ||
| _init(...args) { | ||
| return args.length ? this.keys(...args) : this; | ||
| } | ||
| _base(value, state, options) { | ||
@@ -248,3 +253,6 @@ | ||
| if (pattern.regex.test(key)) { | ||
| if (pattern.regex ? | ||
| pattern.regex.test(key) : | ||
| !pattern.schema.validate(key).error) { | ||
| unprocessed.delete(key); | ||
@@ -438,6 +446,9 @@ | ||
| Hoek.assert(pattern instanceof RegExp, 'Invalid regular expression'); | ||
| const isRegExp = pattern instanceof RegExp; | ||
| Hoek.assert(isRegExp || pattern instanceof Any, 'pattern must be a regex or schema'); | ||
| Hoek.assert(schema !== undefined, 'Invalid rule'); | ||
| pattern = new RegExp(pattern.source, pattern.ignoreCase ? 'i' : undefined); // Future version should break this and forbid unsupported regex flags | ||
| if (isRegExp) { | ||
| pattern = new RegExp(pattern.source, pattern.ignoreCase ? 'i' : undefined); // Future version should break this and forbid unsupported regex flags | ||
| } | ||
@@ -455,5 +466,9 @@ try { | ||
| const obj = this.clone(); | ||
| obj._inner.patterns.push({ regex: pattern, rule: schema }); | ||
| if (isRegExp) { | ||
| obj._inner.patterns.push({ regex: pattern, rule: schema }); | ||
| } | ||
| else { | ||
| obj._inner.patterns.push({ schema: pattern, rule: schema }); | ||
| } | ||
| return obj; | ||
@@ -644,3 +659,8 @@ } | ||
| const pattern = this._inner.patterns[i]; | ||
| description.patterns.push({ regex: pattern.regex.toString(), rule: pattern.rule.describe() }); | ||
| if (pattern.regex) { | ||
| description.patterns.push({ regex: pattern.regex.toString(), rule: pattern.rule.describe() }); | ||
| } | ||
| else { | ||
| description.patterns.push({ schema: pattern.schema.describe(), rule: pattern.rule.describe() }); | ||
| } | ||
| } | ||
@@ -647,0 +667,0 @@ } |
+1
-1
| { | ||
| "name": "joi", | ||
| "description": "Object schema validation", | ||
| "version": "13.3.0", | ||
| "version": "13.4.0", | ||
| "homepage": "https://github.com/hapijs/joi", | ||
@@ -6,0 +6,0 @@ "repository": "git://github.com/hapijs/joi", |
+1
-1
@@ -19,3 +19,3 @@  | ||
| # API | ||
| See the detailed [API Reference](https://github.com/hapijs/joi/blob/v13.3.0/API.md). | ||
| See the detailed [API Reference](https://github.com/hapijs/joi/blob/v13.4.0/API.md). | ||
@@ -22,0 +22,0 @@ # Example |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
177085
0.59%4201
0.62%