src/options-parser.js
const fs = require('fs');
module.exports = optionsParser;
/**
* Tests the options object.
*
* @param {Object} options
* @returns {Object}
*/
function optionsParser(options) {
if (!options || typeof options !== 'object') {
throw new Error('scalable-blob-store options object required.');
}
if (!options.blobStoreRoot) {
throw new Error('The blobStoreRoot directory option is required.');
}
if (!options.idFunction) {
throw new Error('The idFunction option is required.');
}
if (typeof options.idFunction !== 'function') {
throw new Error('The idFunction option is must be a function.');
}
const testId = options.idFunction();
if (typeof testId !== 'string') {
throw new Error('The idFunction option must generate a string.');
}
if (options.dirDepth < 1 || options.dirDepth > 10) {
throw new Error('The dirDepth option must be between 1 and 10.');
}
options.dirDepth = options.dirDepth || 3;
options.dirWidth = options.dirWidth || 1000;
fs.mkdirSync(options.blobStoreRoot, { recursive: true });
return options;
}