itd-api / ItdPlugin
Interface: ItdPlugin
Defined in: core/plugins.ts:82
Плагин клиента.
Подключается через itd.use(plugin) и работает на уровне транспорта: видит запрос до отправки и разобранный ответ. Библиотека не знает, что именно делает плагин, — ей достаточно списка обёрток и имён опций, которые он читает.
Example
const logging: ItdPlugin = {
name: 'logging',
install({ use, logger }) {
use(async (request, next) => {
logger?.info(`${request.method} ${request.path}`);
return next(request);
});
},
};
itd.use(logging);Properties
after?
optional after?: readonly string[];Defined in: core/plugins.ts:110
Имена плагинов, внутри которых должна стоять эта обёртка.
before?
optional before?: readonly string[];Defined in: core/plugins.ts:108
Имена плагинов, снаружи которых должна стоять эта обёртка.
conflicts?
optional conflicts?: readonly string[];Defined in: core/plugins.ts:106
Несовместимые плагины. Достаточно объявить конфликт с одной стороны.
name
name: string;Defined in: core/plugins.ts:84
Имя плагина. Должно быть уникальным: повторное подключение — ошибка.
optionKeys?
optional optionKeys?: readonly string[];Defined in: core/plugins.ts:102
Имена опций запроса, которые плагин читает у методов ресурсов.
Библиотека этих опций не понимает и ничего с ними не делает — только доносит от вызова метода до обёртки нетронутыми. Без такого списка чужие поля отсеиваются, чтобы случайная опечатка в параметрах не уезжала на сервер.
Имена полей самого запроса (path, body, headers, signal и прочие из RawRequestOptions) заявить нельзя: подключение такого плагина завершится ошибкой.
Типы для них плагин объявляет сам, дополняя RequestOptions:
declare module 'itd-api' {
interface RequestOptions { encrypt?: string | undefined }
}requires?
optional requires?: readonly string[];Defined in: core/plugins.ts:104
Плагины, которые обязаны быть подключены раньше этого.
Methods
install()
install(context): unknown;Defined in: core/plugins.ts:117
Устанавливает плагин.
Может вернуть функцию освобождения ресурсов. Она вызывается при unuse() или окончательном dispose() клиента и может быть асинхронной.
Parameters
context
Returns
unknown