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

modli

Package Overview
Dependencies
Maintainers
2
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

modli - npm Package Compare versions

Comparing version 1.1.2 to 1.2.0

.babelrc

19

build/index.js

@@ -18,8 +18,2 @@ /*

// Adapters
var adapters = {};
_libAdapter.adapter.builtIns.forEach(function (builtIn) {
adapters[builtIn] = require('./adapters/' + builtIn + '/index')[builtIn];
});
/**

@@ -41,10 +35,5 @@ * Binds model and adapter to make usable entity

*/
var modli = {
use: use, model: _libModel.model, adapter: _libAdapter.adapter, Joi: _libModel.Joi
};
/**
* Extend modli to include adapters
*/
exports['default'] = _.extend(modli, adapters);
module.exports = exports['default'];
exports.use = use;
exports.model = _libModel.model;
exports.adapter = _libAdapter.adapter;
exports.Joi = _libModel.Joi;

@@ -0,1 +1,5 @@

/**
* Exports the core adapter object
* @namespace adapter
*/
'use strict';

@@ -6,8 +10,2 @@

});
var fs = require('fs');
var path = require('path');
/**
* Exports the core adapter object
* @namespace adapter
*/
var adapter = {};

@@ -23,7 +21,2 @@

/**
* @property {Array} builtIns Available built-in adapters
*/
adapter.builtIns = [];
/**
* Adds an adapter to the store

@@ -51,2 +44,3 @@ * @param {Object} a The adapter to add

adapter.init = function (a) {
var adapterObj = undefined;
// Ensure model is defined

@@ -57,5 +51,7 @@ if (!adapter.store[a]) {

var source = adapter.store[a].source;
var adapterPath = adapter.builtIns.indexOf(source) >= 0 ? './../adapters/' + source + '/index' : source;
var adapterModule = require(adapterPath);
var adapterObj = adapterModule[Object.keys(adapterModule)[0]];
if (typeof source === 'object') {
adapterObj = source;
} else {
adapterObj = require(source);
}
// Check config object

@@ -68,21 +64,2 @@ /* istanbul ignore if */

return adapterObj;
};
/**
* Adds all adapters to the builtIns array
* @memberof adapter
*/
/* istanbul ignore next */
adapter.getBuiltIns = function () {
var src = __dirname + '/../adapters';
fs.readdirSync(path.resolve(src)).filter(function (file) {
if (fs.statSync(path.join(src, file)).isDirectory()) {
adapter.builtIns.push(file);
}
});
};
/**
* Run getBuiltIns to load adapters available
*/
adapter.getBuiltIns();
};

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

