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.4.1 to 2.0.0

coverage/coverage.json

33

build/index.js

@@ -1,18 +0,12 @@

/*
* Copyright (c) 2015 TechnologyAdvice
*/
// Libs
'use strict';
Object.defineProperty(exports, '__esModule', {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.obey = exports.adapter = exports.model = exports.use = undefined;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _model = require('./lib/model');
var _libModel = require('./lib/model');
var _adapter = require('./lib/adapter');
var _libAdapter = require('./lib/adapter');
var _lodash = require('lodash');

@@ -22,2 +16,4 @@

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**

@@ -36,8 +32,13 @@ * Adds plugins for extending core functionality

*/
/*
* Copyright (c) 2015 TechnologyAdvice
*/
// Libs
var use = function use(modelName, adapterName) {
// Initialize model and adapter
var m = _libModel.model.init(modelName);
var a = _libAdapter.adapter.init(adapterName);
var m = _model.model.init(modelName);
var a = _adapter.adapter.init(adapterName);
// Return extended (in case model has arbitrary properties/methods)
return _lodash2['default'].extend(a, m, { plugin: pluginFn });
return _lodash2.default.extend(a, m, { plugin: pluginFn });
};

@@ -49,4 +50,4 @@

exports.use = use;
exports.model = _libModel.model;
exports.adapter = _libAdapter.adapter;
exports.Joi = _libModel.Joi;
exports.model = _model.model;
exports.adapter = _adapter.adapter;
exports.obey = _model.obey;

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

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
/**

@@ -5,10 +10,4 @@ * Exports the core adapter object

*/
'use strict';
var adapter = exports.adapter = {};
Object.defineProperty(exports, '__esModule', {
value: true
});
var adapter = {};
exports.adapter = adapter;
/**

@@ -15,0 +14,0 @@ * Stores the adapters in memory

@@ -1,12 +0,11 @@

/**
* Exports Joi so no additional import/require needed
*/
'use strict';
Object.defineProperty(exports, '__esModule', {
Object.defineProperty(exports, "__esModule", {
value: true
});
var Joi = require('joi');
/**
* Exports Joi so no additional import/require needed
*/
var obey = exports.obey = require('obey');
exports.Joi = Joi;
/**

@@ -16,5 +15,4 @@ * Exports the core model object

*/
var model = {};
var model = exports.model = {};
exports.model = model;
/**

@@ -44,3 +42,8 @@ * Stores the models and their versions in memory

if (prop !== 'version' && prop !== 'name') {
modelObj[prop] = m[prop];
if (prop === 'schema' && typeof m.schema.validate !== 'function') {
// Build model
modelObj.schema = obey.model(m.schema);
} else {
modelObj[prop] = m[prop];
}
}

@@ -69,7 +72,4 @@ });

// Return validation
return Joi.validate(data, Joi.object().keys(this.schemas[v].schema), function (err) {
if (err) {
return model.formatValidationError(err);
}
return null;
return this.schemas[v].schema.validate(data).catch(function (err) {
return model.formatValidationError(err.collection);
});

@@ -81,4 +81,4 @@ },

for (var prop in dataNode) {
if (schemaNode[prop] && ({}).toString.call(dataNode[prop]).match(/\s([a-zA-Z]+)/)[1].toLowerCase() === 'object') {
itt(schemaNode[prop], dataNode[prop]);
if (schemaNode[prop] && {}.toString.call(dataNode[prop]).match(/\s([a-zA-Z]+)/)[1].toLowerCase() === 'object') {
itt(schemaNode[prop].keys, dataNode[prop]);
} else if (!schemaNode[prop]) {

@@ -90,3 +90,3 @@ delete dataNode[prop];

};
return itt(this.schemas[v].schema, data);
return itt(this.schemas[v].schema.def.keys, data);
}

@@ -105,5 +105,5 @@ };

// A custom formatter is defined
return model.customValidationError(err);
throw model.customValidationError(err);
}
return err;
throw err;
};

@@ -110,0 +110,0 @@

{
"name": "modli",
"version": "1.4.1",
"version": "2.0.0",
"description": "A module for building models and adapters for multiple data sources",

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

"scripts": {
"all": "make",
"start": "make start",
"clean": "make clean",
"build": "make build",
"test": "make test",
"test-libs": "make test-libs",
"test-adapters": "make test-adapters",
"test-integration": "make test-integration",
"test-cover": "make test-cover",
"lint": "make lint"
"clean": "rm -rf node_modules",
"build": "babel ./src --out-dir ./build",
"test": "npm run lint && npm run cover",
"mocha": "babel-node node_modules/.bin/_mocha",
"cover": "babel-node node_modules/isparta/bin/isparta cover node_modules/mocha/bin/_mocha",
"lint": "eslint ./src ./test --fix"
},

@@ -32,24 +28,30 @@ "license": "MIT",

"assert": "^1.3.0",
"babel": "^5.6.14",
"babel-eslint": "^4.0.5",
"babel-istanbul": "^0.3.17",
"body-parser": "^1.13.3",
"chai": "^3.0.0",
"eslint": "^1.2.1",
"express": "^4.13.3",
"istanbul-harmony": "^0.3.16",
"mocha": "^2.2.5",
"modli-nedb": "^1.2.0",
"pre-commit": "^1.1.1",
"should": "^7.0.2"
"mocha": "~2.2.5",
"modli-nedb": "^2.0.1",
"pre-commit": "~1.1.1",
"babel-cli": "~6.1.4",
"babel-core": "~6.1.4",
"babel-eslint": "~4.1.7",
"babel-preset-es2015": "^6.5.0",
"chai": "~3.0.0",
"chai-as-promised": "^5.2.0",
"eslint": "~2.1.0",
"isparta": "~4.0.0",
"sinon": "~1.15.4",
"sinon-chai": "~2.8.0"
},
"dependencies": {
"bluebird": "^2.9.34",
"joi": "^6.6.1",
"obey": "^0.9.0",
"lodash": "^3.10.1"
},
"pre-commit": [
"lint",
"test"
]
],
"babel": {
"presets": [
"es2015"
]
}
}

@@ -30,3 +30,3 @@ [![wercker status](https://app.wercker.com/status/f3739d627fd42f6eb10bf5e1a1c09a84/s/master "wercker status")](https://app.wercker.com/project/bykey/f3739d627fd42f6eb10bf5e1a1c09a84)

// Import all the Modli methods
import { model, adapter, use, Joi } from 'modli';
import { model, adapter, use } from 'modli';
// Import the adapter to use

@@ -54,6 +54,6 @@ import nedb from 'modli-nedb';

schema: {
id: Joi.number().integer(),
fname: Joi.string().min(3).max(30),
lname: Joi.string().min(3).max(30),
email: Joi.string().email().min(3).max(254).required()
id: { type: 'number', required: true },
fname: { type: 'string' },
lname: { type: 'string' },
email: { type: 'email', required: true }
}

@@ -159,3 +159,3 @@ });

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
method which utilizes the [Obey](https://github.com/TechnologyAdvice/obey) library to ensure
properties are correct.

@@ -165,3 +165,3 @@

By default, the `validation` method's `fail` response will return the Joi error
By default, the `validation` method's `fail` response will return the Obey error
object. This can be overridden using the following:

@@ -179,3 +179,3 @@

model.customValidationError = (err) => {
return err.details[0].message;
return err[0].message;
}

@@ -182,0 +182,0 @@ ```

@@ -6,5 +6,5 @@ /*

// Libs
import { model, Joi } from './lib/model';
import { adapter } from './lib/adapter';
import _ from 'lodash';
import { model, obey } from './lib/model'
import { adapter } from './lib/adapter'
import _ from 'lodash'

@@ -15,5 +15,5 @@ /**

*/
const pluginFn = function (plugin) {
this[plugin.name] = plugin;
};
const pluginFn = function(plugin) {
this[plugin.name] = plugin
}

@@ -27,7 +27,7 @@ /**

// Initialize model and adapter
const m = model.init(modelName);
const a = adapter.init(adapterName);
const m = model.init(modelName)
const a = adapter.init(adapterName)
// Return extended (in case model has arbitrary properties/methods)
return _.extend(a, m, { plugin: pluginFn });
};
return _.extend(a, m, { plugin: pluginFn })
}

@@ -38,3 +38,3 @@ /**

export {
use, model, adapter, Joi
};
use, model, adapter, obey
}

@@ -5,3 +5,3 @@ /**

*/
export const adapter = {};
export const adapter = {}

@@ -12,3 +12,3 @@ /**

*/
adapter.store = {};
adapter.store = {}

@@ -26,3 +26,3 @@ /**

config: a.config
}));
}))
}

@@ -33,4 +33,4 @@ // Add to memory

config: a.config
};
};
}
}

@@ -44,15 +44,15 @@ /**

adapter.init = (a) => {
let adapterObj;
let adapterObj
// Ensure model is defined
if (!adapter.store[a]) {
throw new Error('Adapter not defined');
throw new Error('Adapter not defined')
}
const source = adapter.store[a].source;
const source = adapter.store[a].source
if (typeof source === 'function') {
adapterObj = source;
adapterObj = source
} else {
adapterObj = require(source);
adapterObj = require(source)
}
// Instantiate adapter
return new adapterObj(adapter.store[a].config);
};
return new adapterObj(adapter.store[a].config)
}
/**
* Exports Joi so no additional import/require needed
*/
export const Joi = require('joi');
export const obey = require('obey')

@@ -10,3 +10,3 @@ /**

*/
export const model = {};
export const model = {}

@@ -17,3 +17,3 @@ /**

*/
model.store = {};
model.store = {}

@@ -27,3 +27,3 @@ /**

if (!m.name || !m.version || !m.schema) {
throw new Error('Model must contain a name, version and schema');
throw new Error('Model must contain a name, version and schema')
}

@@ -33,14 +33,19 @@ // Check if model exists

// Create new store entry
model.store[m.name] = {};
model.store[m.name] = {}
}
// Build model object
let modelObj = {};
let modelObj = {}
Object.keys(m).forEach((prop) => {
if (prop !== 'version' && prop !== 'name') {
modelObj[prop] = m[prop];
if (prop === 'schema' && typeof m.schema.validate !== 'function') {
// Build model
modelObj.schema = obey.model(m.schema)
} else {
modelObj[prop] = m[prop]
}
}
});
})
// Append to existing store entry with version and schema
model.store[m.name][m.version] = modelObj;
};
model.store[m.name][m.version] = modelObj
}

@@ -55,3 +60,3 @@ /**

if (!model.store[m]) {
throw new Error('Model not defined');
throw new Error('Model not defined')
}

@@ -62,28 +67,24 @@ // Get model object

schemas: model.store[m],
validate: function (data, version) {
const v = version || this.defaultVersion;
validate: function(data, version) {
const v = version || this.defaultVersion
// Return validation
return Joi.validate(data, Joi.object().keys(this.schemas[v].schema), (err) => {
if (err) {
return model.formatValidationError(err);
}
return null;
});
return this.schemas[v].schema.validate(data)
.catch(err => model.formatValidationError(err.collection))
},
sanitize: function (data, version) {
const v = version || this.defaultVersion;
sanitize: function(data, version) {
const v = version || this.defaultVersion
const itt = (schemaNode, dataNode) => {
for (let prop in dataNode) {
if (schemaNode[prop] && ({}).toString.call(dataNode[prop]).match(/\s([a-zA-Z]+)/)[1].toLowerCase() === 'object') {
itt(schemaNode[prop], dataNode[prop]);
if (schemaNode[prop] && {}.toString.call(dataNode[prop]).match(/\s([a-zA-Z]+)/)[1].toLowerCase() === 'object') {
itt(schemaNode[prop].keys, dataNode[prop])
} else if (!schemaNode[prop]) {
delete dataNode[prop];
delete dataNode[prop]
}
}
return dataNode;
};
return itt(this.schemas[v].schema, data);
return dataNode
}
return itt(this.schemas[v].schema.def.keys, data)
}
};
};
}
}

@@ -99,6 +100,6 @@ /**

// A custom formatter is defined
return model.customValidationError(err);
throw model.customValidationError(err)
}
return err;
};
throw err
}

@@ -109,2 +110,2 @@ /**

*/
model.customValidationError = false;
model.customValidationError = false
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