@juzi/wechaty
Version:
Wechaty is a RPA SDK for Chatbot Makers.
41 lines • 1.72 kB
JavaScript
import { log } from '@juzi/wechaty-puppet';
const WECHATIFIED_PREFIX = 'Wechatified';
const wechatifyUserModule = (UserClass) => {
log.verbose('WechatifyMixin', 'wechatifyUserModule(%s)', UserClass.name);
return (wechaty) => {
log.verbose('WechatifyMixin', 'wechatifyUserModule(%s)(%s)', UserClass.name, wechaty);
class WechatifiedUserClass extends UserClass {
static get wechaty() { return wechaty; }
get wechaty() { return wechaty; }
}
Reflect.defineProperty(WechatifiedUserClass, 'name', {
value: WECHATIFIED_PREFIX + UserClass.name,
});
return WechatifiedUserClass;
};
};
const throwWechatifyError = (WechatyUserClass) => {
throw new Error([
`${WechatyUserClass.name}: Wechaty User Class (WUC) can not be instantiated directly!`,
'See: https://github.com/wechaty/wechaty/issues/1217',
].join('\n'));
};
const isWechatified = (klass) => klass.name.startsWith(WECHATIFIED_PREFIX);
const wechatifyMixin = (Base) => {
log.verbose('WechatifyMixin', 'wechatifyMixin(%s)', Base.name || '');
class AbstractWechatifyMixin extends Base {
static get wechaty() { return throwWechatifyError(this); }
get wechaty() { return throwWechatifyError(this.constructor); }
constructor(...args) {
super(...args);
if (!isWechatified(this.constructor)) {
throwWechatifyError(this.constructor);
}
}
}
return AbstractWechatifyMixin;
};
const wechatifyMixinBase = () => wechatifyMixin(class EmptyBase {
});
export { isWechatified, wechatifyMixin, wechatifyMixinBase, wechatifyUserModule, };
//# sourceMappingURL=wechatify.js.map