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

ql.io-compiler

Package Overview
Dependencies
Maintainers
1
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ql.io-compiler - npm Package Compare versions

Comparing version 0.6.4 to 0.6.5

112

lib/compiler.js

@@ -123,18 +123,11 @@ /*

// Start with the return statement and create the plan.
_.each(compiled, function(line) {
walk(line, symbols);
});
walk(ret, symbols);
if(ret.rhs) {
_.each(ret.rhs.dependsOn, function(dependency) {
ret.dependsOn.push(dependency);
});
delete ret.rhs.dependsOn;
}
// Reverse links from dependencies and pickup orphans
// TODO: no extra walk necessary
var used = [];
function rev(node) {
used.push(node.id);
_.each(node.dependsOn, function(dependency) {
dependency.listeners = dependency.listeners || [];
dependency.listeners.push(node);
used.push(dependency.id);

@@ -144,2 +137,3 @@ rev(dependency);

if(node.fallback) {
used.push(node.fallback.id);
rev(node.fallback);

@@ -149,6 +143,10 @@ node.fallback.listeners = node.listeners;

}
rev(ret);
used.push(ret.rhs.id);
rev(ret.rhs);
_.each(compiled, function(line) {
rev(line);
});
used.push(ret.id);
// Insert all orphans at the beginning of dep arr. Orphans occur when depednencies are based on
// Insert all orphans at the beginning of dep arr. Orphans occur when dependencies are based on
// body templates but the language has no way of knowing such dependencies.

@@ -165,5 +163,4 @@ // Orphans include create table statements.

orphans.push(line);
addListener(line, ret.rhs);
}
line.listeners = line.listeners || [];
line.listeners.push(ret);
if(line.fallback) {

@@ -174,5 +171,7 @@ line.fallback.listeners = line.listeners;

});
ret.rhs.return = ret;
// Insert creates before orphans.
ret.dependsOn = orphans.concat(ret.dependsOn);
ret.dependsOn = creates.concat(ret.dependsOn);
ret.rhs.dependsOn = orphans.concat(ret.rhs.dependsOn);
ret.rhs.dependsOn = creates.concat(ret.rhs.dependsOn);

@@ -190,18 +189,10 @@ return ret;

if(dependency) {
addDep(line.dependsOn, dependency, symbols);
addDep(line, line.dependsOn, dependency, symbols);
}
break;
case 'define':
introspectObject(line.object, symbols, line.dependsOn);
introspectObject(line.object, symbols, line.dependsOn, line);
break;
case 'return':
if(line.rhs.ref) {
dependency = symbols[line.rhs.ref];
if(dependency) {
addDep(line.dependsOn, dependency, symbols);
}
}
else {
walk(line.rhs, symbols);
}
walk(line.rhs, symbols);

@@ -217,4 +208,4 @@ if(line.fallback) {

_.each(line.route.headers, function(value, name) {
introspectString(value, symbols, line.dependsOn);
introspectString(name, symbols, line.dependsOn);
introspectString(value, symbols, line.rhs.dependsOn, line.rhs);
introspectString(name, symbols, line.rhs.dependsOn, line.rhs);
})

@@ -251,10 +242,37 @@ }

function addDep(dependsOn, dependency, symbols) {
function addListener(node, listener) {
var contains = false;
node.listeners = node.listeners || [];
for(var i = 0; i < node.listeners.length; i++) {
if(node.listeners[i].id === listener.id) {
contains = true;
break;
}
}
if(!contains) {
node.listeners.push(listener);
}
}
function addDep(line, dependsOn, dependency, symbols) {
var contains = false;
dependency.listeners = dependency.listeners || [];
for(i = 0; i < dependency.listeners.length; i++) {
if(dependency.listeners[i].id === line.id) {
contains = true;
break;
}
}
if(!contains) {
dependency.listeners.push(line);
}
contains = false;
for(var i = 0; i < dependsOn.length; i++) {
contains = _.isEqual(dependsOn[i], dependency);
if(contains) {
if(dependsOn[i].id === dependency.id) {
contains = true;
break;
}
}
if(!contains) {

@@ -269,3 +287,3 @@ dependsOn.push(dependency);

//
function introspectString(v, symbols, dependsOn) {
function introspectString(v, symbols, dependsOn, line) {
try {

@@ -288,3 +306,3 @@ var parsed = strParser.parse(v);

if(!contains) {
addDep(dependsOn, dependency, symbols);
addDep(line, dependsOn, dependency, symbols);
}

@@ -299,9 +317,9 @@ }

function introspectObject(obj, symbols, dependsOn) {
function introspectObject(obj, symbols, dependsOn, line) {
if(_.isString(obj)) {
introspectString(obj, symbols, dependsOn);
introspectString(obj, symbols, dependsOn, line);
}
else if(_.isArray(obj)) {
_.each(obj, function(v) {
introspectObject(v, symbols, dependsOn);
introspectObject(v, symbols, dependsOn, line);
});

@@ -312,3 +330,3 @@ }

if(_.isString(v)) {
introspectString(v, symbols, dependsOn);
introspectString(v, symbols, dependsOn, line);
}

@@ -318,3 +336,3 @@ else if(_.isArray(v)) {

_.each(v, function(vi) {
introspectObject(vi, symbols, dependsOn);
introspectObject(vi, symbols, dependsOn, line);
});

@@ -324,3 +342,3 @@ ret[n] = arr;

else {
introspectObject(v, symbols, dependsOn);
introspectObject(v, symbols, dependsOn, line);
}

@@ -344,6 +362,6 @@ });

if(parent) {
addDep(parent.dependsOn, dependency, symbols);
addDep(parent, parent.dependsOn, dependency, symbols);
}
else {
addDep(line.dependsOn, dependency, symbols);
addDep(line, line.dependsOn, dependency, symbols);
}

@@ -362,6 +380,6 @@ }

if(parent) {
addDep(parent.dependsOn, dependency, symbols);
addDep(parent, parent.dependsOn, dependency, symbols);
}
else {
addDep(line.dependsOn, dependency, symbols);
addDep(line, line.dependsOn, dependency, symbols);
}

@@ -405,3 +423,3 @@ }

else if(dependency) {
addDep(line.dependsOn, dependency, symbols);
addDep(line, line.dependsOn, dependency, symbols);
}

@@ -439,3 +457,3 @@ }

else {
addDep(line.dependsOn, dependency, symbols);
addDep(parent || line, (parent || line).dependsOn, dependency, symbols);
}

@@ -457,3 +475,3 @@ }

else {
addDep(line.dependsOn, dependency, symbols);
addDep(line, line.dependsOn, dependency, symbols);
}

@@ -460,0 +478,0 @@ }

{
"author": "ql.io",
"name": "ql.io-compiler",
"version": "0.6.4",
"version": "0.6.5",
"repository": {

@@ -6,0 +6,0 @@ "type": "git",

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