feat: extensão de navegador para gerar CPF/CNPJ no menu de contexto
Adiciona uma extensão MV3 (Firefox e Chromium/Brave) que insere CPF ou CNPJ
válido direto no campo focado, pelo menu de contexto de qualquer input,
textarea ou contenteditable.
Extensões rodam em sandbox sem acesso a processos, então não há como invocar
os binários cpfgen/cnpjgen; fazer isso exigiria um host de native messaging
registrado no SO. Como os algoritmos são curtos e puros, foram portados para
JS em extension/generator.js, a partir de main.go (CPF) e de
cnpj_generator/cnpj/generate.go (CNPJ), trocando math/rand por
crypto.getRandomValues. test_generator.mjs compara as duas implementações
para que não divirjam.
A inserção usa document.execCommand("insertText"), que emite os eventos
nativos e portanto funciona em campos controlados por React/Vue — atribuir
.value diretamente seria descartado por esses frameworks.
Somente desktop: o Firefox para Android não implementa a API menus.
Testes carregam a extensão de verdade nos dois navegadores e verificam que os
8 itens de menu são criados e que a inserção funciona nos três tipos de campo.
This commit is contained in:
parent
688c5a48f3
commit
7632cfde2c
14 changed files with 792 additions and 4 deletions
27
Makefile
27
Makefile
|
|
@ -1,10 +1,31 @@
|
|||
.PHONY: build test clean
|
||||
.PHONY: build test clean ext-test ext-lint ext-build ext-run
|
||||
|
||||
build:
|
||||
@mkdir -p bin && go build -o bin/cpfgen .
|
||||
@mkdir -p bin && go build -ldflags="-s -w" -o bin/cpfgen .
|
||||
|
||||
test:
|
||||
@go test -v ./...
|
||||
|
||||
clean:
|
||||
@rm -rf bin
|
||||
@rm -rf bin web-ext-artifacts
|
||||
|
||||
# --- extensão de navegador ---
|
||||
|
||||
# Confere o porte JS contra os binários Go e carrega a extensão nos dois
|
||||
# navegadores para validar menus e inserção de verdade.
|
||||
ext-test:
|
||||
@node extension/test_generator.mjs
|
||||
@python3 extension/test_extension.py
|
||||
@python3 extension/test_chromium.py
|
||||
|
||||
ext-lint:
|
||||
@npx --yes web-ext@latest lint --source-dir extension
|
||||
|
||||
# Gera o .zip para empacotar/publicar, sem os testes nem o SVG fonte.
|
||||
ext-build:
|
||||
@npx --yes web-ext@latest build --source-dir extension --overwrite-dest \
|
||||
--ignore-files 'test_*' 'testdata.html' 'icons/icon.svg'
|
||||
|
||||
# Abre um Firefox temporário com a extensão já carregada.
|
||||
ext-run:
|
||||
@npx --yes web-ext@latest run --source-dir extension
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue