@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
package/package.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@juzi/wechaty-puppet-whatsapp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Wechaty Puppet for WhatsApp",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"import": "./dist/esm/src/mod.js",
|
|
9
|
+
"require": "./dist/cjs/src/mod.js"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"typings": "./dist/esm/src/mod.d.ts",
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=16",
|
|
15
|
+
"npm": ">=7"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"clean": "shx rm -fr dist/*",
|
|
19
|
+
"dist": "npm-run-all clean build fixup",
|
|
20
|
+
"build": "tsc && tsc -p tsconfig.cjs.json",
|
|
21
|
+
"fixup": "shx echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json",
|
|
22
|
+
"start": "cross-env NODE_OPTIONS='--no-warnings --loader=ts-node/esm' node examples/ding-dong-bot.ts",
|
|
23
|
+
"lint": "npm-run-all lint:es lint:ts lint:md",
|
|
24
|
+
"lint:md": "markdownlint README.md",
|
|
25
|
+
"lint:ts": "tsc --isolatedModules --noEmit",
|
|
26
|
+
"lint:es": "eslint \"src/**/*.ts\" \"tests/**/*.spec.ts\" --ignore-pattern tests/fixtures/",
|
|
27
|
+
"test": "npm-run-all lint test:unit",
|
|
28
|
+
"test:pack": "bash -x scripts/npm-pack-testing.sh",
|
|
29
|
+
"test:unit": "tap --node-arg=--loader=ts-node/esm --node-arg=--no-warnings 'src/**/*.spec.ts' 'tests/**/*.spec.ts'"
|
|
30
|
+
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/juzibot/puppet-whatsapp.git"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"chatie",
|
|
37
|
+
"wechaty",
|
|
38
|
+
"chatbot",
|
|
39
|
+
"bot",
|
|
40
|
+
"wechat",
|
|
41
|
+
"sdk",
|
|
42
|
+
"puppet",
|
|
43
|
+
"mock"
|
|
44
|
+
],
|
|
45
|
+
"author": "Huan LI <zixia@zixia.net>",
|
|
46
|
+
"license": "Apache-2.0",
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/juzibot/puppet-whatsapp/issues"
|
|
49
|
+
},
|
|
50
|
+
"homepage": "https://github.com/juzibot/puppet-whatsapp#readme",
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@chatie/eslint-config": "^1.0.4",
|
|
53
|
+
"@chatie/semver": "^0.4.7",
|
|
54
|
+
"@chatie/tsconfig": "^4.6.3",
|
|
55
|
+
"@types/cuid": "^2.0.1",
|
|
56
|
+
"@types/fs-extra": "^9.0.13",
|
|
57
|
+
"@types/mime": "^2.0.3",
|
|
58
|
+
"@types/node-schedule": "^1.3.2",
|
|
59
|
+
"@types/qrcode-terminal": "^0.12.0",
|
|
60
|
+
"qrcode-terminal": "^0.12.0",
|
|
61
|
+
"tstest": "^1.2.8"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"@juzi/wechaty-puppet": "1.0.0"
|
|
65
|
+
},
|
|
66
|
+
"dependencies": {
|
|
67
|
+
"@juzi/whatsapp-web.js": "^1.16.10",
|
|
68
|
+
"ee-ts": "^1.0.2",
|
|
69
|
+
"flash-store": "^1.0.6",
|
|
70
|
+
"fs-extra": "^10.0.1",
|
|
71
|
+
"gerror": "^1.0.16",
|
|
72
|
+
"mime": "^3.0.0",
|
|
73
|
+
"node-schedule": "^2.1.0",
|
|
74
|
+
"rxjs": "^7.5.5",
|
|
75
|
+
"type-fest": "^2.12.2"
|
|
76
|
+
},
|
|
77
|
+
"files": [
|
|
78
|
+
"bin/",
|
|
79
|
+
"dist/",
|
|
80
|
+
"src/"
|
|
81
|
+
],
|
|
82
|
+
"tap": {
|
|
83
|
+
"check-coverage": false
|
|
84
|
+
},
|
|
85
|
+
"publishConfig": {
|
|
86
|
+
"access": "public",
|
|
87
|
+
"tag": "latest"
|
|
88
|
+
}
|
|
89
|
+
}
|
package/src/config.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/// <reference path="./typings.d.ts" />
|
|
2
|
+
import {
|
|
3
|
+
MessageTypes as WhatsAppMessageType,
|
|
4
|
+
} from './schema/whatsapp-interface.js'
|
|
5
|
+
import { packageJson } from './package-json.js'
|
|
6
|
+
export { log } from '@juzi/wechaty-puppet'
|
|
7
|
+
export {
|
|
8
|
+
FileBox,
|
|
9
|
+
FileBoxType,
|
|
10
|
+
} from 'file-box'
|
|
11
|
+
|
|
12
|
+
const VERSION = packageJson.version || '0.0.0'
|
|
13
|
+
|
|
14
|
+
const MEMORY_SLOT = 'PUPPET_WHATSAPP_CLIENT_ID'
|
|
15
|
+
const PRE = 'PuppetWhatsApp'
|
|
16
|
+
|
|
17
|
+
export const SPECIAL_BOT_PUSHNAME = '-' // FIXME: pushname is '-', see: https://github.com/wechaty/puppet-whatsapp/issues/233
|
|
18
|
+
|
|
19
|
+
export const MIN_BATTERY_VALUE_FOR_LOGOUT = Number(process.env['MIN_BATTERY_VALUE_FOR_LOGOUT']) || 1
|
|
20
|
+
|
|
21
|
+
export const MessageMediaTypeList = [
|
|
22
|
+
// WhatsAppMessageType.CONTACT_CARD_MULTI,
|
|
23
|
+
WhatsAppMessageType.AUDIO,
|
|
24
|
+
WhatsAppMessageType.VOICE,
|
|
25
|
+
WhatsAppMessageType.IMAGE,
|
|
26
|
+
WhatsAppMessageType.VIDEO,
|
|
27
|
+
WhatsAppMessageType.DOCUMENT,
|
|
28
|
+
WhatsAppMessageType.STICKER,
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
MEMORY_SLOT,
|
|
33
|
+
VERSION,
|
|
34
|
+
PRE,
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const STRINGS = {
|
|
38
|
+
en_US: {
|
|
39
|
+
DEFAULT_HELLO_MESSAGE: 'Hello, I\'m your new WhatsApp friend!',
|
|
40
|
+
LOGOUT_REASON: {
|
|
41
|
+
BATTERY_LOWER_IN_PHONE: 'Low battery on your phone, please plug into power source',
|
|
42
|
+
DEFAULT: 'Logged out',
|
|
43
|
+
LOGIN_CONFLICT: 'Logged in on other device',
|
|
44
|
+
NETWORK_TIMEOUT_IN_PHONE: 'WhatsApp connect to your phone',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
zh_CN: {
|
|
48
|
+
DEFAULT_HELLO_MESSAGE: '你好,我是你的新WhatsApp好友!',
|
|
49
|
+
LOGOUT_REASON: {
|
|
50
|
+
BATTERY_LOWER_IN_PHONE: '手机电量过低,即将无法继续使用WhatsApp',
|
|
51
|
+
DEFAULT: '已退出登录',
|
|
52
|
+
LOGIN_CONFLICT: '已在其他设备上登录',
|
|
53
|
+
NETWORK_TIMEOUT_IN_PHONE: '手机端网络连接异常',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
type LangCodes = keyof typeof STRINGS
|
|
59
|
+
|
|
60
|
+
export const LANGUAGE: LangCodes = process.env['LANGUAGE'] as LangCodes | undefined || 'zh_CN'
|
|
61
|
+
|
|
62
|
+
export const DEFAULT_TIMEOUT = {
|
|
63
|
+
MESSAGE_SEND: 20 * 1000, // should allow long waiting time since connection breaks a log (maybe even no timeout limit?)
|
|
64
|
+
MESSAGE_SEND_FILE: 15 * 60 * 1000,
|
|
65
|
+
MESSAGE_SEND_TEXT: 20 * 1000,
|
|
66
|
+
TIMEOUT_WAIT_CONNECTED: 3 * 1000,
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const HISTORY_MESSAGES_DAYS = Number(process.env['HISTORY_MESSAGES_DAYS'] || '3')
|
|
70
|
+
export const MAX_HEARTBEAT_MISSED = Number(process.env['MAX_HEARTBEAT_MISSED'] || '3')
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CacheManager } from './cache-manager.js'
|
|
2
|
+
import { test } from 'tstest'
|
|
3
|
+
|
|
4
|
+
test('cacheManager start and stop test', async t => {
|
|
5
|
+
try {
|
|
6
|
+
await CacheManager.init('test')
|
|
7
|
+
t.ok(CacheManager.Instance instanceof CacheManager)
|
|
8
|
+
|
|
9
|
+
await CacheManager.release()
|
|
10
|
+
t.ok('cacheManager release success')
|
|
11
|
+
t.pass('cacheManager start and stop test pass')
|
|
12
|
+
} catch (e) {
|
|
13
|
+
t.fail(e as any)
|
|
14
|
+
}
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
test('cacheManager set and get test', async t => {
|
|
18
|
+
try {
|
|
19
|
+
const testTimestamp = Date.now()
|
|
20
|
+
await CacheManager.init('test')
|
|
21
|
+
|
|
22
|
+
const cacheManager = CacheManager.Instance
|
|
23
|
+
await cacheManager.setLatestMessageTimestampForChat('test', testTimestamp)
|
|
24
|
+
const timeStamp = await (cacheManager.getLatestMessageTimestampForChat('test'))
|
|
25
|
+
|
|
26
|
+
t.ok(timeStamp === testTimestamp)
|
|
27
|
+
|
|
28
|
+
await CacheManager.release()
|
|
29
|
+
t.pass('cacheManager set and get test')
|
|
30
|
+
} catch (e) {
|
|
31
|
+
t.fail(e as any)
|
|
32
|
+
}
|
|
33
|
+
})
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import * as path from 'path'
|
|
2
|
+
import * as fs from 'fs-extra'
|
|
3
|
+
import * as os from 'os'
|
|
4
|
+
import { FlashStore } from 'flash-store'
|
|
5
|
+
|
|
6
|
+
import { log } from '../config.js'
|
|
7
|
+
import { WA_ERROR_TYPE } from '../exception/error-type.js'
|
|
8
|
+
import WAError from '../exception/whatsapp-error.js'
|
|
9
|
+
|
|
10
|
+
import type {
|
|
11
|
+
WhatsAppContactPayload,
|
|
12
|
+
InviteV4Data,
|
|
13
|
+
WhatsAppMessagePayload,
|
|
14
|
+
} from '../schema/whatsapp-type.js'
|
|
15
|
+
|
|
16
|
+
const PRE = 'CacheManager'
|
|
17
|
+
|
|
18
|
+
export class CacheManager {
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* ************************************************************************
|
|
22
|
+
* Static Methods
|
|
23
|
+
* ************************************************************************
|
|
24
|
+
*/
|
|
25
|
+
private static _instance?: CacheManager
|
|
26
|
+
|
|
27
|
+
public static get Instance () {
|
|
28
|
+
if (!this._instance) {
|
|
29
|
+
throw WAError(WA_ERROR_TYPE.ERR_NO_CACHE, 'no instance')
|
|
30
|
+
}
|
|
31
|
+
return this._instance
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public static async init (userId: string) {
|
|
35
|
+
if (this._instance) {
|
|
36
|
+
return
|
|
37
|
+
}
|
|
38
|
+
this._instance = new CacheManager()
|
|
39
|
+
await this._instance.initCache(userId)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public static async release () {
|
|
43
|
+
if (!this._instance) {
|
|
44
|
+
return
|
|
45
|
+
}
|
|
46
|
+
await this._instance.releaseCache()
|
|
47
|
+
this._instance = undefined
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* ************************************************************************
|
|
52
|
+
* Instance Methods
|
|
53
|
+
* ************************************************************************
|
|
54
|
+
*/
|
|
55
|
+
// Static cache, won't change over time
|
|
56
|
+
private cacheMessageRawPayload?: FlashStore<string, WhatsAppMessagePayload>
|
|
57
|
+
private cacheContactOrRoomRawPayload?: FlashStore<string, WhatsAppContactPayload>
|
|
58
|
+
private cacheRoomMemberIdList?: FlashStore<string, string[]>
|
|
59
|
+
private cacheRoomInvitationRawPayload?: FlashStore<string, Partial<InviteV4Data>>
|
|
60
|
+
private cacheLatestMessageTimestampForChat?: FlashStore<string, number>
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* -------------------------------
|
|
64
|
+
* Message Cache Section
|
|
65
|
+
* --------------------------------
|
|
66
|
+
*/
|
|
67
|
+
public async getMessageRawPayload (id: string) {
|
|
68
|
+
const cache = this.getMessageCache()
|
|
69
|
+
return cache.get(id)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public async setMessageRawPayload (id: string, payload: WhatsAppMessagePayload): Promise<void> {
|
|
73
|
+
const cache = this.getMessageCache()
|
|
74
|
+
// @ts-ignore client is in implementation but not in interface
|
|
75
|
+
const { client, ...rest } = payload
|
|
76
|
+
await cache.set(id, rest)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public deleteMessage (id: string) {
|
|
80
|
+
const cache = this.getMessageCache()
|
|
81
|
+
return cache.delete(id)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private getMessageCache () {
|
|
85
|
+
if (!this.cacheMessageRawPayload) {
|
|
86
|
+
throw WAError(WA_ERROR_TYPE.ERR_NO_CACHE, 'getMessageCache() has no cache')
|
|
87
|
+
}
|
|
88
|
+
return this.cacheMessageRawPayload
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* -------------------------------
|
|
93
|
+
* Contact And Room Cache Section
|
|
94
|
+
* --------------------------------
|
|
95
|
+
*/
|
|
96
|
+
public async getContactOrRoomRawPayload (id: string) {
|
|
97
|
+
const cache = this.getContactOrRoomCache()
|
|
98
|
+
return cache.get(id)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public async setContactOrRoomRawPayload (id: string, payload: WhatsAppContactPayload): Promise<void> {
|
|
102
|
+
const cache = this.getContactOrRoomCache()
|
|
103
|
+
// @ts-ignore client is in implementation but not in interface
|
|
104
|
+
const { client, ...rest } = payload
|
|
105
|
+
await cache.set(id, rest)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public deleteContactOrRoom (id: string) {
|
|
109
|
+
const cache = this.getContactOrRoomCache()
|
|
110
|
+
return cache.delete(id)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
private getContactOrRoomCache () {
|
|
114
|
+
if (!this.cacheContactOrRoomRawPayload) {
|
|
115
|
+
throw WAError(WA_ERROR_TYPE.ERR_NO_CACHE, 'getContactOrRoomCache() has no cache')
|
|
116
|
+
}
|
|
117
|
+
return this.cacheContactOrRoomRawPayload
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
public async getContactIdList () {
|
|
121
|
+
const cache = this.getContactOrRoomCache()
|
|
122
|
+
const list = []
|
|
123
|
+
for await (const key of cache.keys()) {
|
|
124
|
+
const value = await cache.get(key)
|
|
125
|
+
if (!value) {
|
|
126
|
+
continue
|
|
127
|
+
}
|
|
128
|
+
if (!value.isGroup && value.id._serialized) {
|
|
129
|
+
list.push(value.id._serialized)
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return list
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
public async getRoomIdList () {
|
|
136
|
+
const cache = this.getContactOrRoomCache()
|
|
137
|
+
const list = []
|
|
138
|
+
for await (const key of cache.keys()) {
|
|
139
|
+
const value = await cache.get(key)
|
|
140
|
+
if (!value) {
|
|
141
|
+
continue
|
|
142
|
+
}
|
|
143
|
+
if (value.isGroup && value.id._serialized) {
|
|
144
|
+
list.push(value.id._serialized)
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return list
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* -------------------------------
|
|
152
|
+
* Room Member Cache Section
|
|
153
|
+
* --------------------------------
|
|
154
|
+
*/
|
|
155
|
+
public async getRoomMemberIdList (roomId: string) {
|
|
156
|
+
const cache = this.getRoomMemberCache()
|
|
157
|
+
const memberIdList = await cache.get(roomId)
|
|
158
|
+
return memberIdList || []
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
public async setRoomMemberIdList (roomId: string, list: string[]): Promise<void> {
|
|
162
|
+
const cache = this.getRoomMemberCache()
|
|
163
|
+
await cache.set(roomId, list)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
public async addRoomMemberToList (roomId: string, memberIds: string | string[]): Promise<void> {
|
|
167
|
+
const memberIdListInCache = await this.getRoomMemberIdList(roomId)
|
|
168
|
+
if (Array.isArray(memberIds)) {
|
|
169
|
+
memberIds.forEach(memberId => !memberIdListInCache.includes(memberId) && memberIdListInCache.push(memberId))
|
|
170
|
+
await this.setRoomMemberIdList(roomId, memberIdListInCache)
|
|
171
|
+
} else {
|
|
172
|
+
!memberIdListInCache.includes(memberIds) && memberIdListInCache.push(memberIds)
|
|
173
|
+
await this.setRoomMemberIdList(roomId, memberIdListInCache)
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
public async removeRoomMemberFromList (roomId: string, memberIds: string | string[]): Promise<void> {
|
|
178
|
+
const memberIdListInCache = await this.getRoomMemberIdList(roomId)
|
|
179
|
+
if (Array.isArray(memberIds)) {
|
|
180
|
+
const memberIdList = memberIdListInCache.filter(id => !memberIds.includes(id))
|
|
181
|
+
await this.setRoomMemberIdList(roomId, memberIdList)
|
|
182
|
+
} else {
|
|
183
|
+
if (memberIdListInCache.includes(memberIds)) {
|
|
184
|
+
const memberIdList = memberIdListInCache.filter(id => id !== memberIds)
|
|
185
|
+
await this.setRoomMemberIdList(roomId, memberIdList)
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
public async deleteRoomMemberIdList (roomId: string) {
|
|
191
|
+
const cache = this.getRoomMemberCache()
|
|
192
|
+
await cache.delete(roomId)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
private getRoomMemberCache () {
|
|
196
|
+
if (!this.cacheRoomMemberIdList) {
|
|
197
|
+
throw WAError(WA_ERROR_TYPE.ERR_NO_CACHE, 'getRoomMemberCache() has no cache')
|
|
198
|
+
}
|
|
199
|
+
return this.cacheRoomMemberIdList
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* -------------------------------
|
|
204
|
+
* Room Invitation Cache Section
|
|
205
|
+
* --------------------------------
|
|
206
|
+
*/
|
|
207
|
+
public async getRoomInvitationRawPayload (id: string) {
|
|
208
|
+
const cache = this.getRoomInvitationCache()
|
|
209
|
+
return cache.get(id)
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
public async setRoomInvitationRawPayload (id: string, payload: Partial<InviteV4Data>): Promise<void> {
|
|
213
|
+
const cache = this.getRoomInvitationCache()
|
|
214
|
+
await cache.set(id, payload)
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
public deleteRoomInvitation (id: string) {
|
|
218
|
+
const cache = this.getRoomInvitationCache()
|
|
219
|
+
return cache.delete(id)
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
private getRoomInvitationCache () {
|
|
223
|
+
if (!this.cacheRoomInvitationRawPayload) {
|
|
224
|
+
throw WAError(WA_ERROR_TYPE.ERR_NO_CACHE, 'getRoomInvitationCache() has no cache')
|
|
225
|
+
}
|
|
226
|
+
return this.cacheRoomInvitationRawPayload
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* -------------------------------
|
|
231
|
+
* Message Cache Section
|
|
232
|
+
* --------------------------------
|
|
233
|
+
*/
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* get timestamp of the latest message for contact or room, if timestamp is not in cache, return Number.MAX_SAFE_INTEGER
|
|
237
|
+
* @param {string} id message id
|
|
238
|
+
* @returns {number} timestamp or Number.MAX_SAFE_INTEGER
|
|
239
|
+
*/
|
|
240
|
+
public async getLatestMessageTimestampForChat (id: string): Promise<number> {
|
|
241
|
+
const cache = this.getLatestMessageTimestampForChatCache()
|
|
242
|
+
const timestamp = await cache.get(id)
|
|
243
|
+
if (!timestamp) {
|
|
244
|
+
return Number.MAX_SAFE_INTEGER
|
|
245
|
+
}
|
|
246
|
+
return timestamp
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
public async setLatestMessageTimestampForChat (id: string, num: number): Promise<void> {
|
|
250
|
+
const cache = this.getLatestMessageTimestampForChatCache()
|
|
251
|
+
await cache.set(id, num)
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
private getLatestMessageTimestampForChatCache () {
|
|
255
|
+
if (!this.cacheLatestMessageTimestampForChat) {
|
|
256
|
+
throw WAError(WA_ERROR_TYPE.ERR_NO_CACHE, 'getLatestMessageTimestampForChatCache() has no cache')
|
|
257
|
+
}
|
|
258
|
+
return this.cacheLatestMessageTimestampForChat
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* -------------------------------
|
|
263
|
+
* Private Method Section
|
|
264
|
+
* --------------------------------
|
|
265
|
+
*/
|
|
266
|
+
|
|
267
|
+
private async initCache (
|
|
268
|
+
userId: string,
|
|
269
|
+
): Promise<void> {
|
|
270
|
+
|
|
271
|
+
if (this.cacheMessageRawPayload) {
|
|
272
|
+
throw WAError(WA_ERROR_TYPE.ERR_INIT, 'cacheMessageRawPayload does not exist.')
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const baseDir = path.join(
|
|
276
|
+
os.homedir(),
|
|
277
|
+
'.wechaty',
|
|
278
|
+
'puppet-whatsapp',
|
|
279
|
+
'flash-store-v0.12',
|
|
280
|
+
userId,
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
const baseDirExist = await fs.pathExists(baseDir)
|
|
284
|
+
|
|
285
|
+
if (!baseDirExist) {
|
|
286
|
+
await fs.mkdirp(baseDir)
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
this.cacheMessageRawPayload = new FlashStore(path.join(baseDir, 'message'))
|
|
290
|
+
this.cacheContactOrRoomRawPayload = new FlashStore(path.join(baseDir, 'contact-or-room'))
|
|
291
|
+
this.cacheRoomInvitationRawPayload = new FlashStore(path.join(baseDir, 'room-invitation'))
|
|
292
|
+
this.cacheRoomMemberIdList = new FlashStore(path.join(baseDir, 'room-member'))
|
|
293
|
+
this.cacheLatestMessageTimestampForChat = new FlashStore(path.join(baseDir, 'latest-message-timestamp-for-chat'))
|
|
294
|
+
|
|
295
|
+
const messageTotal = await this.cacheMessageRawPayload.size
|
|
296
|
+
|
|
297
|
+
log.verbose(PRE, `initCache() inited Messages: ${messageTotal} cacheDir="${baseDir}"`)
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
private async releaseCache () {
|
|
301
|
+
log.verbose(PRE, 'releaseCache()')
|
|
302
|
+
|
|
303
|
+
if (this.cacheMessageRawPayload
|
|
304
|
+
&& this.cacheContactOrRoomRawPayload
|
|
305
|
+
&& this.cacheRoomInvitationRawPayload
|
|
306
|
+
&& this.cacheRoomMemberIdList
|
|
307
|
+
&& this.cacheLatestMessageTimestampForChat
|
|
308
|
+
) {
|
|
309
|
+
log.silly(PRE, 'releaseCache() closing caches ...')
|
|
310
|
+
|
|
311
|
+
await Promise.all([
|
|
312
|
+
this.cacheMessageRawPayload.close(),
|
|
313
|
+
this.cacheContactOrRoomRawPayload.close(),
|
|
314
|
+
this.cacheRoomInvitationRawPayload.close(),
|
|
315
|
+
this.cacheRoomMemberIdList.close(),
|
|
316
|
+
this.cacheLatestMessageTimestampForChat.close(),
|
|
317
|
+
])
|
|
318
|
+
|
|
319
|
+
this.cacheMessageRawPayload = undefined
|
|
320
|
+
this.cacheContactOrRoomRawPayload = undefined
|
|
321
|
+
this.cacheRoomInvitationRawPayload = undefined
|
|
322
|
+
this.cacheRoomMemberIdList = undefined
|
|
323
|
+
this.cacheLatestMessageTimestampForChat = undefined
|
|
324
|
+
|
|
325
|
+
log.silly(PRE, 'releaseCache() cache closed.')
|
|
326
|
+
} else {
|
|
327
|
+
log.verbose(PRE, 'releaseCache() cache not exist.')
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
enum BASE_ERROR_TYPE {
|
|
2
|
+
ERR_REQUEST_TIMEOUT = 1101, // 请求超时
|
|
3
|
+
ERR_START = 1102, // 启动异常
|
|
4
|
+
ERR_STOP = 1103, // 停止异常
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
enum INIT_ERROR_TYPE {
|
|
8
|
+
ERR_INIT = 1001, // 未初始化
|
|
9
|
+
ERR_NOT_LOGIN = 1002, // 未登录
|
|
10
|
+
ERR_CACHE_EXISTED = 1003, // 缓存已存在
|
|
11
|
+
ERR_NO_CACHE = 1004, // 缓存无效
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
enum MESSAGE_ERROR_TYPE {
|
|
15
|
+
ERR_SEND_MSG = 2001, // 发送消息失败
|
|
16
|
+
ERR_SEND_MSG_TIMEOUT = 2002, // 发送消息超时
|
|
17
|
+
ERR_UNKNOWN_SEND_STATUS = 2003, // 未知消息发送结果
|
|
18
|
+
ERR_MSG_NOT_FOUND = 2004, // 未查到消息内容
|
|
19
|
+
ERR_MSG_NOT_MATCH = 2005, // 消息类型不匹配
|
|
20
|
+
ERR_MSG_CONTACT = 2006, // 提取卡片消息异常
|
|
21
|
+
ERR_MSG_IMAGE = 2007, // 提取图片消息异常
|
|
22
|
+
ERR_MSG_FILE = 2008, // 提取文件消息异常
|
|
23
|
+
ERR_MSG_URL_LINK = 2009, // 提取链接消息异常
|
|
24
|
+
ERR_MSG_FORWARD = 2010, // 转发消息异常
|
|
25
|
+
ERR_MSG_IMAGE_WITHOUT_BODY = 2011, // 图片消息中不包含缩率图信息
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
enum ROOM_ERROR_TYPE {
|
|
29
|
+
ERR_ROOM_NOT_FOUND = 3001, // 群聊不存在
|
|
30
|
+
ERR_CREATE_ROOM = 3002, // 创建群聊失败
|
|
31
|
+
ERR_MODIFY_ROOM_NAME = 3003, // 修改群名称失败
|
|
32
|
+
ERR_ADD_ROOM = 3004, // 拉人进群失败
|
|
33
|
+
ERR_REMOVE_ROOM = 3005, // 踢人出群失败
|
|
34
|
+
ERR_ACCEPT_ROOM_INVITATION = 3006, // 自动通过群邀请失败
|
|
35
|
+
ERR_ANNOUNCE_NO_PERMISSION = 3007, // 无发送群公告权限
|
|
36
|
+
ERR_ROOM_AVATAR_NOT_FOUND = 3008, // 群头像不存在
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
enum CONTACT_ERROR_TYPE {
|
|
40
|
+
ERR_CONTACT_NOT_FOUND = 4001, // 联系人不存在
|
|
41
|
+
ERR_INVALID_CONTACT_ID = 4002, // 联系人ID无效
|
|
42
|
+
ERR_CONTACT_CARD_ID = 4003, // 名片id异常
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
enum OTHER_ERROR_TYPE {
|
|
46
|
+
ERR_RATE_FUNCTION_NOT_FOUND = 5001, // 队列中对象不存在
|
|
47
|
+
ERR_GROUP_OR_CONTACT_ID = 5002, // ID错误
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const WA_ERROR_TYPE = {
|
|
51
|
+
...BASE_ERROR_TYPE, // 基础错误类型
|
|
52
|
+
...INIT_ERROR_TYPE, // 初始化错误类型
|
|
53
|
+
...MESSAGE_ERROR_TYPE, // 消息相关错误类型
|
|
54
|
+
...ROOM_ERROR_TYPE, // 群相关错误类型
|
|
55
|
+
...CONTACT_ERROR_TYPE, // 联系人相关错误类型
|
|
56
|
+
...OTHER_ERROR_TYPE, // 其他错误类型
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export type WAErrorType = BASE_ERROR_TYPE | INIT_ERROR_TYPE | MESSAGE_ERROR_TYPE | ROOM_ERROR_TYPE | CONTACT_ERROR_TYPE | OTHER_ERROR_TYPE
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node --no-warnings --loader ts-node/esm
|
|
2
|
+
|
|
3
|
+
import { test } from 'tstest'
|
|
4
|
+
import { WA_ERROR_TYPE } from './error-type.js'
|
|
5
|
+
|
|
6
|
+
import WAError from './whatsapp-error.js'
|
|
7
|
+
|
|
8
|
+
function throwError () {
|
|
9
|
+
throw WAError(WA_ERROR_TYPE.ERR_INIT, 'no cache manager')
|
|
10
|
+
}
|
|
11
|
+
test('WAError should throw', async t => {
|
|
12
|
+
t.throws(throwError, WAError, WAError(WA_ERROR_TYPE.ERR_INIT, 'no cache manager'))
|
|
13
|
+
t.pass('WAError should throw pass')
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
test('WAError instanceof error', async t => {
|
|
17
|
+
const err = WAError(WA_ERROR_TYPE.ERR_INIT, 'no cache manager')
|
|
18
|
+
t.ok(err instanceof Error)
|
|
19
|
+
t.pass('WAError instanceof error pass')
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
test('WAError should has message', async t => {
|
|
23
|
+
const err = WAError(WA_ERROR_TYPE.ERR_INIT, 'no cache manager')
|
|
24
|
+
t.ok(err.message === 'no cache manager')
|
|
25
|
+
t.pass('WAError should has message pass')
|
|
26
|
+
})
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { WAErrorType, WA_ERROR_TYPE } from './error-type.js'
|
|
2
|
+
import { GError } from 'gerror'
|
|
3
|
+
|
|
4
|
+
export default function WAError (
|
|
5
|
+
type: WAErrorType,
|
|
6
|
+
message: string,
|
|
7
|
+
details?: string,
|
|
8
|
+
) {
|
|
9
|
+
return GError.from({
|
|
10
|
+
code: +type,
|
|
11
|
+
details,
|
|
12
|
+
message,
|
|
13
|
+
name: WA_ERROR_TYPE[type],
|
|
14
|
+
})
|
|
15
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { HISTORY_MESSAGES_DAYS } from '../config.js'
|
|
2
|
+
|
|
3
|
+
const InviteLinkRegex = /^(https?:\/\/)?chat\.whatsapp\.com\/(?:invite\/)?([a-zA-Z0-9_-]{22})$/
|
|
4
|
+
|
|
5
|
+
export const sleep = async (milliseconds?: number) => {
|
|
6
|
+
if (milliseconds) {
|
|
7
|
+
await new Promise<void>(resolve => setTimeout(resolve, milliseconds))
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const isRoomId = (id: string) => {
|
|
12
|
+
return /@g.us$/i.test(id)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const isContactId = (id: string) => {
|
|
16
|
+
return /@c.us$/i.test(id)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const isInviteLink = (link: string) => {
|
|
20
|
+
return InviteLinkRegex.test(link)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const getInviteCode = (link: string) => {
|
|
24
|
+
const matched = link.match(InviteLinkRegex)
|
|
25
|
+
if (matched) {
|
|
26
|
+
if (matched.length === 3) {
|
|
27
|
+
const inviteCode = matched[2]
|
|
28
|
+
return inviteCode
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return undefined
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const batchProcess = async (batchSize: number, list: any[], func: any) => {
|
|
35
|
+
let index = 0
|
|
36
|
+
while (batchSize * index < list.length) {
|
|
37
|
+
const curList = list.slice(batchSize * index, batchSize * (index + 1))
|
|
38
|
+
await Promise.all(curList.map(func))
|
|
39
|
+
index++
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const getMaxTimestampForLoadHistoryMessages = () => {
|
|
44
|
+
return Math.floor(Date.now() / 1000) - HISTORY_MESSAGES_DAYS * 24 * 3600
|
|
45
|
+
}
|