-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
56 lines (48 loc) · 1.39 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
'use strict'
const anyOf = require('./lib/any-of')
const location = require('./location')
const station = require('./station')
const stop = require('./stop')
const line = require('./line')
const region = require('./region')
const route = require('./route')
const schedule = require('./schedule')
const operator = require('./operator')
const stopover = require('./stopover')
const journey = require('./journey')
const journeyLeg = require('./journey-leg')
const reference = require('./lib/reference')
const date = require('./lib/date')
const mode = require('./lib/mode')
const item = require('./lib/item')
const defaultValidators = {
location,
station,
stop,
line,
region,
route,
schedule,
operator,
stopover,
journey,
journeyLeg,
ref: reference,
date,
mode,
item
}
const createValidate = (validators = {}) => {
const val = Object.assign({}, defaultValidators, validators)
const allTypes = Object.keys(val)
const validate = (item, types = null, name = 'item') => {
if (typeof types === 'string') types = [types]
else if (types === null) types = allTypes
else if (!Array.isArray(types)) throw new Error('types must be null, a string or an array')
if (typeof name !== 'string') throw new Error('name must be a string')
anyOf(types, val, item, name)
}
return validate
}
createValidate.defaultValidators = defaultValidators
module.exports = createValidate