Teste de Palavras Observadas está Quebrado

Ao usar o recurso “Testar” na tela de configuração de palavras observadas, o erro “raw bracket is not allowed in regular expression with unicode flag” é impresso repetidamente no console.

  1. Vá para https://meta.discourse.org/admin/customize/watched_words/action/require_approval
  2. Abra o console do navegador
  3. Pressione “Testar”
  4. Insira qualquer coisa
  5. Observe os erros

O erro vem de watched-words.js, e é porque a Expressão Regular que está sendo passada é (?:[^[:word:]]|^)(word1|word2)(?=[^[:word:]]|$), que é válida para Ruby, mas não para JavaScript. A Expressão Regular se origina de uma API, https://meta.discourse.org/admin/customize/watched_words.json. Que obtém seu JSON do serializador de palavras observadas, que então chama word watcher com apenas action passado.

Algumas semanas atrás, isso teria sido bom, mas um PR introduziu uma alteração que adicionou mais dois parâmetros extras. Um desses parâmetros era o engine, engine é um parâmetro que tem Ruby como padrão, e não é especificado pela chamada mencionada acima. Portanto, a Expressão Regular retornada é específica para Ruby, mas é consumida pelo motor de Expressão Regular do JavaScript.

5 curtidas

Consigo replicar isso no meu site de teste.

  • Configure uma Palavra Observada bloqueada
  • Use a função de teste para experimentar
  • Receba este erro no console:
Uncaught SyntaxError: raw bracket is not allowed in regular expression with unicode flag
    createWatchedWordRegExp watched-words.js:12
    matches admin-watched-word-test.js:62
    matches admin-watched-word-test.js:61
    o handle-descriptor.js:61
    get Ember
    untrack validator.js:681
    Ember 3
    o reference.js:175
    tag reference.js:136
    track validator.js:668
    f reference.js:135
    <anonymous> runtime.js:2077
    tag reference.js:136
    track validator.js:668
    f reference.js:135
    evaluate runtime.js:2089
    _execute runtime.js:4306
    execute runtime.js:4291
    rerender runtime.js:4606
    Ember 2
    It runtime.js:4139
    Ember 3
    invoke queue.ts:201
    flush queue.ts:98
    flush deferred-action-queues.ts:75
    _end index.ts:616
    end index.ts:298
    _runExpiredTimers index.ts:739
    setTimeout handler*setTimeout platform.ts:50
    _installTimerTimeout index.ts:783
    _scheduleExpiredTimers index.ts:764
    _runExpiredTimers index.ts:738
watched-words.js:12

Obrigado pelo relatório detalhado e verei se conseguimos que alguém dê uma olhada. :slight_smile: :+1:

5 curtidas

Obrigado pelo relatório detalhado @Arthri

Isso foi corrigido.

3 curtidas