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

thinky

Package Overview
Dependencies
Maintainers
1
Versions
129
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

thinky - npm Package Compare versions

Comparing version 2.0.8 to 2.0.9

49

lib/document.js

@@ -436,3 +436,7 @@ var schemaUtil = require(__dirname+'/schema.js');

var result, key, keys, nextSchema, copyFlag;
if (type.isDate(schema) && (typeof doc === 'string')) {
if (type.isDate(schema) && (typeof doc === 'string' || typeof doc === 'number')) {
var numericDate = parseInt(doc, 10);
if(!isNaN(numericDate)) {
doc = numericDate;
}
return new Date(doc); // Use r.ISO8601 and not `new Date()` to keep timezone

@@ -459,2 +463,10 @@ }

}
else if (type.isNumber(schema) && (typeof doc === 'string')) {
var numericString = parseFloat(doc);
if(!isNaN(numericString)){
return numericString;
}else{
return doc;
}
}

@@ -585,13 +597,8 @@ if (util.isPlainObject(doc) && (doc instanceof Buffer === false)) {

Document.prototype._batchSaveSelf = function(executeInsert) {
var model = this._getModel();
var self = this;
return new Promise(function(resolve, reject) {
if (model._tableReady === true) {
self.getModel().ready().then(function() {
executeInsert(resolve, reject)
}
else {
model._onTableReady.push(function() {
executeInsert(resolve, reject)
});
}
});
})

@@ -658,14 +665,7 @@ }

//TODO Remove once
if (model._tableReady === true) {
self.getModel().ready().then(function() {
Promise.all(promises).then(function() {
self._onSavedBelongsTo(copy, docToSave, belongsToKeysSaved, saveAll, savedModel, resolve, reject);
}).error(reject);
}
else {
model._onTableReady.push(function() {
Promise.all(promises).then(function() {
self._onSavedBelongsTo(copy, docToSave, belongsToKeysSaved, saveAll, savedModel, resolve, reject);
}).error(reject);
});
}
});
});

@@ -777,3 +777,3 @@ return p.nodeify(callback);

var saveSelfHelper = function() {
self.getModel().ready().then(function() {
util.tryCatch(function() {

@@ -797,12 +797,3 @@ // Validate the document before saving it

}, reject);
}
if (self.__proto__._model._tableReady === true) {
saveSelfHelper();
}
else {
model.once('ready', function() {
saveSelfHelper();
})
}
});
}

@@ -809,0 +800,0 @@

@@ -49,10 +49,4 @@ var util = require(__dirname+'/util.js');

this._tableCreated = false;
this._tableReady = false;
this._onTableCreated = [];
this._onTableReady = [];
this._indexesFetched = false; // Whether the indexes were fetched or not
this._indexesToCreate = 0;
this._foreignIndexesToCreate = 0; // many to many indexes left to create
this._indexes = {}; // indexName -> true
this._pendingPromises = [];

@@ -97,2 +91,3 @@ this._error = null; // If an error occured, we won't let people save things

var proto = new Model(name, schema, options, thinky);
proto._initModel = options.init !== undefined ? !!options.init : true;

