73999f18917bfbd7b644fe08e33d2a5be25891b83d0aa10f6e36be45e3e3b0b533e03cbe92aecc7e9d6290ad580111a5c4cd5ca8fa91a7e29f26f04c805c96 804 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. };