forked from zhurui/management
41 lines
798 B
JavaScript
41 lines
798 B
JavaScript
|
module.exports = Class =>
|
||
|
class extends Class {
|
||
|
before(name) {
|
||
|
if (this.__after) {
|
||
|
throw new Error(
|
||
|
`Unable to set .before(${JSON.stringify(
|
||
|
name
|
||
|
)}) with existing value for .after()`
|
||
|
);
|
||
|
}
|
||
|
|
||
|
this.__before = name;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
after(name) {
|
||
|
if (this.__before) {
|
||
|
throw new Error(
|
||
|
`Unable to set .after(${JSON.stringify(
|
||
|
name
|
||
|
)}) with existing value for .before()`
|
||
|
);
|
||
|
}
|
||
|
|
||
|
this.__after = name;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
merge(obj, omit = []) {
|
||
|
if (obj.before) {
|
||
|
this.before(obj.before);
|
||
|
}
|
||
|
|
||
|
if (obj.after) {
|
||
|
this.after(obj.after);
|
||
|
}
|
||
|
|
||
|
return super.merge(obj, [...omit, 'before', 'after']);
|
||
|
}
|
||
|
};
|