UNPKG

@juzi/wechaty

Version:

Wechaty is a RPA SDK for Chatbot Makers.

41 lines 1.72 kB
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