Comparing version 0.5.23 to 0.5.24
@@ -1,14 +0,27 @@ | ||
/* eslint no-shadow: 0 */ | ||
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); | ||
var _regenerator = require('babel-runtime/regenerator'); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _regenerator2 = _interopRequireDefault(_regenerator); | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } | ||
var _promise = require('babel-runtime/core-js/promise'); | ||
var _promise2 = _interopRequireDefault(_promise); | ||
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); | ||
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); | ||
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); | ||
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
var _createClass2 = require('babel-runtime/helpers/createClass'); | ||
var _createClass3 = _interopRequireDefault(_createClass2); | ||
var _lodash = require('lodash'); | ||
@@ -22,12 +35,14 @@ | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
/* eslint no-shadow: 0 */ | ||
var debug = require('debug')('nothinkdb:Environment'); | ||
var Environment = (function () { | ||
var Environment = function () { | ||
function Environment() { | ||
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; | ||
_classCallCheck(this, Environment); | ||
(0, _classCallCheck3.default)(this, Environment); | ||
var _options$Table = options.Table; | ||
var Table = _options$Table === undefined ? _Table3['default'] : _options$Table; | ||
var Table = _options$Table === undefined ? _Table3.default : _options$Table; | ||
@@ -38,3 +53,3 @@ this.Table = Table; | ||
_createClass(Environment, [{ | ||
(0, _createClass3.default)(Environment, [{ | ||
key: 'createTable', | ||
@@ -44,2 +59,3 @@ value: function createTable(options) { | ||
if (this.hasTable(tableName)) { | ||
@@ -62,3 +78,3 @@ debug('[createTable] tableName: \'' + tableName + '\' is already defined'); | ||
value: function hasTable(tableName) { | ||
return _lodash2['default'].has(this.tables, tableName); | ||
return _lodash2.default.has(this.tables, tableName); | ||
} | ||
@@ -68,70 +84,90 @@ }, { | ||
value: function getAllTables() { | ||
return _lodash2['default'].values(this.tables); | ||
return _lodash2.default.values(this.tables); | ||
} | ||
}, { | ||
key: 'sync', | ||
value: function sync(connection) { | ||
return regeneratorRuntime.async(function sync$(context$2$0) { | ||
var _this2 = this; | ||
value: function () { | ||
var ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(connection) { | ||
var _this = this; | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
context$2$0.next = 2; | ||
return regeneratorRuntime.awrap(Promise.all(_lodash2['default'].map(this.tables, function callee$2$0(table) { | ||
return regeneratorRuntime.async(function callee$2$0$(context$3$0) { | ||
var _this = this; | ||
return _regenerator2.default.wrap(function _callee3$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
_context3.next = 2; | ||
return _promise2.default.all(_lodash2.default.map(this.tables, function () { | ||
var ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(table) { | ||
return _regenerator2.default.wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
if (!_lodash2.default.isFunction(connection)) { | ||
_context2.next = 5; | ||
break; | ||
} | ||
while (1) switch (context$3$0.prev = context$3$0.next) { | ||
case 0: | ||
if (!_lodash2['default'].isFunction(connection)) { | ||
context$3$0.next = 5; | ||
break; | ||
} | ||
_context2.next = 3; | ||
return connection().then(function () { | ||
var ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(connection) { | ||
return _regenerator2.default.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
_context.next = 2; | ||
return table.sync(connection); | ||
context$3$0.next = 3; | ||
return regeneratorRuntime.awrap(connection().then(function callee$3$0(connection) { | ||
return regeneratorRuntime.async(function callee$3$0$(context$4$0) { | ||
while (1) switch (context$4$0.prev = context$4$0.next) { | ||
case 0: | ||
context$4$0.next = 2; | ||
return regeneratorRuntime.awrap(table.sync(connection)); | ||
case 2: | ||
_context.next = 4; | ||
return connection.close(); | ||
case 2: | ||
context$4$0.next = 4; | ||
return regeneratorRuntime.awrap(connection.close()); | ||
case 4: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, _this); | ||
})); | ||
return function (_x4) { | ||
return ref.apply(this, arguments); | ||
}; | ||
}()); | ||
case 4: | ||
case 3: | ||
_context2.next = 7; | ||
break; | ||
case 5: | ||
_context2.next = 7; | ||
return table.sync(connection); | ||
case 7: | ||
case 'end': | ||
return context$4$0.stop(); | ||
return _context2.stop(); | ||
} | ||
}, null, _this); | ||
})); | ||
} | ||
}, _callee2, _this); | ||
})); | ||
return function (_x3) { | ||
return ref.apply(this, arguments); | ||
}; | ||
}())); | ||
case 3: | ||
context$3$0.next = 7; | ||
break; | ||
case 2: | ||
case 'end': | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee3, this); | ||
})); | ||
case 5: | ||
context$3$0.next = 7; | ||
return regeneratorRuntime.awrap(table.sync(connection)); | ||
function sync(_x2) { | ||
return ref.apply(this, arguments); | ||
} | ||
case 7: | ||
case 'end': | ||
return context$3$0.stop(); | ||
} | ||
}, null, _this2); | ||
}))); | ||
case 2: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, this); | ||
} | ||
return sync; | ||
}() | ||
}]); | ||
return Environment; | ||
})(); | ||
}(); | ||
exports['default'] = Environment; | ||
module.exports = exports['default']; | ||
exports.default = Environment; |
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); | ||
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } | ||
var _createClass2 = require('babel-runtime/helpers/createClass'); | ||
var _createClass3 = _interopRequireDefault(_createClass2); | ||
var _assert = require('assert'); | ||
@@ -17,4 +19,6 @@ | ||
var Link = (function () { | ||
_createClass(Link, null, [{ | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var Link = function () { | ||
(0, _createClass3.default)(Link, null, [{ | ||
key: 'validateLinkData', | ||
@@ -27,3 +31,3 @@ value: function validateLinkData(linkData) { | ||
value: function assertLinkData(linkData) { | ||
_assert2['default'].ok(this.validateLinkData(linkData), 'invalid link data'); | ||
_assert2.default.ok(this.validateLinkData(linkData), 'invalid link data'); | ||
} | ||
@@ -34,5 +38,3 @@ }]); | ||
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; | ||
_classCallCheck(this, Link); | ||
(0, _classCallCheck3.default)(this, Link); | ||
var left = options.left; | ||
@@ -48,5 +50,4 @@ var right = options.right; | ||
return Link; | ||
})(); | ||
}(); | ||
exports['default'] = Link; | ||
module.exports = exports['default']; | ||
exports.default = Link; |
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
import _Object$defineProperty from 'babel-runtime/core-js/object/define-property'; | ||
import _Object$keys from 'babel-runtime/core-js/object/keys'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.schema = exports.Environment = exports.Table = undefined; | ||
function _interopExportWildcard(obj, defaults) { var newObj = defaults({}, obj); delete newObj['default']; return newObj; } | ||
var _relations = require('./relations'); | ||
function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } | ||
_Object$keys(_relations).forEach(function (key) { | ||
if (key === "default") return; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
_Object$defineProperty(exports, key, { | ||
enumerable: true, | ||
get: function get() { | ||
return _relations[key]; | ||
} | ||
}); | ||
}); | ||
@@ -17,4 +27,2 @@ var _Table2 = require('./Table'); | ||
exports.Table = _Table3['default']; | ||
var _Environment2 = require('./Environment'); | ||
@@ -24,8 +32,2 @@ | ||
exports.Environment = _Environment3['default']; | ||
var _relations = require('./relations'); | ||
_defaults(exports, _interopExportWildcard(_relations, _defaults)); | ||
var _schema2 = require('./schema'); | ||
@@ -35,2 +37,6 @@ | ||
exports.schema = _schema3['default']; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.Table = _Table3.default; | ||
exports.Environment = _Environment3.default; | ||
exports.schema = _schema3.default; |
@@ -1,10 +0,15 @@ | ||
/* eslint no-shadow: 0 */ | ||
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })(); | ||
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); | ||
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); | ||
var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); | ||
var _defineProperty3 = _interopRequireDefault(_defineProperty2); | ||
exports.hasOne = hasOne; | ||
@@ -15,6 +20,2 @@ exports.belongsTo = belongsTo; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
var _rethinkdb = require('rethinkdb'); | ||
@@ -36,7 +37,12 @@ | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
/* eslint no-shadow: 0 */ | ||
function parseOptions(options) { | ||
return _lodash2['default'].chain(options).omitBy(function (value, key) { | ||
return !_lodash2['default'].startsWith(key, '_'); | ||
return _lodash2.default.chain(options).omitBy(function (value, key) { | ||
return !_lodash2.default.startsWith(key, '_'); | ||
}).reduce(function (memo, value, key) { | ||
return _defineProperty({}, key.slice(1), value); | ||
return (0, _defineProperty3.default)({}, key.slice(1), value); | ||
}, {}).value(); | ||
@@ -46,9 +52,10 @@ } | ||
function hasOne(link) { | ||
_assert2['default'].equal(link.constructor, _Link2['default']); | ||
_assert2.default.equal(link.constructor, _Link2.default); | ||
var left = link.left; | ||
var right = link.right; | ||
function getIndex(rowOrPk) { | ||
var index = undefined; | ||
if (_lodash2['default'].isFunction(rowOrPk)) { | ||
var index = void 0; | ||
if (_lodash2.default.isFunction(rowOrPk)) { | ||
var row = rowOrPk; | ||
@@ -75,9 +82,10 @@ index = row(right.field); | ||
var query = left.table.query().getAll(index, { index: left.field }); | ||
query = apply(query); | ||
return _rethinkdb2['default'].branch(index, query, _rethinkdb2['default'].expr([])); | ||
return _rethinkdb2.default.branch(index, query, _rethinkdb2.default.expr([])); | ||
} | ||
function coerceType(query) { | ||
return query.nth(0)['default'](null); | ||
return query.nth(0).default(null); | ||
} | ||
@@ -89,4 +97,4 @@ | ||
return right.table.get(onePk)['do'](function (rightRow) { | ||
return left.table.update(otherPk, _defineProperty({}, left.field, rightRow(right.field))); | ||
return right.table.get(onePk).do(function (rightRow) { | ||
return left.table.update(otherPk, (0, _defineProperty3.default)({}, left.field, rightRow(right.field))); | ||
}); | ||
@@ -98,8 +106,8 @@ } | ||
return left.table.update(otherPk, _defineProperty({}, left.field, null)); | ||
return left.table.update(otherPk, (0, _defineProperty3.default)({}, left.field, null)); | ||
} | ||
function has(onePk, otherPk) { | ||
return right.table.get(onePk)['do'](function (rightRow) { | ||
return left.table.get(otherPk)['do'](function (leftRow) { | ||
return right.table.get(onePk).do(function (rightRow) { | ||
return left.table.get(otherPk).do(function (leftRow) { | ||
return leftRow.hasFields(left.field).and(leftRow(left.field).eq(rightRow(right.field))); | ||
@@ -124,9 +132,10 @@ }); | ||
function belongsTo(link) { | ||
_assert2['default'].equal(link.constructor, _Link2['default']); | ||
_assert2.default.equal(link.constructor, _Link2.default); | ||
var left = link.left; | ||
var right = link.right; | ||
function getIndex(rowOrPk) { | ||
var index = undefined; | ||
if (_lodash2['default'].isFunction(rowOrPk)) { | ||
var index = void 0; | ||
if (_lodash2.default.isFunction(rowOrPk)) { | ||
var row = rowOrPk; | ||
@@ -155,9 +164,10 @@ index = row(left.field); | ||
var query = right.table.query().getAll(index, { index: right.field }); | ||
query = apply(query); | ||
return _rethinkdb2['default'].branch(index, query, _rethinkdb2['default'].expr([])); | ||
return _rethinkdb2.default.branch(index, query, _rethinkdb2.default.expr([])); | ||
} | ||
function coerceType(query) { | ||
return query.nth(0)['default'](null); | ||
return query.nth(0).default(null); | ||
} | ||
@@ -169,4 +179,4 @@ | ||
return right.table.get(otherPk)['do'](function (rightRow) { | ||
return left.table.update(onePk, _defineProperty({}, left.field, rightRow(right.field))); | ||
return right.table.get(otherPk).do(function (rightRow) { | ||
return left.table.update(onePk, (0, _defineProperty3.default)({}, left.field, rightRow(right.field))); | ||
}); | ||
@@ -178,8 +188,8 @@ } | ||
return left.table.update(onePk, _defineProperty({}, left.field, null)); | ||
return left.table.update(onePk, (0, _defineProperty3.default)({}, left.field, null)); | ||
} | ||
function has(onePk, otherPk) { | ||
return right.table.get(otherPk)['do'](function (rightRow) { | ||
return left.table.get(onePk)['do'](function (leftRow) { | ||
return right.table.get(otherPk).do(function (rightRow) { | ||
return left.table.get(onePk).do(function (leftRow) { | ||
return leftRow.hasFields(left.field).and(leftRow(left.field).eq(rightRow(right.field))); | ||
@@ -204,9 +214,10 @@ }); | ||
function hasMany(link) { | ||
_assert2['default'].equal(link.constructor, _Link2['default']); | ||
_assert2.default.equal(link.constructor, _Link2.default); | ||
var left = link.left; | ||
var right = link.right; | ||
function getIndex(rowOrPk) { | ||
var index = undefined; | ||
if (_lodash2['default'].isFunction(rowOrPk)) { | ||
var index = void 0; | ||
if (_lodash2.default.isFunction(rowOrPk)) { | ||
var row = rowOrPk; | ||
@@ -235,2 +246,3 @@ index = row(right.field); | ||
var query = left.table.query(); | ||
@@ -240,3 +252,3 @@ query = query.getAll(index, { index: left.field }); | ||
return _rethinkdb2['default'].branch(index, query, _rethinkdb2['default'].expr([])); | ||
return _rethinkdb2.default.branch(index, query, _rethinkdb2.default.expr([])); | ||
} | ||
@@ -252,4 +264,4 @@ | ||
return right.table.get(onePk)['do'](function (rightRow) { | ||
return left.table.update(otherPk, _defineProperty({}, left.field, rightRow(right.field))); | ||
return right.table.get(onePk).do(function (rightRow) { | ||
return left.table.update(otherPk, (0, _defineProperty3.default)({}, left.field, rightRow(right.field))); | ||
}); | ||
@@ -261,8 +273,8 @@ } | ||
return left.table.update(otherPk, _defineProperty({}, left.field, null)); | ||
return left.table.update(otherPk, (0, _defineProperty3.default)({}, left.field, null)); | ||
} | ||
function has(onePk, otherPk) { | ||
return right.table.get(onePk)['do'](function (rightRow) { | ||
return left.table.get(otherPk)['do'](function (leftRow) { | ||
return right.table.get(onePk).do(function (rightRow) { | ||
return left.table.get(otherPk).do(function (leftRow) { | ||
return leftRow.hasFields(left.field).and(leftRow(left.field).eq(rightRow(right.field))); | ||
@@ -289,5 +301,5 @@ }); | ||
_assert2['default'].equal(link.length, 2); | ||
_assert2.default.equal(link.length, 2); | ||
var _link = _slicedToArray(link, 2); | ||
var _link = (0, _slicedToArray3.default)(link, 2); | ||
@@ -297,5 +309,5 @@ var link1 = _link[0]; | ||
_assert2['default'].equal(link1.constructor, _Link2['default']); | ||
_assert2['default'].equal(link2.constructor, _Link2['default']); | ||
_assert2['default'].equal(link1.left.table, link2.left.table, 'link table must be same.'); | ||
_assert2.default.equal(link1.constructor, _Link2.default); | ||
_assert2.default.equal(link2.constructor, _Link2.default); | ||
_assert2.default.equal(link1.left.table, link2.left.table, 'link table must be same.'); | ||
var index = options.index; | ||
@@ -306,4 +318,4 @@ | ||
function getIndex(rowOrPk) { | ||
var index = undefined; | ||
if (_lodash2['default'].isFunction(rowOrPk)) { | ||
var index = void 0; | ||
if (_lodash2.default.isFunction(rowOrPk)) { | ||
var row = rowOrPk; | ||
@@ -332,2 +344,3 @@ index = row(link1.right.field); | ||
var targetIdsQuery = relationTable.query().getAll(index, { index: link1.left.field }).hasFields(link2.left.field); | ||
@@ -341,7 +354,7 @@ | ||
var relatedRowsQuery = targetIdsQuery['do'](function (targetIds) { | ||
return _rethinkdb2['default'].branch(targetIds.count().gt(0), link2.right.table.query().getAll(_rethinkdb2['default'].args(targetIds), { index: link2.right.field }), _rethinkdb2['default'].expr([])); | ||
var relatedRowsQuery = targetIdsQuery.do(function (targetIds) { | ||
return _rethinkdb2.default.branch(targetIds.count().gt(0), link2.right.table.query().getAll(_rethinkdb2.default.args(targetIds), { index: link2.right.field }), _rethinkdb2.default.expr([])); | ||
}); | ||
return _rethinkdb2['default'].branch(index, relatedRowsQuery, _rethinkdb2['default'].expr([])); | ||
return _rethinkdb2.default.branch(index, relatedRowsQuery, _rethinkdb2.default.expr([])); | ||
} | ||
@@ -354,8 +367,8 @@ | ||
function create(onePk, otherPk) { | ||
var relation = undefined; | ||
if (_lodash2['default'].isArray(otherPk)) { | ||
var relation = void 0; | ||
if (_lodash2.default.isArray(otherPk)) { | ||
relation = otherPk.map(function (otherPk) { | ||
var _relationTable$create; | ||
return relationTable.create((_relationTable$create = {}, _defineProperty(_relationTable$create, link1.left.field, onePk), _defineProperty(_relationTable$create, link2.left.field, otherPk), _relationTable$create)); | ||
return relationTable.create((_relationTable$create = {}, (0, _defineProperty3.default)(_relationTable$create, link1.left.field, onePk), (0, _defineProperty3.default)(_relationTable$create, link2.left.field, otherPk), _relationTable$create)); | ||
}); | ||
@@ -365,3 +378,3 @@ } else { | ||
relation = relationTable.create((_relationTable$create2 = {}, _defineProperty(_relationTable$create2, link1.left.field, onePk), _defineProperty(_relationTable$create2, link2.left.field, otherPk), _relationTable$create2)); | ||
relation = relationTable.create((_relationTable$create2 = {}, (0, _defineProperty3.default)(_relationTable$create2, link1.left.field, onePk), (0, _defineProperty3.default)(_relationTable$create2, link2.left.field, otherPk), _relationTable$create2)); | ||
} | ||
@@ -375,4 +388,4 @@ return relationTable.insert(relation, { conflict: 'replace' }); | ||
if (index) { | ||
if (_lodash2['default'].isArray(otherPk)) { | ||
query = query.getAll(_rethinkdb2['default'].args(otherPk.map(function (otherPk) { | ||
if (_lodash2.default.isArray(otherPk)) { | ||
query = query.getAll(_rethinkdb2.default.args(otherPk.map(function (otherPk) { | ||
return [onePk, otherPk]; | ||
@@ -386,8 +399,8 @@ })), { index: index }); | ||
if (_lodash2['default'].isArray(otherPk)) { | ||
if (_lodash2.default.isArray(otherPk)) { | ||
query = query.filter(function (row) { | ||
return _rethinkdb2['default'].expr(otherPk).contains(row(link2.left.field)); | ||
return _rethinkdb2.default.expr(otherPk).contains(row(link2.left.field)); | ||
}); | ||
} else { | ||
query = query.filter(_defineProperty({}, link2.left.field, otherPk)); | ||
query = query.filter((0, _defineProperty3.default)({}, link2.left.field, otherPk)); | ||
} | ||
@@ -400,3 +413,3 @@ } | ||
function remove(onePk, otherPk) { | ||
return queryRelation(onePk, otherPk)['delete'](); | ||
return queryRelation(onePk, otherPk).delete(); | ||
} | ||
@@ -403,0 +416,0 @@ |
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _joi = require('joi'); | ||
@@ -17,10 +15,12 @@ | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var schema = { | ||
id: _joi2['default'].string().max(36)['default'](function () { | ||
return _nodeUuid2['default'].v4(); | ||
id: _joi2.default.string().max(36).default(function () { | ||
return _nodeUuid2.default.v4(); | ||
}, 'primary key').meta({ index: true }), | ||
createdAt: _joi2['default'].date()['default'](function () { | ||
createdAt: _joi2.default.date().default(function () { | ||
return new Date(); | ||
}, 'time of creation').meta({ index: true }), | ||
updatedAt: _joi2['default'].date()['default'](function () { | ||
updatedAt: _joi2.default.date().default(function () { | ||
return new Date(); | ||
@@ -30,3 +30,2 @@ }, 'time of updated').meta({ index: true }) | ||
exports['default'] = schema; | ||
module.exports = exports['default']; | ||
exports.default = schema; |
325
lib/Table.js
@@ -1,20 +0,39 @@ | ||
/* eslint no-shadow: 0, no-param-reassign: 0 */ | ||
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); | ||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); | ||
var _defineProperty3 = _interopRequireDefault(_defineProperty2); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _extends3 = require('babel-runtime/helpers/extends'); | ||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } | ||
var _extends4 = _interopRequireDefault(_extends3); | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
var _promise = require('babel-runtime/core-js/promise'); | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } | ||
var _promise2 = _interopRequireDefault(_promise); | ||
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); | ||
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); | ||
var _regenerator = require('babel-runtime/regenerator'); | ||
var _regenerator2 = _interopRequireDefault(_regenerator); | ||
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); | ||
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); | ||
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); | ||
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
var _createClass2 = require('babel-runtime/helpers/createClass'); | ||
var _createClass3 = _interopRequireDefault(_createClass2); | ||
var _rethinkdb = require('rethinkdb'); | ||
@@ -40,21 +59,17 @@ | ||
var debug = require('debug')('nothinkdb'); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var Table = (function () { | ||
_createClass(Table, null, [{ | ||
key: 'pk', | ||
value: 'id', | ||
enumerable: true | ||
}]); | ||
var debug = require('debug')('nothinkdb'); /* eslint no-shadow: 0, no-param-reassign: 0 */ | ||
var Table = function () { | ||
function Table() { | ||
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; | ||
(0, _classCallCheck3.default)(this, Table); | ||
_classCallCheck(this, Table); | ||
var _Joi$attempt = _joi2['default'].attempt(options, { | ||
tableName: _joi2['default'].string().required(), | ||
pk: _joi2['default'].string()['default'](this.constructor.pk), | ||
schema: _joi2['default'].func().required(), | ||
relations: _joi2['default'].func()['default'](function () { | ||
var _Joi$attempt = _joi2.default.attempt(options, { | ||
tableName: _joi2.default.string().required(), | ||
pk: _joi2.default.string().default(this.constructor.pk), | ||
schema: _joi2.default.func().required(), | ||
relations: _joi2.default.func().default(function () { | ||
return function () { | ||
@@ -64,3 +79,3 @@ return {}; | ||
}, 'relation'), | ||
index: _joi2['default'].object()['default']({}, 'index') | ||
index: _joi2.default.object().default({}, 'index') | ||
}); | ||
@@ -73,3 +88,2 @@ | ||
var index = _Joi$attempt.index; | ||
// assert.equal(_.has(schema(), pk), true, `'${pk}' is not specified in schema`); | ||
@@ -84,8 +98,8 @@ | ||
_createClass(Table, [{ | ||
(0, _createClass3.default)(Table, [{ | ||
key: 'metaFields', | ||
value: function metaFields(metaKey) { | ||
return _lodash2['default'].chain(this.schema()).omitBy(function (schema) { | ||
return !_lodash2['default'].find(schema._meta, function (meta) { | ||
return _lodash2['default'].has(meta, metaKey); | ||
return _lodash2.default.chain(this.schema()).omitBy(function (schema) { | ||
return !_lodash2.default.find(schema._meta, function (meta) { | ||
return _lodash2.default.has(meta, metaKey); | ||
}); | ||
@@ -99,3 +113,3 @@ }).keys().value(); | ||
return !_joi2['default'].validate(data, this.schema()).error; | ||
return !_joi2.default.validate(data, this.schema()).error; | ||
} | ||
@@ -107,3 +121,3 @@ }, { | ||
return _joi2['default'].attempt(data, this.schema()); | ||
return _joi2.default.attempt(data, this.schema()); | ||
} | ||
@@ -120,3 +134,3 @@ }, { | ||
value: function hasField(fieldName) { | ||
return _lodash2['default'].has(this.schema(), fieldName); | ||
return _lodash2.default.has(this.schema(), fieldName); | ||
} | ||
@@ -126,3 +140,3 @@ }, { | ||
value: function assertField(fieldName) { | ||
return _assert2['default'].ok(this.hasField(fieldName), 'Field \'' + fieldName + '\' is unspecified in table \'' + this.tableName + '\'.'); | ||
return _assert2.default.ok(this.hasField(fieldName), 'Field \'' + fieldName + '\' is unspecified in table \'' + this.tableName + '\'.'); | ||
} | ||
@@ -149,3 +163,3 @@ }, { | ||
} | ||
return field.allow(null)['default'](null).meta({ index: true }); | ||
return field.allow(null).default(null).meta({ index: true }); | ||
} | ||
@@ -159,3 +173,3 @@ }, { | ||
return new _Link2['default']({ | ||
return new _Link2.default({ | ||
left: { table: this, field: leftField }, | ||
@@ -172,99 +186,139 @@ right: { table: targetTable, field: index } | ||
key: 'sync', | ||
value: function sync(connection) { | ||
return regeneratorRuntime.async(function sync$(context$2$0) { | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
context$2$0.next = 2; | ||
return regeneratorRuntime.awrap(this.ensureTable(connection)); | ||
value: function () { | ||
var ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(connection) { | ||
return _regenerator2.default.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
_context.next = 2; | ||
return this.ensureTable(connection); | ||
case 2: | ||
context$2$0.next = 4; | ||
return regeneratorRuntime.awrap(this.ensureAllIndexes(connection)); | ||
case 2: | ||
_context.next = 4; | ||
return this.ensureAllIndexes(connection); | ||
case 4: | ||
debug('[sync] ' + connection.db + '.' + this.tableName); | ||
case 4: | ||
debug('[sync] ' + connection.db + '.' + this.tableName); | ||
case 5: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, this); | ||
} | ||
case 5: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, this); | ||
})); | ||
function sync(_x7) { | ||
return ref.apply(this, arguments); | ||
} | ||
return sync; | ||
}() | ||
}, { | ||
key: 'ensureTable', | ||
value: function ensureTable(connection) { | ||
return regeneratorRuntime.async(function ensureTable$(context$2$0) { | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
context$2$0.next = 2; | ||
return regeneratorRuntime.awrap(_rethinkdb2['default'].branch(_rethinkdb2['default'].tableList().contains(this.tableName).not(), _rethinkdb2['default'].tableCreate(this.tableName), null).run(connection)); | ||
value: function () { | ||
var ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(connection) { | ||
return _regenerator2.default.wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
_context2.next = 2; | ||
return _rethinkdb2.default.branch(_rethinkdb2.default.tableList().contains(this.tableName).not(), _rethinkdb2.default.tableCreate(this.tableName), null).run(connection); | ||
case 2: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, this); | ||
} | ||
case 2: | ||
case 'end': | ||
return _context2.stop(); | ||
} | ||
} | ||
}, _callee2, this); | ||
})); | ||
function ensureTable(_x8) { | ||
return ref.apply(this, arguments); | ||
} | ||
return ensureTable; | ||
}() | ||
}, { | ||
key: 'ensureAllIndexes', | ||
value: function ensureAllIndexes(connection) { | ||
var indexFields; | ||
return regeneratorRuntime.async(function ensureAllIndexes$(context$2$0) { | ||
value: function () { | ||
var ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(connection) { | ||
var _this = this; | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
indexFields = [].concat(_toConsumableArray(this.metaFields('index')), _toConsumableArray(this.metaFields('unique'))); | ||
context$2$0.next = 3; | ||
return regeneratorRuntime.awrap(indexFields.reduce(function (promise, indexName) { | ||
return promise.then(function () { | ||
return _this.ensureIndex(connection, indexName); | ||
}); | ||
}, Promise.resolve())); | ||
var indexFields; | ||
return _regenerator2.default.wrap(function _callee3$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
indexFields = [].concat((0, _toConsumableArray3.default)(this.metaFields('index')), (0, _toConsumableArray3.default)(this.metaFields('unique'))); | ||
_context3.next = 3; | ||
return indexFields.reduce(function (promise, indexName) { | ||
return promise.then(function () { | ||
return _this.ensureIndex(connection, indexName); | ||
}); | ||
}, _promise2.default.resolve()); | ||
case 3: | ||
context$2$0.next = 5; | ||
return regeneratorRuntime.awrap(_lodash2['default'].reduce(this.index, function (promise, option, indexName) { | ||
return promise.then(function () { | ||
return option === true ? _this.ensureIndex(connection, indexName) : _this.ensureIndex(connection, indexName, option); | ||
}); | ||
}, Promise.resolve())); | ||
case 3: | ||
_context3.next = 5; | ||
return _lodash2.default.reduce(this.index, function (promise, option, indexName) { | ||
return promise.then(function () { | ||
return option === true ? _this.ensureIndex(connection, indexName) : _this.ensureIndex(connection, indexName, option); | ||
}); | ||
}, _promise2.default.resolve()); | ||
case 5: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, this); | ||
} | ||
case 5: | ||
case 'end': | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee3, this); | ||
})); | ||
function ensureAllIndexes(_x9) { | ||
return ref.apply(this, arguments); | ||
} | ||
return ensureAllIndexes; | ||
}() | ||
}, { | ||
key: 'ensureIndex', | ||
value: function ensureIndex(connection, indexName, option) { | ||
return regeneratorRuntime.async(function ensureIndex$(context$2$0) { | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
if (!(this.pk === indexName)) { | ||
context$2$0.next = 2; | ||
break; | ||
} | ||
value: function () { | ||
var ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4(connection, indexName, option) { | ||
return _regenerator2.default.wrap(function _callee4$(_context4) { | ||
while (1) { | ||
switch (_context4.prev = _context4.next) { | ||
case 0: | ||
if (!(this.pk === indexName)) { | ||
_context4.next = 2; | ||
break; | ||
} | ||
return context$2$0.abrupt('return'); | ||
return _context4.abrupt('return'); | ||
case 2: | ||
context$2$0.next = 4; | ||
return regeneratorRuntime.awrap(_rethinkdb2['default'].branch(this.query().indexList().contains(indexName).not(), this.query().indexCreate(indexName, option), null).run(connection)); | ||
case 2: | ||
_context4.next = 4; | ||
return _rethinkdb2.default.branch(this.query().indexList().contains(indexName).not(), this.query().indexCreate(indexName, option), null).run(connection); | ||
case 4: | ||
context$2$0.next = 6; | ||
return regeneratorRuntime.awrap(this.query().indexWait(indexName).run(connection)); | ||
case 4: | ||
_context4.next = 6; | ||
return this.query().indexWait(indexName).run(connection); | ||
case 6: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, this); | ||
} | ||
case 6: | ||
case 'end': | ||
return _context4.stop(); | ||
} | ||
} | ||
}, _callee4, this); | ||
})); | ||
function ensureIndex(_x10, _x11, _x12) { | ||
return ref.apply(this, arguments); | ||
} | ||
return ensureIndex; | ||
}() | ||
}, { | ||
key: 'query', | ||
value: function query() { | ||
return _rethinkdb2['default'].table(this.tableName); | ||
return _rethinkdb2.default.table(this.tableName); | ||
} | ||
@@ -280,7 +334,7 @@ }, { | ||
var insertData = _extends({}, data); | ||
var insertData = (0, _extends4.default)({}, data); | ||
if (this.hasField('createdAt')) { | ||
insertData.createdAt = _rethinkdb2['default'].now(); | ||
insertData.createdAt = _rethinkdb2.default.now(); | ||
} | ||
return this.assertIntegrate(data)['do'](function () { | ||
return this.assertIntegrate(data).do(function () { | ||
var _query; | ||
@@ -305,10 +359,10 @@ | ||
var updateData = _extends({}, data); | ||
var updateData = (0, _extends4.default)({}, data); | ||
if (this.hasField('updatedAt')) { | ||
updateData.updatedAt = _rethinkdb2['default'].now(); | ||
updateData.updatedAt = _rethinkdb2.default.now(); | ||
} | ||
return this.assertIntegrate(data)['do'](function () { | ||
return this.assertIntegrate(data).do(function () { | ||
var _query2; | ||
var selectionQuery = _lodash2['default'].isArray(pk) ? (_query2 = _this3.query()).getAll.apply(_query2, _toConsumableArray(pk)) : _this3.query().get(pk); | ||
var selectionQuery = _lodash2.default.isArray(pk) ? (_query2 = _this3.query()).getAll.apply(_query2, (0, _toConsumableArray3.default)(pk)) : _this3.query().get(pk); | ||
return selectionQuery.update.apply(selectionQuery, [updateData].concat(options)); | ||
@@ -323,14 +377,14 @@ }); | ||
var uniqueFields = this.metaFields('unique'); | ||
if (_lodash2['default'].isEmpty(uniqueFields)) return _rethinkdb2['default'].expr(true); | ||
if (_lodash2.default.isEmpty(uniqueFields)) return _rethinkdb2.default.expr(true); | ||
var uniqueData = _lodash2['default'].pick(data, uniqueFields); | ||
if (_lodash2['default'].isEmpty(uniqueData)) return _rethinkdb2['default'].expr(true); | ||
var uniqueData = _lodash2.default.pick(data, uniqueFields); | ||
if (_lodash2.default.isEmpty(uniqueData)) return _rethinkdb2.default.expr(true); | ||
return _lodash2['default'].reduce(uniqueData, function (expr, val, key) { | ||
return expr['do'](function () { | ||
if (_lodash2['default'].isUndefined(val) || _lodash2['default'].isNull(val)) return _rethinkdb2['default'].expr(null); | ||
return _lodash2.default.reduce(uniqueData, function (expr, val, key) { | ||
return expr.do(function () { | ||
if (_lodash2.default.isUndefined(val) || _lodash2.default.isNull(val)) return _rethinkdb2.default.expr(null); | ||
return _rethinkdb2['default'].branch(_this4.query().getAll(val, { index: key }).count().gt(0), _rethinkdb2['default'].error('"' + key + '" field is unique in "' + _this4.tableName + '" table. { "' + key + '": "' + val + '" } already exist.'), null); | ||
return _rethinkdb2.default.branch(_this4.query().getAll(val, { index: key }).count().gt(0), _rethinkdb2.default.error('"' + key + '" field is unique in "' + _this4.tableName + '" table. { "' + key + '": "' + val + '" } already exist.'), null); | ||
}); | ||
}, _rethinkdb2['default'].expr({})); | ||
}, _rethinkdb2.default.expr({})); | ||
} | ||
@@ -346,3 +400,3 @@ }, { | ||
return (_query$get = this.query().get(pk))['delete'].apply(_query$get, options); | ||
return (_query$get = this.query().get(pk)).delete.apply(_query$get, options); | ||
} | ||
@@ -353,3 +407,3 @@ }, { | ||
var relationObj = this.relations()[relation]; | ||
_assert2['default'].ok(relationObj, 'Relation \'' + this.tableName + '.' + relation + '\' is not exist.'); | ||
_assert2.default.ok(relationObj, 'Relation \'' + this.tableName + '.' + relation + '\' is not exist.'); | ||
return relationObj; | ||
@@ -363,4 +417,4 @@ } | ||
var joinedQuery = query.merge(function (row) { | ||
return _lodash2['default'].chain(relations).omitBy(function (relations, key) { | ||
return _lodash2['default'].startsWith(key, '_'); | ||
return _lodash2.default.chain(relations).omitBy(function (relations, key) { | ||
return _lodash2.default.startsWith(key, '_'); | ||
}).reduce(function (joinObject, relations, key) { | ||
@@ -370,3 +424,3 @@ var relatedQuery = _this5.getRelated(row, key); | ||
// if nested | ||
if (_lodash2['default'].isObject(relations) && !_lodash2['default'].isEmpty(relations)) { | ||
if (_lodash2.default.isObject(relations) && !_lodash2.default.isEmpty(relations)) { | ||
var _getRelation = _this5.getRelation(key); | ||
@@ -379,7 +433,7 @@ | ||
return _extends({}, joinObject, _defineProperty({}, key, relatedQuery)); | ||
return (0, _extends4.default)({}, joinObject, (0, _defineProperty3.default)({}, key, relatedQuery)); | ||
}, {}).value(); | ||
}); | ||
return _rethinkdb2['default'].branch(query.typeOf().eq('NULL').not(), joinedQuery, query); | ||
return _rethinkdb2.default.branch(query.typeOf().eq('NULL').not(), joinedQuery, query); | ||
} | ||
@@ -423,7 +477,6 @@ }, { | ||
}]); | ||
return Table; | ||
})(); | ||
}(); | ||
exports['default'] = Table; | ||
module.exports = exports['default']; | ||
Table.pk = 'id'; | ||
exports.default = Table; |
{ | ||
"name": "nothinkdb", | ||
"version": "0.5.23", | ||
"version": "0.5.24", | ||
"description": "Functional toolkit for rethinkdb", | ||
@@ -10,3 +10,3 @@ "main": "lib/nothinkdb.js", | ||
"scripts": { | ||
"test": "mocha --compilers js:babel/register --timeout 20000 ./src/**/__tests__/*-test.js", | ||
"test": "mocha --compilers js:babel-register --timeout 20000 ./src/**/__tests__/*-test.js", | ||
"build": "babel --ignore *-test.js -d lib src", | ||
@@ -35,7 +35,13 @@ "clean": "rimraf lib", | ||
"devDependencies": { | ||
"babel": "^5.8.35", | ||
"babel-eslint": "^4.1.7", | ||
"babel-cli": "^6.9.0", | ||
"babel-eslint": "^6.0.4", | ||
"babel-plugin-transform-runtime": "^6.9.0", | ||
"babel-preset-es2015": "^6.9.0", | ||
"babel-preset-stage-0": "^6.5.0", | ||
"babel-register": "^6.9.0", | ||
"babel-runtime": "^6.9.0", | ||
"chai": "^3.4.1", | ||
"eslint": "^1.10.3", | ||
"eslint-config-airbnb": "^0.1.0", | ||
"eslint": "^2.10.2", | ||
"eslint-config-airbnb": "^9.0.1", | ||
"eslint-plugin-import": "^1.8.0", | ||
"mocha": "^2.4.5", | ||
@@ -42,0 +48,0 @@ "rethinkdb": "2.2.3", |
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
38636
910
14