exhibit-plugin-serve
Version:
No-op transform that serves your filemap over HTTP as a side-effect.
48 lines (33 loc) • 4.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _exhibitSourceError = require('exhibit-source-error');
var _exhibitSourceError2 = _interopRequireDefault(_exhibitSourceError);
var _compileRedirect = require('./compileRedirect');
var _compileRedirect2 = _interopRequireDefault(_compileRedirect);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/*
parseRedirects() - based on https://www.netlify.com/docs/redirects/
*/
exports.default = config => {
const redirections = [];
if (config) {
const lines = config.split('\n');
lines.forEach((line, lineIndex) => {
const trimmedLine = line.replace(/#.*$/, '').trim();
if (trimmedLine.length) {
const [from, to, code] = trimmedLine.split(/\s+/);
if (from[0] !== '/' || to[0] !== '/' || code && code.length && !/\d{3}/.test(code)) {
throw new _exhibitSourceError2.default('Invalid _redirects config', {
line: lineIndex + 1
});
}
const redirect = (0, _compileRedirect2.default)(from, to);
redirections.push({ redirect, code: code && code.length ? Number(code) : undefined });
}
});
}
return redirections;
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4aGliaXQtcGx1Z2luLXNlcnZlL3BhcnNlUmVkaXJlY3RzLmpzIl0sIm5hbWVzIjpbImNvbmZpZyIsInJlZGlyZWN0aW9ucyIsImxpbmVzIiwic3BsaXQiLCJmb3JFYWNoIiwibGluZSIsImxpbmVJbmRleCIsInRyaW1tZWRMaW5lIiwicmVwbGFjZSIsInRyaW0iLCJsZW5ndGgiLCJmcm9tIiwidG8iLCJjb2RlIiwidGVzdCIsInJlZGlyZWN0IiwicHVzaCIsIk51bWJlciIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBTUE7Ozs7QUFDQTs7Ozs7O0FBTEE7Ozs7a0JBUWdCQSxNQUFELElBQXlDO0FBQ3RELFFBQU1DLGVBQWUsRUFBckI7O0FBRUEsTUFBSUQsTUFBSixFQUFZO0FBQ1YsVUFBTUUsUUFBUUYsT0FBT0csS0FBUCxDQUFhLElBQWIsQ0FBZDs7QUFFQUQsVUFBTUUsT0FBTixDQUFjLENBQUNDLElBQUQsRUFBT0MsU0FBUCxLQUFxQjtBQUNqQyxZQUFNQyxjQUFjRixLQUFLRyxPQUFMLENBQWEsTUFBYixFQUFxQixFQUFyQixFQUF5QkMsSUFBekIsRUFBcEI7O0FBRUEsVUFBSUYsWUFBWUcsTUFBaEIsRUFBd0I7QUFDdEIsY0FBTSxDQUFDQyxJQUFELEVBQU9DLEVBQVAsRUFBV0MsSUFBWCxJQUFtQk4sWUFBWUosS0FBWixDQUFrQixLQUFsQixDQUF6Qjs7QUFFQSxZQUFJUSxLQUFLLENBQUwsTUFBWSxHQUFaLElBQW1CQyxHQUFHLENBQUgsTUFBVSxHQUE3QixJQUFxQ0MsUUFBUUEsS0FBS0gsTUFBYixJQUF1QixDQUFDLFFBQVFJLElBQVIsQ0FBYUQsSUFBYixDQUFqRSxFQUFzRjtBQUNwRixnQkFBTSxpQ0FBZ0IsMkJBQWhCLEVBQTZDO0FBQ2pEUixrQkFBTUMsWUFBWTtBQUQrQixXQUE3QyxDQUFOO0FBR0Q7O0FBRUQsY0FBTVMsV0FBVywrQkFBZ0JKLElBQWhCLEVBQXNCQyxFQUF0QixDQUFqQjs7QUFFQVgscUJBQWFlLElBQWIsQ0FBa0IsRUFBRUQsUUFBRixFQUFZRixNQUFNQSxRQUFRQSxLQUFLSCxNQUFiLEdBQXNCTyxPQUFPSixJQUFQLENBQXRCLEdBQXFDSyxTQUF2RCxFQUFsQjtBQUNEO0FBQ0YsS0FoQkQ7QUFpQkQ7O0FBRUQsU0FBT2pCLFlBQVA7QUFDRCxDIiwiZmlsZSI6InBhcnNlUmVkaXJlY3RzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcblxuLypcbiAgcGFyc2VSZWRpcmVjdHMoKSAtIGJhc2VkIG9uIGh0dHBzOi8vd3d3Lm5ldGxpZnkuY29tL2RvY3MvcmVkaXJlY3RzL1xuKi9cblxuaW1wb3J0IFNvdXJjZUVycm9yIGZyb20gJ2V4aGliaXQtc291cmNlLWVycm9yJztcbmltcG9ydCBjb21waWxlUmVkaXJlY3QgZnJvbSAnLi9jb21waWxlUmVkaXJlY3QnO1xuaW1wb3J0IHR5cGUgeyBSZWRpcmVjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCAoY29uZmlnOiA/c3RyaW5nKTogQXJyYXk8UmVkaXJlY3Rpb24+ID0+IHtcbiAgY29uc3QgcmVkaXJlY3Rpb25zID0gW107XG5cbiAgaWYgKGNvbmZpZykge1xuICAgIGNvbnN0IGxpbmVzID0gY29uZmlnLnNwbGl0KCdcXG4nKTtcblxuICAgIGxpbmVzLmZvckVhY2goKGxpbmUsIGxpbmVJbmRleCkgPT4ge1xuICAgICAgY29uc3QgdHJpbW1lZExpbmUgPSBsaW5lLnJlcGxhY2UoLyMuKiQvLCAnJykudHJpbSgpO1xuXG4gICAgICBpZiAodHJpbW1lZExpbmUubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IFtmcm9tLCB0bywgY29kZV0gPSB0cmltbWVkTGluZS5zcGxpdCgvXFxzKy8pO1xuXG4gICAgICAgIGlmIChmcm9tWzBdICE9PSAnLycgfHwgdG9bMF0gIT09ICcvJyB8fCAoY29kZSAmJiBjb2RlLmxlbmd0aCAmJiAhL1xcZHszfS8udGVzdChjb2RlKSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgU291cmNlRXJyb3IoJ0ludmFsaWQgX3JlZGlyZWN0cyBjb25maWcnLCB7XG4gICAgICAgICAgICBsaW5lOiBsaW5lSW5kZXggKyAxLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVkaXJlY3QgPSBjb21waWxlUmVkaXJlY3QoZnJvbSwgdG8pO1xuXG4gICAgICAgIHJlZGlyZWN0aW9ucy5wdXNoKHsgcmVkaXJlY3QsIGNvZGU6IGNvZGUgJiYgY29kZS5sZW5ndGggPyBOdW1iZXIoY29kZSkgOiB1bmRlZmluZWQgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVkaXJlY3Rpb25zO1xufTtcbiJdfQ==