2021-08-12 15:04:37 +02:00
|
|
|
import Webhook from './webhook';
|
|
|
|
import SlackAddon from './slack';
|
|
|
|
import TeamsAddon from './teams';
|
|
|
|
import DatadogAddon from './datadog';
|
|
|
|
import Addon from './addon';
|
|
|
|
import { LogProvider } from '../logger';
|
2023-07-14 10:49:34 +02:00
|
|
|
import SlackAppAddon from './slack-app';
|
2023-09-21 15:07:24 +02:00
|
|
|
import { IFlagResolver } from '../types';
|
2021-08-12 15:04:37 +02:00
|
|
|
|
|
|
|
export interface IAddonProviders {
|
|
|
|
[key: string]: Addon;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const getAddons: (args: {
|
|
|
|
getLogger: LogProvider;
|
|
|
|
unleashUrl: string;
|
2023-09-21 15:07:24 +02:00
|
|
|
flagResolver: IFlagResolver;
|
|
|
|
}) => IAddonProviders = ({ getLogger, unleashUrl, flagResolver }) => {
|
2023-07-14 10:49:34 +02:00
|
|
|
const addons: Addon[] = [
|
2021-08-12 15:04:37 +02:00
|
|
|
new Webhook({ getLogger }),
|
2023-09-21 14:55:58 +02:00
|
|
|
new SlackAddon({ getLogger, unleashUrl }),
|
|
|
|
new SlackAppAddon({ getLogger, unleashUrl }),
|
2021-08-12 15:04:37 +02:00
|
|
|
new TeamsAddon({ getLogger, unleashUrl }),
|
2023-09-19 13:08:10 +02:00
|
|
|
new DatadogAddon({ getLogger, unleashUrl, flagResolver }),
|
2021-08-12 15:04:37 +02:00
|
|
|
];
|
2023-07-14 10:49:34 +02:00
|
|
|
|
2021-08-12 15:04:37 +02:00
|
|
|
return addons.reduce((map, addon) => {
|
|
|
|
// eslint-disable-next-line no-param-reassign
|
|
|
|
map[addon.name] = addon;
|
|
|
|
return map;
|
|
|
|
}, {});
|
|
|
|
};
|