A biblioteca define uma série de
módulos
para buscar dentro da variável window['webpackJsonp']
,
que é o output do Webpack.
A cada 100ms o código
wapi.js
verifica se existe e insere o "parasite" no window['webpackJsonp']
.
Esse "parasite" é uma
função
que é chamada com a lista de módulos como parâmetro.
A função então percorre os módulos procurando por objetos, carregando os módulos identificados pelas keys desses objetos, e verifcando se os módulos são os que estão sendo procurados.
Cada um desses módulos são adicionados à variável window.Store
, exceto o módulo chamado Store
,
que é um objeto que inclui outros módulos (provavelmente esse módulo é a store do Redux que o WhatsApp utiliza).
Então a função faz um merge do módulo Store
no objeto window.Store
.
Após a execução do "parasite", a variável window.Store
possui os módulos que o WhatsApp utiliza para se comunicar com
o servidor do WhatsApp.
Exemplo de
função
da biblioteca WAPI usando os módulos em window.Store
:
O código em
browser.ts
utiliza o Puppeteer
para iniciar um browser, abrir a página do WhatsApp Web e injetar a biblioteca wapi.js
.
Após isso, toda a interação é executada dentro da página desse browser, utilizando as funções exportas pelo WAPI.