react-middleware
Version:
Connect middleware for serving React components from a standard folder structure.
79 lines (63 loc) • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lodash = require("lodash");
var _lodash2 = _interopRequireDefault(_lodash);
var _fsExtra = require("fs-extra");
var _fsExtra2 = _interopRequireDefault(_fsExtra);
var _path = require("path");
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var pathsStatus = function pathsStatus(paths) {
return _lodash2.default.transform(paths, function (result, path, key) {
if (_lodash2.default.isString(path)) {
result[key] = _fsExtra2.default.existsSync(path);
}
});
};
var pathsExist = function pathsExist(paths) {
var values = _lodash2.default.values(pathsStatus(paths));
var existsTotal = _lodash2.default.sum(values, function (exists) {
return exists ? 1 : 0;
});
if (existsTotal === values.length) {
return true;
}
if (existsTotal === 0) {
return false;
}
return "partial";
};
var createFoldersSync = function createFoldersSync(paths) {
_lodash2.default.forIn(paths, function (path) {
if (_lodash2.default.isString(path)) {
_fsExtra2.default.ensureDirSync(path);
}
});
paths.exist = pathsExist(paths);
};
exports.default = function () {
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
// Prepare folder paths.
var baseDir = options.base || "./";
baseDir = _lodash2.default.startsWith(baseDir, ".") ? _path2.default.resolve(baseDir) : baseDir;
var folder = function folder(param, defaultPath) {
return options[param] || _path2.default.join(baseDir, defaultPath);
};
var paths = {
base: baseDir,
css: folder("css", "/css"),
public: folder("public", "/public"),
layouts: folder("layouts", "/views/layouts"),
components: folder("components", "/views/components"),
pages: folder("pages", "/views/pages"),
scripts: folder("scripts", "/scripts"),
createSync: function createSync() {
createFoldersSync(paths);
}
};
paths.exist = pathsExist(paths);
// Finish up.
return paths;
};