Yamato DaiwaE(CMA)S(cript) extensions

Версия 1.7 — Что нового

Основной пакет (@yamato-daiwa/es-extensions)

Критические изменения

Работа с массивами

Изменение 3-его параметра в getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne и getIndexOfArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne

В 3-ем параметре типа «объект», свойство mustThrowErrorIfElementNotFoundOrMoreThan1 было переименовано в mustThrowErrorIfElementNotFoundOrMatchesAreMultiple.

Причина
Прежнее имя вводит в заблуждение: «or more than1» можно ошибочно интерпретировать как то, что в исходном массиве не должно быть более одного элемента. Теперь же «or matches are multiple» («... или совпадений несколько») однозначно передаёт, что элементов не должно быть более одного именно среди удовлетворяющих предикату.
Потребуются редактирование Вашего исходного кода, если
В Вашем коде при вызове функций getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne или getIndexOfArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne используется 3-ий параметр.
Миграция
Используя соответствующую функциональность редактора кода или интегрированной среды разработки, замените mustThrowErrorIfElementNotFoundOrMoreThan1 на mustThrowErrorIfElementNotFoundOrMatchesAreMultiple во всех файлах проекта.

Класс «RawObjectDataProcessor»

Переименование объекта локализации

В соответствии с обновлёнными соглашениями по именованию, объект локализации RawObjectDataProcessorLocalization__English был переименован в rawObjectDataProcessorLocalization__english. Аналогичные изменения были применены и к другим объектам локализациям.

Браузерный JavaScript (@yamato-daiwa/es-extensions-browserjs)

Критические изменения

Работа с DOM

Изменения параметров и условий бросания ошибок в функциях getExpectedToBeSingleDOM_Element и getExpectedToBeSingleChildOfTemplateElement

Прежде, единственный параметр типа «объект» имел полиморфное опциональное свойство context, которое, если было определено, должно было иметь тип Element, Document, или производные от них. Теперь это свойство было заменено на contextElement, которое также полиморфное, но теперь имеет тип ParentNode | Readonly<{ selector: string; }>, благодаря чему стало возможно в качестве контекста указать не только контекстный элемент, но и его селектор. Однако, когда указан селектор контекстного элемента, ему должен соответствовать только один элемент, иначе будет брошена ошибка (DOM_ElementRetrievingFailedError если контекстный элемент не найден, или UnexpectedEventError, если найдено два и более элементов). Поскольку и Element, и Document унаследованы от ParentNode, то тип нового свойства совместим со старым.

Причина
Унификация API указания контекстного элементасвойство contextElement типа ParentNode | Readonly<{ selector: string; }> теперь используется в параметрах нескольких функций и даже за пределами библиотеки YDEE (например, в библиотеке для фронтенд-разработки Yamato Daiwa Frontend.
Потребуются редактирование Вашего исходного кода, если
Вы пользовались свойством context параметра функций getExpectedToBeSingleDOM_Element или getExpectedToBeSingleChildOfTemplateElement.
Миграция
Переименуйте свойство context в contextElement во всех файлах проекта. Если Вам будет удобнее указать селектор контекстного элемента вместо самого контекстного элемента, то теперь Вы можете выполнить соответствующий рефакторинг с использованием новейшего API, при этом селектору контекстного элемента должен соответствовать ровно один элемент, в противном случае будет брошена ошибка.

Обработка событий

Изменение API функции addLeftClickEventHandler

Как и ранее, функция имеет единственный параметр типа «объект», однако его свойства изменились:

targetElement
Теперь является полиморфным.