Prueba de Palabras Vigiladas está Rota

Al usar la función “Test” en la pantalla de configuración de palabras vigiladas, el error “raw bracket is not allowed in regular expression with unicode flag” se imprime repetidamente en la consola.

  1. Vaya a https://meta.discourse.org/admin/customize/watched_words/action/require_approval
  2. Abra la consola del navegador
  3. Presione “Test”
  4. Ingrese cualquier cosa
  5. Observe los errores

El error proviene de watched-words.js, y se debe a que la expresión regular que se pasa es (?:[^[:word:]]|^)(word1|word2)(?=[^[:word:]]|$), que es válida para Ruby, pero no para JavaScript. La expresión regular se origina en una API, https://meta.discourse.org/admin/customize/watched_words.json. Que obtiene su JSON del serializador de palabras vigiladas, que luego llama a word watcher solo con action pasado.

Hace unas semanas eso habría estado bien, pero una PR introdujo un cambio que agregó dos parámetros adicionales. Uno de estos parámetros era engine, engine es un parámetro que por defecto es Ruby, y no se especifica en la llamada mencionada anteriormente. Por lo tanto, la expresión regular devuelta es específica de Ruby, pero es consumida por el motor de expresiones regulares de JavaScript.

5 Me gusta

Puedo replicar esto en mi sitio de prueba.

  • Configurar una Palabra Observada bloqueada
  • Usar la función de prueba para probarlo
  • Obtener este error en la consola:
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

Gracias por el informe detallado y veré si podemos conseguir que alguien lo revise. :slight_smile: :+1:

5 Me gusta

Gracias por el informe detallado @Arthri

Esto ha sido corregido.

3 Me gusta