{"/home/fluidbyte/workspace/ta/modli/src/adapters/mysql/index.js":{"path":"/home/fluidbyte/workspace/ta/modli/src/adapters/mysql/index.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":7,"9":7,"10":7,"11":0,"12":7,"13":1,"14":2,"15":2,"16":2,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":4,"24":4,"25":4,"26":1,"27":1,"28":1,"29":3,"30":3,"31":3,"32":3,"33":2,"34":1,"35":1,"36":1,"37":3,"38":3,"39":1,"40":1,"41":1,"42":2,"43":2,"44":1,"45":1,"46":2,"47":1,"48":1,"49":1,"50":1,"51":1,"52":0,"53":1,"54":1,"55":1,"56":1,"57":2,"58":2,"59":2,"60":2,"61":1,"62":1,"63":1,"64":1,"65":1},"b":{"1":[0,7],"2":[1,1],"3":[3,1],"4":[3,0],"5":[3,0],"6":[2,1],"7":[1,1],"8":[1,0],"9":[1,0],"10":[0,1],"11":[2,0],"12":[1,1]},"f":{"1":7,"2":7,"3":7,"4":2,"5":2,"6":1,"7":3,"8":3,"9":2,"10":1,"11":1,"12":1,"13":1},"fnMap":{"1":{"name":"(anonymous_1)","line":25,"loc":{"start":{"line":25,"column":14},"end":{"line":25,"column":31}}},"2":{"name":"(anonymous_2)","line":26,"loc":{"start":{"line":26,"column":21},"end":{"line":26,"column":48}}},"3":{"name":"(anonymous_3)","line":27,"loc":{"start":{"line":27,"column":28},"end":{"line":27,"column":51}}},"4":{"name":"(anonymous_4)","line":46,"loc":{"start":{"line":46,"column":15},"end":{"line":46,"column":30}}},"5":{"name":"(anonymous_5)","line":48,"loc":{"start":{"line":48,"column":21},"end":{"line":48,"column":36}}},"6":{"name":"(anonymous_6)","line":62,"loc":{"start":{"line":62,"column":20},"end":{"line":62,"column":37}}},"7":{"name":"(anonymous_7)","line":84,"loc":{"start":{"line":84,"column":15},"end":{"line":84,"column":31}}},"8":{"name":"(anonymous_8)","line":87,"loc":{"start":{"line":87,"column":21},"end":{"line":87,"column":48}}},"9":{"name":"(anonymous_9)","line":113,"loc":{"start":{"line":113,"column":13},"end":{"line":113,"column":30}}},"10":{"name":"(anonymous_10)","line":131,"loc":{"start":{"line":131,"column":15},"end":{"line":131,"column":38}}},"11":{"name":"(anonymous_11)","line":134,"loc":{"start":{"line":134,"column":21},"end":{"line":134,"column":48}}},"12":{"name":"(anonymous_12)","line":160,"loc":{"start":{"line":160,"column":18},"end":{"line":160,"column":35}}},"13":{"name":"(anonymous_13)","line":170,"loc":{"start":{"line":170,"column":15},"end":{"line":170,"column":35}}}},"statementMap":{"1":{"start":{"line":3,"column":0},"end":{"line":5,"column":3}},"2":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":0},"end":{"line":7,"column":35}},"4":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"5":{"start":{"line":14,"column":0},"end":{"line":14,"column":22}},"6":{"start":{"line":18,"column":0},"end":{"line":18,"column":16}},"7":{"start":{"line":25,"column":0},"end":{"line":35,"column":2}},"8":{"start":{"line":26,"column":2},"end":{"line":34,"column":5}},"9":{"start":{"line":27,"column":4},"end":{"line":33,"column":7}},"10":{"start":{"line":28,"column":6},"end":{"line":32,"column":7}},"11":{"start":{"line":29,"column":8},"end":{"line":29,"column":20}},"12":{"start":{"line":31,"column":8},"end":{"line":31,"column":24}},"13":{"start":{"line":46,"column":0},"end":{"line":53,"column":2}},"14":{"start":{"line":47,"column":2},"end":{"line":47,"column":49}},"15":{"start":{"line":48,"column":2},"end":{"line":52,"column":5}},"16":{"start":{"line":49,"column":4},"end":{"line":51,"column":5}},"17":{"start":{"line":50,"column":6},"end":{"line":50,"column":53}},"18":{"start":{"line":62,"column":0},"end":{"line":75,"column":2}},"19":{"start":{"line":64,"column":2},"end":{"line":64,"column":38}},"20":{"start":{"line":65,"column":2},"end":{"line":65,"column":12}},"21":{"start":{"line":66,"column":2},"end":{"line":66,"column":69}},"22":{"start":{"line":67,"column":2},"end":{"line":71,"column":3}},"23":{"start":{"line":68,"column":4},"end":{"line":68,"column":38}},"24":{"start":{"line":69,"column":4},"end":{"line":69,"column":56}},"25":{"start":{"line":70,"column":4},"end":{"line":70,"column":8}},"26":{"start":{"line":72,"column":2},"end":{"line":72,"column":16}},"27":{"start":{"line":74,"column":2},"end":{"line":74,"column":28}},"28":{"start":{"line":84,"column":0},"end":{"line":105,"column":2}},"29":{"start":{"line":85,"column":2},"end":{"line":85,"column":91}},"30":{"start":{"line":87,"column":2},"end":{"line":104,"column":5}},"31":{"start":{"line":89,"column":4},"end":{"line":89,"column":57}},"32":{"start":{"line":90,"column":4},"end":{"line":103,"column":5}},"33":{"start":{"line":91,"column":6},"end":{"line":91,"column":31}},"34":{"start":{"line":94,"column":6},"end":{"line":94,"column":20}},"35":{"start":{"line":95,"column":6},"end":{"line":95,"column":20}},"36":{"start":{"line":96,"column":6},"end":{"line":99,"column":7}},"37":{"start":{"line":97,"column":8},"end":{"line":97,"column":24}},"38":{"start":{"line":98,"column":8},"end":{"line":98,"column":42}},"39":{"start":{"line":100,"column":6},"end":{"line":100,"column":114}},"40":{"start":{"line":102,"column":6},"end":{"line":102,"column":34}},"41":{"start":{"line":113,"column":0},"end":{"line":121,"column":2}},"42":{"start":{"line":114,"column":2},"end":{"line":114,"column":24}},"43":{"start":{"line":115,"column":2},"end":{"line":119,"column":3}},"44":{"start":{"line":116,"column":4},"end":{"line":116,"column":30}},"45":{"start":{"line":118,"column":4},"end":{"line":118,"column":15}},"46":{"start":{"line":120,"column":2},"end":{"line":120,"column":65}},"47":{"start":{"line":131,"column":0},"end":{"line":152,"column":2}},"48":{"start":{"line":132,"column":2},"end":{"line":132,"column":91}},"49":{"start":{"line":134,"column":2},"end":{"line":151,"column":5}},"50":{"start":{"line":135,"column":4},"end":{"line":135,"column":57}},"51":{"start":{"line":136,"column":4},"end":{"line":150,"column":5}},"52":{"start":{"line":137,"column":6},"end":{"line":137,"column":31}},"53":{"start":{"line":139,"column":6},"end":{"line":139,"column":16}},"54":{"start":{"line":140,"column":6},"end":{"line":140,"column":23}},"55":{"start":{"line":141,"column":6},"end":{"line":141,"column":41}},"56":{"start":{"line":142,"column":6},"end":{"line":148,"column":7}},"57":{"start":{"line":143,"column":8},"end":{"line":147,"column":9}},"58":{"start":{"line":144,"column":10},"end":{"line":144,"column":44}},"59":{"start":{"line":145,"column":10},"end":{"line":145,"column":60}},"60":{"start":{"line":146,"column":10},"end":{"line":146,"column":14}},"61":{"start":{"line":149,"column":6},"end":{"line":149,"column":96}},"62":{"start":{"line":160,"column":0},"end":{"line":162,"column":2}},"63":{"start":{"line":161,"column":2},"end":{"line":161,"column":75}},"64":{"start":{"line":170,"column":0},"end":{"line":172,"column":2}},"65":{"start":{"line":171,"column":2},"end":{"line":171,"column":31}}},"branchMap":{"1":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":6},"end":{"line":28,"column":6}},{"start":{"line":28,"column":6},"end":{"line":28,"column":6}}]},"2":{"line":49,"type":"if","locations":[{"start":{"line":49,"column":4},"end":{"line":49,"column":4}},{"start":{"line":49,"column":4},"end":{"line":49,"column":4}}]},"3":{"line":68,"type":"cond-expr","locations":[{"start":{"line":68,"column":28},"end":{"line":68,"column":32}},{"start":{"line":68,"column":35},"end":{"line":68,"column":37}}]},"4":{"line":85,"type":"cond-expr","locations":[{"start":{"line":85,"column":70},"end":{"line":85,"column":75}},{"start":{"line":85,"column":78},"end":{"line":85,"column":90}}]},"5":{"line":85,"type":"binary-expr","locations":[{"start":{"line":85,"column":16},"end":{"line":85,"column":37}},{"start":{"line":85,"column":41},"end":{"line":85,"column":67}}]},"6":{"line":90,"type":"if","locations":[{"start":{"line":90,"column":4},"end":{"line":90,"column":4}},{"start":{"line":90,"column":4},"end":{"line":90,"column":4}}]},"7":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":2},"end":{"line":115,"column":2}},{"start":{"line":115,"column":2},"end":{"line":115,"column":2}}]},"8":{"line":132,"type":"cond-expr","locations":[{"start":{"line":132,"column":70},"end":{"line":132,"column":75}},{"start":{"line":132,"column":78},"end":{"line":132,"column":90}}]},"9":{"line":132,"type":"binary-expr","locations":[{"start":{"line":132,"column":16},"end":{"line":132,"column":37}},{"start":{"line":132,"column":41},"end":{"line":132,"column":67}}]},"10":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":4},"end":{"line":136,"column":4}},{"start":{"line":136,"column":4},"end":{"line":136,"column":4}}]},"11":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":8}},{"start":{"line":143,"column":8},"end":{"line":143,"column":8}}]},"12":{"line":144,"type":"cond-expr","locations":[{"start":{"line":144,"column":34},"end":{"line":144,"column":38}},{"start":{"line":144,"column":41},"end":{"line":144,"column":43}}]}}},"/home/fluidbyte/workspace/ta/modli/src/adapters/nedb/index.js":{"path":"/home/fluidbyte/workspace/ta/modli/src/adapters/nedb/index.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":2,"8":2,"9":1,"10":3,"11":3,"12":3,"13":3,"14":2,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":0,"24":1,"25":1,"26":1,"27":1,"28":1},"b":{"1":[3,0],"2":[3,0],"3":[2,1],"4":[1,0],"5":[1,0],"6":[0,1]},"f":{"1":2,"2":3,"3":3,"4":1,"5":1,"6":1,"7":1,"8":1},"fnMap":{"1":{"name":"(anonymous_1)","line":20,"loc":{"start":{"line":20,"column":14},"end":{"line":20,"column":29}}},"2":{"name":"(anonymous_2)","line":32,"loc":{"start":{"line":32,"column":14},"end":{"line":32,"column":30}}},"3":{"name":"(anonymous_3)","line":38,"loc":{"start":{"line":38,"column":21},"end":{"line":38,"column":48}}},"4":{"name":"(anonymous_4)","line":54,"loc":{"start":{"line":54,"column":12},"end":{"line":54,"column":29}}},"5":{"name":"(anonymous_5)","line":66,"loc":{"start":{"line":66,"column":14},"end":{"line":66,"column":37}}},"6":{"name":"(anonymous_6)","line":72,"loc":{"start":{"line":72,"column":21},"end":{"line":72,"column":48}}},"7":{"name":"(anonymous_7)","line":88,"loc":{"start":{"line":88,"column":17},"end":{"line":88,"column":34}}},"8":{"name":"(anonymous_8)","line":98,"loc":{"start":{"line":98,"column":14},"end":{"line":98,"column":34}}}},"statementMap":{"1":{"start":{"line":3,"column":0},"end":{"line":5,"column":3}},"2":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":0},"end":{"line":7,"column":32}},"4":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"5":{"start":{"line":14,"column":0},"end":{"line":14,"column":20}},"6":{"start":{"line":20,"column":0},"end":{"line":23,"column":2}},"7":{"start":{"line":21,"column":2},"end":{"line":21,"column":53}},"8":{"start":{"line":22,"column":2},"end":{"line":22,"column":14}},"9":{"start":{"line":32,"column":0},"end":{"line":46,"column":2}},"10":{"start":{"line":33,"column":2},"end":{"line":33,"column":91}},"11":{"start":{"line":36,"column":2},"end":{"line":36,"column":54}},"12":{"start":{"line":38,"column":2},"end":{"line":45,"column":5}},"13":{"start":{"line":40,"column":4},"end":{"line":44,"column":5}},"14":{"start":{"line":41,"column":6},"end":{"line":41,"column":31},"skip":true},"15":{"start":{"line":43,"column":6},"end":{"line":43,"column":41}},"16":{"start":{"line":54,"column":0},"end":{"line":56,"column":2}},"17":{"start":{"line":55,"column":2},"end":{"line":55,"column":34}},"18":{"start":{"line":66,"column":0},"end":{"line":80,"column":2}},"19":{"start":{"line":67,"column":2},"end":{"line":67,"column":91}},"20":{"start":{"line":70,"column":2},"end":{"line":70,"column":54}},"21":{"start":{"line":72,"column":2},"end":{"line":79,"column":5}},"22":{"start":{"line":74,"column":4},"end":{"line":78,"column":5}},"23":{"start":{"line":75,"column":6},"end":{"line":75,"column":31},"skip":true},"24":{"start":{"line":77,"column":6},"end":{"line":77,"column":75}},"25":{"start":{"line":88,"column":0},"end":{"line":90,"column":2}},"26":{"start":{"line":89,"column":2},"end":{"line":89,"column":53}},"27":{"start":{"line":98,"column":0},"end":{"line":100,"column":2}},"28":{"start":{"line":99,"column":2},"end":{"line":99,"column":29}}},"branchMap":{"1":{"line":33,"type":"cond-expr","locations":[{"start":{"line":33,"column":70},"end":{"line":33,"column":75}},{"start":{"line":33,"column":78},"end":{"line":33,"column":90}}]},"2":{"line":33,"type":"binary-expr","locations":[{"start":{"line":33,"column":16},"end":{"line":33,"column":37}},{"start":{"line":33,"column":41},"end":{"line":33,"column":67}}]},"3":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":40,"column":4},"skip":true},{"start":{"line":40,"column":4},"end":{"line":40,"column":4}}]},"4":{"line":67,"type":"cond-expr","locations":[{"start":{"line":67,"column":70},"end":{"line":67,"column":75}},{"start":{"line":67,"column":78},"end":{"line":67,"column":90}}]},"5":{"line":67,"type":"binary-expr","locations":[{"start":{"line":67,"column":16},"end":{"line":67,"column":37}},{"start":{"line":67,"column":41},"end":{"line":67,"column":67}}]},"6":{"line":74,"type":"if","locations":[{"start":{"line":74,"column":4},"end":{"line":74,"column":4},"skip":true},{"start":{"line":74,"column":4},"end":{"line":74,"column":4}}]}}},"/home/fluidbyte/workspace/ta/modli/src/lib/adapter.js":{"path":"/home/fluidbyte/workspace/ta/modli/src/lib/adapter.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":2,"10":1,"11":1,"12":1,"13":2,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":3,"26":2,"27":1},"b":{"1":[1,1],"2":[2,1,1],"3":[1,1],"4":[1,0],"5":[1,0],"6":[2,1]},"f":{"1":2,"2":2,"3":1,"4":3},"fnMap":{"1":{"name":"(anonymous_1)","line":30,"loc":{"start":{"line":30,"column":14},"end":{"line":30,"column":27}}},"2":{"name":"(anonymous_2)","line":48,"loc":{"start":{"line":48,"column":15},"end":{"line":48,"column":28}}},"3":{"name":"(anonymous_3)","line":71,"loc":{"start":{"line":71,"column":22},"end":{"line":71,"column":34}},"skip":true},"4":{"name":"(anonymous_4)","line":73,"loc":{"start":{"line":73,"column":43},"end":{"line":73,"column":59}},"skip":true}},"statementMap":{"1":{"start":{"line":3,"column":0},"end":{"line":5,"column":3}},"2":{"start":{"line":6,"column":0},"end":{"line":6,"column":23}},"3":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"4":{"start":{"line":12,"column":0},"end":{"line":12,"column":17}},"5":{"start":{"line":14,"column":0},"end":{"line":14,"column":26}},"6":{"start":{"line":19,"column":0},"end":{"line":19,"column":19}},"7":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}},"8":{"start":{"line":30,"column":0},"end":{"line":40,"column":2}},"9":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"10":{"start":{"line":33,"column":4},"end":{"line":33,"column":70}},"11":{"start":{"line":36,"column":2},"end":{"line":39,"column":4}},"12":{"start":{"line":48,"column":0},"end":{"line":64,"column":2}},"13":{"start":{"line":50,"column":2},"end":{"line":52,"column":3}},"14":{"start":{"line":51,"column":4},"end":{"line":51,"column":43}},"15":{"start":{"line":53,"column":2},"end":{"line":53,"column":39}},"16":{"start":{"line":54,"column":2},"end":{"line":54,"column":106}},"17":{"start":{"line":55,"column":2},"end":{"line":55,"column":43}},"18":{"start":{"line":56,"column":2},"end":{"line":56,"column":64}},"19":{"start":{"line":59,"column":2},"end":{"line":62,"column":3}},"20":{"start":{"line":61,"column":4},"end":{"line":61,"column":47},"skip":true},"21":{"start":{"line":63,"column":2},"end":{"line":63,"column":20}},"22":{"start":{"line":71,"column":0},"end":{"line":78,"column":2},"skip":true},"23":{"start":{"line":72,"column":2},"end":{"line":72,"column":39},"skip":true},"24":{"start":{"line":73,"column":2},"end":{"line":77,"column":5},"skip":true},"25":{"start":{"line":74,"column":4},"end":{"line":76,"column":5},"skip":true},"26":{"start":{"line":75,"column":6},"end":{"line":75,"column":34},"skip":true},"27":{"start":{"line":83,"column":0},"end":{"line":83,"column":22}}},"branchMap":{"1":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":2},"end":{"line":32,"column":2}},{"start":{"line":32,"column":2},"end":{"line":32,"column":2}}]},"2":{"line":32,"type":"binary-expr","locations":[{"start":{"line":32,"column":6},"end":{"line":32,"column":13}},{"start":{"line":32,"column":17},"end":{"line":32,"column":26}},{"start":{"line":32,"column":30},"end":{"line":32,"column":39}}]},"3":{"line":50,"type":"if","locations":[{"start":{"line":50,"column":2},"end":{"line":50,"column":2}},{"start":{"line":50,"column":2},"end":{"line":50,"column":2}}]},"4":{"line":54,"type":"cond-expr","locations":[{"start":{"line":54,"column":60},"end":{"line":54,"column":96}},{"start":{"line":54,"column":99},"end":{"line":54,"column":105}}]},"5":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":2},"end":{"line":59,"column":2},"skip":true},{"start":{"line":59,"column":2},"end":{"line":59,"column":2}}]},"6":{"line":74,"type":"if","locations":[{"start":{"line":74,"column":4},"end":{"line":74,"column":4},"skip":true},{"start":{"line":74,"column":4},"end":{"line":74,"column":4},"skip":true}]}}},"/home/fluidbyte/workspace/ta/modli/src/lib/model.js":{"path":"/home/fluidbyte/workspace/ta/modli/src/lib/model.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":3,"9":1,"10":2,"11":1,"12":2,"13":2,"14":8,"15":4,"16":2,"17":1,"18":2,"19":1,"20":1,"21":5,"22":5,"23":5,"24":3,"25":2,"26":1,"27":3,"28":2,"29":1,"30":1},"b":{"1":[1,2],"2":[3,2,2],"3":[1,1],"4":[4,4],"5":[8,6],"6":[1,1],"7":[5,3],"8":[3,2],"9":[2,1]},"f":{"1":3,"2":8,"3":2,"4":5,"5":5,"6":3},"fnMap":{"1":{"name":"(anonymous_1)","line":29,"loc":{"start":{"line":29,"column":12},"end":{"line":29,"column":25}}},"2":{"name":"(anonymous_2)","line":41,"loc":{"start":{"line":41,"column":25},"end":{"line":41,"column":41}}},"3":{"name":"(anonymous_3)","line":55,"loc":{"start":{"line":55,"column":13},"end":{"line":55,"column":26}}},"4":{"name":"validate","line":64,"loc":{"start":{"line":64,"column":14},"end":{"line":64,"column":47}}},"5":{"name":"(anonymous_5)","line":67,"loc":{"start":{"line":67,"column":75},"end":{"line":67,"column":90}}},"6":{"name":"(anonymous_6)","line":83,"loc":{"start":{"line":83,"column":30},"end":{"line":83,"column":45}}}},"statementMap":{"1":{"start":{"line":6,"column":0},"end":{"line":8,"column":3}},"2":{"start":{"line":9,"column":0},"end":{"line":9,"column":25}},"3":{"start":{"line":11,"column":0},"end":{"line":11,"column":18}},"4":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"5":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}},"6":{"start":{"line":23,"column":0},"end":{"line":23,"column":17}},"7":{"start":{"line":29,"column":0},"end":{"line":48,"column":2}},"8":{"start":{"line":31,"column":2},"end":{"line":33,"column":3}},"9":{"start":{"line":32,"column":4},"end":{"line":32,"column":69}},"10":{"start":{"line":35,"column":2},"end":{"line":38,"column":3}},"11":{"start":{"line":37,"column":4},"end":{"line":37,"column":29}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":20}},"13":{"start":{"line":41,"column":2},"end":{"line":45,"column":5}},"14":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"15":{"start":{"line":43,"column":6},"end":{"line":43,"column":31}},"16":{"start":{"line":47,"column":2},"end":{"line":47,"column":44}},"17":{"start":{"line":55,"column":0},"end":{"line":75,"column":2}},"18":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"19":{"start":{"line":58,"column":4},"end":{"line":58,"column":41}},"20":{"start":{"line":61,"column":2},"end":{"line":74,"column":4}},"21":{"start":{"line":65,"column":6},"end":{"line":65,"column":45}},"22":{"start":{"line":67,"column":6},"end":{"line":72,"column":9}},"23":{"start":{"line":68,"column":8},"end":{"line":70,"column":9}},"24":{"start":{"line":69,"column":10},"end":{"line":69,"column":50}},"25":{"start":{"line":71,"column":8},"end":{"line":71,"column":20}},"26":{"start":{"line":83,"column":0},"end":{"line":89,"column":2}},"27":{"start":{"line":84,"column":2},"end":{"line":87,"column":3}},"28":{"start":{"line":86,"column":4},"end":{"line":86,"column":44}},"29":{"start":{"line":88,"column":2},"end":{"line":88,"column":13}},"30":{"start":{"line":95,"column":0},"end":{"line":95,"column":36}}},"branchMap":{"1":{"line":31,"type":"if","locations":[{"start":{"line":31,"column":2},"end":{"line":31,"column":2}},{"start":{"line":31,"column":2},"end":{"line":31,"column":2}}]},"2":{"line":31,"type":"binary-expr","locations":[{"start":{"line":31,"column":6},"end":{"line":31,"column":13}},{"start":{"line":31,"column":17},"end":{"line":31,"column":27}},{"start":{"line":31,"column":31},"end":{"line":31,"column":40}}]},"3":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":2},"end":{"line":35,"column":2}},{"start":{"line":35,"column":2},"end":{"line":35,"column":2}}]},"4":{"line":42,"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":42,"column":4}},{"start":{"line":42,"column":4},"end":{"line":42,"column":4}}]},"5":{"line":42,"type":"binary-expr","locations":[{"start":{"line":42,"column":8},"end":{"line":42,"column":26}},{"start":{"line":42,"column":30},"end":{"line":42,"column":45}}]},"6":{"line":57,"type":"if","locations":[{"start":{"line":57,"column":2},"end":{"line":57,"column":2}},{"start":{"line":57,"column":2},"end":{"line":57,"column":2}}]},"7":{"line":65,"type":"binary-expr","locations":[{"start":{"line":65,"column":14},"end":{"line":65,"column":21}},{"start":{"line":65,"column":25},"end":{"line":65,"column":44}}]},"8":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":68,"column":8}},{"start":{"line":68,"column":8},"end":{"line":68,"column":8}}]},"9":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":84,"column":2}},{"start":{"line":84,"column":2},"end":{"line":84,"column":2}}]}}}}
{"/home/fluidbyte/workspace/ta/modli/core/src/index.js":{"path":"/home/fluidbyte/workspace/ta/modli/core/src/index.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1},"b":{},"f":{"1":1},"fnMap":{"1":{"name":"use","line":23,"loc":{"start":{"line":23,"column":10},"end":{"line":23,"column":47}}}},"statementMap":{"1":{"start":{"line":8,"column":0},"end":{"line":10,"column":3}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":43}},"4":{"start":{"line":16,"column":0},"end":{"line":16,"column":26}},"5":{"start":{"line":23,"column":0},"end":{"line":29,"column":2}},"6":{"start":{"line":25,"column":2},"end":{"line":25,"column":42}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":48}},"8":{"start":{"line":28,"column":2},"end":{"line":28,"column":38}},"9":{"start":{"line":34,"column":0},"end":{"line":34,"column":18}},"10":{"start":{"line":35,"column":0},"end":{"line":35,"column":32}},"11":{"start":{"line":36,"column":0},"end":{"line":36,"column":38}},"12":{"start":{"line":37,"column":0},"end":{"line":37,"column":28}}},"branchMap":{}},"/home/fluidbyte/workspace/ta/modli/core/src/lib/model.js":{"path":"/home/fluidbyte/workspace/ta/modli/core/src/lib/model.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":4,"9":1,"10":3,"11":2,"12":3,"13":3,"14":11,"15":5,"16":3,"17":1,"18":3,"19":1,"20":2,"21":9,"22":9,"23":9,"24":5,"25":4,"26":1,"27":5,"28":2,"29":3,"30":1},"b":{"1":[1,3],"2":[4,3,3],"3":[2,1],"4":[5,6],"5":[11,8],"6":[1,2],"7":[9,7],"8":[5,4],"9":[2,3]},"f":{"1":4,"2":11,"3":3,"4":9,"5":9,"6":5},"fnMap":{"1":{"name":"(anonymous_1)","line":29,"loc":{"start":{"line":29,"column":12},"end":{"line":29,"column":25}}},"2":{"name":"(anonymous_2)","line":41,"loc":{"start":{"line":41,"column":25},"end":{"line":41,"column":41}}},"3":{"name":"(anonymous_3)","line":55,"loc":{"start":{"line":55,"column":13},"end":{"line":55,"column":26}}},"4":{"name":"validate","line":64,"loc":{"start":{"line":64,"column":14},"end":{"line":64,"column":47}}},"5":{"name":"(anonymous_5)","line":67,"loc":{"start":{"line":67,"column":75},"end":{"line":67,"column":90}}},"6":{"name":"(anonymous_6)","line":83,"loc":{"start":{"line":83,"column":30},"end":{"line":83,"column":45}}}},"statementMap":{"1":{"start":{"line":6,"column":0},"end":{"line":8,"column":3}},"2":{"start":{"line":9,"column":0},"end":{"line":9,"column":25}},"3":{"start":{"line":11,"column":0},"end":{"line":11,"column":18}},"4":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"5":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}},"6":{"start":{"line":23,"column":0},"end":{"line":23,"column":17}},"7":{"start":{"line":29,"column":0},"end":{"line":48,"column":2}},"8":{"start":{"line":31,"column":2},"end":{"line":33,"column":3}},"9":{"start":{"line":32,"column":4},"end":{"line":32,"column":69}},"10":{"start":{"line":35,"column":2},"end":{"line":38,"column":3}},"11":{"start":{"line":37,"column":4},"end":{"line":37,"column":29}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":20}},"13":{"start":{"line":41,"column":2},"end":{"line":45,"column":5}},"14":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"15":{"start":{"line":43,"column":6},"end":{"line":43,"column":31}},"16":{"start":{"line":47,"column":2},"end":{"line":47,"column":44}},"17":{"start":{"line":55,"column":0},"end":{"line":75,"column":2}},"18":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"19":{"start":{"line":58,"column":4},"end":{"line":58,"column":41}},"20":{"start":{"line":61,"column":2},"end":{"line":74,"column":4}},"21":{"start":{"line":65,"column":6},"end":{"line":65,"column":45}},"22":{"start":{"line":67,"column":6},"end":{"line":72,"column":9}},"23":{"start":{"line":68,"column":8},"end":{"line":70,"column":9}},"24":{"start":{"line":69,"column":10},"end":{"line":69,"column":50}},"25":{"start":{"line":71,"column":8},"end":{"line":71,"column":20}},"26":{"start":{"line":83,"column":0},"end":{"line":89,"column":2}},"27":{"start":{"line":84,"column":2},"end":{"line":87,"column":3}},"28":{"start":{"line":86,"column":4},"end":{"line":86,"column":44}},"29":{"start":{"line":88,"column":2},"end":{"line":88,"column":13}},"30":{"start":{"line":95,"column":0},"end":{"line":95,"column":36}}},"branchMap":{"1":{"line":31,"type":"if","locations":[{"start":{"line":31,"column":2},"end":{"line":31,"column":2}},{"start":{"line":31,"column":2},"end":{"line":31,"column":2}}]},"2":{"line":31,"type":"binary-expr","locations":[{"start":{"line":31,"column":6},"end":{"line":31,"column":13}},{"start":{"line":31,"column":17},"end":{"line":31,"column":27}},{"start":{"line":31,"column":31},"end":{"line":31,"column":40}}]},"3":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":2},"end":{"line":35,"column":2}},{"start":{"line":35,"column":2},"end":{"line":35,"column":2}}]},"4":{"line":42,"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":42,"column":4}},{"start":{"line":42,"column":4},"end":{"line":42,"column":4}}]},"5":{"line":42,"type":"binary-expr","locations":[{"start":{"line":42,"column":8},"end":{"line":42,"column":26}},{"start":{"line":42,"column":30},"end":{"line":42,"column":45}}]},"6":{"line":57,"type":"if","locations":[{"start":{"line":57,"column":2},"end":{"line":57,"column":2}},{"start":{"line":57,"column":2},"end":{"line":57,"column":2}}]},"7":{"line":65,"type":"binary-expr","locations":[{"start":{"line":65,"column":14},"end":{"line":65,"column":21}},{"start":{"line":65,"column":25},"end":{"line":65,"column":44}}]},"8":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":68,"column":8}},{"start":{"line":68,"column":8},"end":{"line":68,"column":8}}]},"9":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":84,"column":2}},{"start":{"line":84,"column":2},"end":{"line":84,"column":2}}]}}},"/home/fluidbyte/workspace/ta/modli/core/src/lib/adapter.js":{"path":"/home/fluidbyte/workspace/ta/modli/core/src/lib/adapter.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":3,"7":1,"8":2,"9":1,"10":3,"11":3,"12":1,"13":2,"14":2,"15":2,"16":0,"17":2,"18":2,"19":2},"b":{"1":[1,2],"2":[3,2,2],"3":[1,2],"4":[2,0],"5":[2,0]},"f":{"1":3,"2":3},"fnMap":{"1":{"name":"(anonymous_1)","line":23,"loc":{"start":{"line":23,"column":14},"end":{"line":23,"column":27}}},"2":{"name":"(anonymous_2)","line":41,"loc":{"start":{"line":41,"column":15},"end":{"line":41,"column":28}}}},"statementMap":{"1":{"start":{"line":7,"column":0},"end":{"line":9,"column":3}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":17}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":26}},"4":{"start":{"line":17,"column":0},"end":{"line":17,"column":19}},"5":{"start":{"line":23,"column":0},"end":{"line":33,"column":2}},"6":{"start":{"line":25,"column":2},"end":{"line":27,"column":3}},"7":{"start":{"line":26,"column":4},"end":{"line":26,"column":70}},"8":{"start":{"line":29,"column":2},"end":{"line":32,"column":4}},"9":{"start":{"line":41,"column":0},"end":{"line":60,"column":2}},"10":{"start":{"line":42,"column":2},"end":{"line":42,"column":29}},"11":{"start":{"line":44,"column":2},"end":{"line":46,"column":3}},"12":{"start":{"line":45,"column":4},"end":{"line":45,"column":43}},"13":{"start":{"line":47,"column":2},"end":{"line":47,"column":39}},"14":{"start":{"line":48,"column":2},"end":{"line":52,"column":3}},"15":{"start":{"line":49,"column":4},"end":{"line":49,"column":24}},"16":{"start":{"line":51,"column":4},"end":{"line":51,"column":33}},"17":{"start":{"line":55,"column":2},"end":{"line":58,"column":3}},"18":{"start":{"line":57,"column":4},"end":{"line":57,"column":47},"skip":true},"19":{"start":{"line":59,"column":2},"end":{"line":59,"column":20}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":2},"end":{"line":25,"column":2}},{"start":{"line":25,"column":2},"end":{"line":25,"column":2}}]},"2":{"line":25,"type":"binary-expr","locations":[{"start":{"line":25,"column":6},"end":{"line":25,"column":13}},{"start":{"line":25,"column":17},"end":{"line":25,"column":26}},{"start":{"line":25,"column":30},"end":{"line":25,"column":39}}]},"3":{"line":44,"type":"if","locations":[{"start":{"line":44,"column":2},"end":{"line":44,"column":2}},{"start":{"line":44,"column":2},"end":{"line":44,"column":2}}]},"4":{"line":48,"type":"if","locations":[{"start":{"line":48,"column":2},"end":{"line":48,"column":2}},{"start":{"line":48,"column":2},"end":{"line":48,"column":2}}]},"5":{"line":55,"type":"if","locations":[{"start":{"line":55,"column":2},"end":{"line":55,"column":2},"skip":true},{"start":{"line":55,"column":2},"end":{"line":55,"column":2}}]}}}}
{
"name": "modli",
"version": "1.1.2",
"version": "1.2.0",
"description": "A module for building models and adapters for multiple data sources",

@@ -8,3 +8,3 @@ "main": "build/index.js",

"type": "git",
"url": "https://github.com/TechnologyAdvice/modli"
"url": "https://github.com/node-modli/modli"
},

