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

ee-soa-transport-rest

Package Overview
Dependencies
Maintainers
3
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ee-soa-transport-rest - npm Package Compare versions

Comparing version 0.2.5 to 0.3.0

lib/visitor/AndList.js

18

lib/factory/HTTPRequestFactory.js

@@ -217,3 +217,2 @@ var Class = require('ee-class'),

, _setupSelects: function(base, request, original){
var selectHeader = original.getHeader('Select', true);

@@ -229,13 +228,12 @@ if(selectHeader){

, _setupFilters: function(base, request, original) {
var filterHeader = original.getHeader('Filter', true);
if(filterHeader) {
var filterVisitor = new visitor.FilterVisitor(base.getName()),
filters = filterHeader.accept(filterVisitor);
var filterHeader = original.getHeader('Filter', true);
if(filterHeader) {
var filterVisitor = new visitor.FilterVisitor(base.getName()),
filters = filterHeader.accept(filterVisitor);
request.setFilters(filters);
}
request.setFilters(filters);
}
}
, _setupOrder: function(base, request, original){
var orderHeader = original.getHeader('Order', true);

@@ -246,4 +244,4 @@ if(orderHeader){

var len = order.length,
orderings = {};
var len = order.length,
orderings = {};

@@ -250,0 +248,0 @@ for(var i=0; i<len; i++){

@@ -169,6 +169,7 @@ "use strict";

callback();
} catch(err){
callback(err);
log(err);
return callback(err);
}
return callback();
}

@@ -232,2 +233,3 @@

, request: function(req, res, next){
var startTime = Date.now()

@@ -237,3 +239,2 @@ , response = this._createEmptyResponse();

response.language = req.language;
this._createInternalRequest(req, function(err, request){

@@ -250,3 +251,2 @@ if(err) {

}
// as soon as someone has ended the response stream

@@ -260,2 +260,3 @@ // or did call the send method, we send it back to the client

this.emit('request', request, response);

@@ -262,0 +263,0 @@ }.bind(this));

"use strict";
var request = require('ee-soa-request')
, types = require('ee-types');
/**
* [
* {
* event: {
* id: 10
* , operator: '>'
* }
* , venue: {
* address: {
* postalcode: [
* { operator: '>', value: 4500 }
* , {operator: '<', value: 5000 }
* ]
* }
* }
* }
*/
var Types = require('ee-types')
, Class = require('ee-class')
var Class = require('ee-class');
, OrList = require('./OrList')
, AndList = require('./AndList')
, NormalizingVisitor = require('./NormalizingVisitor');
var FilterVisitor = {
var FilterVisitor = module.exports = new Class({
baseEntity: null
, namespaces: {}
inherits: NormalizingVisitor
, baseEntity: null
, init: function initialize(baseEntity) {
// initialize.parent();
this.baseEntity = baseEntity
, setBaseEntity: function(entity){
this.baseEntity = entity || '';
return this;
}
, getBaseEntity: function(){
return this.baseEntity
, visitFilterStatement: function(node){
return this.pushAll(node, new OrList());
}
, setBaseEntity: function(baseEntity){
this.baseEntity = baseEntity;
return this;
, visitSequence: function(node){
return this.pushAll(node, new AndList());
}
, visitFilterStatement: function(nodes){
this.namespaces = {};
var filters = new request.filter.FilterCollection();
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
node.accept(this);
}
// todo: transform this to a filter collection;
return this.namespaces;
, visitChoice: function(node){
return this.pushAll(node, new OrList());
}
, visitNodeCollection: function(nodes){
var result = [];
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
result.push(node.accept(this))
}
return result;
}
, visitComparisonNode: function(node){
var current = this.namespaces,
names = node.getProperty().accept(this),
first = names[0],
value = node.getValue();
, visitComparison: function(node){
var comp = {
fields: node.identifier.accept(this)
, function: node.comparator
, value: node.value.accept(this)
};
for (var i = 0; i < names.length-1; i++) {
var name = names[i];
if(!current[name]){
current[name] = {};
}
current = current[name];
if(Types.function(comp.value)){
var info = comp.value();
comp.function = info.name;
comp.value = info.parameters;
}
name = names[i];
if(!current[name]){
current[name] = [];
}
current[name].push({
operator: node.getOperator()
, value: value.accept(this)
});
return comp;
}
, visitActionNode: function(node){
var parameters = node.getParameters().accept(this);
return function(){
return {
name: node.getName()
, parameters: parameters
};
};
name: node.getName()
, parameters: node.parameters
}
}
}
, visitValueNode: function(node){
return node.getValue();
return node.value;
}
, visitVariableNode: function(node){
return this._getAndNormalizeNames(node);
}
, visitPropertyNode: function(node){
return this._getAndNormalizeNames(node);
}
, _getAndNormalizeNames: function(node){
var names = node.getNames().slice(0);
if(names[0] === this.baseEntity){
names.shift();
}
return names;
}
};
module.exports = new Class(FilterVisitor);
});
"use strict";
var request = require('ee-soa-request')
, types = require('ee-types');
var Class = require('ee-class');
var Class = require('ee-class')
, NormalizingVisitor = require('./NormalizingVisitor');
/**

@@ -10,24 +10,6 @@ * todo: implement hierarchical ordering

*/
var OrderVisitor = {
var OrderVisitor = module.exports = new Class({
baseEntity: null
, namespaces: {}
inherits: NormalizingVisitor
, init: function initialize(baseEntity) {
// initialize.parent();
this.baseEntity = baseEntity
}
, getBaseEntity: function(){
return this.baseEntity
}
, setBaseEntity: function(baseEntity){
this.baseEntity = baseEntity;
return this;
}
/**
* @param nodes
* @returns {Array}
*/
, visitOrderStatement: function(nodes){

@@ -43,21 +25,13 @@ var orderings = [];

, visitVariableNode: function(node){
return { name: [ node.getName() ], direction: node.getTags().shift() || "ASC" };
, visitOrdering: function(node){
return {
name: node.value.accept(this)
, direction: node.direction
}
}
, visitPropertyNode: function(node){
var names = this._getAndNormalizeNames(node);
return { name: names, direction: node.getTags().shift() || "ASC" };
// todo: this is for compatibility reasons, but hopefully never used
, visitActionNode: function(node){
return [ node.name ]
}
, _getAndNormalizeNames: function(node){
var names = node.getNames().slice(0);
if(names[0] === this.baseEntity){
names.shift(this.baseEntity);
}
return names;
}
};
module.exports = new Class(OrderVisitor);
});
"use strict";
var Class = require('ee-class');
var Class = require('ee-class')
, NormalizingVisitor = require('./NormalizingVisitor');
var SelectVisitor = {
var SelectVisitor = module.exports = new Class({
baseEntity: null,
inherits: NormalizingVisitor
init: function initialize(baseEntity) {
// initialize.parent();
this.baseEntity = baseEntity
}
, getBaseEntity: function(){
return this.baseEntity
}
, setBaseEntity: function(baseEntity){
this.baseEntity = baseEntity
return this;
}
, visitSelectStatement: function(node){

@@ -31,18 +18,2 @@ var names = []

, visitVariableNode: function(node){
return this._getAndNormalizeNames(node);
}
, visitPropertyNode: function(node){
return this._getAndNormalizeNames(node);
}
, _getAndNormalizeNames: function(node){
var names = node.getNames().slice(0);
if(names[0] === this.baseEntity){
names.shift(this.baseEntity);
}
return names;
}
, _reduceSelections: function(fields){

@@ -101,4 +72,2 @@ if(!fields){

};
module.exports = new Class(SelectVisitor);
});
{
"name" : "ee-soa-transport-rest"
, "description" : "Rest specific transport implementation."
, "version" : "0.2.5"
, "version" : "0.3.0"
, "homepage" : "https://github.com/eventEmitter/ee-soa-transport-rest"

@@ -26,3 +26,3 @@ , "author" : "Michael Rüfenacht <ruefe@rcky.ch> (http://rcky.ch/)"

, "em-formdata-collector" : "0.1.*"
, "ee-rest-headers" : "0.1.x"
, "ee-rest-headers" : "0.2.x"
, "ee-soa-request" : "0.2.x"

@@ -29,0 +29,0 @@ , "ee-templates" : "0.3.*"

var assert = require('assert')
, log = require('ee-log')
, Class = require('ee-class')
, Webserver = require('ee-webserver');

@@ -14,2 +15,7 @@

var Err = new Class({
inherits: Error
});
function getOptions(){

@@ -31,10 +37,13 @@ return {

var transport = new HTTPTransport({interface: 5, port:'8080'});
transport.use(new TestWebsite());
transport.on('request', function(request, response){
var transport = new HTTPTransport({interface: 5, port:'8080'})
, listener = function(request, response){
// just send the request back with some data
response.send(response.statusCodes.OK, {test: 'succeeded'});
});
};
transport.use(new TestWebsite());
transport.on('request', listener);
describe('Null Path Requests', function(){

@@ -78,2 +87,6 @@

});
it("should add a cache control header", function(){
assert.equal(mockResponse.headers['cache-control'], 'no-transform');
});
});

@@ -180,15 +193,19 @@

it("should parse the order headers", function(done){
transport.on('request', function(req, res){
var expected = {
thing: {
id: 'ASC'
}
, category: {
location: {
title: 'DESC'
, postalcode: 'ASC'
transport.off('request');
transport.on('request', function(req, response){
var order = {
api: {
thing: {
id: "ASC"
}
, category: {
location: {
title: "DESC"
, postalcode: "ASC"
}
}
}
};
assert.deepEqual(req.getOrder(), expected);
assert.deepEqual(order, req.getOrder());
done();

@@ -199,2 +216,34 @@ });

});
describe('Select Headers Test', function(){
var options = getOptions();
options.url = '/api/';
options.headers.accept = 'application/json;q=1';
options.headers.select = 'thing.id, location.title, location.city.postalcode, id, version';
var mockRequest = new Webserver.testing.MockRequest(options)
, testRequest = new Webserver.Request({request: mockRequest})
, responseOptions = {}
, mockResponse = new Webserver.testing.MockResponse(responseOptions)
, testResponse = new Webserver.Response({
request: testRequest
, response: mockResponse
});
it("should load without errors", function(done){
transport.onLoad(done);
transport.useTransport();
});
it("should parse the select headers", function(done){
transport.off('request');
transport.on('request', function(req, res){
var test = null;
assert(req.hasSubRequests());
done();
});
transport.testRequest(testRequest, testResponse);
});
});
});
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