Infrastructure build to support third-party app integrations
This commit is contained in:
23
backend/services/normalize.service.ts
Normal file
23
backend/services/normalize.service.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { getProvider } from '../config/providers.js';
|
||||
import { NormalizationError } from '../config/normalizers.js';
|
||||
import type { NormalizedDelivery, ProviderSlug } from '../types/integration.js';
|
||||
|
||||
export { NormalizationError };
|
||||
|
||||
export const normalize = (
|
||||
provider: ProviderSlug,
|
||||
payload: unknown
|
||||
): NormalizedDelivery => {
|
||||
const normalizer = getProvider(provider).normalize;
|
||||
|
||||
if (!normalizer) {
|
||||
throw new NormalizationError(
|
||||
`No normalizer registered for provider "${provider}"`
|
||||
);
|
||||
}
|
||||
|
||||
return normalizer(payload);
|
||||
};
|
||||
|
||||
export const hasNormalizer = (provider: ProviderSlug): boolean =>
|
||||
getProvider(provider).normalize !== undefined;
|
||||
Reference in New Issue
Block a user