Занимаюсь наполнением правил. Написал правило на TypeScript, скомпилировал его в es5, залил в контроллер, все прошло без ошибок.
При срабатывании правила ошибки в рантайме:
2021-01-21 16:26:40ECMAScript error: TypeError: call target not an object
duk_js_executor.c:2761
anon /etc/wb-rules/rules.js:113 preventsyield
apply native strict preventsyield
anon /usr/share/wb-rules-system/scripts/lib.js:179 preventsyield
Посмотрел по скомпилированному коду, падает при попытке поиска в массиве через find или findIndex, тоже самое при использовании includes
Я подозреваю, что это не единственные функции, которые уронят движок правил.
Временно заменил на обход массива через “for” цикл. Можно как-то поправить это поведение? и в целом добавить поддержку es6 или, что даже лучше, TypeScript?
Я в итоге стал писать скрипты на typescript и компилировать в таргет es5, там все ок, полифиллы имеются для недостающих функций. Ну или вручную полифиллы найти и подсунуть в скрипт
конкретно в том примере ошибка с фильтрацией по свойству, да, но сути проблемы это не меняет, суть в том, что в WB в скриптах используется версия es5 в которой у массивов нет метода find и других, перечисленных в теме