Você pode ler mais sobre isso aqui.
A Swift Seleção Pesquisa (SSS) é um complemento do Firefox para pesquisar rapidamente algum texto em uma página usando seus mecanismos de pesquisa favoritos.
Selecione o texto em uma página e uma pequena caixa pop -up com mecanismos de pesquisa aparecerá acima do seu cursor. Pressione um e você procurará automaticamente o texto selecionado usando esse mecanismo!
O SSS é configurável. Você pode definir quais mecanismos de pesquisa aparecem no pop -up, a aparência dos ícones, o que acontece quando você clica neles, onde o pop -up aparece, se deve ou não ocultá -lo quando a página rola, se você deseja copiar automaticamente o texto na seleção e muitas outras opções.
Você também recebe um menu de contexto opcional para pesquisar com qualquer um dos seus motores. Você pode desativar este menu extra nas opções, se quiser. Você também tem a opção de desativar o próprio pop -up e deixar apenas esse menu de contexto. Sua escolha. :)
O SSS está disponível no site da Mozilla Acampeions, aqui:
https://addons.mozilla.org/firefox/addon/swift-selection-search
Em primeiro lugar, como os WebExtensions são feitos em JavaScript, precisamos ser capazes de converter o TypeScript em JavaScript, de preferência de uma maneira que seja o mais automática possível.
Instale o NPM . Faça o download do Node.js de https://nodejs.org e você obterá o NPM ao lado.
Na pasta do projeto, execute isso na linha de comando:
NPM Instale
Isso instalará as dependências do projeto do projeto localmente na pasta Node_modules .
Para transpilar todos os scripts .ts para .js (no Windows):
"Node_modules/.bin/tsc.cmd" ---watch -p tsconfig.json
O comando permanecerá vivo e re-transpará automaticamente o código após quaisquer alterações nos arquivos .ts, que são úteis durante o desenvolvimento.
Agora você tem arquivos .js, para que você possa usar o SSS como uma WeBextension. Yay!
Para um breve desenvolvimento ou apenas curiosidade, a maneira mais simples de experimentar o SSS é a página: Debugging#Addons Page no Firefox. Pressione o botão "Carregar o complemento temporário", selecione um arquivo no diretório Swift Seleção Pesquisa "SRC" (por exemplo, manifest.json ) e ele carregará o complemento até que o navegador esteja fechado. As alterações na maioria dos códigos exigem recarregar o complemento novamente.
Para um desenvolvimento e/ou embalagem mais prolongados, como recarregar automaticamente após cada alteração, siga as instruções de Mozilla aqui para instalar e usar a ferramenta Web-EXT .
Bire o repositório no Github e clone -o no seu computador.
Siga as instruções acima para como construir .
No final, você deve ter um script que transpilize automaticamente o código do TypeScript para JavaScript e deve saber como executar sua versão do SSS no Firefox.
Saiba que o SSS tem três ramos principais:
Leia as diretrizes de código abaixo.
Encontre um problema que você gostaria de resolver na lista de problemas.
Pergunte se alguém já está trabalhando nisso. Além disso, se estiver faltando detalhes sobre como implementar ou se você quiser saber possíveis abordagens, fique à vontade para perguntar!
Crie uma nova ramificação Git para o novo recurso ou correção de bugs que você está tentando implementar. Crie esta filial a partir de "Desenvolvimento", para simplificar a mesclagem posteriormente (já que "Master" pode não ter todas as alterações atuais).
Implemente e comprometa/empurre as alterações na filial, possivelmente em várias confirmações.
Por fim, crie uma solicitação de tração para mesclar suas alterações no repositório original. Ele estará sujeito a revisão de código, discussão e possivelmente alterações, se necessário.
Obrigado!
O SSS foi portado em algum momento do JavaScript ao TypeScript para obter os benefícios das anotações do tipo, pois muitos erros podem ser capturados pelo verificador de tipo. No entanto, deve -se notar que a interação das WebExtensions com o TypeScript é fina, na melhor das hipóteses, já que o TypeScript pressupõe que os scripts possam importar código/dados de outros scripts, quando, na realidade, o ambiente de WebExtensões tem caixa de areia e raramente permite isso.
Os scripts de conteúdo não vêem o código do script de segundo plano, ou vice-versa, e a única maneira de vários scripts de conteúdo podem ver o código um do outro é se todos forem injetados na mesma página pelo script de segundo plano, da mesma forma que eles seriam incluídos em uma página HTML como scripts. O TypeScript não tem idéia de que é assim que os WebExtensions funcionam; portanto, apenas porque algo transpila para JavaScript corretamente, isso não significa que a WeBextenstension funcionará.
Um exemplo que funciona é que podemos declarar tipos/classes no script em segundo plano e fazer referência a eles em outros scripts, pois apenas o tipo de verificador se importa com eles. Temos a verificação do tipo e tudo bem.
No entanto, se tentarmos adicionar a essas classes alguns métodos, atribuições de variáveis, etc., scripts de conteúdo ou scripts da página de opções não os verão. Quando transpilando para JavaScript, eles serão deixados como uma referência ao código em outro script, que não pode ser referenciado no tempo de execução devido ao WEBextensions Sandboxing. Isso também se aplica aos enums (que possuem valores concretos, portanto, "dados"), a menos que os declaremos como const enum , nesse caso, copia seus valores para onde são usados em vez de criar objetos JavaScript.
Portanto, se você vir uma classe total ou parcialmente declarada em mais de um script neste projeto (por exemplo, no script de segundo plano e no script de página), o acima é o motivo.
Outra coisa que pode falhar é usar instanceof para verificar se um objeto é de uma determinada classe. Não faça isso para classes criadas personalizadas, pois pode falhar devido à caixa de areia.