Browse Source

move rewrite rules

master
Lloyd Brookes 8 years ago
parent
commit
fcabd45058
  1. 18
      lib/local-web-server.js
  2. 17
      lib/middleware-stack.js

18
lib/local-web-server.js

@ -113,30 +113,12 @@ function collectOptions (mwOptionDefinitions) {
directory: process.cwd()
}, stored, cliOptions.server, cliOptions.middleware, cliOptions.misc)
if (options.rewrite) {
options.rewrite = parseRewriteRules(options.rewrite)
}
// console.error(require('util').inspect(options, { depth: 3, colors: true }))
validateOptions(options)
return options
}
function parseRewriteRules (rules) {
return rules && rules.map(rule => {
if (t.isString(rule)) {
const matches = rule.match(/(\S*)\s*->\s*(\S*)/)
if (!(matches && matches.length >= 3)) throw new Error('Invalid rule: ' + rule)
return {
from: matches[1],
to: matches[2]
}
} else {
return rule
}
})
}
function validateOptions (options) {
if (!t.isNumber(options.port)) {
tool.printError('--port must be numeric')

17
lib/middleware-stack.js

@ -37,7 +37,7 @@ class MiddlewareStack extends Array {
description: "A list of URL rewrite rules. For each rule, separate the 'from' and 'to' routes with '->'. Whitespace surrounded the routes is ignored. E.g. '/from -> /to'."
},
middleware: function (cliOptions) {
const options = arrayify(cliOptions.rewrite || rewriteRules)
const options = parseRewriteRules(arrayify(cliOptions.rewrite || rewriteRules))
if (options.length) {
return options.map(route => {
if (route.to) {
@ -295,3 +295,18 @@ class MiddlewareStack extends Array {
}
module.exports = MiddlewareStack
function parseRewriteRules (rules) {
return rules && rules.map(rule => {
if (t.isString(rule)) {
const matches = rule.match(/(\S*)\s*->\s*(\S*)/)
if (!(matches && matches.length >= 3)) throw new Error('Invalid rule: ' + rule)
return {
from: matches[1],
to: matches[2]
}
} else {
return rule
}
})
}
Loading…
Cancel
Save