UNPKG

1.38 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.numberExtensions = void 0;
4function numberExtensions(joi) {
5 return {
6 base: joi.number(),
7 type: 'number',
8 messages: {
9 'number.dividable': `"{{#label}}" must be dividable by {{#q}}`,
10 },
11 // validate (v, helpers) {
12 // console.log('number validate called', {v})
13 // },
14 rules: {
15 // Based on: https://github.com/hapijs/joi/blob/master/API.md#extensions
16 dividable: {
17 multi: true,
18 method(q) {
19 return this.$_addRule({
20 name: 'dividable',
21 args: { q },
22 });
23 },
24 args: [
25 {
26 name: 'q',
27 ref: true,
28 assert: v => typeof v === 'number' && !Number.isNaN(v),
29 message: 'must be a number',
30 },
31 ],
32 validate(v, helpers, args) {
33 if (v % args['q'] === 0) {
34 return v;
35 }
36 return helpers.error('number.dividable', args);
37 },
38 },
39 },
40 };
41}
42exports.numberExtensions = numberExtensions;