|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 'use strict'; |
|
5 |
|
6 const { contract } = require('../../util/contract'); |
|
7 const { isValidURI, URL, isLocalURL } = require('../../url'); |
|
8 const { isNil, isObject, isString } = require('../../lang/type'); |
|
9 |
|
10 exports.contract = contract({ |
|
11 id: { |
|
12 is: [ 'string', 'undefined' ], |
|
13 ok: v => /^[a-z0-9-_]+$/i.test(v), |
|
14 msg: 'The option "id" must be a valid alphanumeric id (hyphens and ' + |
|
15 'underscores are allowed).' |
|
16 }, |
|
17 title: { |
|
18 is: [ 'string' ], |
|
19 ok: v => v.length |
|
20 }, |
|
21 url: { |
|
22 is: [ 'string' ], |
|
23 ok: v => isLocalURL(v), |
|
24 map: function(v) v.toString(), |
|
25 msg: 'The option "url" must be a valid local URI.' |
|
26 } |
|
27 }); |