diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2a565c349..d91165c2f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,12 @@
### Breaking changes
+* Rename `Doc` op events:
+ * `before op batch` -> `beforeOp`
+ * `before op` -> `beforeOpComponent`
+ * `op` -> `opComponent`
+ * `op batch` -> `op`
+
## v1.0-beta
### Breaking changes
diff --git a/docs/api/doc.md b/docs/api/doc.md
index a94974e32..a5580f3f4 100644
--- a/docs/api/doc.md
+++ b/docs/api/doc.md
@@ -372,12 +372,12 @@ The document was created. The doc will now have a [`type`](#type--type)
> {{ page.copy.event_source }}
-### `'before op'`
+### `'beforeOpComponent'`
An operation is about to be applied to the [`data`](#data--object)
```js
-doc.on('before op', function(op, source) { ... })
+doc.on('beforeOpComponent', function(op, source) { ... })
```
`op` -- Object
@@ -388,20 +388,20 @@ doc.on('before op', function(op, source) { ... })
> {{ page.copy.event_source }}
-### `'op'`
+### `'opComponent'`
An operation was applied to the data.
```js
-doc.on('op', function(op, source) { ... })
+doc.on('opComponent', function(op, source) { ... })
```
{: .info }
-The difference between this event and [`'op batch'`](#op-batch) is that for [`json0`]({{ site.baseurl }}{% link types/json0.md %}), the op will be shattered into its constituent parts.
+The difference between this event and [`'op'`](#op) is that for [`json0`]({{ site.baseurl }}{% link types/json0.md %}), the op will be shattered into its constituent parts.
For example, `[{p: ['list', 0], li: 'a'}, {p: ['list', 1], li: 'b'}]` would be split into two components: `[{p: ['list', 0], li: 'a'}]` and `[{p: ['list', 1], li: 'b'}]`.
-The `'op'` event will be called once for each of these op components, but `'op batch'` will only be called once.
+The `'opComponent'` event will be called once for each of these op components, but `'op'` will only be called once.
`op` -- Object
@@ -411,12 +411,12 @@ The `'op'` event will be called once for each of these op components, but `'op b
> {{ page.copy.event_source }}
-### `'before op batch'`
+### `'beforeOp'`
A potentially multi-part operation is about to be applied to the [`data`](#data--object).
```js
-doc.on('before op batch', function(op, source) { ... })
+doc.on('beforeOp', function(op, source) { ... })
```
`op` -- Object
@@ -427,12 +427,12 @@ doc.on('before op batch', function(op, source) { ... })
> {{ page.copy.event_source }}
-### `'op batch'`
+### `'op'`
A potentially multi-part operation was applied to the [`data`](#data--object)
```js
-doc.on('op batch', function(op, source) { ... })
+doc.on('op', function(op, source) { ... })
```
`op` -- Object
diff --git a/lib/client/doc.js b/lib/client/doc.js
index e37023b2c..9db8384b5 100644
--- a/lib/client/doc.js
+++ b/lib/client/doc.js
@@ -589,7 +589,7 @@ Doc.prototype._otApply = function(op, source) {
// NB: If we need to add another argument to this event, we should consider
// the fact that the 'op' event has op.src as its 3rd argument
- this.emit('before op batch', op.op, source);
+ this.emit('beforeOp', op.op, source);
// Iteratively apply multi-component remote operations and rollback ops
// (source === false) for the default JSON0 OT type. It could use
@@ -620,19 +620,19 @@ Doc.prototype._otApply = function(op, source) {
if (transformErr) return this._hardRollback(transformErr);
}
// Apply the individual op component
- this.emit('before op', componentOp.op, source, op.src);
+ this.emit('beforeOpComponent', componentOp.op, source, op.src);
this.data = this.type.apply(this.data, componentOp.op);
- this.emit('op', componentOp.op, source, op.src);
+ this.emit('opComponent', componentOp.op, source, op.src);
}
- this.emit('op batch', op.op, source);
+ this.emit('op', op.op, source);
// Pop whatever was submitted since we started applying this op
this._popApplyStack(stackLength);
return;
}
- // The 'before op' event enables clients to pull any necessary data out of
+ // The 'beforeOpComponent' event enables clients to pull any necessary data out of
// the snapshot before it gets changed
- this.emit('before op', op.op, source, op.src);
+ this.emit('beforeOpComponent', op.op, source, op.src);
// Apply the operation to the local data, mutating it in place
this.data = this.type.apply(this.data, op.op);
// Emit an 'op' event once the local data includes the changes from the
@@ -640,8 +640,8 @@ Doc.prototype._otApply = function(op, source) {
// submission and before the server or other clients have received the op.
// For ops from other clients, this will be after the op has been
// committed to the database and published
- this.emit('op', op.op, source, op.src);
- this.emit('op batch', op.op, source);
+ this.emit('opComponent', op.op, source, op.src);
+ this.emit('op', op.op, source);
return;
}
diff --git a/lib/client/presence/local-doc-presence.js b/lib/client/presence/local-doc-presence.js
index fd690ba0a..d59fdc110 100644
--- a/lib/client/presence/local-doc-presence.js
+++ b/lib/client/presence/local-doc-presence.js
@@ -39,7 +39,7 @@ LocalDocPresence.prototype.submit = function(value, callback) {
};
LocalDocPresence.prototype.destroy = function(callback) {
- this._doc.removeListener('op', this._opHandler);
+ this._doc.removeListener('opComponent', this._opHandler);
this._doc.removeListener('create', this._createOrDelHandler);
this._doc.removeListener('del', this._createOrDelHandler);
this._doc.removeListener('load', this._loadHandler);
@@ -67,7 +67,7 @@ LocalDocPresence.prototype._sendPending = function() {
};
LocalDocPresence.prototype._registerWithDoc = function() {
- this._doc.on('op', this._opHandler);
+ this._doc.on('opComponent', this._opHandler);
this._doc.on('create', this._createOrDelHandler);
this._doc.on('del', this._createOrDelHandler);
this._doc.on('load', this._loadHandler);
diff --git a/lib/client/presence/remote-doc-presence.js b/lib/client/presence/remote-doc-presence.js
index 2fef91ffa..e75051058 100644
--- a/lib/client/presence/remote-doc-presence.js
+++ b/lib/client/presence/remote-doc-presence.js
@@ -31,7 +31,7 @@ RemoteDocPresence.prototype.receiveUpdate = function(message) {
};
RemoteDocPresence.prototype.destroy = function(callback) {
- this._doc.removeListener('op', this._opHandler);
+ this._doc.removeListener('opComponent', this._opHandler);
this._doc.removeListener('create', this._createDelHandler);
this._doc.removeListener('del', this._createDelHandler);
this._doc.removeListener('load', this._loadHandler);
@@ -40,7 +40,7 @@ RemoteDocPresence.prototype.destroy = function(callback) {
};
RemoteDocPresence.prototype._registerWithDoc = function() {
- this._doc.on('op', this._opHandler);
+ this._doc.on('opComponent', this._opHandler);
this._doc.on('create', this._createDelHandler);
this._doc.on('del', this._createDelHandler);
this._doc.on('load', this._loadHandler);
diff --git a/test/client/doc.js b/test/client/doc.js
index 84af1fb68..1082e5a7c 100644
--- a/test/client/doc.js
+++ b/test/client/doc.js
@@ -150,7 +150,7 @@ describe('Doc', function() {
expect(doc.data).eql({color: 'black'});
}
];
- doc.on('op', function(op, source) {
+ doc.on('opComponent', function(op, source) {
var handler = handlers.shift();
handler(op, source);
});
@@ -199,7 +199,7 @@ describe('Doc', function() {
expect(doc.data).eql({color: 'black', weight: 40, age: 5, owner: 'sue'});
}
];
- doc.on('op', function(op, source) {
+ doc.on('opComponent', function(op, source) {
var handler = handlers.shift();
handler(op, source);
});
@@ -250,7 +250,7 @@ describe('Doc', function() {
expect(doc.data).eql({tricks: ['shake', 'tug stick']});
}
];
- doc.on('op', function(op, source) {
+ doc.on('opComponent', function(op, source) {
var handler = handlers.shift();
handler(op, source);
});
@@ -277,13 +277,13 @@ describe('Doc', function() {
{p: ['tricks', 0], li: 'stand'}
];
- doc.on('before op batch', function(op, source) {
+ doc.on('beforeOp', function(op, source) {
expect(op).to.eql(submittedOp);
expect(source).to.be.true;
beforeOpBatchCount++;
});
- doc.on('op batch', function(op, source) {
+ doc.on('op', function(op, source) {
expect(op).to.eql(submittedOp);
expect(source).to.be.true;
expect(beforeOpBatchCount).to.equal(1);
@@ -304,13 +304,13 @@ describe('Doc', function() {
{p: ['tricks', 0], li: 'stand'}
];
- doc.on('before op batch', function(op, source) {
+ doc.on('beforeOp', function(op, source) {
expect(op).to.eql(submittedOp);
expect(source).to.be.false;
beforeOpBatchCount++;
});
- doc.on('op batch', function(op, source) {
+ doc.on('op', function(op, source) {
expect(op).to.eql(submittedOp);
expect(source).to.be.false;
expect(beforeOpBatchCount).to.equal(1);
diff --git a/test/client/presence/doc-presence.js b/test/client/presence/doc-presence.js
index 61b69eb94..dcccb2d35 100644
--- a/test/client/presence/doc-presence.js
+++ b/test/client/presence/doc-presence.js
@@ -284,7 +284,7 @@ describe('DocPresence', function() {
function(next) {
doc1.submitOp({index: 5, value: 'ern'}, errorHandler(done));
- doc2.once('op', function() {
+ doc2.once('opComponent', function() {
presencePauser.resume();
});
@@ -324,7 +324,7 @@ describe('DocPresence', function() {
// doc2 has received this op, so we know that when we finally receive our
// presence, it will be stale
doc1.submitOp({index: 5, value: 'ern'}, errorHandler(done));
- doc2.once('op', function() {
+ doc2.once('opComponent', function() {
next();
});
},
@@ -350,7 +350,7 @@ describe('DocPresence', function() {
doc1.submitOp({index: 0, value: 'The'}, function(error) {
if (error) return done(error);
doc1.submitOp({index: 3, value: ' '}, errorHandler(done));
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
// This will get fired for v3 and then v4, so check for the later one
if (doc1.version === 4 && doc2.version === 4) {
// Only once doc2 has received the ops, should we resume our
@@ -395,7 +395,7 @@ describe('DocPresence', function() {
},
function(next) {
doc1.submitOp({index: 5, value: 'ern'}, errorHandler(done));
- doc2.once('op', function() {
+ doc2.once('opComponent', function() {
next();
});
},
@@ -417,7 +417,7 @@ describe('DocPresence', function() {
], errorHandler(done));
};
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
if (doc2.version !== 5) return;
presencePauser.resume();
presence2.once('receive', function(id, presence) {
diff --git a/test/client/projections.js b/test/client/projections.js
index 8275b2bfd..d0634d4da 100644
--- a/test/client/projections.js
+++ b/test/client/projections.js
@@ -124,7 +124,7 @@ module.exports = function(options) {
var fido = connection2.get('dogs_summary', 'fido');
fido.subscribe(function(err) {
if (err) return done(err);
- fido.on('op', function() {
+ fido.on('opComponent', function() {
expect(fido.data).eql(expected);
expect(fido.version).eql(2);
done();
@@ -164,7 +164,7 @@ module.exports = function(options) {
var fido = connection2.get('dogs_summary', 'fido');
connection2.createSubscribeQuery('dogs_summary', matchAllQuery, null, function(err) {
if (err) return done(err);
- fido.on('op', function() {
+ fido.on('opComponent', function() {
expect(fido.data).eql(expected);
expect(fido.version).eql(2);
done();
diff --git a/test/client/subscribe.js b/test/client/subscribe.js
index 2ec2ab5d6..210ec3588 100644
--- a/test/client/subscribe.js
+++ b/test/client/subscribe.js
@@ -73,7 +73,7 @@ module.exports = function() {
return done();
}
// Add listeners on connection2 for remote operations.
- fido.on('before op', function(op) {
+ fido.on('beforeOpComponent', function(op) {
done(new Error('fido on connection2 should not have received any ops, got:' +
JSON.stringify(op)));
});
@@ -268,7 +268,7 @@ module.exports = function() {
return done();
}
// Add listeners on connection2 for those operations.
- fido.on('before op', function(op) {
+ fido.on('beforeOpComponent', function(op) {
done(new Error('fido on connection2 should not have received any ops, got:' +
JSON.stringify(op)));
});
@@ -436,7 +436,7 @@ module.exports = function() {
if (err) return done(err);
doc.submitOp({p: ['age'], na: 1}, function(err) {
if (err) return done(err);
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
done();
});
doc2[method]();
@@ -603,7 +603,7 @@ module.exports = function() {
if (err) return done(err);
doc2.subscribe(function(err) {
if (err) return done(err);
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
expect(doc2.version).eql(2);
expect(doc2.data).eql({age: 4});
done();
@@ -620,7 +620,7 @@ module.exports = function() {
if (err) return done(err);
doc2.subscribe(function(err) {
if (err) return done(err);
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
done();
});
doc2.connection.close();
@@ -637,7 +637,7 @@ module.exports = function() {
if (err) return done(err);
doc2.subscribe(function(err) {
if (err) return done(err);
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
done();
});
backend.suppressPublish = true;
@@ -653,7 +653,7 @@ module.exports = function() {
if (err) return done(err);
doc2.subscribe(function(err) {
if (err) return done(err);
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
done();
});
doc2.unsubscribe(function(err) {
@@ -685,7 +685,7 @@ module.exports = function() {
if (error) return done(error);
done();
});
- doc.on('op', function() {
+ doc.on('opComponent', function() {
done(new Error('should not have received op'));
});
});
@@ -706,7 +706,7 @@ module.exports = function() {
if (err) return done(err);
doc2.subscribe(function(err) {
if (err) return done(err);
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
done(new Error('Should not get op event'));
});
doc2.destroy(function(err) {
@@ -756,7 +756,7 @@ module.exports = function() {
}
], function(err) {
if (err) return done(err);
- fido.on('op', function() {
+ fido.on('opComponent', function() {
done();
});
doc.submitOp({p: ['age'], na: 1}, done);
@@ -774,7 +774,7 @@ module.exports = function() {
if (err) return done(err);
doc2.subscribe(function(err) {
if (err) return done(err);
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
expect(doc2.version).eql(2);
expect(doc2.data).eql({age: 4});
done();
@@ -800,7 +800,7 @@ module.exports = function() {
if (err) return done(err);
expect(doc2.wantSubscribe).to.be.true;
expect(doc2.subscribed).to.be.true;
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
done();
});
doc.submitOp({p: ['age'], na: 1});
@@ -820,7 +820,7 @@ module.exports = function() {
[{p: ['age'], na: 1}],
[{p: ['age'], na: 5}]
];
- doc2.on('op', function(op) {
+ doc2.on('opComponent', function(op) {
var item = expected.shift();
expect(op).eql(item);
if (expected.length) return;
@@ -852,7 +852,7 @@ module.exports = function() {
doc2.subscribe(function(err) {
if (err) return done(err);
var wait = 4;
- doc2.on('op', function() {
+ doc2.on('opComponent', function() {
if (--wait) return;
expect(doc2.version).eql(5);
expect(doc2.data).eql({age: 122});