Skip to content

Commit

Permalink
always version data
Browse files Browse the repository at this point in the history
  • Loading branch information
pemrouz committed Mar 28, 2016
1 parent a0d20e0 commit 80b1477
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 75 deletions.
30 changes: 7 additions & 23 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ Object.defineProperty(exports, "__esModule", {
});
exports.default = data;

var _emitterify = require('utilise/emitterify');

var _emitterify2 = _interopRequireDefault(_emitterify);

var _overwrite = require('utilise/overwrite');

var _overwrite2 = _interopRequireDefault(_overwrite);
Expand All @@ -25,21 +21,17 @@ var _not = require('utilise/not');

var _not2 = _interopRequireDefault(_not);

var _def = require('utilise/def');

var _def2 = _interopRequireDefault(_def);

var _key = require('utilise/key');

var _key2 = _interopRequireDefault(_key);

var _is = require('utilise/is');
var _set = require('utilise/set');

var _is2 = _interopRequireDefault(_is);
var _set2 = _interopRequireDefault(_set);

var _to = require('utilise/to');
var _is = require('utilise/is');

var _to2 = _interopRequireDefault(_to);
var _is2 = _interopRequireDefault(_is);

/* istanbul ignore next */
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
Expand All @@ -58,20 +50,12 @@ function data(ripple) {
parse: function parse(res) {
var existing = ripple.resources[res.name] || {};

!res.body && (res.body = []);
!res.body.on && (res.body = (0, _emitterify2.default)(res.body, null));

res.body = (0, _set2.default)()(res.body || [], existing.body && existing.body.log);
(0, _extend2.default)(res.headers)(existing.headers);
(0, _overwrite2.default)(res.body.on)(existing.body && existing.body.on || {});

if (logged(existing)) logged(res) ? res.body.log = existing.body.log.reset(res.body) : (0, _def2.default)(res.body, 'log', existing.body.log.reset(res.body), 1);

(0, _overwrite2.default)(res.body.on)(listeners(existing));
res.body.on('change.bubble', function (change) {
return ripple.emit('change', [res.name, change], (0, _not2.default)(_is2.default.in(['data'])));
});
res.body.on('log.bubble', function (change) {
return res.body.emit('change', change);
});

return res;
}
Expand All @@ -87,4 +71,4 @@ var trickle = function trickle(ripple) {
};

var log = require('utilise/log')('[ri/types/data]'),
logged = (0, _key2.default)('body.log');
listeners = (0, _key2.default)('body.on');
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"build": "npm run clean && npm run babel && npm run ignore",
"test": "istanbul test ./node_modules/mocha/bin/_mocha --report html -- -R spec",
"coverage": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && rm -rf ./coverage",
"cov": "istanbul cover ./node_modules/mocha/bin/_mocha -- -R spec",
"version": "npm run build && git add -A",
"postversion": "git push && git push --tags"
},
Expand All @@ -29,8 +30,7 @@
"mocha-lcov-reporter": "*",
"popper": "*",
"rijs.core": "*",
"uglify-js": "*",
"versioned": "*"
"uglify-js": "*"
},
"dependencies": {
"utilise": "*"
Expand Down
20 changes: 5 additions & 15 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,11 @@ export default function data(ripple){
, parse(res){
const existing = ripple.resources[res.name] || {}

!res.body && (res.body = [])
!res.body.on && (res.body = emitterify(res.body, null))

res.body = set()(res.body || [], existing.body && existing.body.log)
extend(res.headers)(existing.headers)
overwrite(res.body.on)(existing.body && existing.body.on || {})

if (logged(existing)) logged(res)
? (res.body.log = existing.body.log.reset(res.body))
: def(res.body, 'log', existing.body.log.reset(res.body), 1)

overwrite(res.body.on)(listeners(existing))
res.body.on('change.bubble', change => ripple.emit('change', [res.name, change], not(is.in(['data']))))
res.body.on('log.bubble', change => res.body.emit('change', change))


return res
}
}
Expand All @@ -36,14 +28,12 @@ const trickle = ripple => (name, change) => header('content-type', 'application/
.body
.emit('change', [change || null], not(is.in(['bubble'])))

import emitterify from 'utilise/emitterify'
import overwrite from 'utilise/overwrite'
import header from 'utilise/header'
import extend from 'utilise/extend'
import not from 'utilise/not'
import def from 'utilise/def'
import key from 'utilise/key'
import set from 'utilise/set'
import is from 'utilise/is'
import to from 'utilise/to'
const log = require('utilise/log')('[ri/types/data]')
, logged = key('body.log')
, listeners = key('body.on')
54 changes: 19 additions & 35 deletions test.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
var versioned = require('versioned').default
, expect = require('chai').expect
, core = require('rijs.core').default
var core = require('rijs.core').default
, update = require('utilise/update')
, clone = require('utilise/clone')
, expect = require('chai').expect
, keys = require('utilise/keys')
, data = require('./').default
, key = require('utilise/key')
, set = require('utilise/set')
, to = require('utilise/to')

describe('Data Type', function() {
Expand Down Expand Up @@ -129,41 +129,25 @@ describe('Data Type', function() {

ripple.on('change', function(d, change){ changes.push(clone(change)) })

ripple('foo', versioned(['foo']))
ripple('foo', ['foo'])
update(0, 'bar')(ripple('foo'))

// should not need to explicity reinit version
ripple('foo', ['baz'])

ripple('foo', set()(['baz']))
update(0, 'boo')(ripple('foo'))
expect(keys(ripple('foo'))).to.eql(['0'])

// should work if new object versioned
ripple('foo', versioned(['wat']))
expect(keys(ripple('foo'))).to.eql(['0'])

expect(ripple('foo').log.length).to.eql(5)
expect(ripple('foo').log[0].value.toJS()).to.eql(['foo'])
expect(ripple('foo').log[0].diff).to.eql(undefined)

expect(ripple('foo').log[1].value.toJS()).to.eql(['bar'])
expect(ripple('foo').log[1].diff).to.eql({ key: '0', value: 'bar', type: 'update' })

expect(ripple('foo').log[2].value.toJS()).to.eql(['baz'])
expect(ripple('foo').log[2].diff).to.eql(undefined)

expect(ripple('foo').log[3].value.toJS()).to.eql(['boo'])
expect(ripple('foo').log[3].diff).to.eql({ key: '0', value: 'boo', type: 'update' })

expect(ripple('foo').log[4].value.toJS()).to.eql(['wat'])
expect(ripple('foo').log[4].diff).to.eql(undefined)

expect(changes).to.eql([
{ type: 'update', value: ['foo'] }
, { type: 'update', value: 'bar', key: '0' }
, { type: 'update', value: ['baz'] }
, { type: 'update', value: 'boo', key: '0' }
, { type: 'update', value: ['wat'] }
])
expect(ripple('foo').log)
.to.eql(changes)
.to.eql([
{ time: 0, type: 'update', value: ['foo'] }
, { time: 1, type: 'update', value: 'bar', key: '0' }
, { time: 2, type: 'update', value: ['baz'] }
, { time: 3, type: 'update', value: 'boo', key: '0' }
])

ripple('bar', ripple('foo'))
expect(ripple('foo')).to.not.equal(ripple('bar'))
expect(ripple('foo').log).to.have.lengthOf(4)
expect(ripple('bar').log).to.have.lengthOf(5)
})

it('should not lose existing headers', function(){
Expand Down

0 comments on commit 80b1477

Please sign in to comment.