You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.1 KiB

/**
* Copyright (c) 2013 Yahoo! Inc. All rights reserved.
*
* Copyrights licensed under the MIT License. See the accompanying LICENSE file
* for terms.
*/
var assert = require('assert');
/**
* Valiadate the given node path, throw out an instance of AssertionError if
* the path is not valid.
*
* @method validate
* @param path {String} The path of a node.
*/
function validate(path) {
assert(
path && typeof path === 'string',
'Node path must be a non-empty string.'
);
assert(path[0] === '/', 'Node path must start with / character.');
// Shortcut, no need to check more since the path is the root.
if (path.length === 1) {
return;
}
assert(
path[path.length - 1] !== '/',
'Node path must not end with / character.'
);
assert(
!/\/\//.test(path),
'Node path must not contain empty node name.'
);
assert(
!/\/\.(\.)?(\/|$)/.test(path),
'Node path must not contain relative path(s).'
);
// TODO filter out special characters
}
exports.validate = validate;