Skip to content

Importar/exportar regras em JSON ​

A última seção da página de configurações exibe o JSON das suas regras personalizadas atuais. Útil para backup, migração e edição em lote.

Casos de uso ​

  • Migrar regras entre dispositivos / contas
  • Fazer backup das regras com controle de versão
  • Edição em lote (busca e substituição no campo de texto é mais rápida do que editar item por item no formulário)
  • Construir arrays de regras programaticamente (gerar centenas de regras via script)

Estrutura dos campos ​

Cada regra é um objeto:

json
{
  "name": "MyCMS",
  "category": "CMS / Programas web",
  "kind": "CMS personalizado",
  "confidence": "中",
  "matchType": "regex",
  "patterns": ["mycms-[0-9.]+\\.js", "X-Generator: MyCMS"],
  "selectors": ["[data-powered-by='mycms']"],
  "globals": ["MyCMS"],
  "matchIn": ["url", "resources", "html", "headers", "dynamic"],
  "url": "https://mycms.example.com"
}
CampoTipoObrigatórioDescrição
namestringSimNome exibido no popup
categorystringCategoria; padrão: 其他库 (Outras bibliotecas)
kindstringDescrição do tipo; padrão: 自定义规则 (Regra personalizada)
confidence"高" / "中" / "低"Padrão: "中" (Média)
matchType"keyword" / "regex"Padrão: "regex"
patternsstring[]Um dos trêsOs três campos (patterns / selectors / globals) exigem pelo menos um não vazio
selectorsstring[]Um dos trêsLista de seletores CSS
globalsstring[]Um dos trêsLista de nomes de variáveis globais (window.x.y é escrito como x.y)
matchInstring[]Qualquer combinação de url / resources / html / headers / dynamic; padrão: todos
urlstringDeve ser http(s)://; pode ficar vazio

Botões de ação ​

Há dois botões no canto superior direito do título:

  • Importar do JSON: analisa o conteúdo do campo de texto e, se válido, substitui completamente a lista de regras personalizadas atual (não é uma mesclagem)
  • Formatar: analisa e reescreve o conteúdo usando JSON.stringify(rules, null, 2) com indentação

Barras invertidas em strings ​

Expressões regulares em JSON precisam de escape duplo. Por exemplo, para corresponder a \.js:

json
{
  "matchType": "regex",
  "patterns": ["\\.js$"]
}

O parser JSON converte \\ em um único \, e a extensão passa \.js$ para new RegExp(), que então trata o ponto como literal.

Validação atômica ​

Na importação, o array inteiro é analisado primeiro; se qualquer regra tiver um campo inválido, a importação inteira é rejeitada (operação atômica). Não é possível que metade seja importada e metade rejeitada. A mensagem de erro indica qual regra e qual campo causou o problema.

Relação com o formulário ​

  • Alterações no formulário → sincronizadas automaticamente no campo JSON
  • Alterações no campo JSON → é necessário clicar em "Importar do JSON" para sincronizar de volta para a lista interna de regras
  • Salvar as configurações sem clicar em importar usa o estado da última operação de formulário / importação

Limite de quantidade ​

CUSTOM_RULE_LIMITS.rules padrão é 100. Exceder esse limite resulta em rejeição. Veja todos os limites em src/types/settings.ts:

CampoLimite
Total de regras100
name80 chars
category40 chars
kind40 chars
pattern / selector / global individual240 chars
Tamanho dos arrays patterns / selectors / globals80 cada
Tamanho do array matchIn8
url240 chars
customCss10000 chars

Publicado sob MIT