@juzi/wechaty-puppet-whatsapp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +83 -0
- package/dist/cjs/examples/ding-dong-bot.d.ts +2 -0
- package/dist/cjs/examples/ding-dong-bot.d.ts.map +1 -0
- package/dist/cjs/examples/ding-dong-bot.js +98 -0
- package/dist/cjs/examples/ding-dong-bot.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/src/config.d.ts +41 -0
- package/dist/cjs/src/config.d.ts.map +1 -0
- package/dist/cjs/src/config.js +58 -0
- package/dist/cjs/src/config.js.map +1 -0
- package/dist/cjs/src/data/cache-manager.d.ts +83 -0
- package/dist/cjs/src/data/cache-manager.d.ts.map +1 -0
- package/dist/cjs/src/data/cache-manager.js +303 -0
- package/dist/cjs/src/data/cache-manager.js.map +1 -0
- package/dist/cjs/src/data/cache-manager.spec.d.ts +2 -0
- package/dist/cjs/src/data/cache-manager.spec.d.ts.map +1 -0
- package/dist/cjs/src/data/cache-manager.spec.js +32 -0
- package/dist/cjs/src/data/cache-manager.spec.js.map +1 -0
- package/dist/cjs/src/exception/error-type.d.ts +80 -0
- package/dist/cjs/src/exception/error-type.d.ts.map +1 -0
- package/dist/cjs/src/exception/error-type.js +61 -0
- package/dist/cjs/src/exception/error-type.js.map +1 -0
- package/dist/cjs/src/exception/whatsapp-error.d.ts +4 -0
- package/dist/cjs/src/exception/whatsapp-error.d.ts.map +1 -0
- package/dist/cjs/src/exception/whatsapp-error.js +14 -0
- package/dist/cjs/src/exception/whatsapp-error.js.map +1 -0
- package/dist/cjs/src/exception/whatsapp-error.spec.d.ts +3 -0
- package/dist/cjs/src/exception/whatsapp-error.spec.d.ts.map +1 -0
- package/dist/cjs/src/exception/whatsapp-error.spec.js +27 -0
- package/dist/cjs/src/exception/whatsapp-error.spec.js.map +1 -0
- package/dist/cjs/src/helper/index.d.ts +2 -0
- package/dist/cjs/src/helper/index.d.ts.map +1 -0
- package/dist/cjs/src/helper/index.js +3 -0
- package/dist/cjs/src/helper/index.js.map +1 -0
- package/dist/cjs/src/helper/miscellaneous.d.ts +8 -0
- package/dist/cjs/src/helper/miscellaneous.d.ts.map +1 -0
- package/dist/cjs/src/helper/miscellaneous.js +48 -0
- package/dist/cjs/src/helper/miscellaneous.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.d.ts +4 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.js +62 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts +2 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.js +86 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/convert-function.d.ts +4 -0
- package/dist/cjs/src/helper/pure-function/convert-function.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/convert-function.js +17 -0
- package/dist/cjs/src/helper/pure-function/convert-function.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/index.d.ts +5 -0
- package/dist/cjs/src/helper/pure-function/index.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/index.js +21 -0
- package/dist/cjs/src/helper/pure-function/index.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.d.ts +4 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.js +136 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.d.ts +2 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.js +229 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.d.ts +28 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.js +59 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.spec.d.ts +2 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.spec.js +101 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.spec.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.d.ts +4 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.js +24 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.d.ts +2 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.js +68 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/vcard-parser.d.ts +28 -0
- package/dist/cjs/src/helper/pure-function/vcard-parser.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/vcard-parser.js +109 -0
- package/dist/cjs/src/helper/pure-function/vcard-parser.js.map +1 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.d.ts +19 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.d.ts.map +1 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.js +49 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.js.map +1 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.spec.d.ts +2 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.spec.js +45 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.spec.js.map +1 -0
- package/dist/cjs/src/manager-event.d.ts +18 -0
- package/dist/cjs/src/manager-event.d.ts.map +1 -0
- package/dist/cjs/src/manager-event.js +3 -0
- package/dist/cjs/src/manager-event.js.map +1 -0
- package/dist/cjs/src/manager.d.ts +67 -0
- package/dist/cjs/src/manager.d.ts.map +1 -0
- package/dist/cjs/src/manager.js +270 -0
- package/dist/cjs/src/manager.js.map +1 -0
- package/dist/cjs/src/manager.spec.d.ts +3 -0
- package/dist/cjs/src/manager.spec.d.ts.map +1 -0
- package/dist/cjs/src/manager.spec.js +38 -0
- package/dist/cjs/src/manager.spec.js.map +1 -0
- package/dist/cjs/src/mod.d.ts +5 -0
- package/dist/cjs/src/mod.d.ts.map +1 -0
- package/dist/cjs/src/mod.js +9 -0
- package/dist/cjs/src/mod.js.map +1 -0
- package/dist/cjs/src/package-json.d.ts +6 -0
- package/dist/cjs/src/package-json.d.ts.map +1 -0
- package/dist/cjs/src/package-json.js +93 -0
- package/dist/cjs/src/package-json.js.map +1 -0
- package/dist/cjs/src/package-json.spec.d.ts +3 -0
- package/dist/cjs/src/package-json.spec.d.ts.map +1 -0
- package/dist/cjs/src/package-json.spec.js +10 -0
- package/dist/cjs/src/package-json.spec.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/contact-self.d.ts +5 -0
- package/dist/cjs/src/puppet-mixin/contact-self.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/contact-self.js +45 -0
- package/dist/cjs/src/puppet-mixin/contact-self.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/contact.d.ts +16 -0
- package/dist/cjs/src/puppet-mixin/contact.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/contact.js +124 -0
- package/dist/cjs/src/puppet-mixin/contact.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/conversation.d.ts +2 -0
- package/dist/cjs/src/puppet-mixin/conversation.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/conversation.js +35 -0
- package/dist/cjs/src/puppet-mixin/conversation.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/friendship.d.ts +12 -0
- package/dist/cjs/src/puppet-mixin/friendship.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/friendship.js +99 -0
- package/dist/cjs/src/puppet-mixin/friendship.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/message.d.ts +57 -0
- package/dist/cjs/src/puppet-mixin/message.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/message.js +327 -0
- package/dist/cjs/src/puppet-mixin/message.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/room.d.ts +42 -0
- package/dist/cjs/src/puppet-mixin/room.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/room.js +319 -0
- package/dist/cjs/src/puppet-mixin/room.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/tag.d.ts +5 -0
- package/dist/cjs/src/puppet-mixin/tag.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/tag.js +50 -0
- package/dist/cjs/src/puppet-mixin/tag.js.map +1 -0
- package/dist/cjs/src/puppet-whatsapp.d.ts +145 -0
- package/dist/cjs/src/puppet-whatsapp.d.ts.map +1 -0
- package/dist/cjs/src/puppet-whatsapp.js +309 -0
- package/dist/cjs/src/puppet-whatsapp.js.map +1 -0
- package/dist/cjs/src/puppet-whatsapp.spec.d.ts +3 -0
- package/dist/cjs/src/puppet-whatsapp.spec.d.ts.map +1 -0
- package/dist/cjs/src/puppet-whatsapp.spec.js +25 -0
- package/dist/cjs/src/puppet-whatsapp.spec.js.map +1 -0
- package/dist/cjs/src/request/rate-manager.d.ts +21 -0
- package/dist/cjs/src/request/rate-manager.d.ts.map +1 -0
- package/dist/cjs/src/request/rate-manager.js +92 -0
- package/dist/cjs/src/request/rate-manager.js.map +1 -0
- package/dist/cjs/src/request/request-manager.d.ts +54 -0
- package/dist/cjs/src/request/request-manager.d.ts.map +1 -0
- package/dist/cjs/src/request/request-manager.js +128 -0
- package/dist/cjs/src/request/request-manager.js.map +1 -0
- package/dist/cjs/src/request/request-pool.d.ts +10 -0
- package/dist/cjs/src/request/request-pool.d.ts.map +1 -0
- package/dist/cjs/src/request/request-pool.js +47 -0
- package/dist/cjs/src/request/request-pool.js.map +1 -0
- package/dist/cjs/src/request/request-pool.spec.d.ts +2 -0
- package/dist/cjs/src/request/request-pool.spec.d.ts.map +1 -0
- package/dist/cjs/src/request/request-pool.spec.js +36 -0
- package/dist/cjs/src/request/request-pool.spec.js.map +1 -0
- package/dist/cjs/src/schema/event-name.d.ts +9 -0
- package/dist/cjs/src/schema/event-name.d.ts.map +1 -0
- package/dist/cjs/src/schema/event-name.js +13 -0
- package/dist/cjs/src/schema/event-name.js.map +1 -0
- package/dist/cjs/src/schema/index.d.ts +2 -0
- package/dist/cjs/src/schema/index.d.ts.map +1 -0
- package/dist/cjs/src/schema/index.js +18 -0
- package/dist/cjs/src/schema/index.js.map +1 -0
- package/dist/cjs/src/schema/whatsapp-interface.d.ts +18 -0
- package/dist/cjs/src/schema/whatsapp-interface.d.ts.map +1 -0
- package/dist/cjs/src/schema/whatsapp-interface.js +26 -0
- package/dist/cjs/src/schema/whatsapp-interface.js.map +1 -0
- package/dist/cjs/src/schema/whatsapp-type.d.ts +42 -0
- package/dist/cjs/src/schema/whatsapp-type.d.ts.map +1 -0
- package/dist/cjs/src/schema/whatsapp-type.js +3 -0
- package/dist/cjs/src/schema/whatsapp-type.js.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/group-event-handler.d.ts +8 -0
- package/dist/cjs/src/whatsapp/event-handler/group-event-handler.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/group-event-handler.js +84 -0
- package/dist/cjs/src/whatsapp/event-handler/group-event-handler.js.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/login-event-handler.d.ts +24 -0
- package/dist/cjs/src/whatsapp/event-handler/login-event-handler.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/login-event-handler.js +203 -0
- package/dist/cjs/src/whatsapp/event-handler/login-event-handler.js.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/message-event-handler.d.ts +35 -0
- package/dist/cjs/src/whatsapp/event-handler/message-event-handler.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/message-event-handler.js +203 -0
- package/dist/cjs/src/whatsapp/event-handler/message-event-handler.js.map +1 -0
- package/dist/cjs/src/whatsapp/whatsapp-base.d.ts +26 -0
- package/dist/cjs/src/whatsapp/whatsapp-base.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/whatsapp-base.js +69 -0
- package/dist/cjs/src/whatsapp/whatsapp-base.js.map +1 -0
- package/dist/cjs/src/whatsapp/whatsapp-manager.d.ts +16 -0
- package/dist/cjs/src/whatsapp/whatsapp-manager.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/whatsapp-manager.js +134 -0
- package/dist/cjs/src/whatsapp/whatsapp-manager.js.map +1 -0
- package/dist/cjs/tests/integration.spec.d.ts +3 -0
- package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
- package/dist/cjs/tests/integration.spec.js +8 -0
- package/dist/cjs/tests/integration.spec.js.map +1 -0
- package/dist/cjs/tests/memory-card.spec.d.ts +2 -0
- package/dist/cjs/tests/memory-card.spec.d.ts.map +1 -0
- package/dist/cjs/tests/memory-card.spec.js +25 -0
- package/dist/cjs/tests/memory-card.spec.js.map +1 -0
- package/dist/cjs/tests/qrcode.spec.d.ts +2 -0
- package/dist/cjs/tests/qrcode.spec.d.ts.map +1 -0
- package/dist/cjs/tests/qrcode.spec.js +51 -0
- package/dist/cjs/tests/qrcode.spec.js.map +1 -0
- package/dist/esm/examples/ding-dong-bot.d.ts +2 -0
- package/dist/esm/examples/ding-dong-bot.d.ts.map +1 -0
- package/dist/esm/examples/ding-dong-bot.js +93 -0
- package/dist/esm/examples/ding-dong-bot.js.map +1 -0
- package/dist/esm/src/config.d.ts +41 -0
- package/dist/esm/src/config.d.ts.map +1 -0
- package/dist/esm/src/config.js +50 -0
- package/dist/esm/src/config.js.map +1 -0
- package/dist/esm/src/data/cache-manager.d.ts +83 -0
- package/dist/esm/src/data/cache-manager.d.ts.map +1 -0
- package/dist/esm/src/data/cache-manager.js +273 -0
- package/dist/esm/src/data/cache-manager.js.map +1 -0
- package/dist/esm/src/data/cache-manager.spec.d.ts +2 -0
- package/dist/esm/src/data/cache-manager.spec.d.ts.map +1 -0
- package/dist/esm/src/data/cache-manager.spec.js +30 -0
- package/dist/esm/src/data/cache-manager.spec.js.map +1 -0
- package/dist/esm/src/exception/error-type.d.ts +80 -0
- package/dist/esm/src/exception/error-type.d.ts.map +1 -0
- package/dist/esm/src/exception/error-type.js +58 -0
- package/dist/esm/src/exception/error-type.js.map +1 -0
- package/dist/esm/src/exception/whatsapp-error.d.ts +4 -0
- package/dist/esm/src/exception/whatsapp-error.d.ts.map +1 -0
- package/dist/esm/src/exception/whatsapp-error.js +11 -0
- package/dist/esm/src/exception/whatsapp-error.js.map +1 -0
- package/dist/esm/src/exception/whatsapp-error.spec.d.ts +3 -0
- package/dist/esm/src/exception/whatsapp-error.spec.d.ts.map +1 -0
- package/dist/esm/src/exception/whatsapp-error.spec.js +22 -0
- package/dist/esm/src/exception/whatsapp-error.spec.js.map +1 -0
- package/dist/esm/src/helper/index.d.ts +2 -0
- package/dist/esm/src/helper/index.d.ts.map +1 -0
- package/dist/esm/src/helper/index.js +2 -0
- package/dist/esm/src/helper/index.js.map +1 -0
- package/dist/esm/src/helper/miscellaneous.d.ts +8 -0
- package/dist/esm/src/helper/miscellaneous.d.ts.map +1 -0
- package/dist/esm/src/helper/miscellaneous.js +38 -0
- package/dist/esm/src/helper/miscellaneous.js.map +1 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.d.ts +4 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.js +35 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.js.map +1 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts +2 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.js +61 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.js.map +1 -0
- package/dist/esm/src/helper/pure-function/convert-function.d.ts +4 -0
- package/dist/esm/src/helper/pure-function/convert-function.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/convert-function.js +12 -0
- package/dist/esm/src/helper/pure-function/convert-function.js.map +1 -0
- package/dist/esm/src/helper/pure-function/index.d.ts +5 -0
- package/dist/esm/src/helper/pure-function/index.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/index.js +5 -0
- package/dist/esm/src/helper/pure-function/index.js.map +1 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.d.ts +4 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.js +106 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.js.map +1 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.d.ts +2 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.js +227 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.js.map +1 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.d.ts +28 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.js +53 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.js.map +1 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.spec.d.ts +2 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.spec.js +99 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.spec.js.map +1 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.d.ts +4 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.js +17 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.js.map +1 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.d.ts +2 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.js +66 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.js.map +1 -0
- package/dist/esm/src/helper/pure-function/vcard-parser.d.ts +28 -0
- package/dist/esm/src/helper/pure-function/vcard-parser.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/vcard-parser.js +102 -0
- package/dist/esm/src/helper/pure-function/vcard-parser.js.map +1 -0
- package/dist/esm/src/helper/schedule/schedule-manager.d.ts +19 -0
- package/dist/esm/src/helper/schedule/schedule-manager.d.ts.map +1 -0
- package/dist/esm/src/helper/schedule/schedule-manager.js +43 -0
- package/dist/esm/src/helper/schedule/schedule-manager.js.map +1 -0
- package/dist/esm/src/helper/schedule/schedule-manager.spec.d.ts +2 -0
- package/dist/esm/src/helper/schedule/schedule-manager.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/schedule/schedule-manager.spec.js +40 -0
- package/dist/esm/src/helper/schedule/schedule-manager.spec.js.map +1 -0
- package/dist/esm/src/manager-event.d.ts +18 -0
- package/dist/esm/src/manager-event.d.ts.map +1 -0
- package/dist/esm/src/manager-event.js +2 -0
- package/dist/esm/src/manager-event.js.map +1 -0
- package/dist/esm/src/manager.d.ts +67 -0
- package/dist/esm/src/manager.d.ts.map +1 -0
- package/dist/esm/src/manager.js +264 -0
- package/dist/esm/src/manager.js.map +1 -0
- package/dist/esm/src/manager.spec.d.ts +3 -0
- package/dist/esm/src/manager.spec.d.ts.map +1 -0
- package/dist/esm/src/manager.spec.js +33 -0
- package/dist/esm/src/manager.spec.js.map +1 -0
- package/dist/esm/src/mod.d.ts +5 -0
- package/dist/esm/src/mod.d.ts.map +1 -0
- package/dist/esm/src/mod.js +5 -0
- package/dist/esm/src/mod.js.map +1 -0
- package/dist/esm/src/package-json.d.ts +6 -0
- package/dist/esm/src/package-json.d.ts.map +1 -0
- package/dist/esm/src/package-json.js +90 -0
- package/dist/esm/src/package-json.js.map +1 -0
- package/dist/esm/src/package-json.spec.d.ts +3 -0
- package/dist/esm/src/package-json.spec.d.ts.map +1 -0
- package/dist/esm/src/package-json.spec.js +8 -0
- package/dist/esm/src/package-json.spec.js.map +1 -0
- package/dist/esm/src/puppet-mixin/contact-self.d.ts +5 -0
- package/dist/esm/src/puppet-mixin/contact-self.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/contact-self.js +16 -0
- package/dist/esm/src/puppet-mixin/contact-self.js.map +1 -0
- package/dist/esm/src/puppet-mixin/contact.d.ts +16 -0
- package/dist/esm/src/puppet-mixin/contact.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/contact.js +87 -0
- package/dist/esm/src/puppet-mixin/contact.js.map +1 -0
- package/dist/esm/src/puppet-mixin/conversation.d.ts +2 -0
- package/dist/esm/src/puppet-mixin/conversation.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/conversation.js +8 -0
- package/dist/esm/src/puppet-mixin/conversation.js.map +1 -0
- package/dist/esm/src/puppet-mixin/friendship.d.ts +12 -0
- package/dist/esm/src/puppet-mixin/friendship.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/friendship.js +63 -0
- package/dist/esm/src/puppet-mixin/friendship.js.map +1 -0
- package/dist/esm/src/puppet-mixin/message.d.ts +57 -0
- package/dist/esm/src/puppet-mixin/message.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/message.js +282 -0
- package/dist/esm/src/puppet-mixin/message.js.map +1 -0
- package/dist/esm/src/puppet-mixin/room.d.ts +42 -0
- package/dist/esm/src/puppet-mixin/room.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/room.js +273 -0
- package/dist/esm/src/puppet-mixin/room.js.map +1 -0
- package/dist/esm/src/puppet-mixin/tag.d.ts +5 -0
- package/dist/esm/src/puppet-mixin/tag.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/tag.js +20 -0
- package/dist/esm/src/puppet-mixin/tag.js.map +1 -0
- package/dist/esm/src/puppet-whatsapp.d.ts +145 -0
- package/dist/esm/src/puppet-whatsapp.d.ts.map +1 -0
- package/dist/esm/src/puppet-whatsapp.js +280 -0
- package/dist/esm/src/puppet-whatsapp.js.map +1 -0
- package/dist/esm/src/puppet-whatsapp.spec.d.ts +3 -0
- package/dist/esm/src/puppet-whatsapp.spec.d.ts.map +1 -0
- package/dist/esm/src/puppet-whatsapp.spec.js +23 -0
- package/dist/esm/src/puppet-whatsapp.spec.js.map +1 -0
- package/dist/esm/src/request/rate-manager.d.ts +21 -0
- package/dist/esm/src/request/rate-manager.d.ts.map +1 -0
- package/dist/esm/src/request/rate-manager.js +85 -0
- package/dist/esm/src/request/rate-manager.js.map +1 -0
- package/dist/esm/src/request/request-manager.d.ts +54 -0
- package/dist/esm/src/request/request-manager.d.ts.map +1 -0
- package/dist/esm/src/request/request-manager.js +124 -0
- package/dist/esm/src/request/request-manager.js.map +1 -0
- package/dist/esm/src/request/request-pool.d.ts +10 -0
- package/dist/esm/src/request/request-pool.d.ts.map +1 -0
- package/dist/esm/src/request/request-pool.js +40 -0
- package/dist/esm/src/request/request-pool.js.map +1 -0
- package/dist/esm/src/request/request-pool.spec.d.ts +2 -0
- package/dist/esm/src/request/request-pool.spec.d.ts.map +1 -0
- package/dist/esm/src/request/request-pool.spec.js +34 -0
- package/dist/esm/src/request/request-pool.spec.js.map +1 -0
- package/dist/esm/src/schema/event-name.d.ts +9 -0
- package/dist/esm/src/schema/event-name.d.ts.map +1 -0
- package/dist/esm/src/schema/event-name.js +10 -0
- package/dist/esm/src/schema/event-name.js.map +1 -0
- package/dist/esm/src/schema/index.d.ts +2 -0
- package/dist/esm/src/schema/index.d.ts.map +1 -0
- package/dist/esm/src/schema/index.js +2 -0
- package/dist/esm/src/schema/index.js.map +1 -0
- package/dist/esm/src/schema/whatsapp-interface.d.ts +18 -0
- package/dist/esm/src/schema/whatsapp-interface.d.ts.map +1 -0
- package/dist/esm/src/schema/whatsapp-interface.js +20 -0
- package/dist/esm/src/schema/whatsapp-interface.js.map +1 -0
- package/dist/esm/src/schema/whatsapp-type.d.ts +42 -0
- package/dist/esm/src/schema/whatsapp-type.d.ts.map +1 -0
- package/dist/esm/src/schema/whatsapp-type.js +2 -0
- package/dist/esm/src/schema/whatsapp-type.js.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/group-event-handler.d.ts +8 -0
- package/dist/esm/src/whatsapp/event-handler/group-event-handler.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/group-event-handler.js +78 -0
- package/dist/esm/src/whatsapp/event-handler/group-event-handler.js.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/login-event-handler.d.ts +24 -0
- package/dist/esm/src/whatsapp/event-handler/login-event-handler.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/login-event-handler.js +174 -0
- package/dist/esm/src/whatsapp/event-handler/login-event-handler.js.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/message-event-handler.d.ts +35 -0
- package/dist/esm/src/whatsapp/event-handler/message-event-handler.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/message-event-handler.js +197 -0
- package/dist/esm/src/whatsapp/event-handler/message-event-handler.js.map +1 -0
- package/dist/esm/src/whatsapp/whatsapp-base.d.ts +26 -0
- package/dist/esm/src/whatsapp/whatsapp-base.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/whatsapp-base.js +63 -0
- package/dist/esm/src/whatsapp/whatsapp-base.js.map +1 -0
- package/dist/esm/src/whatsapp/whatsapp-manager.d.ts +16 -0
- package/dist/esm/src/whatsapp/whatsapp-manager.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/whatsapp-manager.js +128 -0
- package/dist/esm/src/whatsapp/whatsapp-manager.js.map +1 -0
- package/dist/esm/tests/integration.spec.d.ts +3 -0
- package/dist/esm/tests/integration.spec.d.ts.map +1 -0
- package/dist/esm/tests/integration.spec.js +6 -0
- package/dist/esm/tests/integration.spec.js.map +1 -0
- package/dist/esm/tests/memory-card.spec.d.ts +2 -0
- package/dist/esm/tests/memory-card.spec.d.ts.map +1 -0
- package/dist/esm/tests/memory-card.spec.js +23 -0
- package/dist/esm/tests/memory-card.spec.js.map +1 -0
- package/dist/esm/tests/qrcode.spec.d.ts +2 -0
- package/dist/esm/tests/qrcode.spec.d.ts.map +1 -0
- package/dist/esm/tests/qrcode.spec.js +26 -0
- package/dist/esm/tests/qrcode.spec.js.map +1 -0
- package/package.json +89 -0
- package/src/config.ts +70 -0
- package/src/data/cache-manager.spec.ts +33 -0
- package/src/data/cache-manager.ts +331 -0
- package/src/exception/error-type.ts +59 -0
- package/src/exception/whatsapp-error.spec.ts +26 -0
- package/src/exception/whatsapp-error.ts +15 -0
- package/src/helper/index.ts +3 -0
- package/src/helper/miscellaneous.ts +45 -0
- package/src/helper/pure-function/contact-raw-payload-parser.spec.ts +67 -0
- package/src/helper/pure-function/contact-raw-payload-parser.ts +36 -0
- package/src/helper/pure-function/convert-function.ts +24 -0
- package/src/helper/pure-function/index.ts +4 -0
- package/src/helper/pure-function/message-raw-payload-parser.spec.ts +243 -0
- package/src/helper/pure-function/message-raw-payload-parser.ts +117 -0
- package/src/helper/pure-function/room-event-generator.spec.ts +120 -0
- package/src/helper/pure-function/room-event-generator.ts +63 -0
- package/src/helper/pure-function/room-raw-payload-parser.spec.ts +70 -0
- package/src/helper/pure-function/room-raw-payload-parser.ts +19 -0
- package/src/helper/pure-function/vcard-parser.ts +128 -0
- package/src/helper/schedule/schedule-manager.spec.ts +46 -0
- package/src/helper/schedule/schedule-manager.ts +52 -0
- package/src/manager-event.ts +18 -0
- package/src/manager.spec.ts +40 -0
- package/src/manager.ts +297 -0
- package/src/mod.ts +8 -0
- package/src/package-json.spec.ts +10 -0
- package/src/package-json.ts +93 -0
- package/src/puppet-mixin/contact-self.ts +20 -0
- package/src/puppet-mixin/contact.ts +107 -0
- package/src/puppet-mixin/conversation.ts +12 -0
- package/src/puppet-mixin/friendship.ts +88 -0
- package/src/puppet-mixin/message.ts +311 -0
- package/src/puppet-mixin/room.ts +334 -0
- package/src/puppet-mixin/tag.ts +34 -0
- package/src/puppet-whatsapp.spec.ts +30 -0
- package/src/puppet-whatsapp.ts +339 -0
- package/src/request/rate-manager.ts +118 -0
- package/src/request/request-manager.ts +174 -0
- package/src/request/request-pool.spec.ts +36 -0
- package/src/request/request-pool.ts +45 -0
- package/src/schema/event-name.ts +8 -0
- package/src/schema/fix-type.d.ts +63 -0
- package/src/schema/index.ts +1 -0
- package/src/schema/whatsapp-interface.ts +31 -0
- package/src/schema/whatsapp-type.ts +79 -0
- package/src/typings.d.ts +0 -0
- package/src/whatsapp/event-handler/group-event-handler.ts +95 -0
- package/src/whatsapp/event-handler/login-event-handler.ts +210 -0
- package/src/whatsapp/event-handler/message-event-handler.ts +230 -0
- package/src/whatsapp/whatsapp-base.ts +78 -0
- package/src/whatsapp/whatsapp-manager.ts +160 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wechaty - https://github.com/chatie/wechaty
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2016-2018 Huan LI <zixia@zixia.net>
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
import * as PUPPET from '@juzi/wechaty-puppet'
|
|
20
|
+
import { log } from '@juzi/wechaty-puppet'
|
|
21
|
+
import type { MemoryCard } from 'memory-card'
|
|
22
|
+
|
|
23
|
+
import {
|
|
24
|
+
VERSION,
|
|
25
|
+
} from './config.js'
|
|
26
|
+
|
|
27
|
+
import Manager from './manager.js'
|
|
28
|
+
import type { RequestManagerAPIs } from './request/request-manager.js'
|
|
29
|
+
import type { ClientOptions, WhatsAppClientType } from './schema/whatsapp-type.js'
|
|
30
|
+
import WAError from './exception/whatsapp-error.js'
|
|
31
|
+
import { WA_ERROR_TYPE } from './exception/error-type.js'
|
|
32
|
+
import { EventName } from './schema/event-name.js'
|
|
33
|
+
import { RequestPool } from './request/request-pool.js'
|
|
34
|
+
import { contactSelfQRCode, contactSelfName, contactSelfSignature } from './puppet-mixin/contact-self.js'
|
|
35
|
+
import { contactAlias, contactPhone, contactCorporationRemark, contactDescription, contactList, contactAvatar, contactRawPayloadParser, contactRawPayload } from './puppet-mixin/contact.js'
|
|
36
|
+
import { conversationReadMark } from './puppet-mixin/conversation.js'
|
|
37
|
+
import { friendshipRawPayload, friendshipRawPayloadParser, friendshipSearchPhone, friendshipSearchWeixin, friendshipAdd, friendshipAccept, friendshipSearchHandle } from './puppet-mixin/friendship.js'
|
|
38
|
+
import { messageContact, messageImage, messageRecall, messageFile, messageUrl, messageMiniProgram, messageSendText, messageSendFile, messageSendContact, messageSendUrl, messageSendMiniProgram, messageForward, messageRawPayloadParser, messageRawPayload, messagePost } from './puppet-mixin/message.js'
|
|
39
|
+
import { roomRawPayloadParser, roomRawPayload, roomList, roomDel, roomAvatar, roomAdd, roomTopic, roomCreate, roomQuit, roomQRCode, roomMemberList, roomMemberRawPayload, roomMemberRawPayloadParser, roomAnnounce, roomInvitationAccept, roomInvitationRawPayload, roomInvitationRawPayloadParser } from './puppet-mixin/room.js'
|
|
40
|
+
import { tagContactAdd, tagContactRemove, tagContactDelete, tagContactList } from './puppet-mixin/tag.js'
|
|
41
|
+
|
|
42
|
+
// import { Attachment } from './mock/user/types'
|
|
43
|
+
type ManagerWithRequestManager = Manager & RequestManagerAPIs
|
|
44
|
+
|
|
45
|
+
export type PuppetWhatsAppOptions = PUPPET.PuppetOptions & {
|
|
46
|
+
memory?: MemoryCard
|
|
47
|
+
puppeteerOptions?: ClientOptions
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const PRE = 'PuppetWhatsapp'
|
|
51
|
+
|
|
52
|
+
class PuppetWhatsapp extends PUPPET.Puppet {
|
|
53
|
+
|
|
54
|
+
static override readonly VERSION = VERSION
|
|
55
|
+
|
|
56
|
+
public manager: ManagerWithRequestManager
|
|
57
|
+
|
|
58
|
+
constructor (
|
|
59
|
+
override options: PuppetWhatsAppOptions = {},
|
|
60
|
+
) {
|
|
61
|
+
super(options)
|
|
62
|
+
log.verbose(PRE, 'constructor()')
|
|
63
|
+
|
|
64
|
+
this.manager = new Manager(this.options) as ManagerWithRequestManager
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
override version () {
|
|
68
|
+
return VERSION
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
override async onStart (): Promise<void> {
|
|
72
|
+
log.verbose(PRE, 'onStart()')
|
|
73
|
+
|
|
74
|
+
let whatsapp: WhatsAppClientType
|
|
75
|
+
try {
|
|
76
|
+
whatsapp = await this.startManager(this.manager)
|
|
77
|
+
} catch (err) {
|
|
78
|
+
log.error(PRE, `Can not start whatsapp, error: ${(err as Error).message}`)
|
|
79
|
+
throw WAError(WA_ERROR_TYPE.ERR_INIT, `Can not start whatsapp, error: ${(err as Error).message}`)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Huan(202102): Wait for Puppeteer to be inited before resolve start() for robust state management
|
|
84
|
+
*/
|
|
85
|
+
const future = new Promise<void>(resolve => {
|
|
86
|
+
function check () {
|
|
87
|
+
if (whatsapp.pupBrowser) {
|
|
88
|
+
resolve()
|
|
89
|
+
} else {
|
|
90
|
+
setTimeout(check, 100)
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
check()
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
return Promise.race([
|
|
98
|
+
future,
|
|
99
|
+
this.state.stable('inactive'),
|
|
100
|
+
])
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private async startManager (manager: Manager) {
|
|
104
|
+
manager.on({
|
|
105
|
+
dirty: this.onDirty.bind(this),
|
|
106
|
+
error: this.onError.bind(this),
|
|
107
|
+
friendship: this.onFriendship.bind(this),
|
|
108
|
+
heartbeat: data => this.emit('heartbeat', {
|
|
109
|
+
data,
|
|
110
|
+
}),
|
|
111
|
+
login: this.onLogin.bind(this),
|
|
112
|
+
logout: this.onLogout.bind(this),
|
|
113
|
+
message: this.onMessage.bind(this),
|
|
114
|
+
ready: this.onReady.bind(this),
|
|
115
|
+
reset: this.onReset.bind(this),
|
|
116
|
+
'room-invite': this.onRoomInvite.bind(this),
|
|
117
|
+
'room-join': this.onRoomJoin.bind(this),
|
|
118
|
+
'room-leave': this.onRoomLeave.bind(this),
|
|
119
|
+
'room-topic': this.onRoomTopic.bind(this),
|
|
120
|
+
scan: this.onScan.bind(this),
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
const memory = this.memory
|
|
124
|
+
const whatsapp = await this.manager.start(memory)
|
|
125
|
+
return whatsapp
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
override async onStop (): Promise<void> {
|
|
129
|
+
log.verbose(PRE, 'onStop()')
|
|
130
|
+
try {
|
|
131
|
+
await this.stopManager()
|
|
132
|
+
} catch (err) {
|
|
133
|
+
log.error(PRE, `Can not stop, error: ${(err as Error).message}`)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
private async stopManager () {
|
|
138
|
+
this.manager.off('*')
|
|
139
|
+
await this.manager.stop()
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Event section: onXXX
|
|
144
|
+
*/
|
|
145
|
+
private async onLogin (wxid: string): Promise<void> {
|
|
146
|
+
log.verbose(PRE, 'onLogin(%s)', wxid)
|
|
147
|
+
|
|
148
|
+
if (this.isLoggedIn) {
|
|
149
|
+
log.warn(PRE, 'onLogin(%s) already login? NOOP', wxid)
|
|
150
|
+
return
|
|
151
|
+
}
|
|
152
|
+
log.info(PRE, `${EventName.LOGIN}, ${wxid}`)
|
|
153
|
+
|
|
154
|
+
await super.login(wxid)
|
|
155
|
+
// no need to emit login since super.login will do that
|
|
156
|
+
// this.emit('login', { contactId: wxid })
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
private async onLogout (wxid: string, message: string): Promise<void> {
|
|
160
|
+
log.verbose(PRE, 'onLogout(%s, %s)', wxid, message)
|
|
161
|
+
|
|
162
|
+
if (!this.isLoggedIn) {
|
|
163
|
+
log.warn(PRE, 'onLogout(%s) already logged out?', wxid)
|
|
164
|
+
}
|
|
165
|
+
log.info(PRE, `${EventName.LOGOUT}, ${wxid}`)
|
|
166
|
+
|
|
167
|
+
const requestPool = RequestPool.Instance
|
|
168
|
+
requestPool.clearPool()
|
|
169
|
+
|
|
170
|
+
this.emit('logout', { contactId: wxid, data: message })
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
private async onMessage (message: PUPPET.payloads.EventMessage): Promise<void> {
|
|
174
|
+
log.verbose(PRE, 'onMessage(%s)', JSON.stringify(message))
|
|
175
|
+
this.emit('message', message)
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
private async onScan (payload: PUPPET.payloads.EventScan): Promise<void> {
|
|
179
|
+
log.verbose(PRE, 'onScan(%s)', JSON.stringify(payload))
|
|
180
|
+
|
|
181
|
+
log.info(PRE, `${EventName.SCAN}`)
|
|
182
|
+
this.emit('scan', payload)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
private async onError (e: string) {
|
|
186
|
+
log.info(PRE, `${EventName.ERROR}, ${e}`)
|
|
187
|
+
this.emit('error', {
|
|
188
|
+
data: e,
|
|
189
|
+
})
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
private async onReset (reason: string) {
|
|
193
|
+
log.info(PRE, `${EventName.RESET}, ${reason}`)
|
|
194
|
+
this.emit('reset', { data: reason } as PUPPET.payloads.EventReset)
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
private async onFriendship (payload: PUPPET.payloads.EventFriendship): Promise<void> {
|
|
198
|
+
const contactId = await this.messageContact(payload.friendshipId)
|
|
199
|
+
// NOTE: this function automatically put non-contact into cache
|
|
200
|
+
await this.contactRawPayload(contactId)
|
|
201
|
+
this.emit('friendship', payload)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
private async onRoomJoin (payload: PUPPET.payloads.EventRoomJoin) {
|
|
205
|
+
const roomId = payload.roomId
|
|
206
|
+
await this.dirtyPayload(PUPPET.types.Payload.Room, roomId)
|
|
207
|
+
this.emit('room-join', payload)
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
private async onRoomLeave (payload: PUPPET.payloads.EventRoomLeave) {
|
|
211
|
+
const roomId = payload.roomId
|
|
212
|
+
await this.dirtyPayload(PUPPET.types.Payload.Room, roomId)
|
|
213
|
+
this.emit('room-leave', payload)
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
private async onRoomTopic (payload: PUPPET.payloads.EventRoomTopic) {
|
|
217
|
+
const roomId = payload.roomId
|
|
218
|
+
await this.dirtyPayload(PUPPET.types.Payload.Room, roomId)
|
|
219
|
+
this.emit('room-topic', payload)
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
private async onRoomInvite (payload: PUPPET.payloads.EventRoomInvite) {
|
|
223
|
+
this.emit('room-invite', payload)
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
private async onReady () {
|
|
227
|
+
log.verbose(PRE, 'onReady()')
|
|
228
|
+
|
|
229
|
+
log.info(PRE, `${EventName.READY}`)
|
|
230
|
+
this.emit('ready', { data: 'ready' })
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Override Methods
|
|
235
|
+
*/
|
|
236
|
+
|
|
237
|
+
override async logout () {
|
|
238
|
+
await super.logout()
|
|
239
|
+
if (!this.isLoggedIn) {
|
|
240
|
+
log.verbose(PRE, 'logout() do nothing')
|
|
241
|
+
return
|
|
242
|
+
}
|
|
243
|
+
return this.manager.logout()
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
override ding (data?: string): void {
|
|
247
|
+
log.silly(PRE, 'ding(%s)', data || '')
|
|
248
|
+
setTimeout(() => this.emit('dong', { data: data || '' }), 1000)
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* ContactSelf
|
|
253
|
+
*/
|
|
254
|
+
override contactSelfQRCode = contactSelfQRCode
|
|
255
|
+
override contactSelfName = contactSelfName
|
|
256
|
+
override contactSelfSignature = contactSelfSignature
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Contact
|
|
260
|
+
*/
|
|
261
|
+
override contactAlias = contactAlias
|
|
262
|
+
override contactPhone = contactPhone
|
|
263
|
+
override contactCorporationRemark = contactCorporationRemark
|
|
264
|
+
override contactDescription = contactDescription
|
|
265
|
+
override contactList = contactList
|
|
266
|
+
override contactAvatar = contactAvatar
|
|
267
|
+
override contactRawPayloadParser = contactRawPayloadParser
|
|
268
|
+
override contactRawPayload = contactRawPayload
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Conversation
|
|
272
|
+
*/
|
|
273
|
+
override conversationReadMark = conversationReadMark
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Message
|
|
277
|
+
*/
|
|
278
|
+
// FIXME: need to implement in wechaty-puppet
|
|
279
|
+
messagePost = messagePost
|
|
280
|
+
override messageContact = messageContact
|
|
281
|
+
override messageImage = messageImage
|
|
282
|
+
override messageRecall = messageRecall
|
|
283
|
+
override messageFile = messageFile
|
|
284
|
+
override messageUrl = messageUrl
|
|
285
|
+
override messageMiniProgram = messageMiniProgram
|
|
286
|
+
override messageSendText = messageSendText
|
|
287
|
+
override messageSendFile = messageSendFile
|
|
288
|
+
override messageSendContact = messageSendContact
|
|
289
|
+
override messageSendUrl = messageSendUrl
|
|
290
|
+
override messageSendMiniProgram = messageSendMiniProgram
|
|
291
|
+
override messageForward = messageForward
|
|
292
|
+
|
|
293
|
+
override messageRawPayloadParser = messageRawPayloadParser
|
|
294
|
+
override messageRawPayload = messageRawPayload
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Room
|
|
298
|
+
*/
|
|
299
|
+
override roomRawPayloadParser = roomRawPayloadParser
|
|
300
|
+
override roomRawPayload = roomRawPayload
|
|
301
|
+
override roomList = roomList
|
|
302
|
+
override roomDel = roomDel
|
|
303
|
+
override roomAvatar = roomAvatar
|
|
304
|
+
override roomAdd = roomAdd
|
|
305
|
+
override roomTopic = roomTopic
|
|
306
|
+
override roomCreate = roomCreate
|
|
307
|
+
override roomQuit = roomQuit
|
|
308
|
+
override roomQRCode = roomQRCode
|
|
309
|
+
override roomMemberList = roomMemberList
|
|
310
|
+
override roomMemberRawPayload = roomMemberRawPayload
|
|
311
|
+
override roomMemberRawPayloadParser = roomMemberRawPayloadParser
|
|
312
|
+
override roomAnnounce = roomAnnounce
|
|
313
|
+
override roomInvitationAccept = roomInvitationAccept
|
|
314
|
+
override roomInvitationRawPayload = roomInvitationRawPayload
|
|
315
|
+
override roomInvitationRawPayloadParser = roomInvitationRawPayloadParser
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Friendship
|
|
319
|
+
*/
|
|
320
|
+
override friendshipRawPayload = friendshipRawPayload
|
|
321
|
+
override friendshipRawPayloadParser = friendshipRawPayloadParser
|
|
322
|
+
override friendshipSearchPhone = friendshipSearchPhone
|
|
323
|
+
override friendshipSearchWeixin = friendshipSearchWeixin
|
|
324
|
+
override friendshipSearchHandle = friendshipSearchHandle
|
|
325
|
+
override friendshipAdd = friendshipAdd
|
|
326
|
+
override friendshipAccept = friendshipAccept
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Tag
|
|
330
|
+
*/
|
|
331
|
+
override tagContactAdd = tagContactAdd
|
|
332
|
+
override tagContactRemove = tagContactRemove
|
|
333
|
+
override tagContactDelete = tagContactDelete
|
|
334
|
+
override tagContactList = tagContactList
|
|
335
|
+
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
export { PuppetWhatsapp }
|
|
339
|
+
export default PuppetWhatsapp
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { EventEmitter } from 'events'
|
|
2
|
+
import { log } from '../config.js'
|
|
3
|
+
import { WA_ERROR_TYPE } from '../exception/error-type.js'
|
|
4
|
+
import WAError from '../exception/whatsapp-error.js'
|
|
5
|
+
import { sleep } from '../helper/miscellaneous.js'
|
|
6
|
+
|
|
7
|
+
interface FunctionObj {
|
|
8
|
+
func: () => any,
|
|
9
|
+
resolve: (data: any) => void,
|
|
10
|
+
reject: (e: any) => void,
|
|
11
|
+
delayBefore?: number,
|
|
12
|
+
delayAfter?: number,
|
|
13
|
+
uniqueKey?: string,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface RateOptions {
|
|
17
|
+
queueId?: string,
|
|
18
|
+
delayBefore?: number,
|
|
19
|
+
delayAfter?: number,
|
|
20
|
+
uniqueKey?: string,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
type RateManagerEvents = 'error'
|
|
24
|
+
|
|
25
|
+
const MAX_QUEUE_SIZE = 5000
|
|
26
|
+
|
|
27
|
+
export class RateManager extends EventEmitter {
|
|
28
|
+
|
|
29
|
+
private counter = 0
|
|
30
|
+
|
|
31
|
+
public override emit(event: 'error', error: string): boolean
|
|
32
|
+
public override emit(event: never, ...args: never[]): never
|
|
33
|
+
public override emit (event: RateManagerEvents, ...args: any[]): boolean {
|
|
34
|
+
return super.emit(event, ...args)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public override on(event: 'error', listener: (error: string) => void): this
|
|
38
|
+
public override on(event: never, listener: never): never
|
|
39
|
+
public override on (event: RateManagerEvents, listener: (...args: any[]) => void): this {
|
|
40
|
+
super.on(event, listener)
|
|
41
|
+
return this
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
private functionQueueMap: { [id: string]: FunctionObj[] } = {}
|
|
45
|
+
private runningMap: { [id: string]: boolean } = {}
|
|
46
|
+
|
|
47
|
+
public getQueueLength (queueId: string) {
|
|
48
|
+
if (!this.functionQueueMap[queueId]) {
|
|
49
|
+
return 0
|
|
50
|
+
}
|
|
51
|
+
return this.functionQueueMap[queueId]!.length
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public async exec<T> (func: () => T, options: RateOptions = {}) {
|
|
55
|
+
const queueId = options.queueId || 'default'
|
|
56
|
+
const { delayAfter, delayBefore, uniqueKey } = options
|
|
57
|
+
|
|
58
|
+
if (!this.functionQueueMap[queueId]) {
|
|
59
|
+
this.functionQueueMap[queueId] = []
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (this.functionQueueMap[queueId]!.length > MAX_QUEUE_SIZE) {
|
|
63
|
+
if (this.counter % MAX_QUEUE_SIZE === 0) {
|
|
64
|
+
log.error(`EXCEED_QUEUE_SIZE: Max queue size for id: ${queueId} reached: ${this.functionQueueMap[queueId]!.length} > ${MAX_QUEUE_SIZE}(max queue size). Drop these tasks.`)
|
|
65
|
+
this.counter = 0
|
|
66
|
+
}
|
|
67
|
+
this.counter++
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return new Promise<T>((resolve, reject) => {
|
|
71
|
+
this.functionQueueMap[queueId]!.push({ delayAfter, delayBefore, func, reject, resolve, uniqueKey })
|
|
72
|
+
if (!this.runningMap[queueId]) {
|
|
73
|
+
this.runningMap[queueId] = true
|
|
74
|
+
void this.execNext(queueId)
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
private async execNext (queueId: string) {
|
|
80
|
+
const queue = this.functionQueueMap[queueId]
|
|
81
|
+
if (!queue) {
|
|
82
|
+
return
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const funcObj = queue.shift()
|
|
86
|
+
if (!funcObj) {
|
|
87
|
+
throw WAError(WA_ERROR_TYPE.ERR_RATE_FUNCTION_NOT_FOUND, `can not get funcObj from queue with id: ${queueId}.`)
|
|
88
|
+
}
|
|
89
|
+
const { delayAfter, delayBefore, func, resolve, reject, uniqueKey } = funcObj
|
|
90
|
+
await sleep(delayBefore)
|
|
91
|
+
try {
|
|
92
|
+
const result = await func()
|
|
93
|
+
resolve(result)
|
|
94
|
+
/**
|
|
95
|
+
* If uniqueKey is given, will resolve functions with same key in the queue
|
|
96
|
+
*/
|
|
97
|
+
if (uniqueKey) {
|
|
98
|
+
const sameFuncIndexes = queue.map((f, index) => ({ func: f, index }))
|
|
99
|
+
.filter(o => o.func.uniqueKey === uniqueKey)
|
|
100
|
+
.map(o => o.index)
|
|
101
|
+
.sort((a, b) => b - a)
|
|
102
|
+
for (const index of sameFuncIndexes) {
|
|
103
|
+
const [sameFunc] = queue.splice(index, 1)
|
|
104
|
+
sameFunc!.resolve(result)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
} catch (e) {
|
|
108
|
+
reject(e)
|
|
109
|
+
}
|
|
110
|
+
await sleep(delayAfter)
|
|
111
|
+
if (queue.length > 0) {
|
|
112
|
+
await this.execNext(queueId)
|
|
113
|
+
} else {
|
|
114
|
+
delete this.runningMap[queueId]
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
WhatsAppClientType,
|
|
3
|
+
WhatsAppContact,
|
|
4
|
+
InviteV4Data,
|
|
5
|
+
MessageContent,
|
|
6
|
+
MessageSendOptions,
|
|
7
|
+
CreateGroupResult,
|
|
8
|
+
} from '../schema/whatsapp-type.js'
|
|
9
|
+
import { RateManager } from './rate-manager.js'
|
|
10
|
+
|
|
11
|
+
export class RequestManager {
|
|
12
|
+
|
|
13
|
+
private whatsapp: WhatsAppClientType
|
|
14
|
+
private rateManager: RateManager
|
|
15
|
+
|
|
16
|
+
constructor (whatsapp: WhatsAppClientType) {
|
|
17
|
+
this.whatsapp = whatsapp
|
|
18
|
+
this.rateManager = new RateManager()
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public logout () {
|
|
22
|
+
return this.whatsapp.logout()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public acceptPrivateRoomInvite (invitation: InviteV4Data) {
|
|
26
|
+
return this.whatsapp.acceptGroupV4Invite(invitation)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public acceptRoomInvite (inviteCode: string) {
|
|
30
|
+
return this.whatsapp.acceptInvite(inviteCode)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public archiveChat (chatId: string) {
|
|
34
|
+
return this.whatsapp.archiveChat(chatId)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public unarchiveChat (chatId: string) {
|
|
38
|
+
return this.whatsapp.unarchiveChat(chatId)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public createRoom (name: string, participants: WhatsAppContact[] | string[]): Promise<CreateGroupResult> {
|
|
42
|
+
return this.whatsapp.createGroup(name, participants) as unknown as Promise<CreateGroupResult>
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public destroy () {
|
|
46
|
+
return this.whatsapp.destroy()
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public getBLockedContacts () {
|
|
50
|
+
return this.whatsapp.getBlockedContacts()
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public getChatById (chatId: string) {
|
|
54
|
+
return this.whatsapp.getChatById(chatId)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public getChatLabels (chatId: string) {
|
|
58
|
+
return this.whatsapp.getChatLabels(chatId)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public getChats () {
|
|
62
|
+
return this.whatsapp.getChats()
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public getChatsByLabelId (labelId: string) {
|
|
66
|
+
return this.whatsapp.getChatsByLabelId(labelId)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public getContactById (contactId: string) {
|
|
70
|
+
return this.whatsapp.getContactById(contactId)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public getContacts () {
|
|
74
|
+
return this.whatsapp.getContacts()
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public getCountryCode (whatsappId: string) {
|
|
78
|
+
return this.whatsapp.getCountryCode(whatsappId)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
public getFormattedNumber (whatsappId: string) {
|
|
82
|
+
return this.whatsapp.getFormattedNumber(whatsappId)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public getInviteInfo (inviteId: string) {
|
|
86
|
+
return this.whatsapp.getInviteInfo(inviteId)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
public getLabelById (labelId: string) {
|
|
90
|
+
return this.whatsapp.getLabelById(labelId)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
public getLabels () {
|
|
94
|
+
return this.whatsapp.getLabels()
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public getWhatsappIdByNumber (number: string) {
|
|
98
|
+
return this.whatsapp.getNumberId(number)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public getAvatarUrl (contactId: string) {
|
|
102
|
+
return this.whatsapp.getProfilePicUrl(contactId)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
public getState () {
|
|
106
|
+
return this.whatsapp.getState()
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
public getWhatsAppVersion () {
|
|
110
|
+
return this.whatsapp.getWWebVersion()
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
public init () {
|
|
114
|
+
return this.whatsapp.initialize()
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
public isWhatsappUser (contactId: string) {
|
|
118
|
+
return this.whatsapp.isRegisteredUser(contactId)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
public markChatUnread (chatId: string) {
|
|
122
|
+
return this.whatsapp.markChatUnread(chatId)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
public muteChat (chatId: string) {
|
|
126
|
+
return this.whatsapp.muteChat(chatId)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public unmuteChat (chatId: string) {
|
|
130
|
+
return this.whatsapp.unmuteChat(chatId)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
public pinChat (chatId: string) {
|
|
134
|
+
return this.whatsapp.pinChat(chatId)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
public unpinChat (chatId: string) {
|
|
138
|
+
return this.whatsapp.unpinChat(chatId)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
public resetConnection () {
|
|
142
|
+
return this.whatsapp.resetState()
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
public searchMessage (query: string, options?: { chatId?: string, page?: number, limit?: number }) {
|
|
146
|
+
return this.whatsapp.searchMessages(query, options)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
public sendMessage (chatId: string, content: MessageContent, options?: MessageSendOptions) {
|
|
150
|
+
return this.rateManager.exec(async () => {
|
|
151
|
+
return this.whatsapp.sendMessage(chatId, content, options)
|
|
152
|
+
}, { delayAfter: 1, queueId: chatId })
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
public sendPresenceAvailable () {
|
|
156
|
+
return this.whatsapp.sendPresenceAvailable()
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
public markChatRead (chatId: string) {
|
|
160
|
+
return this.whatsapp.sendSeen(chatId)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
public setNickname (name: string) {
|
|
164
|
+
return this.whatsapp.setDisplayName(name)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
public setStatusMessage (status: string) {
|
|
168
|
+
return this.whatsapp.setStatus(status)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export type RequestManagerAPIs = Pick<RequestManager, {readonly [K in keyof RequestManager]: RequestManager[K] extends Function ? K : never}[keyof RequestManager]>
|
|
174
|
+
export const requestManagerKeys = Object.getOwnPropertyNames(RequestManager.prototype)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { RequestPool } from './request-pool.js'
|
|
2
|
+
import { test } from 'tstest'
|
|
3
|
+
|
|
4
|
+
test('RequestPool request resolve test', async t => {
|
|
5
|
+
try {
|
|
6
|
+
const requestPool = RequestPool.Instance
|
|
7
|
+
t.ok(requestPool instanceof RequestPool)
|
|
8
|
+
|
|
9
|
+
const time = Date.now()
|
|
10
|
+
setTimeout(() => {
|
|
11
|
+
requestPool.resolveRequest('testRequest')
|
|
12
|
+
}, 3000)
|
|
13
|
+
// eslint-disable-next-line promise/always-return
|
|
14
|
+
await requestPool.pushRequest('testRequest')
|
|
15
|
+
t.ok(Math.abs(Date.now() - time - 3000) < 20)
|
|
16
|
+
|
|
17
|
+
t.pass('RequestPool request resolve test pass')
|
|
18
|
+
} catch (e) {
|
|
19
|
+
t.fail(e as any)
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
test('RequestPool clear test', async t => {
|
|
24
|
+
try {
|
|
25
|
+
const requestPool = RequestPool.Instance
|
|
26
|
+
t.ok(requestPool instanceof RequestPool)
|
|
27
|
+
|
|
28
|
+
void requestPool.pushRequest('testRequest')
|
|
29
|
+
requestPool.clearPool()
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
t.ok(Object.getOwnPropertyNames(requestPool.poolMap).length === 0)
|
|
32
|
+
t.pass('testRequest clear test pass')
|
|
33
|
+
} catch (e) {
|
|
34
|
+
t.fail(e as any)
|
|
35
|
+
}
|
|
36
|
+
})
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { WA_ERROR_TYPE } from '../exception/error-type.js'
|
|
2
|
+
import WAError from '../exception/whatsapp-error.js'
|
|
3
|
+
export class RequestPool {
|
|
4
|
+
|
|
5
|
+
private static _instance?: RequestPool
|
|
6
|
+
private poolMap: {[id: string]: Function[]} = {}
|
|
7
|
+
private constructor () {}
|
|
8
|
+
|
|
9
|
+
public static get Instance () {
|
|
10
|
+
if (!this._instance) {
|
|
11
|
+
this._instance = new RequestPool()
|
|
12
|
+
}
|
|
13
|
+
return this._instance
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public pushRequest (id: string, timeout?: number) {
|
|
17
|
+
const callback = new Promise<void>((resolve, reject) => {
|
|
18
|
+
if (!this.poolMap[id]) {
|
|
19
|
+
this.poolMap[id] = []
|
|
20
|
+
}
|
|
21
|
+
this.poolMap[id]!.push(resolve)
|
|
22
|
+
if (timeout) {
|
|
23
|
+
setTimeout(reject, timeout)
|
|
24
|
+
}
|
|
25
|
+
}).catch(() => {
|
|
26
|
+
delete this.poolMap[id]
|
|
27
|
+
throw WAError(WA_ERROR_TYPE.ERR_REQUEST_TIMEOUT, `TIMEOUT when processing request :${id}`)
|
|
28
|
+
})
|
|
29
|
+
return callback
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public resolveRequest (id: string) {
|
|
33
|
+
const callbacks = this.poolMap[id]
|
|
34
|
+
if (!callbacks || callbacks.length === 0) {
|
|
35
|
+
return
|
|
36
|
+
}
|
|
37
|
+
callbacks.forEach(cb => cb())
|
|
38
|
+
delete this.poolMap[id]
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public clearPool () {
|
|
42
|
+
this.poolMap = {}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
}
|