Orderable.js 798 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. module.exports = Class =>
  2. class extends Class {
  3. before(name) {
  4. if (this.__after) {
  5. throw new Error(
  6. `Unable to set .before(${JSON.stringify(
  7. name
  8. )}) with existing value for .after()`
  9. );
  10. }
  11. this.__before = name;
  12. return this;
  13. }
  14. after(name) {
  15. if (this.__before) {
  16. throw new Error(
  17. `Unable to set .after(${JSON.stringify(
  18. name
  19. )}) with existing value for .before()`
  20. );
  21. }
  22. this.__after = name;
  23. return this;
  24. }
  25. merge(obj, omit = []) {
  26. if (obj.before) {
  27. this.before(obj.before);
  28. }
  29. if (obj.after) {
  30. this.after(obj.after);
  31. }
  32. return super.merge(obj, [...omit, 'before', 'after']);
  33. }
  34. };