@@ -14,7 +14,3 @@ "keywords": [

"data",
"database",
"dynamo",
"dynamodb",
"mysql",
"nedb"
"database"
],

@@ -46,2 +42,3 @@ "author": "TechnologyAdvice <devteam@technologyadvice.com>",

"mocha": "^2.2.5",
"modli-nedb": "^1.0.0",
"pre-commit": "^1.1.1",

@@ -53,11 +50,8 @@ "should": "^7.0.2"

"joi": "^6.6.1",
"lodash": "^3.10.1",
"mysql": "^2.9.0",
"nedb": "^1.1.3"
"lodash": "^3.10.1"
},
"pre-commit": [
"test-libs",
"test-integration",
"lint"
"lint",
"test"
]
}

@@ -1,27 +0,13 @@

[![wercker status](https://app.wercker.com/status/e65545f185b1def5e6cca11cc4161812/s/master "wercker status")](https://app.wercker.com/project/bykey/e65545f185b1def5e6cca11cc4161812)
[![Code Climate](https://codeclimate.com/github/TechnologyAdvice/modli/badges/gpa.svg)](https://codeclimate.com/github/TechnologyAdvice/modli)
[![Test Coverage](https://codeclimate.com/github/TechnologyAdvice/modli/badges/coverage.svg)](https://codeclimate.com/github/TechnologyAdvice/modli/coverage)
[![Dependency Status](https://www.versioneye.com/user/projects/55da64048d9c4b0018000442/badge.svg?style=flat)](https://www.versioneye.com/user/projects/55da64048d9c4b0018000442)
[![wercker status](https://app.wercker.com/status/f3739d627fd42f6eb10bf5e1a1c09a84/s/master "wercker status")](https://app.wercker.com/project/bykey/f3739d627fd42f6eb10bf5e1a1c09a84)
[![Code Climate](https://codeclimate.com/github/node-modli/modli/badges/gpa.svg)](https://codeclimate.com/github/node-modli/modli)
[![Test Coverage](https://codeclimate.com/github/node-modli/modli/badges/coverage.svg)](https://codeclimate.com/github/node-modli/modli/coverage)
[![NPM](https://nodei.co/npm/modli.png)](https://www.npmjs.com/package/modli)
# Modli
A module for building models and adapters for multiple data sources. The core
goal of this project is to create a minimal barrier to entrance for creating
model-validated CRUD operations on data sources.
Modli is an NPM module designed to help create unified data modelling, validation
and CRUD operations across numerous data sources. It accomplishes this by exposing
a `model` object and an `adapter` object which are extended upon eachother with
the desired adapter for a data source to create a more standard, extensible
object.
This is done by addressing two core areas:
**Models**
Create a simple, universally similar modeling structure for any and all data
sources to which an application may be connected.
**Adapters**
Create basic CRUD operations that function similarly between all adapters
which can be connected to a model to perform the CRUD operations and are easily
extensible for more complex operations.
## Installation

@@ -35,8 +21,12 @@

Below is an example of a basic setup where a **model** and an **adapter**
are added. Once added they are available to be `use`'d to create an
instance of the object with the methods from the adapter, validation, etc:
Below is an example of a basic setup where a **model** and an **adapter**
are added. Once added they are available to be `use`'d to create an
instance of the object with the methods from the adapter, validation, etc.
In this example, the [modli-nedb](https://www.npmjs.com/package/modli-nedb) is
utilized (`npm install modli-nedb --save`).
```javascript
import { model, adapter, use, Joi } from 'modli';
import { nedb } from 'modli-nedb';

@@ -47,3 +37,3 @@ // Create adapter object

// Uses the built-in NeDB adapter
source: 'nedb',
source: nedb,
// Initiates adapter with following config

@@ -93,38 +83,64 @@ config: {

## Examples
## Custom Adapters
As often times it is easier to understand something when seen in practice, there
are several [examples](/examples) available.
While the team behind Modli provides a number of adapters, Modli core is also
designed to accept a path to a custom adapter:
The [`/test/index.int.js`](/test/index.int.js) file also serves as an integration
test suite which shows how functionality of Modli is designed.
```javascript
adapter.use({
name: 'myCustomAdapter',
source: 'path/to/myCustomAdapter'
config: {
/*...custom config properties...*/
}
});
```
### Validate Model Data
To see a functional example of a custom adapter see [/examples/custom-adapter](/examples/custom-adapter)
Validating a model (using the above example) is then simply a matter of the
model's `validate` method which returns any (or `null`) validation errors:
## Extending Adapters
Adapters can be esily extended upon. For example, a custom method could be added to
the NeDB adapter used in the [Getting Started section](#getting-started):
```javascript
// Some data
const testData = {
id: 12345,
fname: 'John',
lname: 'Doe',
email: 'jdoe@gmail.com'
};
import { nedb } from 'modli-nedb';
// Run validation against testData with model version 1
const validationErrors = someModel.validate(testData, 1);
if (!validationErrors) {
// Everything passed
console.log('Passed!');
} else {
// Failed, logs 'Failed' along with the validation errors
console.log('Failed', validationErrors);
}
nedb.extend('myCustomMethod', (someVal) => {
// Just return the value passed
return someVal;
});
```
All adapters contain the `extend` method which becomes part of the created object
when a model and adapter are `use`'d, so the adapter can be extended before
initialization with a model, or inline:
```javascript
// Initial setup
adapter.add({ name: 'myAdapter', /*...*/ });
model.add({ name: 'myModel', /*...*/ });
// Usable object
const myTest = use('myModel', 'myAdapter');
// Extend...
myTest.extend('myCustomMethod', (someVal) => {
// Just return the value passed
return someVal;
});
```
The above would allow you to then call `myTest.myCustomMethod('foo')` and expect
the response to be `foo`.
### Validate Model Data
Validation of model data is done by the adapter when data is being insertered,
i.e. create and update procedures. The adapter inherits the model's `validate`
method which utilizes the [Joi](https://github.com/hapijs/joi) library to ensure
properties are correct.
### Validation Error Formatting
By default, the `validation` methods `fail` response will return the Joi error
By default, the `validation` method's `fail` response will return the Joi error
object. This can be overridden using the following:

@@ -147,32 +163,4 @@

The above would return `"id" must be a number` if the above model was tested
with an invalid (`string`) id.
with an invalid `string` id when the expected input was an `integer`.
## Adapters
*Please see the [Adapters Readme](/src/adapters) for additional information.*
Adapters allow for creating standard CRUD methods which are then extended upon
the model to make interacting with the datasource simple.
### Default methods
All adapters have 6 main methods which are exposed on the model; `create`, `read`,
`update`, `delete`, `config` and `extend`.
While these methods are mostly self-explanatory, some noteworthy specifics:
The `config` method is called automatically by the model when the adapter is
bound to it (see above model example).
The `extend` method allows adapters to be dynamically built upon. An example of
this method would be:
```javascript
import { myAdapter } from '/path/to/myAdapter';
// namespace: myAdapter
myAdapter.extend = (name, fn) => {
myAdapter[name] = fn.bind(nedb);
};
```
### Adapters and Validation

@@ -191,2 +179,10 @@

## Examples
As often times it is easier to understand something when seen in practice, there
are several [examples](/examples) available.
The [`/test/index.spec.js`](/test/index.spec.js) file also serves as an integration
test suite which shows how functionality of Modli is designed.
## Makefile and Scripts

@@ -203,5 +199,2 @@

* `test` will run all spec files in `/test/src`
* `test-libs` will test modli's libs
* `test-adapters` will test all adapters
* `test-integration` will run integration test
* `test-cover` will run code coverage on all tests

@@ -212,19 +205,7 @@ * `lint` will lint all files in `/src`

Running `make test` will run the full test suite. Since adapters require a data
source if one is not configured the tests will fail. To counter this tests are
able to be broken up.
Running `make test` will run the full test suite.
**Core Modli Tests**
When working on core Modli functionality (i.e. the `/src/libs`) running the
`make test-libs` command will unit test the code.
**Adapter Tests**
When building (mostly in CI) if all adapters have access to test data sources the
`make test-adapters` command will run all tests on `/src/adapters`.
**Test Inidividual File**
An individual spec can be run by specifying the `FILE`. This is convenient when
An individual spec can be run by specifying the `FILE`. This is convenient when
working on an individual adapter.

@@ -236,3 +217,3 @@

The `FILE` is relative to the `test/src/` directory.
The `FILE` is relative to the `test/` directory.

@@ -239,0 +220,0 @@ **Deploys**

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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