@@ -166,2 +161,13 @@ var model = function model(doc, options) {

if (options.init !== false) {
// Setup the model's table.
model.tableReady().then();
}
else {
// We do not initialize the table and suppose that it already exists and
// is ready.
model.emit('created');
model.emit('ready');
}
// So people can directly call the EventEmitter from the constructor

@@ -182,58 +188,92 @@ // TOIMPROVE: We should emit everything from the constructor instead of emitting things from

Model.prototype.isReady = function() {
return this._getModel()._tableReady;
}
/**
* Create the model's table.
* @return {Promise=} Returns a promise which will resolve when the table is ready.
*/
Model.prototype.tableReady = function() {
var self = this;
var model = this._getModel();
if (!this._initModel) return Promise.resolve();
if (this._tableReadyPromise) return this._tableReadyPromise;
Model.prototype._setError = function(error) {
this._getModel()._error = error;
this.emit('error', error);
}
// Create the table, or push the table name in the queue.
var r = model._thinky.r;
this._tableReadyPromise = model._thinky.dbReady()
.then(function() {
return r.tableCreate(model._name, {primaryKey: model._pk}).run();
})
.error(function(error) {
if (error.message.match(/Table `.*` already exists/)) {
return;
}
model._error = error;
// Should we throw here?
});
Model.prototype._setReady = function() {
this._getModel()._tableReady = true;
this.emit('ready', this);
while (this._getModel()._onTableReady.length > 0) {
this._getModel()._onTableReady.shift()();
}
}
return this._tableReadyPromise.then(function() {
self.emit('created');
if (!self._pendingPromises.length) {
self.emit('ready');
}
});
};
Model.prototype._indexWasCreated = function(type) {
if (type === 'local') {
this._getModel()._indexesToCreate--;
}
else if (type === 'foreign') {
this._getModel()._foreignIndexesToCreate--;
}
// We need to check tableCreated because _indexWasCreated can be called when a foreign index is built.
if ((this._getModel()._tableCreated === true)
&& (this._getModel()._indexesToCreate === 0)
&& (this._getModel()._foreignIndexesToCreate === 0)
&& (this._getModel()._indexesFetched === true)) {
/**
* Get a promise which resolves when the Model's table and
* all indices have been created.
*/
Model.prototype.ready = function() {
var requirements = [];
this._setReady();
}
}
// Ensure the Model's table is ready
requirements.push(this.tableReady());
// Ensure all other pending promises have been resolved
requirements.push(this._promisesReady());
Model.prototype._tableWasCreated = function() {
return Promise.all(requirements);
};
Model.prototype._promisesReady = function() {
var self = this;
if (this._promisesReadyPromise) return this._promisesReadyPromise;
self._getModel()._tableCreated = true;
while (this._getModel()._onTableCreated.length > 0) {
this._getModel()._onTableCreated.shift()();
}
var verifyAll = function() {
return Promise.all(self._pendingPromises)
.then(function() {
var i, allFullfilled = true;
for (i=0; i<self._pendingPromises.length; i++) {
if (!self._pendingPromises[i].isFulfilled()) {
allFullfilled = false;
break;
}
}
return allFullfilled ? Promise.resolve() : verifyAll();
});
};
self.emit('created');
this._promisesReadyPromise = verifyAll();
return this._promisesReadyPromise;
};
self.fetchIndexes().then(function() {
if ((self._getModel()._indexesToCreate === 0)
&& (self._getModel()._foreignIndexesToCreate === 0)) {
// Will trigger the queries waiting
this._setReady();
}
}).error(function(error) {
self._error = error;
})
Model.prototype._waitFor = function(promise) {
var self = this;
this._pendingPromises.push(promise);
// Emit 'ready' when all pending promises have resolved
if (!this._pendingReady) {
this._pendingReady = this._promisesReady().then(function() {
delete self._pendingReady;
self.emit('ready', self);
});
}
};
Model.prototype._setError = function(error) {
this._getModel()._error = error;
this.emit('error', error);
}
/*

@@ -262,45 +302,23 @@ * Return the options of the model -- call from an instance of Model

Model.prototype.fetchIndexes = function() {
Model.prototype.ensureIndex = function(name, fn, opts) {
var self = this;
return new Promise(function(resolve, reject) {
var fetch = function() {
var r = self._thinky.r;
var query = new Query(self);
r.table(self.getTableName()).indexList().do(function(indexes) {
return r.table(self.getTableName()).indexWait(r.args(indexes))
}).run().then(function(indexes) {
for(var i=0; i<indexes.length; i++) {
self._getModel()._indexes[indexes[i].index] = true;
}
self._getModel()._indexesFetched = true;
if ((opts === undefined) && (util.isPlainObject(fn))) {
opts = fn;
fn = undefined;
}
if ((self._getModel()._tableCreated === true)
&& (self._getModel()._indexesToCreate === 0)
&& (self._getModel()._foreignIndexesToCreate === 0)) {
self._setReady();
}
}).error(function(error) {
self._getModel()._setError(error);
});
}
if (self._getModel()._tableCreated === true) {
fetch();
}
else {
self._getModel()._onTableCreated.push(fetch);
}
return self._createIndex(name, fn, opts)
.catch(function(error) {
self._getModel()._setError(error);
throw error;
});
}
Model.prototype.ensureIndex = function(name, fn, opts) {
var self = this;
var r = self._getModel()._thinky.r;
Model.prototype._createIndex = function(name, fn, opts) {
var model = this._getModel();
var tableName = this.getTableName();
var r = model._thinky.r;
if ((opts === undefined) && (util.isPlainObject(fn))) {
if (opts === undefined && util.isPlainObject(fn)) {
opts = fn;

@@ -310,11 +328,4 @@ fn = undefined;

self._getModel()._indexesToCreate++;
self._getModel()._tableReady = false;
return new Promise(function(resolve, reject) {
var ensureIndex = function() {
if (fn === undefined) {
fn = function(doc) { return doc(name) };
}
var tableName = self.getTableName();
var promise = this.tableReady().then(function() {
return new Promise(function(resolve, reject) {
return r.branch(

@@ -324,35 +335,30 @@ r.table(tableName).indexList().contains(name),

r.branch(
r.table(tableName).info()("primary_key").eq(name),
r.table(tableName).info()('primary_key').eq(name),
r.table(tableName).indexWait(name),
r.table(tableName).indexCreate(name, fn, opts || {}).do(function() {
return r.table(tableName).indexWait(name)
r.table(tableName).indexCreate(name, fn, opts).do(function() {
return r.table(tableName).indexWait(name);
})
)
).run().then(function(result) {
self._getModel()._indexes[name] = true;
self._indexWasCreated('local');
resolve();
}).error(function(error) {
if (error.message.match(/^Index `/)) {
self._indexWasCreated('local');
)
.run()
.then(resolve)
.error(function(error) {
if (error.message.match(/^Index/)) {
// TODO: This regex seems a bit too generous since messages such
// as "Index `id` was not found on table..." will be accepted.
// Figure out if this is OK or not.
return resolve();
}
else {
self._getModel()._setError(error);
}
reject(error);
});
});
})
.then(function() {
model._indexes[name] = true;
});
reject(error)
})
this._waitFor(promise);
return promise;
};
}
if (self._getModel()._tableCreated === true) {
ensureIndex();
}
else {
self._getModel()._onTableCreated.push(ensureIndex);
}
})
}
/*

@@ -399,65 +405,8 @@ * joinedModel: the joined model

if (options.init !== false) {
var tableName = joinedModel.getTableName();
var r = joinedModel._getModel()._thinky.r;
joinedModel._getModel()._indexesToCreate++;
self._getModel()._foreignIndexesToCreate++;
self._getModel()._tableReady = false;
joinedModel._getModel()._tableReady = false;
if (joinedModel._getModel()._tableCreated === true) {
return r.branch(
r.table(tableName).indexList().contains(rightKey),
r.table(tableName).indexWait(rightKey),
r.branch(
r.table(tableName).info()("primary_key").eq(rightKey),
r.table(tableName).indexWait(rightKey),
r.table(tableName).indexCreate(rightKey).do(function() {
return r.table(tableName).indexWait(rightKey)
})
)
).run().then(function(result) {
joinedModel._indexWasCreated('local');
joinedModel._getModel()._indexes[rightKey] = true;
self._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `/)) {
joinedModel._indexWasCreated('local');
self._indexWasCreated('foreign');
}
else {
joinedModel._getModel()._setError(error);
self._getModel()._setError(error);
}
})
}
else {
joinedModel._getModel()._onTableCreated.push(function() {
r.branch(
r.table(tableName).indexList().contains(rightKey),
r.table(tableName).indexWait(rightKey),
r.branch(
r.table(tableName).info()("primary_key").eq(rightKey),
r.table(tableName).indexWait(rightKey),
r.table(tableName).indexCreate(rightKey).do(function() {
return r.table(tableName).indexWait(rightKey)
})
)
).run().then(function() {
joinedModel._indexWasCreated('local');
joinedModel._getModel()._indexes[rightKey] = true;
self._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `/)) {
joinedModel._indexWasCreated('local');
self._indexWasCreated('foreign');
}
else {
joinedModel._getModel()._setError(error);
self._getModel()._setError(error);
}
})
})
}
var newIndex = joinedModel._createIndex(rightKey)
.catch(function(error) {
joinedModel._getModel()._setError(error);
self._getModel()._setError(error);
});
self._waitFor(newIndex);
}

@@ -507,57 +456,8 @@ }

if (options.init !== false) {
var tableName = self.getTableName();
var r = self._getModel()._thinky.r;
self._getModel()._indexesToCreate++;
joinedModel._getModel()._foreignIndexesToCreate++;
self._getModel()._tableReady = false;
joinedModel._getModel()._tableReady = false;
var query = r.branch(
r.table(tableName).indexList().contains(leftKey),
r.table(tableName).indexWait(leftKey),
r.branch(
r.table(tableName).info()("primary_key").eq(leftKey),
{index: leftKey, ready: true},
r.table(tableName).indexCreate(leftKey).do(function() {
return r.table(tableName).indexWait(leftKey)
})
)
)
if (self._getModel()._tableCreated === true) {
query.run().then(function(result) {
self._indexWasCreated('local');
joinedModel._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `/)) {
self._indexWasCreated('local');
self._getModel()._indexes[leftKey] = true;
joinedModel._indexWasCreated('foreign');
}
else {
joinedModel._getModel()._setError(error);
self._getModel()._setError(error);
}
})
}
else {
self._getModel()._onTableCreated.push(function() {
query.run().then(function() {
self._indexWasCreated('local');
self._getModel()._indexes[leftKey] = true;
joinedModel._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `/)) {
self._indexWasCreated('local');
joinedModel._indexWasCreated('foreign');
}
else {
joinedModel._getModel()._setError(error);
self._getModel()._setError(error);
}
});
})
}
var newIndex = self._createIndex(leftKey)
.catch(function(error) {
joinedModel._getModel()._setError(error);
self._getModel()._setError(error);
});
joinedModel._waitFor(newIndex);
}

@@ -600,57 +500,8 @@ }

if (options.init !== false) {
var tableName = joinedModel.getTableName();
var r = self._getModel()._thinky.r;
var query = r.branch(
r.table(tableName).indexList().contains(rightKey),
r.table(tableName).indexWait(rightKey),
r.branch(
r.table(tableName).info()("primary_key").eq(rightKey),
{index: rightKey, ready: true},
r.table(tableName).indexCreate(rightKey).do(function() {
return r.table(tableName).indexWait(rightKey)
})
)
)
joinedModel._getModel()._indexesToCreate++;
self._getModel()._foreignIndexesToCreate++;
self._getModel()._tableReady = false;
joinedModel._getModel()._tableReady = false;
if (joinedModel._getModel()._tableCreated === true) {
query.run().then(function(result) {
joinedModel._indexWasCreated('local');
joinedModel._getModel()._indexes[rightKey] = true;
self._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `.*` already exists/)) {
joinedModel._indexWasCreated('local');
self._indexWasCreated('foreign');
}
else {
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
}
})
}
else {
joinedModel._getModel()._onTableCreated.push(function() {
query.run().then(function() {
joinedModel._indexWasCreated('local');
joinedModel._getModel()._indexes[rightKey] = true;
self._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `.*` already exists/)) {
joinedModel._indexWasCreated('local');
self._indexWasCreated('foreign');
}
else {
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
}
})
})
}
var newIndex = joinedModel._createIndex(rightKey)
.catch(function(error) {
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
});
self._waitFor(newIndex);
}

@@ -725,99 +576,2 @@ }

// Create the two indexes on two models
var queryIndex1 = r.branch(
r.table(self.getTableName()).indexList().contains(leftKey),
r.table(self.getTableName()).indexWait(leftKey),
r.branch(
r.table(self.getTableName()).info()('primary_key').eq(leftKey),
{index: leftKey, ready: true},
r.table(self.getTableName()).indexCreate(leftKey).do(function() {
return r.table(self.getTableName()).indexWait(leftKey)
})
)
);
// This could try to create the same index, but that's ok
var queryIndex2 = r.branch(
r.table(joinedModel.getTableName()).indexList().contains(rightKey),
r.table(joinedModel.getTableName()).indexWait(rightKey),
r.branch(
r.table(joinedModel.getTableName()).info()('primary_key').eq(rightKey),
{index: rightKey, ready: true},
r.table(joinedModel.getTableName()).indexCreate(rightKey).do(function() {
return r.table(joinedModel.getTableName()).indexWait(rightKey)
})
)
);
self._getModel()._tableReady = false;
joinedModel._getModel()._tableReady = false;
self._getModel()._indexesToCreate++;
joinedModel._getModel()._foreignIndexesToCreate++;
if (self._getModel()._tableCreated === true) {
queryIndex1.run().then(function(result) {
self._indexWasCreated('local');
joinedModel._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `/)) {
self._indexWasCreated('local');
joinedModel._indexWasCreated('foreign');
}
else {
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
}
})
}
else {
self._getModel()._onTableCreated.push(function() {
queryIndex1.run().then(function() {
self._indexWasCreated('local');
joinedModel._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `/)) {
self._indexWasCreated('local');
joinedModel._indexWasCreated('foreign');
}
else {
self._getModel()._setError(error);
}
});
});
}
joinedModel._getModel()._indexesToCreate++;
self._getModel()._foreignIndexesToCreate++;
if (joinedModel._getModel()._tableCreated === true) {
queryIndex2.run().then(function(result) {
joinedModel._indexWasCreated('local');
self._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `/)) {
joinedModel._indexWasCreated('local');
self._indexWasCreated('foreign');
}
else {
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
}
})
}
else {
joinedModel._getModel()._onTableCreated.push(function() {
queryIndex2.run().then(function() {
joinedModel._indexWasCreated('local');
self._indexWasCreated('foreign');
}).error(function(error) {
if (error.message.match(/^Index `/)) {
joinedModel._indexWasCreated('local');
self._indexWasCreated('foreign');
}
else {
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
}
});
});
}
var query;

@@ -857,41 +611,38 @@ if ((this.getTableName() === joinedModel.getTableName())

return new Promise(function(resolve, reject) {
var successCb = function() {
self._indexWasCreated('foreign');
joinedModel._indexWasCreated('foreign');
var linkPromise = linkModel.ready().then(function() {
return query.run()
.then(function() {
self._getModel()._indexes[leftKey] = true;
joinedModel._getModel()._indexes[rightKey] = true;
resolve();
}
var errorCb = function(error) {
})
.error(function(error) {
if (error.message.match(/^Index `/)) {
self._indexWasCreated('foreign');
joinedModel._indexWasCreated('foreign');
resolve();
return;
}
else if (error.message.match(/^Table `.*` already exists/)) {
self._indexWasCreated('foreign');
joinedModel._indexWasCreated('foreign');
resolve();
if (error.message.match(/^Table `.*` already exists/)) {
return;
}
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
throw error;
});
})
.then(function() {
self._createIndex(leftKey)
.catch(function(error) {
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
});
else {
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
reject(error);
}
}
joinedModel._createIndex(rightKey)
.catch(function(error) {
self._getModel()._setError(error);
joinedModel._getModel()._setError(error);
});
});
self._getModel()._foreignIndexesToCreate++;
joinedModel._getModel()._foreignIndexesToCreate++;
if (linkModel._getModel()._tableReady === true) {
query.run().then(successCb).error(errorCb)
}
else {
linkModel._getModel()._onTableCreated.push(function() {
query.run().then(successCb).error(errorCb)
});
}
})
joinedModel._waitFor(linkPromise);
self._waitFor(linkPromise);
return Promise.all([self.ready(), joinedModel.ready()]);
}

@@ -898,0 +649,0 @@ };

@@ -106,17 +106,4 @@ var Promise = require('bluebird');

}
if (self._model._getModel()._tableReady === true) {
return self._model.tableReady().then(function() {
return self._executeCallback(fullOptions, parse, options.groupFormat);
}
return new Promise(function(resolve, reject) {
self._model._onTableReady.push(function() {
self._executeCallback(fullOptions, parse, options.groupFormat)
.then(function(result) {
resolve(result);
})
.catch(function(error) {
reject(error);
});
});
});

@@ -123,0 +110,0 @@ }

var rethinkdbdash = require('rethinkdbdash');
var Promise = require('bluebird');
var Model = require(__dirname+'/model.js');

@@ -26,2 +27,3 @@ var util = require(__dirname+'/util.js');

config.db = config.db || 'test'; // We need the default db to create it.
self._config = config;

@@ -50,39 +52,36 @@ self._options = {};

// Whether the database is available or not.
self._dbReady = false;
// Functions to execute once the database is ready.
// We do not use listeners as this used to crash node when too many listeners
// were added.
self._onDbReady = [];
// Export errors
self.Errors = Errors;
// Initialize the database.
self.dbReady().then().error(function(error) {
throw error;
});
}
/**
* Initialize our database.
* @return {Promise=} Returns a promise which will resolve when the database is ready.
*/
Thinky.prototype.dbReady = function() {
var self = this;
if (this._dbReadyPromise) return this._dbReadyPromise;
var r = self.r;
// Callback when the database has been created or is available.
var onDatabaseReady = function() {
self._dbReady = true;
for(var i=0; i<self._onDbReady.length; i++) {
self._onDbReady[i]();
}
}
r.dbList().contains(config.db).do(function(result) {
return r.branch(
result,
{created: 0},
r.dbCreate(config.db)
)
}).run().then(onDatabaseReady).error(function(error) {
this._dbReadyPromise = r.dbCreate(self._config.db)
.run()
.error(function(error) {
// The `do` is not atomic, we a concurrent query could create the database
// between the time `dbList` is ran and `dbCreate` is.
if (error.message.match(/^Database `.*` already exists in/)) {
onDatabaseReady();
return;
}
else {
// In case something went wrong here, we do not recover and throw.
throw error;
}
// In case something went wrong here, we do not recover and throw.
throw error;
});
}
return self._dbReadyPromise;
};
/**

@@ -132,34 +131,2 @@ * Return the current option used.

self.models[name] = model;
if (fullOptions.init !== false) {
// Create the table, or push the table name in the queue.
var r = self.r;
var onDatabaseReady = function() {
r.tableList().contains(name).do(function(result) {
return r.branch(
result,
{created: 0},
r.tableCreate(name, {primaryKey: model._pk})
)
}).run().then(function(result) {
model._tableWasCreated();
}).error(function(error) {
model._error = error;
})
};
if (self._dbReady === true) {
onDatabaseReady();
}
else {
self._onDbReady.push(onDatabaseReady);
}
}
else {
// We do not initialize the table and suppose that it already exists and
// is ready.
model._getModel()._tableCreated = true;
model.emit('created');
model._getModel()._tableReady = true;
model.emit('ready');
}
return model;

@@ -166,0 +133,0 @@ }

@@ -113,3 +113,7 @@ var util = require(__dirname+'/../util.js');

}
else if (typeof date === 'string') {
else if (typeof date === 'string' || typeof date === 'number') {
var numericDate = parseInt(date, 10);
if(!isNaN(numericDate)){
date = numericDate;
}
jsDate = new Date(date);

@@ -116,0 +120,0 @@ if (jsDate.getTime() !== jsDate.getTime()) {

@@ -112,2 +112,9 @@ var util = require(__dirname+'/../util.js');

if(typeof number === 'string'){
var numericString = parseFloat(number);
if(!isNaN(numericString)){
number = numericString;
}
}
if ((typeof number === 'function') && (number._query !== undefined)) {

@@ -114,0 +121,0 @@ // We do not check ReQL terms

{
"name": "thinky",
"version": "2.0.8",
"version": "2.0.9",
"description": "RethinkDB ORM for Node.js",

@@ -5,0 +5,0 @@ "main": "lib/thinky.js",

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