New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

mixdown-router

Package Overview
Dependencies
Maintainers
2
Versions
60
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mixdown-router - npm Package Compare versions

Comparing version 0.2.2 to 0.2.3

lib/generator.js

110

index.js

@@ -6,2 +6,3 @@ var _ = require('lodash');

var querystring = require('querystring');
var Generator = require('./lib/generator.js');

@@ -32,8 +33,10 @@ var Router = function() {

/**
* Initializes the routes for this application
*
**/
var router = this.router = {
// attached the router.
Generator.prototype.attach.call(this, options);
var router = this.router;
// attach the server side component
_.extend(this.router, {
/**

@@ -82,101 +85,6 @@ * Creates a new instance of router.

/**
* Gets a url object for the given route and parameters. This is where you put your custom route generation.
* http://nodejs.org/api/url.html#url_url
**/
, url: function(route, params) {
var uri = url.parse('');
var routeObject = router.routes[route];
});
// if these are set on the route, then attach them. This will allow injection of FQ urls.
uri.protocol = routeObject.protocol || null;
uri.hostname = routeObject.hostname || null;
uri.port = routeObject.port || null;
uri.method = routeObject.method || null;
// map the param fields to querystring as defined in route.
var queryParams = {};
var restParams = {};
// split params into rest/query
_.each(routeObject.params, function (param, key) {
if (param.kind === 'rest') {
restParams[key] = param;
}
else if (param.kind === 'query') {
queryParams[key] = param;
}
});
if (!_.isEmpty(queryParams)) {
_.each(queryParams, function (param, key) {
if (params[key] || param.default) {
uri.query = uri.query || {};
// replace capturing group with value
var qval = (param.enabled && params[key]) ? params[key] : param.default;
if (qval) {
uri.query[key] = param.regex.replace(/\(.*\)/, qval);
}
}
});
}
// build the pathname.
uri.pathname = '';
// get url segments
// drop first element in array, since a leading slash creates an empty segment
var urlSegments = _.rest(routeObject.path.split('/'));
// replace named params with corresponding values and generate uri
_.each(urlSegments, function (segment, i) {
// is this a REST segment?
if (/^\??:/.test(segment)) {
// replace with param value if available.
var pName = segment.replace(/^\??:/, '');
var pConfig = restParams[pName];
if (pConfig && pConfig.kind === 'rest') {
// this is a rest param. replace the capturing group with our value.
var pval = (pConfig.enabled && params[pName]) ? params[pName] : pConfig.default;
if (pval) {
uri.pathname += '/' + pConfig.regex.replace(/\(.*\)/, pval);
}
}
}
else {
// just append
uri.pathname += '/' + segment;
}
});
uri.search = uri.query ? '?' + querystring.stringify(uri.query) : null;
uri.path = uri.pathname + (uri.search || '');
uri.host = uri.hostname ? (uri.hostname + (uri.port ? ':' + uri.port : '')) : null;
return uri;
}
/**
* Gets a url as a string for the given route and parameters. This calls url() and stringifies the route.
*
**/
, format: function(route, params) {
return url.format(router.url(route, params));
}
, routes: options.routes
, params: options.params
};
this.router.routes = options.routes;
};
module.exports = Router;
{
"name": "mixdown-router",
"version": "0.2.2",
"version": "0.2.3",
"description": "Router for mixdown.js",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -30,8 +30,2 @@ router

"options": {
"params": {
"gender": "(\\w+)",
"age": "(\\d+)",
"id": "(\\d{1})",
"bark": "bark-(loud|quiet)"
},
"routes": {

@@ -41,10 +35,35 @@ "search": {

"path": "/dogs/:gender/:bark/:age",
"handler": "dogs"
"handler": "dogs",
"params": {
"bark": {
"regex": "bark-(loud|quiet)",
"kind": "rest"
},
"gender": {
"regex": "(\\w+)",
"kind": "rest"
},
"age": {
"regex": "(\\d+)",
"kind": "rest"
}
}
},
"single": {
"method": "GET",
"path": "/dog/:id",
"query": [ "hidePictures" ],
"handler": "dog"
"handler": "dog",
"params": {
"hidePictures": {
"kind": "query",
"regex": "(true|false)"
},
"id": {
"regex": "(\\d{1})",
"kind": "rest"
}
}
},
"create": {

@@ -54,3 +73,9 @@ "method": "POST",

"body": [ "gender", "age", "phone" ],
"handler": "create"
"handler": "create",
"params": {
"id": {
"kind": "rest",
"regex": "(\\d{1})"
}
}
}

@@ -57,0 +82,0 @@ }

@@ -33,11 +33,14 @@ {

"regex": "bark-(loud|quiet)",
"kind": "rest"
"kind": "rest",
"enabled": true
},
"gender": {
"regex": "(\\w+)",
"kind": "rest"
"kind": "rest",
"enabled": true
},
"age": {
"regex": "(\\d+)",
"kind": "rest"
"kind": "rest",
"enabled": true
}

@@ -54,7 +57,9 @@ }

"kind": "query",
"regex": "(true|false)"
"regex": "(true|false)",
"enabled": true
},
"id": {
"regex": "(\\d{1})",
"kind": "rest"
"kind": "rest",
"enabled": true
}

@@ -72,3 +77,4 @@ }

"kind": "rest",
"regex": "(\\d{1})"
"regex": "(\\d{1})",
"enabled": true
}

@@ -98,11 +104,14 @@ }

"regex": "claws-(yes|no)",
"kind": "rest"
"kind": "rest",
"enabled": true
},
"gender": {
"regex": "(\\w+)",
"kind": "rest"
"kind": "rest",
"enabled": true
},
"age": {
"regex": "(\\d+)",
"kind": "rest"
"kind": "rest",
"enabled": true
}

@@ -118,3 +127,4 @@ }

"regex": "(\\d{1})",
"kind": "rest"
"kind": "rest",
"enabled": true
}

@@ -121,0 +131,0 @@ }

@@ -14,2 +14,3 @@ var _ = require('lodash');

test('Create router instance', function(t) {
console.log(require('util').inspect(app.plugins.router));
var router = app.plugins.router.create();

@@ -16,0 +17,0 @@ t.ok(router, 'Router instance exists');

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc