js-data-rethinkdb
Advanced tools
Comparing version 3.0.0-alpha.7 to 3.0.0-alpha.8
@@ -0,1 +1,7 @@ | ||
##### 3.0.0-alpha.8 - 06 March 2016 | ||
###### Other | ||
- Extracted common adapter functionality into js-data-adapter | ||
- Extracted common js-data repo utility scripts into js-data-repo-tools | ||
##### 3.0.0-alpha.7 - 03 March 2016 | ||
@@ -2,0 +8,0 @@ |
@@ -18,6 +18,5 @@ { | ||
"copyright": "js-data-rethinkdb Copyright © 2014-2016 js-data-rethinkdb project authors", | ||
"outputSourceFiles": true, | ||
"syntaxTheme": "dark", | ||
"linenums": true, | ||
"footer": "<div style=\"text-align:center\">Back to <a href=\"http://js-data.io\">js-data.io</a></div>", | ||
"footer": "<div style=\"text-align:center\">Back to <a href=\"http://api.js-data.io\">api.js-data.io</a></div>", | ||
"analytics": { | ||
@@ -24,0 +23,0 @@ "ua": "UA-55528236-2", |
@@ -6,2 +6,4 @@ 'use strict'; | ||
var jsData = require('js-data'); | ||
var Adapter = require('js-data-adapter'); | ||
var Adapter__default = _interopDefault(Adapter); | ||
var rethinkdbdash = _interopDefault(require('rethinkdbdash')); | ||
@@ -12,7 +14,2 @@ var underscore = _interopDefault(require('mout/string/underscore')); | ||
var babelHelpers = {}; | ||
babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { | ||
return typeof obj; | ||
} : function (obj) { | ||
return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; | ||
}; | ||
@@ -37,2 +34,3 @@ babelHelpers.defineProperty = function (obj, key, value) { | ||
var addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget; | ||
var classCallCheck = jsData.utils.classCallCheck; | ||
var extend = jsData.utils.extend; | ||
@@ -47,2 +45,3 @@ var fillIn = jsData.utils.fillIn; | ||
var isUndefined = jsData.utils.isUndefined; | ||
var omit = jsData.utils.omit; | ||
var plainCopy = jsData.utils.plainCopy; | ||
@@ -52,39 +51,4 @@ var resolve = jsData.utils.resolve; | ||
var reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where']; | ||
var noop = function noop() { | ||
var self = this; | ||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
args[_key] = arguments[_key]; | ||
} | ||
var opts = args[args.length - 1]; | ||
self.dbg.apply(self, [opts.op].concat(args)); | ||
return resolve(); | ||
}; | ||
var noop2 = function noop2() { | ||
var self = this; | ||
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
args[_key2] = arguments[_key2]; | ||
} | ||
var opts = args[args.length - 2]; | ||
self.dbg.apply(self, [opts.op].concat(args)); | ||
return resolve(); | ||
}; | ||
var withoutRelations = function withoutRelations(mapper, props) { | ||
var relationFields = mapper.relationFields || []; | ||
// Remove relations | ||
var _props = {}; | ||
forOwn(props, function (value, key) { | ||
if (relationFields.indexOf(key) === -1) { | ||
_props[key] = value; | ||
} | ||
}); | ||
return _props; | ||
return omit(props, mapper.relationFields || []); | ||
}; | ||
@@ -268,2 +232,3 @@ | ||
* @class RethinkDBAdapter | ||
* @extends Adapter | ||
* @param {Object} [opts] Configuration opts. | ||
@@ -284,5 +249,6 @@ * @param {string} [opts.authKey=""] RethinkDB authorization key. | ||
var self = this; | ||
classCallCheck(self, RethinkDBAdapter); | ||
opts || (opts = {}); | ||
fillIn(opts, DEFAULTS); | ||
fillIn(self, opts); | ||
Adapter__default.call(this, opts); | ||
@@ -351,2 +317,17 @@ /** | ||
// Setup prototype inheritance from Adapter | ||
RethinkDBAdapter.prototype = Object.create(Adapter__default.prototype, { | ||
constructor: { | ||
value: RethinkDBAdapter, | ||
enumerable: false, | ||
writable: true, | ||
configurable: true | ||
} | ||
}); | ||
Object.defineProperty(RethinkDBAdapter, '__super__', { | ||
configurable: true, | ||
value: Adapter__default | ||
}); | ||
/** | ||
@@ -358,6 +339,6 @@ * Alternative to ES6 class syntax for extending `RethinkDBAdapter`. | ||
* @param {Object} [instanceProps] Properties that will be added to the | ||
* prototype of the subclass. | ||
* prototype of the RethinkDBAdapter. | ||
* @param {Object} [classProps] Properties that will be added as static | ||
* properties to the subclass itself. | ||
* @return {Object} Subclass of `RethinkDBAdapter`. | ||
* properties to the RethinkDBAdapter itself. | ||
* @return {Object} RethinkDBAdapter of `RethinkDBAdapter`. | ||
*/ | ||
@@ -375,122 +356,2 @@ RethinkDBAdapter.extend = extend; | ||
}, | ||
/** | ||
* @name RethinkDBAdapter#afterCreate | ||
* @method | ||
*/ | ||
afterCreate: noop2, | ||
/** | ||
* @name RethinkDBAdapter#afterCreateMany | ||
* @method | ||
*/ | ||
afterCreateMany: noop2, | ||
/** | ||
* @name RethinkDBAdapter#afterDestroy | ||
* @method | ||
*/ | ||
afterDestroy: noop2, | ||
/** | ||
* @name RethinkDBAdapter#afterDestroyAll | ||
* @method | ||
*/ | ||
afterDestroyAll: noop2, | ||
/** | ||
* @name RethinkDBAdapter#afterFind | ||
* @method | ||
*/ | ||
afterFind: noop2, | ||
/** | ||
* @name RethinkDBAdapter#afterFindAll | ||
* @method | ||
*/ | ||
afterFindAll: noop2, | ||
/** | ||
* @name RethinkDBAdapter#afterUpdate | ||
* @method | ||
*/ | ||
afterUpdate: noop2, | ||
/** | ||
* @name RethinkDBAdapter#afterUpdateAll | ||
* @method | ||
*/ | ||
afterUpdateAll: noop2, | ||
/** | ||
* @name RethinkDBAdapter#afterUpdateMany | ||
* @method | ||
*/ | ||
afterUpdateMany: noop2, | ||
/** | ||
* @name RethinkDBAdapter#beforeCreate | ||
* @method | ||
*/ | ||
beforeCreate: noop, | ||
/** | ||
* @name RethinkDBAdapter#beforeCreateMany | ||
* @method | ||
*/ | ||
beforeCreateMany: noop, | ||
/** | ||
* @name RethinkDBAdapter#beforeDestroy | ||
* @method | ||
*/ | ||
beforeDestroy: noop, | ||
/** | ||
* @name RethinkDBAdapter#beforeDestroyAll | ||
* @method | ||
*/ | ||
beforeDestroyAll: noop, | ||
/** | ||
* @name RethinkDBAdapter#beforeFind | ||
* @method | ||
*/ | ||
beforeFind: noop, | ||
/** | ||
* @name RethinkDBAdapter#beforeFindAll | ||
* @method | ||
*/ | ||
beforeFindAll: noop, | ||
/** | ||
* @name RethinkDBAdapter#beforeUpdate | ||
* @method | ||
*/ | ||
beforeUpdate: noop, | ||
/** | ||
* @name RethinkDBAdapter#beforeUpdateAll | ||
* @method | ||
*/ | ||
beforeUpdateAll: noop, | ||
/** | ||
* @name RethinkDBAdapter#beforeUpdateMany | ||
* @method | ||
*/ | ||
beforeUpdateMany: noop, | ||
/** | ||
* @name RethinkDBAdapter#dbg | ||
* @method | ||
*/ | ||
dbg: function dbg() { | ||
for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { | ||
args[_key3] = arguments[_key3]; | ||
} | ||
this.log.apply(this, ['debug'].concat(args)); | ||
}, | ||
selectDb: function selectDb(opts) { | ||
@@ -535,3 +396,3 @@ return this.r.db(isUndefined(opts.db) ? this.db : opts.db); | ||
forOwn(query, function (config, keyword) { | ||
if (reserved.indexOf(keyword) === -1) { | ||
if (Adapter.reserved.indexOf(keyword) === -1) { | ||
if (isObject(config)) { | ||
@@ -554,3 +415,3 @@ query.where[keyword] = config; | ||
rql = rql.filter(function (row) { | ||
var subQuery = undefined; | ||
var subQuery = void 0; | ||
// Apply filter for each field | ||
@@ -635,3 +496,3 @@ forOwn(query.where, function (criteria, field) { | ||
var self = this; | ||
var op = undefined; | ||
var op = void 0; | ||
props || (props = {}); | ||
@@ -652,17 +513,15 @@ opts || (opts = {}); | ||
self._handleErrors(cursor); | ||
var record = undefined; | ||
var record = void 0; | ||
if (cursor && cursor.changes && cursor.changes.length && cursor.changes[0].new_val) { | ||
record = cursor.changes[0].new_val; | ||
} | ||
var result = {}; | ||
fillIn(result, cursor); | ||
result.data = record; | ||
result.created = record ? 1 : 0; | ||
result = self.getOpt('raw', opts) ? result : result.data; | ||
var response = new Adapter.Response(record, cursor, 'create'); | ||
response.created = record ? 1 : 0; | ||
response = self.respond(response, opts); | ||
// afterCreate lifecycle hook | ||
op = opts.op = 'afterCreate'; | ||
return resolve(self[op](mapper, props, opts, result)).then(function (_result) { | ||
return resolve(self[op](mapper, props, opts, response)).then(function (_response) { | ||
// Allow for re-assignment from lifecycle hook | ||
return isUndefined(_result) ? result : _result; | ||
return isUndefined(_response) ? response : _response; | ||
}); | ||
@@ -689,3 +548,3 @@ }); | ||
var self = this; | ||
var op = undefined; | ||
var op = void 0; | ||
props || (props = {}); | ||
@@ -715,5 +574,3 @@ opts || (opts = {}); | ||
} | ||
var result = {}; | ||
fillIn(result, cursor); | ||
result.data = records; | ||
var result = new Adapter.Response(records, cursor, 'createMany'); | ||
result.created = records.length; | ||
@@ -748,3 +605,3 @@ result = self.getOpt('raw', opts) ? result : result.data; | ||
var self = this; | ||
var op = undefined; | ||
var op = void 0; | ||
opts || (opts = {}); | ||
@@ -761,4 +618,3 @@ | ||
}).then(function (cursor) { | ||
var result = {}; | ||
fillIn(result, cursor); | ||
var result = new Adapter.Response(undefined, cursor, 'destroy'); | ||
result = self.getOpt('raw', opts) ? result : undefined; | ||
@@ -800,3 +656,3 @@ | ||
var self = this; | ||
var op = undefined; | ||
var op = void 0; | ||
query || (query = {}); | ||
@@ -814,4 +670,3 @@ opts || (opts = {}); | ||
}).then(function (cursor) { | ||
var result = {}; | ||
fillIn(result, cursor); | ||
var result = new Adapter.Response(undefined, cursor, 'destroyAll'); | ||
result = self.getOpt('raw', opts) ? result : undefined; | ||
@@ -830,143 +685,2 @@ | ||
/** | ||
* Return the foreignKey from the given record for the provided relationship. | ||
* | ||
* There may be reasons why you may want to override this method, like when | ||
* the id of the parent doesn't exactly match up to the key on the child. | ||
* | ||
* @name RethinkDBAdapter#makeHasManyForeignKey | ||
* @method | ||
* @return {*} | ||
*/ | ||
makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) { | ||
return def.getForeignKey(record); | ||
}, | ||
/** | ||
* Load a hasMany relationship. | ||
* | ||
* @name RethinkDBAdapter#loadHasMany | ||
* @method | ||
* @return {Promise} | ||
*/ | ||
loadHasMany: function loadHasMany(mapper, def, records, __opts) { | ||
var self = this; | ||
var singular = false; | ||
if (isObject(records) && !isArray(records)) { | ||
singular = true; | ||
records = [records]; | ||
} | ||
var IDs = records.map(function (record) { | ||
return self.makeHasManyForeignKey(mapper, def, record); | ||
}); | ||
var query = {}; | ||
var criteria = query[def.foreignKey] = {}; | ||
if (singular) { | ||
// more efficient query when we only have one record | ||
criteria['=='] = IDs[0]; | ||
} else { | ||
criteria['in'] = IDs.filter(function (id) { | ||
return id; | ||
}); | ||
} | ||
return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) { | ||
records.forEach(function (record) { | ||
var attached = []; | ||
// avoid unneccesary iteration when we only have one record | ||
if (singular) { | ||
attached = relatedItems; | ||
} else { | ||
relatedItems.forEach(function (relatedItem) { | ||
if (get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { | ||
attached.push(relatedItem); | ||
} | ||
}); | ||
} | ||
def.setLocalField(record, attached); | ||
}); | ||
}); | ||
}, | ||
/** | ||
* Load a hasOne relationship. | ||
* | ||
* @name RethinkDBAdapter#loadHasOne | ||
* @method | ||
* @return {Promise} | ||
*/ | ||
loadHasOne: function loadHasOne(mapper, def, records, __opts) { | ||
if (isObject(records) && !isArray(records)) { | ||
records = [records]; | ||
} | ||
return this.loadHasMany(mapper, def, records, __opts).then(function () { | ||
records.forEach(function (record) { | ||
var relatedData = def.getLocalField(record); | ||
if (isArray(relatedData) && relatedData.length) { | ||
def.setLocalField(record, relatedData[0]); | ||
} | ||
}); | ||
}); | ||
}, | ||
/** | ||
* Return the foreignKey from the given record for the provided relationship. | ||
* | ||
* @name RethinkDBAdapter#makeBelongsToForeignKey | ||
* @method | ||
* @return {*} | ||
*/ | ||
makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) { | ||
return def.getForeignKey(record); | ||
}, | ||
/** | ||
* Load a belongsTo relationship. | ||
* | ||
* @name RethinkDBAdapter#loadBelongsTo | ||
* @method | ||
* @return {Promise} | ||
*/ | ||
loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) { | ||
var self = this; | ||
var relationDef = def.getRelation(); | ||
if (isObject(records) && !isArray(records)) { | ||
var _ret = function () { | ||
var record = records; | ||
return { | ||
v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) { | ||
def.setLocalField(record, relatedItem); | ||
}) | ||
}; | ||
}(); | ||
if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === "object") return _ret.v; | ||
} else { | ||
var keys = records.map(function (record) { | ||
return self.makeBelongsToForeignKey(mapper, def, record); | ||
}).filter(function (key) { | ||
return key; | ||
}); | ||
return self.findAll(relationDef, { | ||
where: babelHelpers.defineProperty({}, relationDef.idAttribute, { | ||
'in': keys | ||
}) | ||
}, __opts).then(function (relatedItems) { | ||
records.forEach(function (record) { | ||
relatedItems.forEach(function (relatedItem) { | ||
if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) { | ||
def.setLocalField(record, relatedItem); | ||
} | ||
}); | ||
}); | ||
}); | ||
} | ||
}, | ||
/** | ||
* Retrieve the record with the given primary key. | ||
@@ -987,4 +701,4 @@ * | ||
var self = this; | ||
var record = undefined, | ||
op = undefined; | ||
var record = void 0, | ||
op = void 0; | ||
opts || (opts = {}); | ||
@@ -1027,3 +741,3 @@ opts.with || (opts.with = []); | ||
var relatedMapper = def.getRelation(); | ||
var task = undefined; | ||
var task = void 0; | ||
@@ -1068,6 +782,4 @@ if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { | ||
}).then(function () { | ||
var result = { | ||
data: record, | ||
found: record ? 1 : 0 | ||
}; | ||
var result = new Adapter.Response(record, {}, 'find'); | ||
result.found = record ? 1 : 0; | ||
result = self.getOpt('raw', opts) ? result : result.data; | ||
@@ -1113,3 +825,3 @@ | ||
var records = []; | ||
var op = undefined; | ||
var op = void 0; | ||
var relationList = mapper.relationList || []; | ||
@@ -1146,3 +858,3 @@ var tasks = [self.waitForTable(mapper, opts)]; | ||
var idAttribute = mapper.idAttribute; | ||
var task = undefined; | ||
var task = void 0; | ||
if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { | ||
@@ -1214,6 +926,4 @@ if (def.type === 'hasMany') { | ||
records || (records = []); | ||
var result = { | ||
data: records, | ||
found: records.length | ||
}; | ||
var result = new Adapter.Response(records, {}, 'findAll'); | ||
result.found = records.length; | ||
result = self.getOpt('raw', opts) ? result : result.data; | ||
@@ -1252,49 +962,2 @@ | ||
/** | ||
* Resolve the value of the specified option based on the given options and | ||
* this adapter's settings. | ||
* | ||
* @name RethinkDBAdapter#getOpt | ||
* @method | ||
* @param {string} opt The name of the option. | ||
* @param {Object} [opts] Configuration options. | ||
* @return {*} The value of the specified option. | ||
*/ | ||
getOpt: function getOpt(opt, opts) { | ||
opts || (opts = {}); | ||
return isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]); | ||
}, | ||
/** | ||
* Logging utility method. | ||
* | ||
* @name RethinkDBAdapter#log | ||
* @method | ||
*/ | ||
log: function log(level) { | ||
for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { | ||
args[_key4 - 1] = arguments[_key4]; | ||
} | ||
if (level && !args.length) { | ||
args.push(level); | ||
level = 'debug'; | ||
} | ||
if (level === 'debug' && !this.debug) { | ||
return; | ||
} | ||
var prefix = level.toUpperCase() + ': (RethinkDBAdapter)'; | ||
if (console[level]) { | ||
var _console; | ||
(_console = console)[level].apply(_console, [prefix].concat(args)); | ||
} else { | ||
var _console2; | ||
(_console2 = console).log.apply(_console2, [prefix].concat(args)); | ||
} | ||
}, | ||
/** | ||
* Apply the given update to the record with the specified primary key. | ||
@@ -1318,3 +981,3 @@ * | ||
opts || (opts = {}); | ||
var op = undefined; | ||
var op = void 0; | ||
@@ -1332,3 +995,3 @@ return self.waitForTable(mapper, opts).then(function () { | ||
}).then(function (cursor) { | ||
var record = undefined; | ||
var record = void 0; | ||
self._handleErrors(cursor); | ||
@@ -1340,5 +1003,3 @@ if (cursor && cursor.changes && cursor.changes.length && cursor.changes[0].new_val) { | ||
} | ||
var result = {}; | ||
fillIn(result, cursor); | ||
result.data = record; | ||
var result = new Adapter.Response(record, cursor, 'update'); | ||
result.updated = 1; | ||
@@ -1385,3 +1046,3 @@ result = self.getOpt('raw', opts) ? result : result.data; | ||
opts || (opts = {}); | ||
var op = undefined; | ||
var op = void 0; | ||
@@ -1406,5 +1067,3 @@ return self.waitForTable(mapper, opts).then(function () { | ||
} | ||
var result = {}; | ||
fillIn(result, cursor); | ||
result.data = records; | ||
var result = new Adapter.Response(records, cursor, 'update'); | ||
result.updated = records.length; | ||
@@ -1441,3 +1100,3 @@ result = self.getOpt('raw', opts) ? result : result.data; | ||
opts || (opts = {}); | ||
var op = undefined; | ||
var op = void 0; | ||
var idAttribute = mapper.idAttribute; | ||
@@ -1464,3 +1123,3 @@ | ||
}).then(function (cursor) { | ||
var updatedRecords = undefined; | ||
var updatedRecords = void 0; | ||
self._handleErrors(cursor); | ||
@@ -1472,5 +1131,3 @@ if (cursor && cursor.changes && cursor.changes.length) { | ||
} | ||
var result = {}; | ||
fillIn(result, cursor); | ||
result.data = updatedRecords || []; | ||
var result = new Adapter.Response(updatedRecords || [], cursor, 'update'); | ||
result.updated = result.data.length; | ||
@@ -1477,0 +1134,0 @@ result = self.getOpt('raw', opts) ? result : result.data; |
{ | ||
"name": "js-data-rethinkdb", | ||
"description": "RethinkDB adapter for js-data.", | ||
"version": "3.0.0-alpha.7", | ||
"version": "3.0.0-alpha.8", | ||
"homepage": "https://github.com/js-data/js-data-rethinkdb", | ||
@@ -36,5 +36,6 @@ "repository": { | ||
"scripts": { | ||
"doc": "jsdoc -c conf.json src && node scripts/cleanup.js", | ||
"lint": "repo-tools lint src/index.js mocha.start.js test/**/*.js scripts/**.js", | ||
"bundle": "rollup -c rollup.config.js -f cjs -o dist/js-data-rethinkdb.js -m dist/js-data-rethinkdb.js.map src/index.js", | ||
"lint": "standard src/index.js mocha.start.js test/**/*.js scripts/**.js", | ||
"doc": "jsdoc -c conf.json src node_modules/js-data-adapter/src && node scripts/cleanup.js", | ||
"watch": "watch \"npm run bundle\" src/", | ||
"build": "npm run lint && npm run bundle", | ||
@@ -44,15 +45,16 @@ "mocha": "mocha -t 30000 -R dot -r source-map-support/register mocha.start.js", | ||
"test": "npm run build && npm run cover", | ||
"release": "npm test && npm run doc && node scripts/authors.js", | ||
"repo-tools": "repo-tools updates && repo-tools changelog && repo-tools authors", | ||
"release": "npm test && npm run doc && npm run repo-tools", | ||
"ci": "npm run test && cat coverage/lcov.info | coveralls || true && cat ./coverage/lcov.info | codacy-coverage || true" | ||
}, | ||
"dependencies": { | ||
"mout": "0.11.1" | ||
"js-data-adapter": "0.1.0", | ||
"mout": "0.12.0" | ||
}, | ||
"peerDependencies": { | ||
"js-data": "^3.0.0-alpha.15", | ||
"js-data": "^3.0.0-alpha.16", | ||
"rethinkdbdash": ">=1.15.0" | ||
}, | ||
"devDependencies": { | ||
"babel-core": "6.6.4", | ||
"babel-eslint": "5.0.0", | ||
"babel-core": "6.6.5", | ||
"babel-polyfill": "6.6.1", | ||
@@ -66,2 +68,3 @@ "babel-preset-es2015-rollup": "1.1.1", | ||
"js-data-adapter-tests": "^2.0.0-alpha.13", | ||
"js-data-repo-tools": "0.2.0", | ||
"jsdoc": "3.4.0", | ||
@@ -73,4 +76,4 @@ "mocha": "2.4.5", | ||
"source-map-support": "0.4.0", | ||
"standard": "6.0.7" | ||
"watch": "0.17.1" | ||
} | ||
} |
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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
120087
4
20
1143
+ Addedjs-data-adapter@0.1.0
+ Addedjs-data-adapter@0.1.0(transitive)
+ Addedmout@0.12.0(transitive)
- Removedmout@0.11.1(transitive)
Updatedmout@0.12.0