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

connect-traversal

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

connect-traversal - npm Package Compare versions

Comparing version 0.1.1 to 0.2.1

.idea/.name

0

index.js
module.exports = process.env.CONNECT_TRAVERSAL_COV
? require('./lib-cov/traversal')
: require('./lib/traversal');

48

lib/traversal.js

@@ -0,1 +1,6 @@

'use strict';
var util = require('util');
/**

@@ -45,3 +50,16 @@ * Resource.

/**
* Traverse to resource.
* @param resourceId resource id.
*/
Resource.prototype.traverseTo = function (resourceId) {
function _traverseTo(resource) {
if(resource.resource === resourceId) return resource;
return resource && resource.parent ? _traverseTo(resource.parent) : null;
}
return _traverseTo(this.parent);
};
/**
* Traversal object.

@@ -80,9 +98,12 @@ * @constructor

Inheritance.prototype = Resource.prototype;
obj.prototype = new Inheritance();
obj.prototype.__constructor__ = obj;
obj.prototype = new Inheritance;
obj.prototype.constructor = obj;
obj.prototype.__traversal__ = this;
obj.__super__ = Resource;
for (var k in proto) {
obj.prototype[k] = proto[k];
}
Object.getOwnPropertyNames(proto).forEach(function(name) {
obj.prototype[name] = proto[name];
});
obj.prototype.toString = function() {
return util.format('#<Resource[%s]>', this.resource);
};
this.resources[id] = obj;

@@ -188,3 +209,3 @@ };

*/
Traversal.prototype.clear = function(){
Traversal.prototype.clear = function (){
this.resources = {};

@@ -213,3 +234,3 @@ this.paths = {};

return '/' + parts.join('/');
}
};

@@ -233,11 +254,12 @@ var traversal = new Traversal;

var i = -1;
function _callback() {
i++;
(i+1) == callbacks.length
? callbacks[i](req, res, next)
: callbacks[i](req, res, _callback);
}
return _callback();
}
}
function _callback() {
i++;
(i+1) == callbacks.length
? callbacks[i](req, res, next)
: callbacks[i](req, res, _callback);
}
return next();

@@ -244,0 +266,0 @@ };

{
"name": "connect-traversal",
"version": "0.1.1",
"description": "Middleware for Connect that allows to use URL traversal instead of URL dispatching.",
"version": "0.2.1",
"description": "Middleware for Connect and Express application which allows to use URL traversal instead of URL dispatching.",
"keywords": [
"traverse",
"traversal",
"traversing",
"connect",
"express",
"dispatch"
"dispatch",
"dispatching"
],

@@ -19,5 +21,5 @@ "author": "Dmitry Sedelnikov <dmnorc@gmail.com>",

"devDependencies": {
"mocha": "1.x",
"mocha": ">= 1.x",
"connect": ">= 1.x",
"supertest": "0.8.2"
"supertest": "0.11"
},

@@ -37,6 +39,6 @@ "scripts": {

],
"engines": "node >= 0.6.x",
"engines": "node >= 0.8.x",
"readmeFilename": "README.md",
"_id": "connect-traversal@0.1.1",
"_id": "connect-traversal@0.2.1",
"_from": "connect-traversal@latest"
}

@@ -1,3 +0,4 @@

connect-traversal
Traversal for Connect application. v0.2 [![Build Status](https://travis-ci.org/dmnorc/connect-traversal.png)](https://travis-ci.org/dmnorc/connect-traversal)
=================
[![NPM](https://nodei.co/npm/connect-traversal.png?stars&downloads)](https://nodei.co/npm/connect-traversal/)

@@ -85,3 +86,3 @@ connect-traversal is a middleware for Connect and Express framework that allows to use URL traversal instead of URL dispatching.

For auto-creation resource chain on the url in Connect application, this app should use traversal middleware.
For auto-generating resource chain based on the url in Connect application (in other words to include traversing into Connect-Express app), this app should use traversal middleware.
```

@@ -100,21 +101,25 @@ var traversal = require('connect-traversal');

traverse.registerPath('userResource', {method: 'get'}, function(req, res) {
var userResource = req.resource //UserResource for user 123
var userResource = req.resource //userResource for user 123
var parent = resource.parent //UsersResource
parent.createUser({id: '222'});
var anotherUserResource = parent.get('222'); //UserResource for user 222
var anotherUserResource = parent.get('222'); //userResource for user 222
// req.buildResourceUrl(userResource) is '/users/user/123'
// req.buildResourceUrl(userResource, 'blabla') is '/users/user/123/blabla'
// req.buildResourceUrl(userResource.parent) is '/users/'
});
// will trigger for POST /users/users/create with special appendix path name only
// will trigger for POST /users/create with special appendix path name only
traverse.registerPath('usersResource', {method: 'post', name: 'create'}, function(req, res) {
// req.pathname = 'create'
var resource = req.resource //UsersResource
var resource = req.resource //usersResource
});
// will trigger for GET /users/users/random/222/333 with special appendix path name only
traverse.registerPath('users', {method: 'post', name: 'random'}, function(req, res) {
// req.pathname = 'random'
// will trigger for GET /users/random/222/333 with special appendix path name only
traverse.registerPath('usersResource', {method: 'post', name: 'random'}, function(req, res) {
// req.pathname == 'random'
// req.resource //UsersResource
// also contains subpath list
// req.subpath = ['222', '333']
var resource = req.resource //UsersResource
// req.subpath == ['222', '333']
var resource = req.resource //usersResource
res.send('users');

@@ -125,5 +130,5 @@ });

// but not for /news because of specified parent resource.
traverse.registerPath('news', {parent: 'userResource'}, function(req, res) {
req.parent // RootResource
var resource = req.resource //NewsResource
traverse.registerPath('newsResource', {parent: 'userResource'}, function(req, res) {
var resource = req.resource // newsResource
resource.parent // userResource
res.send(resource.getNews());

@@ -130,0 +135,0 @@ });

Sorry, the diff of this file is not supported yet

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