change_note.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. 'use strict'
  2. const assert = require('check-types').assert
  3. const Change = require('./change')
  4. /**
  5. * A `ChangeNote` is returned when the server has applied a {@link Change}.
  6. */
  7. class ChangeNote {
  8. /**
  9. * @param {number} baseVersion the new base version for the change
  10. * @param {?Change} change
  11. */
  12. constructor(baseVersion, change) {
  13. assert.integer(baseVersion, 'bad baseVersion')
  14. assert.maybe.instance(change, Change, 'bad change')
  15. this.baseVersion = baseVersion
  16. this.change = change
  17. }
  18. /**
  19. * For serialization.
  20. *
  21. * @return {Object}
  22. */
  23. toRaw() {
  24. return {
  25. baseVersion: this.baseVersion,
  26. change: this.change.toRaw(),
  27. }
  28. }
  29. toRawWithoutChange() {
  30. return {
  31. baseVersion: this.baseVersion,
  32. }
  33. }
  34. static fromRaw(raw) {
  35. assert.integer(raw.baseVersion, 'bad raw.baseVersion')
  36. assert.maybe.object(raw.change, 'bad raw.changes')
  37. return new ChangeNote(raw.baseVersion, Change.fromRaw(raw.change))
  38. }
  39. getBaseVersion() {
  40. return this.baseVersion
  41. }
  42. getResultVersion() {
  43. return this.baseVersion + 1
  44. }
  45. getChange() {
  46. return this.change
  47. }
  48. }
  49. module.exports = ChangeNote