Обозначения:
➕ добавление новых возможностей
⚡️ обратно несовместимые изменения
🛠 рефакторинг кода
✏️ работа над документацией, комментарии
✨ форматирование кода и прочие не значимые изменения
🧪 добавление или корректировка тестов
🔧 исправление ошибок
- ⚡️ (api) Убрано неявное добавление параметра запроса
limit=100
, при указанииexpand
. Разработчик должен сам понимать данную особенность API и сам позаботится о добавлении limit при указании expand. В том числе неявное поведение противоречит концепции данной библиотеки. Дополнительно к этому возникают проблемы при вызове асинхронных запросов, где указание limit запрещено. - ⚡️ (bundle) Удаление предсобранных бандлов библиотеки из репозитория. Сейчас пропала возможность работать во вкладке браузера с API МойСклад.
- ➕ (api) Добавление опции запроса
includeResponse
для получения в результате массива с телом ответа и объектом Response. Удобно, например, когда помимо тела ответа нужно получить данные из HTTP заголовков ответа. - 🧪 (tests) Рефакторинг и добавление тестов. Идентификаторы сущностей из тестового аккаунта перенесены в переменные окружения.
- ⚡️ (api) Переезд на новый домен
- ⚡️ (api) Убран параметр запроса
millisecond
(использовался в remap API 1.1) - ➕ (api) Возможность указания опций через переменные окружения
MOYSKLAD_HOST
,MOYSKLAD_API
,MOYSKLAD_USER_AGENT
- 🧪 (test) Исправление теста (сервер с новым endpoint возвращает другой код при некорректном запросе)
- ➕ (typings) Добавлен тайпинг для поля
dependencies
в ошибке (для случая когда нельзя удалить объект по причине наличия связи с другим) - 🧪 (test) Исправление теста (МС поправили редирект в API для товара)
- ⚡️ (filter) Снова 😅 переименование селектора
$or
на$all
(в МойСклад интерпретация выражения И / ИЛИ зависит от оператора, так что$all
подходит больше как селектор для объединения других селекторов). - ➕ добавление опции
downloadExpirationSeconds
для включения в запрос заголовкаX-Lognex-Download-Expiration-Seconds
. - 🔧 (url) Экранирование символа
;
в строковых параметрах фильтра
- ⚡️ (filter) Замена (переименование) селектора
$and
на$or
. В контексте фильтра в МойСклад передача нескольких условий для одного поля интерпретируется как фильтрация с условием ИЛИ. - 🧪 (test) Исправление тестов (МС отключили редирект в API для товара?)
- ⚡️ (getTimeString) Метод
getTimeString(ms, true)
возвращает дату с миллисекундами.000
даже если миллисекунды не заданы.
- ➕ (api) добавление статического метода
Moysklad.parseUrl
- ➕ (api) добавление возможности передавать тело запроса ввиде уже сериализованной JSON строки
- 🧪 (typings) опциональные поля поддерживают
undefined
значения при проверке типов - 🛠 (env) обновление dev зависимостей
- ➕ (typings) добавление интерфейса ApiError
Внесение изменений для расширения возможностей работы с ошибками запросов.
Все подробности в документации по указанным в описании ключевым словам.
-
⚡️ (fetchUrl) Опция запроса
muteErrors
deprecated, нужно использоватьmuteApiErrors
. Теперь опция не игнорирует любые ответы (Response) с кодом отличным от2xx
, а игнорирует только те, которые содержат тело в формате JSON которое соответствует формату ошибки МойСклад (объект с полемerrors
). Все прочие ошибки выбрасываются. -
⚡️ Библиотека не тестируется на версиях Node.js <16.8 (связано с переходом на
undici
как рекомендуемой реализации fetch). Нет проблем оставить поддержку и более ранних версий ноды, но нужно дописывать тесты для разных версий, на что пока нет времени, желания и потребностей (если вдруг для вас это важно пишите Issue и в телеграм @wmakeev) -
⚡️ (build) Сборка библиотеки перенесена в папку
bundle/umd/moysklad.js
-
➕ (boild) добавление минифицированной версии сборки
bundle/umd/moysklad.min.js
-
➕ (fetchUrl) добавление опции запроса
rawRedirect
-
➕ (fetchUrl) добавление опции запроса
muteCollectionErrors
-
➕ (buildUrl) добавление параметра
requestId
в события выполнения запроса -
➕ (errors) добавление ошибки
MoyskladCollectionError
для случая полученной коллекции содержащий элемент с ошибкой -
➕ (errors) добавление ошибки
MoyskladUnexpectedRedirectError
для случая получения ответа с редиректом, тогда когда он явно не ожидается -
➕ (buildUrl) вывод deprecated сообщения при передаче параметра
path
ввиде массива -
➕ (export) добавление некоторых статических методов из внутренних функций, которые могут быть полезны сами по себе (
buildFilter
,buildQuery
) -
➕ (typings) отметка deprecated сигнатур методов
-
➕ (typings) добавление тайпингов для событий запросов и других новых публичных API добавленных в этой версии; доработка описаний
-
✏️ (getTimeString) удаление упоминания логики для корректировки часового пояса (глобальная переменная
MOYSKLAD_TIMEZONE
) добавленное в версии 0.8.0 - по всей видимости не самое удачное решение -
🛠 (fetch) замена рекомендуемой библиотеки для выполнения запросов
node-fetch
на более актуальнуюundici
(есть ряд замечаний касательно того чтоundici
, судя по всему, использует часть API из Node.js 17+) -
🧪 добавление и обновлене тестов
-
✏️ (docs) исправления, доработки и дополнения согласно новым функциям
-
✏️ (examples) добавление новых примеров в папке
examples
-
✏️ (todo) обновление TODO.md
-
✨ (env) переход на Prettier,
-
🛠 (env) переход на webpack для сборки бандла
-
🛠 (env) переход на с8 для coverage
-
🛠 (env) обновление старых и удаление ненужных зависимостей
-
🛠 (env) новая система публикации версий проекта
-
Требуется еще вычитать документацию, возможно поправить кое-где примеры и обновить описания.
-
Добавить примеры для работы в браузере (в контексте приложения МойСклад)
- 🔧 (fetchUrl) более адекватная обработка пустого JSON ответа (могли заглушаться важные системные ошибки)
- 🔧 (fetchUrl) обновлена зависимость
@wmakeev/base64encode
-
➕ (fetchUrl) Возможность указать заголовок запроса
User-Agent
по умолчанию при инициализации библиотеки -
➕ (fetchUrl) При выполнении запроса в заголовок
User-Agent
подставляется информация о библиотеке и ее версии (если значение заголовка не указано явно, при инициализации экземпляра) -
➕ (errors) Экспорт классов ошибок вместо интерфейсов
-
➕ (errors) В сообщение об ошибке API подставляется ссылка на описание ошибки в API МойСклад
-
➕ (instance) Добавление метода
getVersion
для получения текущей версии библиотеки -
🛠 (typings) Обновление сигнатуры метода
getTimeString
-
🧪 (typings) Добавление тестов
-
✏️ (docs) Обновление документации. Добавление описания работы с ошибками.
-
🛠 (dependencies) Небольшие изменения и обновление зависимостей, в т.ч. для поддержки Google Apps Script
-
➕ (filter) Проверка на невалидные селекторы в выражениях фильтра #3
-
🛠 (errors) Изменение формулировок некоторых ошибок
-
🛠 (errors) Ошибки библиотеки имеют тип
MoyskladError
-
🧪 (typings) Добавление тестов
-
🛠 Небольшой рефакторинг
-
🔧 (travis) Актуализация тестов
-
✏️ (docs) Доработка документации
- ⚡️ (apiVersion) По умолчанию используется версия Remap API 1.2
-
⚠️ (time) Исправление некорректного разбора и формирования миллисекунд в строке времени -
🔧 (typings) Значение поля в фильтре может быть
undefined
-
🛠⚡️ (filters) При формировании фильтра все даты преобразуются включая миллисекунды.
-
➕ (time) Добавление возможности явно указывать часовой пояс через глобальную переменную
MOYSKLAD_TIMEZONE
. Используется когда нельзя настроить часовой пояс машины и нужно работать с датами в ином поясе. -
➕ (errors) Добавление ошибки
MoyskladRequestError
, которая включает в себя дополнительную информацию из запроса.MoyskladApiError
наследуется отMoyskladRequestError
. -
🛠⚡️ (tests) Проведение тестов только для node.js версии 12 и выше.
- 🔧 (typings) исправление экспортированных типов полей
filter
иorder
- 🛠 (typings) экcпорт типов полей
filter
иorder
-
➕ (buildQuery) если при выполнении запроса указан
expand
, но не указанlimit
, тоlimit
будет подставлен автоматически со значением100
(в remap 1.2expand
не применяется для запросов без указанияlimit<=100
) -
➕ (buildQuery) для описания поля
order
может использоваться нотация ввиде массива, напр.[['name', 'asc]]
-
🧪 (typings) добавлен простой тест для валидации тайпингов
-
🛠 (typings) дополнение описания полей в тайпинге (поле
order
в запросе, полеredirect
в опциях) -
✏️ (docs) актуализация документации
-
🧪 тесты вынесены в отдельную папку; небольшой рефакторинг для увеличения покрытия
-
🛠 прочий рефакторинг
- 🔧 (typings) исправление ошибок
- 🔧 (normalizeUrl) убрано преобразование url запроса к нижнему регистру (не совместимо с url вида
/entity/companysettings/metadata/customEntities
)
- 🔧 (filter) добавление возможности указазывать значение фильтра как undefined (ключ фильтра в этом случаем будет опущен)
- 🔧 (typings) исправление ошибок
- ⚡️ (events) замена в объекте события параметра
uri
наurl
- ➕ (auth) добавление авторизации по токену
- 🔧 (typings) исправление сигнатуры для методов
GET
,PUT
, ... (не строгая типизация через any) - 🛠 (typings) добавление поля
Moysklad.Options.emitter
- ✏️ (typings) добавление документации по параметрам аутентификации
- ✏️ (docs) доработка документации (События, Аутентификация и пр.)
- 🧪 (tests) добавление тестов
- 🔧 (typings) исправление типа опции fetch
- ➕ TypeScript typings 🥳🎉
- ➕ добавление опции
precision
иwebHookDisable
для включения в запрос заголовковX-Lognex-Precision
иX-Lognex-WebHook-Disable
соотв. - ⚡️ метод
DELETE
возвращаетundefined
(ранее, по умолчанию, метод вызывался с опциейrawResponse
и возвращал объектResponse
) - ⚡️ убрана поддержка старых версий node.js (библиотека с текущей версии тестируется на node.js 8.10)
- ✏️ дополнение документации
- 🧪(query): дополнительные тесты
- 🛠(query): исправление неточностей в логике построения строки запроса
⚠️ исправление ошибки: селектор$exists
обрабатывался всегда как!=
, вне зависимости от значения