Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

clues

Package Overview
Dependencies
Maintainers
2
Versions
158
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

clues - npm Package Compare versions

Comparing version 3.2.3 to 3.2.4

2

package.json
{
"name": "clues",
"version": "3.2.3",
"version": "3.2.4",
"description": "Lightweight logic tree solver using promises.",

@@ -5,0 +5,0 @@ "keywords": [

@@ -9,7 +9,5 @@ (function(self) {

request = require('request');
fetch.prototype.request = fetch.prototype.nodeRequest;
} else {
self.reptile = reptile;
clues = self.clues;
fetch.prototype.request = fetch.prototype.ajaxRequest;
}

@@ -19,130 +17,93 @@

function fetch(queue,input,options) {
if (!(this instanceof fetch))
return new fetch(queue,input,options);
this.queue = queue;
function fetch() {
var self = this,
buffer = '',
queue = self.$queue;
this.input = input;
this.buffer = '';
this.options = options || {};
this.options.delay = this.options.delay || 100;
this.request();
}
delete self.$queue;
fetch.prototype.ajaxRequest = function() {
var r = new XMLHttpRequest(),
self = this,
last = 0;
if (!queue || !Object.keys(queue).length)
return;
r.open('POST',this.options.url+Object.keys(this.queue),true);
r.setRequestHeader('Content-Type','application/json;charset=UTF-8');
r.send(JSON.stringify(this.input));
r.onprogress = function() {
self.processBuffer(r.responseText.slice(last));
last = r.responseText.length;
};
r.onload = function() {
self.processBuffer(r.responseText.slice(last));
};
};
self.data = self.data || {};
fetch.prototype.nodeRequest = function() {
request({
url : this.options.url+Object.keys(this.queue),
method : 'POST',
json : this.input
})
.on('data',this.processBuffer.bind(this))
.on('error',this.requestFailed.bind(this));
};
var r = new XMLHttpRequest(),
last = 0;
fetch.prototype.requestFailed = function(e) {
Object.keys(this.queue)
.forEach(function(key) {
this.queue[key].reject(e);
},this);
};
r.open('POST','/api/'+Object.keys(queue).join(','),true);
r.setRequestHeader('Content-Type','application/json;charset=UTF-8');
r.send(JSON.stringify(self.$input));
r.onprogress = function() {
processBuffer(r.responseText.slice(last));
last = r.responseText.length;
};
r.onload = function() {
processBuffer(r.responseText.slice(last));
};
fetch.prototype.processBuffer = function(d) {
if (d) this.buffer += d;
function processBuffer(d) {
if (d) buffer += d;
var queue = this.queue;
var items = this.buffer.split(',\t\n');
this.buffer = items.slice(items.length-1)[0];
var items = buffer.split(',\t\n');
buffer = items.slice(items.length-1)[0];
if (items.length < 2) return;
items.slice(0,items.length-1)
.forEach(function(item) {
var m = /\s*\"(.*?)\"\s*\:\s*(.*)/.exec(item);
if (!m) return;
if (items.length < 2) return;
items.slice(0,items.length-1)
.forEach(function(item) {
var m = /\s*\"(.*?)\"\s*\:\s*(.*)/.exec(item);
if (!m) return;
var key = m[1],value;
if (!queue[key]) return;
var key = m[1],value;
if (!self[key]) return;
try {
value = JSON.parse(m[2]);
} catch(e) {
value = {error:true,message:'JSON parse error: '+e};
}
console.log(key,value)
if (value && value.error)
queue[key].reject(value);
else
queue[key].resolve(value);
});
};
try {
value = JSON.parse(m[2]);
} catch(e) {
value = {error:true,message:'JSON parse error: '+e};
}
if (value && value.error)
queue[key].reject(value);
else
queue[key].resolve(value);
self.data[key] = value;
});
if (typeof self.$applyFn === 'function')
self.$applyFn();
}
}
function fetcher(options) {
var queue = {},
next,
inputLock;
reptile.external = function(options) {
options = options || {};
options.delay = options.delay || 100;
return function (ref) {
var defer = Promise.defer(),
self = this;
return function(ref) {
return function(input) {
// Ensure that input object is consistent
if (inputLock && input !== inputLock) {
queue = {};
return Promise.rejected('INCONSISTENT_INPUT');
if (!self.$queue) {
Promise.delay(options.delay || 30)
.then(fetch.bind(self,options));
self.$queue = {};
}
inputLock = input;
// Fire off the fetch after an optional delay
if (!next) next = Promise.delay(options.delay)
.then(function() {
fetch(queue,input,options);
queue={};
input={};
next = undefined;
inputLock=undefined;
});
return (queue[ref] = Promise.defer()).promise;
};
self.$queue[ref] = defer;
return defer.promise;
};
}
reptile.fetcher = fetcher;
reptile.fetch = fetch;
reptile.$external = function(options) {
return {
$external : reptile.fetcher(options)
};
};
reptile.render = function(obj,element,tiles) {
var keys = element.dataset.reptile.split(','),
key;
reptile.render = function(obj,widgets,element) {
var self = this;
var keys = element.dataset.reptile.split(','),key;
tiles = tiles || (window && window.tiles);
function renderKey() {
key = keys.shift();
return clues(obj,widgets[key],{element:element})
return clues(obj,tiles[key],{element:element})
.catch(function(e) {
if (keys.length) return renderKey();
element.innerHTML = 'Error: '+e.message+' ('+e.ref+')';
})
.then(function(d) {
obj.data[key] = d;
return d;
});

@@ -153,8 +114,8 @@ }

reptile.renderAll = function(element) {
var self = this;
reptile.renderAll = function(obj,element,tiles) {
if (!element && !window) throw 'Not in a browser - element must be provided';
tiles = tiles || (window && window.tiles);
var selection = (element || window.document).querySelectorAll('[data-reptile]'),
items = [].map.call(selection,function(d) {
return self.render(d);
return reptile.render(obj,d,tiles);
});

@@ -164,2 +125,15 @@ return Promise.settle(items);

})(this);
// Very hacky - needs to be addressed
reptile.api = function(obj,options) {
obj = obj || {};
obj.api = obj.api || {};
obj.api.data = obj.data = obj.data || {};
obj.api.$input = obj.$input;
obj.api.$applyFn = obj.$applyFn;
obj.api.$external = reptile.external(options);
obj.$render = reptile.render.bind(obj,obj);
obj.$renderAll = reptile.renderAll.bind(obj,obj);
return obj;
};
})(this);
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