itd-api / ClientPlugin
Interface: ClientPlugin
Defined in: core/plugins/contracts.ts:150
Плагин клиента.
Подключается через itd.use(plugin) и регистрирует расширения одного или обоих уровней: OperationTransformer для логической операции и AttemptInterceptor для отдельной транспортной попытки.
Настройки отдельного вызова плагин объявляет своим полем в RequestExtensions через дополнение интерфейса. Пользователь передаёт их в RequestOptions.extensions, а обёртка операции читает поле своего плагина.
Example
Логирование логических операций
const logging: ClientPlugin = {
name: 'logging',
install({ operations, logger }) {
operations.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/contracts.ts:160
Имена плагинов, внутри которых должны стоять оба вида расширений этого плагина.
before?
optional before?: readonly string[];Defined in: core/plugins/contracts.ts:158
Имена плагинов, снаружи которых должны стоять оба вида расширений этого плагина.
conflicts?
optional conflicts?: readonly string[];Defined in: core/plugins/contracts.ts:156
Несовместимые плагины. Достаточно объявить конфликт с одной стороны.
name
name: string;Defined in: core/plugins/contracts.ts:152
Имя плагина. Должно быть уникальным: повторное подключение — ошибка.
requires?
optional requires?: readonly string[];Defined in: core/plugins/contracts.ts:154
Плагины, которые обязаны быть подключены раньше этого.
Methods
install()
install(api): void | PluginTeardown;Defined in: core/plugins/contracts.ts:169
Устанавливает плагин.
Может вернуть функцию освобождения ресурсов. Она вызывается при unuse() или окончательном dispose() клиента и может быть асинхронной. Сам install() синхронный: регистрация расширений завершается до того, как use() вернёт управление.
Parameters
api
Returns
void | PluginTeardown